【01Studio MaixPy AI K210】18.ESP8266与电脑服务器通信

目录

导包:

usocket库

注册引脚:

构造GPIO口的对象:

AT指令

例程:

例程思路

导包:

import network,usocket,time
from machine import UART,Timer
from Maix import GPIO
from fpioa_manager import fm

usocket库

'''
构建 usocket 对象。
【af】: AF_INET→IPV4,AF_INET6 → IPV6;
【type】: SCOK_STREAM→TCP,SOCK_DGRAM→UDP;
【proto】: IPPROTO_TCP→TCP 协议,IPPROTO_UDP→UDP 协议。
(注:如果要构建 TCP 连接,可以使用默认参数配置,即不输入任何参数。)
'''
s=usocket.socekt(af=AF_INET, type=SOCK_STREAM,proto=IPPROTO_TCP)

'''
创建连接。
【address】:地址格式为 IP+端口。例:('192.168.1.115',10000)
'''
s.connect(address)

'''
发送。
【bytes】:发送内容格式为字节
'''
s.send(bytes)

'''
接收数据。
【bufsize】:单次最大接收字节个数。
'''
s.recv(bufsize)

'''
绑定,用于服务器角色
'''
s.bind(address)

'''
监听,用于服务器角色。
【backlog】:允许连接个数,必须大于 0。
'''
s.listen([backlog])

'''
接受连接,用于服务器角色。
'''
s.accept()

注册引脚:

'''
【pin】芯片外部 IO 
【function】芯片功能
【force】=True 则强制注册,清除之前的注册记录
'''
fm.register(pin,function,force=False)
fm.register(8, fm.fpioa.GPIOHS0, force=True)
fm.register(7, fm.fpioa.UART2_TX, force=True)
fm.register(6, fm.fpioa.UART2_RX, force=True)

构造GPIO口的对象:

'''
【ID】内部 GPIO 编号
【MODE】 GPIO 模式;
	    GPIO.IN :输入模式
	    GPIO.OUT :输出模式
【PULL】 GPIO.PULL_UP :上拉
		GPIO.PULL_DOWN :下拉
		GPIO.PULL_NONE :无
【value】GPIO 初始化电平
		1:高电平
		0:低电平
'''
GPIO(ID,MODE,PULL,VALUE)
wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)
uart = UART(UART.UART2,115200,timeout=1000,read_buf_len=4096)

AT指令

'''
临时设置指令。
【baudrate】:UART波特率
【databits】:数据位
			5: 5 bit 数据位
			6: 6 bit 数据位
			7: 7 bit 数据位
			8: 8 bit 数据位
【stopbits】:停止位
			1: 1 bit 停止位
			2: 1.5 bit 停止位
			3: 2 bit停止位
【parity】:校验位
			0∶ None
			1 : Odd
			2: Even
【flow control】:流控
				0∶不使能流控
				1∶使能RTS
				2∶使能CTS
				3∶同时使能RTS和CTS
响应:OK
'''
AT+UART_CUR=<baudrate> ,<databits> , <stopbits>, <parity> ,<flow control>
AT+UART_CUR=921600,8,1,0,0

'''
握手。
响应:OK
'''
AT

例程:

例程思路

'''
main.py

#ESP8266通过WiFi与服务器通信
## 通过 WiFi 模块编程实现 K210 的 Socket 通信,数据收发. 
##作者:01Studio
'''

#encoding:utf-8

import network,usocket,time
from machine import UART,Timer
from Maix import GPIO
from fpioa_manager import fm

SSID='********' # WiFi 账号
KEY='********' # WiFi 密码

#socket 数据接收中断标志位
socket_node = 0

###### WiFi 模块初始化 ######
#使能引脚初始化
fm.register(8, fm.fpioa.GPIOHS0, force=True)
wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)

#串口初始化
fm.register(7, fm.fpioa.UART2_TX, force=True)
fm.register(6, fm.fpioa.UART2_RX, force=True)
uart = UART(UART.UART2,115200,timeout=1000,read_buf_len=4096)

#WiFi 使能函数
def wifi_enable(en):
    global wifi_en
    wifi_en.value(en)

#WiFi 对象初始化,波特率需要修改
def wifi_init():
    global uart
    wifi_enable(0)
    time.sleep_ms(200)
    wifi_enable(1)
    time.sleep(2)

    uart = UART(UART.UART2,115200,timeout=1000, read_buf_len=4096)
    tmp = uart.read()
    uart.write("AT+UART_CUR=921600,8,1,0,0\r\n")#发送AT指令临时修改配置
    print(uart.read())#WiFi串口接收应答

    #实测模块波特率太低或者缓存长度太短会导致数据丢失。
    uart = UART(UART.UART2,921600,timeout=1000, read_buf_len=10240)
    uart.write("AT\r\n")
    tmp = uart.read()
    print(tmp)

    if not tmp.endswith("OK\r\n"):
        print("reset fail")
        return None
    try:
        nic = network.ESP8285(uart)
    except Exception:
        return None
    return nic

############################
######### 主程序 ##########
############################

#构建 WiFi 对象并使能
wlan = wifi_init()

#正在连接印提示
print("Trying to connect... (may take a while)...")

#连接网络
wlan.connect(SSID,KEY)

#打印 IP 相关信息
print(wlan.ifconfig())

#创建 socket 连接,连接成功后发送“Hello 01Studio!”给服务器。
client=usocket.socket()
#client=usocket.socket(af=AF_INET,type=SOCK_DGRAM,proto=IPPROTO_UDP)

addr=('10.3.22.7',10000) #服务器 IP 和端口
client.connect(addr)#连接服务器
client.send('Hello 01Studio!\n')
a=u"你好"
client.send(a.encode('gbk'))
client.send(a+'\n')
client.settimeout(0.1)

#定时器回调函数
def fun(tim):
    global socket_node
    socket_node = 1 #改变 socket 标志位

#定时器 0 初始化,周期 1ms
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC,period=1, callback=fun)

while True:
    if socket_node:
        try:
            data = client.recv(1024)
        except OSError:
            data = None
        if data:
            #data=data.decode('gbk')
            client.send(data)
            print("rcv:", len(data),data)
            print(data)
        socket_node = 0
    else:
        pass

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
K210 是一款由中国厂商声智科技(Sipeed)开发的微控制器芯片,它采用双核心(Dual-Core)的设计,主频高达400MHz。K210芯片内置了丰富的外设接口,包括UART、GPIO、I2C、SPI等,可以用于连接各种外设设备,比如传感器、摄像头、LCD屏幕等。此外,K210还支持硬件加速的机器视觉处理,能够实现图像识别、目标检测等功能。 ESP8266是一款由乐鑫科技(Espressif)开发的Wi-Fi模块。它集成了一颗低功耗的32位处理器,以及Wi-Fi相关的硬件和软件,可以轻松实现设备与互联网的连接。ESP8266模块有多种型号,其中最常见的是ESP-01和ESP-12E。ESP8266可以通过串口与其他设备进行通信,也可以通过Wi-Fi连接到无线网络,实现远程控制、数据上传等功能。 K210和ESP8266是两个不同的硬件平台,各自具有不同的特点和应用场景。K210主要用于AI智能计算领域,可以实现机器视觉处理、人工智能算法等。而ESP8266则主要用于物联网(IoT)应用,可以实现设备之间的互联互通,比如智能家居、智能农业等。 如果需要结合使用K210和ESP8266,可以通过串口等方式进行通信。例如,K210可以采集图像数据并进行处理,然后通过串口将结果发送给ESP8266,再由ESP8266通过Wi-Fi将数据上传到云端或其他设备。这样可以实现边缘计算与云端通信的功能,为应用开发提供更多灵活性和扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值