K210入门,用wifi通讯

K210入门,用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给电脑热点,则在#####区域中修改。

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
K210是一款由中国芯片厂商寒武纪推出的人工智能处理器,而ESP8266是一款由乐鑫科技推出的低成本Wi-Fi模块。将K210与ESP8266结合使用可以实现K210与Wi-Fi网络的连接。 要实现K210与ESP8266的Wi-Fi连接,可以按照以下步骤进行: 1. 硬件连接:将ESP8266模块与K210进行串口通信连接。将ESP8266的TX引脚连接到K210的RX引脚,将ESP8266的RX引脚连接到K210的TX引脚。同时,将ESP8266的VCC引脚连接到K210的3.3V电源引脚,将ESP8266的GND引脚连接到K210的地引脚。 2. 软件配置:在K210上配置串口通信相关的参数,例如波特率、数据位、停止位等。可以使用K210的开发环境进行配置,例如MaixPy或者Kendryte Standalone SDK。 3. 编写代码:使用K210的开发环境编写代码,通过串口与ESP8266进行通信。可以使用AT指令集控制ESP8266模块,例如发送AT指令进行Wi-Fi连接、发送HTTP请求等。 4. Wi-Fi连接:在代码中使用AT指令发送Wi-Fi连接相关的AT指令,例如设置Wi-Fi名称和密码、连接Wi-Fi网络等。可以通过发送AT+CWMODE指令设置ESP8266的工作模式,例如设置为Station模式。 5. 数据传输:通过AT指令发送HTTP请求或者其他网络请求,实现数据的传输。可以使用AT+CIPSTART指令建立TCP连接,然后使用AT+CIPSEND指令发送数据。 6. 错误处理:在代码中添加错误处理机制,例如检测AT指令的返回结果,判断是否成功执行。可以根据返回结果进行相应的处理,例如重新连接Wi-Fi网络或者重试发送数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值