admin管理员组文章数量:1620905
K210入门,用wifi通讯
- wifi通讯
本人使用的是Maix Dock,不同开发板自行进行微调
wifi通讯
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)
if not 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
if not nic: #使能失败
print("wifi 重置失败")
continue #进行下一轮使能
try:
nic.connect(wifi_ap_ssid, wifi_ap_passwd) #尝试连接wifi
nic.ifconfig() #查看wifi连接信息
except Exception:
continue #连接失败进行下一轮连接
if not 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 = 0
while 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 += 1
continue
count += 1 #发送成功次数加1
print("已发送的次数", count)
##############以上为修改区域##################
sock.close()
想要进行修改,例如用模型识别 到了图片就让wifi返回1给电脑热点,则在#####区域中修改。
版权声明:本文标题:K210入门,用wifi通讯 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728818210a1175154.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论