本人使用的是maix dock,不同開發板自行進行微調
maixdock包裝盒內附贈一條wifi天線,將其安裝到k210核心板上然後開始編寫**
from fpioa_manager import
*from fpioa_manager import fm
import network, socket, time
from machine import uart
from maix import gpio
from board import board_info
首先先導入相關函式的模組
然後進行esp8285(k210上的網絡卡模組)的初始化,首先進行引腳的功能對映。
# en esp8285
fm.register(
8, fm.fpioa.gpiohs0, force=
true
)#pin:功能對映腳、function:晶元功能、force:強制分配,如果為true,則可以多次對同乙個引腳註冊;false則不允許同一引腳多次註冊
wifi_en=gpio(gpio.gpiohs0,gpio.out)
#id:使用的gpio引腳,mode:gpio模式
fm.register(board_info.wifi_rx,fm.fpioa.uart2_tx, force=
true
)fm.register(board_info.wifi_tx,fm.fpioa.uart2_rx, force=
true
)
然後進行wifi初始化函式的編寫,將剛剛設定的wifi_en設定為全域性變數。(這裡注意一下wifi_en.value()函式的使用方法,建議查詢官方文件)
def
wifi_enable
(en)
:global wifi_en #把gpio的引腳狀態設為全域性變數
wifi_en.value(en)
#如果en有值則修改 gpio 的引腳狀態
#如果en無值則讀取 gpio 的引腳狀態
隨後進行wifi連線函式的編寫(該函式用於wifi連線,如果k210沒有連線上指定的熱點那麼就會重複呼叫該函式)
def
wifi_reset()
:global uart
wifi_enable(0)
time.sleep_ms(
200)
#延時200 ms
wifi_enable(1)
#使能wifi
time.sleep(2)
#延時2 s
uart = uart(uart.uart2,
115200
,timeout=
1000
, read_buf_len=
4096
)#uart:uart 號,使用指定的 uart
#baudrate:uart 波特率
#timeout: 串列埠接收超時時間
#read_buf_len: 串列埠接收緩衝,串列埠通過中斷來接收資料,如果緩衝滿了,將自動停止資料接收
tmp = uart.read(
)#讀取串列埠緩衝中的資料到 tmp 中
uart.write(
"at+uart_cur=921600,8,1,0,0\r\n"
)#傳送資料
print
(uart.read())
#列印串列埠讀取的資料
uart = uart(uart.uart2,
921600
,timeout=
1000
, read_buf_len=
4096
) uart.write(
"at\r\n"
) tmp = uart.read(
)print
(tmp)
ifnot tmp.endswith(
"ok\r\n"):
#檢查tmp是否以 ok\r\n 結尾,是的話就返回true
print
("reset fail"
)return
none
try:
nic = network.esp8285(uart)
#嘗試初始化esp8285如果失敗就跳到下列的 except 語句中
except exception:
return
none
return nic
這裡tmp.endswith(「ok\r\n」)函式是檢查tmp是否以ok\r\n 結尾,如果是的話那就返回true如果沒有連線成功就會返回reset fail
然後就進入while迴圈函式中,該函式用來傳送和接受以及初始化函式的呼叫。首先是進行判斷,判斷wifi是否連線如果沒有連線那麼就重新使能,如果使能成功就賦予nic = true。然後會嘗試連線wifi,進行查詢wifi資訊操作,如果失敗了就會重新進行下一輪連線。
初始化成功和連線成功後首先會呼叫socket()使用給定的位址系列,套接字型別和協議號建立乙個新套接字。然後嘗試連線wifi熱點如果失敗了那麼會printf錯誤資訊。
addr =
(server_ip, server_port)
#把server的ip和密碼存到port裡面
nic =
none
#清空 nic 內值
while
true:if
not nic or
not nic.isconnected():
nic = wifi_reset(
)#如果wifi沒有連線就重新使能,如果使能成功會將nic賦值true
ifnot nic:
#使能失敗
print
("wifi 重置失敗"
)continue
#進行下一輪使能
try:
nic.connect(wifi_ap_ssid, wifi_ap_passwd)
#嘗試連線wifi
nic.ifconfig(
)#檢視wifi連線資訊
except exception:
continue
#連線失敗進行下一輪連線
ifnot nic.isconnected():
print
("wifi 連線失敗"
)continue
# send byte
sock = socket.socket(
)#使用給定的位址系列,套接字型別和協議號建立乙個新套接字
try:
sock.connect(addr)
#嘗試連線wifi熱點
except exception as e:
#返回錯誤資訊
print
("連線失敗:"
, e)
sock.close(
)continue
sock.settimeout(5)
count =
0 err =
0while
true
: clock.tick(
)if err >=10:
#如果err大於
print
("socket broken"
)break
##############以下為修改區域##################
try:
send_len = sock.send(
"picture is raccoon\n"
)except exception:
#傳送失敗,err自增一
print
("傳送失敗"
) time.sleep(2)
err +=
1continue
count +=
1#傳送成功次數加1
print
("已傳送的次數"
, count)
##############以上為修改區域##################
sock.close(
)
想要進行修改,例如用模型識別 到了就讓wifi返回1給電腦熱點,則在#####區域中修改。 k210微控制器初學
我這塊開發板用的是亞博科技的,k210總的來說效能很強大,具體看資料手冊。入門主要先學習fpioa引腳對映和gpio的輸入輸出。gpio 對應的標頭檔案 gpio.h 通用 gpio 共 8 個,使用同乙個中斷源,可配置輸入輸出訊號,可配置觸發 io 口總中斷,邊沿觸發和電平觸發。每隔 io 可以分...
基於堪智k210的4G AIOT智慧型終端設計
from fpioa manager import fm from machine import uart fm.register 21,fm.fpioa.uart1 tx,force true fm.register 22,fm.fpioa.uart1 rx,force true fm.regis...
勘智K210 KPU特性及約束
勘智k210是嘉楠科技自主研發的一款邊緣側ai晶元,基於risc v架構,內建卷積神經網路加速器kpu。kpu可以實現人臉檢測 人臉識別 影象識別 影象分類等機器視覺任務,其特性和約束條件如下,有興趣的開發者可以嘗試。網路輸入或者中間的feature map尺寸不大於320 256,不小於4x4。與...