• 售前

  • 售后

热门帖子
入门百科

MircoPython接入巴法云,esp8266和esp32

[复制链接]
乐态思 显示全部楼层 发表于 2022-1-15 09:12:39 |阅读模式 打印 上一主题 下一主题
第一、搭建MircoPython开发环境

下载 micropython 环境包:点击下载
下载后解压,首先双击打开 uPyCraft 软件,刷入固件,首先点击 tools–>BurnFirmware ,再选择esp8266或者esp32,选择开发板端口,选择需要刷入的固件,固件在下载的环境包中,点击ok即可刷入,如下图所示:

等待进度条走完就刷入成功了。
附,其他链接:
单片机串口驱动:点击下载
micropython官方文档:点击跳转
第二、hello world 程序测试

点击file–new 新建文件,命名main,点击ok保存,如下图所示

点击tools,再点击serial和board分别选择端口、开发板类型esp8266或者esp32,如下图

输入print(“hello word”) ,点击下载图标,即可下载成功,在下方会输出打印的hello world,如下图
  1. print("hello word")
复制代码

第三 TCP示例程序

注意:每次下载程序后都需要重启开发板,例如按开发板上的reset按键重启
  1. import time
  2. from machine import Timer
  3. import socket
  4. #需要修改的地方
  5. wifiName = "newhtc"                   #wifi 名称,不支持5G wifi
  6. wifiPassword = "qq123456"       #wifi 密码
  7. clientID = "7d54f85af42976ee3c2693e692a6bb59"            # Client ID ,密钥,巴法云控制台获取
  8. myTopic='myled002'                     # 需要订阅的主题值,巴法MQTT控制台创建
  9. #默认设置
  10. serverIP = 'bemfa.com'    # mqtt 服务器地址
  11. port = 8344
  12. # WIFI 连接函数
  13. def do_connect():
  14.     import network
  15.     sta_if = network.WLAN(network.STA_IF)
  16.     if not sta_if.isconnected():
  17.         print('connecting to network...')
  18.         sta_if.active(True)
  19.         sta_if.connect(wifiName, wifiPassword)
  20.         while not sta_if.isconnected():
  21.             pass
  22.     print('connect  WiFi ok')
  23.    
  24. # tcp 客户端初始化        
  25. def connect_and_subscribe():
  26.   addr_info = socket.getaddrinfo(serverIP, port)
  27.   addr = addr_info[0][-1]
  28.   client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 创建TCP的套接字,也可以不给定参数。默认为TCP通讯方式
  29.   client.connect(addr)                                 # 设置要连接的服务器端的IP和端口,并连接
  30.   substr = 'cmd=1&uid='+clientID+'&topic='+myTopic+'\r\n'
  31.   client.send(substr.encode("utf-8"))
  32.   print("Connected to %s" % serverIP)
  33.   return client
  34.   
  35. #心跳
  36. def Ping(self):
  37.     # 发送心跳
  38.     try:
  39.         keeplive = 'ping\r\n'
  40.         client.send(keeplive.encode("utf-8"))
  41.     except:
  42.         restart_and_reconnect()
  43. # 重新连接
  44. def restart_and_reconnect():
  45.   print('Failed to connect to TCP  broker. Reconnecting...')
  46.   time.sleep(10)
  47.   machine.reset()
  48. #开始连接WIFI
  49. do_connect()
  50. #开始连接TCP
  51. try:
  52.   client = connect_and_subscribe()
  53. except OSError as e:
  54.   restart_and_reconnect()
  55. #开启定时器,定时发送心跳
  56. tim = Timer(-1)
  57. tim.init(period=30000, mode=Timer.PERIODIC, callback=Ping)
  58. while True:
  59.   try:
  60.     data = client.recv(256)                         # 从服务器端套接字中读取1024字节数据
  61.     if(len(data) != 0):                                 # 如果接收数据为0字节时,关闭套接字
  62.         data=data.decode('utf-8')              
  63.         print(data.strip())                              # 去掉尾部回车换行符,并打印接收到的字符
  64.   except OSError as e:                            # 如果出错就重新启动
  65.     print('Failed to connect to  broker. Reconnecting...')
  66.     restart_and_reconnect()
复制代码
第四 MQTT示例程序

  1. from umqtt.simple import MQTTClient
  2. import time
  3. from machine import Timer
  4. #需要修改的地方
  5. wifiName = "newhtc"                   #wifi 名称,不支持5G wifi
  6. wifiPassword = "qq123456"       #wifi 密码
  7. clientID = "7d54f85af42976ee3c2693e692a6bb59"            # Client ID ,密钥,巴法云控制台获取
  8. myTopic='light002'                     # 需要订阅的主题值,巴法MQTT控制台创建
  9. #默认设置
  10. serverIP = "bemfa.com"    # mqtt 服务器地址
  11. port = 9501
  12. # WIFI 连接函数
  13. def do_connect():
  14.     import network
  15.     sta_if = network.WLAN(network.STA_IF)
  16.     if not sta_if.isconnected():
  17.         print('connecting to network...')
  18.         sta_if.active(True)
  19.         sta_if.connect(wifiName, wifiPassword)
  20.         while not sta_if.isconnected():
  21.             pass
  22.     print('connect  WiFi ok')
  23.    
  24. # 接收消息,并处理
  25. def MsgOK(topic, msg):          # 回调函数,用于收到消息
  26.         print((topic, msg))             # 打印主题值和消息值
  27.         if topic == myTopic.encode():     # 判断是不是发给myTopic的消息
  28.             if msg == b"on":                # 当收到on
  29.                 print("rec on")
  30.             elif msg == b"off":             #  当收到off
  31.                 print("rec off")
  32. #初始化mqtt连接配置
  33. def connect_and_subscribe():
  34.   client = MQTTClient(clientID, serverIP,port)  
  35.   client.set_callback(MsgOK)
  36.   client.connect()
  37.   client.subscribe(myTopic)
  38.   print("Connected to %s" % serverIP)
  39.   return client
  40.   
  41. def restart_and_reconnect():
  42.   print('Failed to connect to MQTT broker. Reconnecting...')
  43.   time.sleep(10)
  44.   machine.reset()
  45.   
  46.   
  47. #开始连接WIFI
  48. do_connect()
  49. #开始连接MQTT
  50. try:
  51.   client = connect_and_subscribe()
  52. except OSError as e:
  53.   restart_and_reconnect()
  54. while True:
  55.   try:
  56.     client.check_msg()
  57.   except OSError as e: #如果出错就重新启动
  58.     print('Failed to connect to MQTT broker. Reconnecting...')
  59.     restart_and_reconnect()
复制代码
来源:https://blog.caogenba.net/bemfa/article/details/122472808
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作