20-MicroPython+ESP32实现MQTT通信

(1)实验目的

本实验旨在利用MicroPython编程语言控制ESP32模块实现MQTT通信。
MicroPython提供了MQTT(Message Queuing Telemetry Transport)协议的支持,使得在嵌入式系统和物联网应用中轻松实现设备间的消息传递和通信。MQTT是一种轻量级的发布/订阅消息传输协议,特别适用于资源受限的环境。
使用MicroPython的MQTT库,可以方便地连接到MQTT代理服务器,并进行发布(publish)和订阅(subscribe)操作。MQTT基于客户端-服务器模型,其中MQTT客户端可以是发布者或订阅者,而MQTT代理服务器负责处理消息路由和传递。
以下是一些常见的MicroPython MQTT功能和相关操作:

  • 连接到MQTT代理服务器:使用MicroPython的MQTT库,可以通过指定MQTT代理服务器的主机名、端口号和可选的用户名和密码来建立与服务器的连接。
  • 发布消息:作为MQTT客户端的发布者,可以使用mqtt.publish()函数将消息发布到指定的主题(topic)。可以发送各种类型的消息,例如文本、二进制数据等。
  • 订阅消息:作为MQTT客户端的订阅者,可以使用mqtt.subscribe()函数订阅感兴趣的主题。一旦有发布者发布与订阅主题匹配的消息,订阅者将收到相应的消息回调。
  • 消息回调:使用mqtt.set_callback()函数设置回调函数,以处理接收到的消息。回调函数将在订阅者接收到与其订阅的主题匹配的消息时被触发,可以在其中编写自定义的消息处理逻辑。
  • 连接保持和心跳:MQTT协议支持连接保持和心跳机制,确保客户端和服务器之间的连接活动,并检测非正常断开。MicroPython的MQTT库提供了相关选项和配置来管理连接保持和心跳设置。
  • 通过MicroPython的MQTT功能,可以轻松实现设备间的即时通信、传感器数据的发布和订阅、远程控制等功能。它为物联网应用提供了一种可靠、灵活的消息传递机制,并与云平台和其他设备进行集成。
    在使用MicroPython的MQTT功能之前,需要了解MQTT代理服务器的设置和配置,包括主机名、端口号和安全认证等。同时,还应熟悉MQTT消息的结构和主题的命名约定,以便正确地发布和订阅消息。
    总之,MicroPython的MQTT功能提供了一种方便且高效的方式来实现设备间的通信和消息传输。它允许嵌入式系统和物联网设备与MQTT代理服务器进行集成,实现数据的发布、订阅和消息处理。

(2)实验材料

  • ESP32模块
  • PC(Windows)
  • USB数据线
  • LED模块(发光二极管)
  • 杜邦线

(3)实验步骤

步骤1:连接ESP32模块与PC

  • 使用USB线将ESP32模块与PC的USB口进行连接
  • 确保ESP32模块在Thonny软件中能够被正确识别并建立连接
  • 使用杜邦线按如下对应关系连线。注意:这里可以按如下连接方式外接LED,也可以不接(D2对应板载LED,直接使用即可)
    在这里插入图片描述

步骤2:配置MicroPython开发环境

  • 确保已经正确烧录 MicroPython固件

步骤3:编写脚本代码

  • 打开Thonny软件,创建一个新的MicroPython脚本文件,文件名:main.py,实现MQTT发布和订阅主题功能
  • 在脚本文件中输入以下代码:
# -*- coding:utf-8 -*-
"""
无锡匠客物联网科技有限公司
技术支持:@NanGe(微信号:nange2012014158 | 公众号:南哥物联网笔记)
脚本名称: MQTT通信
接线说明:LED模板-->ESP32(GPIO)
            正极-->D2
            负极-->GND
脚本执行现象: 脚本程序下载成功后,shell终端输出当前IP、子网掩码、网关的地址信息。在EMQ服务器器连接成功后,可进行主题发布数据和订阅主题数据
注意事项:
1、ESP32 WiFi作为客户端连接路由器热点,然后电脑也连接路由器
2、这里MQTT服务器使用EMQ提供的公用测试服务器broker.emqx.io,请勿用于生产环境
3、使用MQTTX客户端工具模拟客户端进行测试
"""

# 导入模块
from machine import Pin
import time
import network
from umqtt.simple import MQTTClient
import _thread
import json


# 全局配置WiFi连接参数
ssid = '2102'
password = 'craftsman2102'
# 全局配置mqtt连接参数
mqttHost = 
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  
首先,我们需要了解一下ESP32和ov3660模块。 ESP32是一款高性能的Wi-Fi和蓝牙双模系统级芯片,具有完整的TCP/IP协议栈和微控制器功能。ov3660是一款集成了OV5640传感器的图像处理器模块,可以用于实现机器视觉应用。 要在ESP32使用ov3660模块,我们需要使用MicroPython编写代码。以下是一个简单的示例,用于在ESP32上初始化ov3660并读取图像数据。 1. 首先,确保已经安装了MicroPython固件在ESP32上。如果没有,请参考这个教程:https://docs.micropython.org/en/latest/esp32/tutorial/intro.html 2. 连接ESP32和ov3660模块。通常,ov3660模块有四个引脚需要连接ESP32:VCC(电源)、GND(地)、SDA(数据线)和SCL(时钟线)。请根据模块的数据手册正确连接这些引脚。 3. 使用以下代码初始化ov3660并读取图像数据: ```python from machine import Pin, SPI import time import sensor # 根据ov3660的数据手册,设置SPI接口和引脚 spi = SPI(1, baudrate=800*1000, polarity=0, phase=0) cs = Pin(15, Pin.OUT) dc = Pin(2, Pin.OUT) reset = Pin(4, Pin.OUT) dc.value(0) reset.value(1) # 初始化ov3660 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time=2000) while True: img = sensor.snapshot() # 处理图像数据,例如显示或保存到文件 img.compress(quality=85) img.save("image.jpg") time.sleep(1000) ``` 这段代码首先导入了必要的库,然后设置了SPI接口和引脚。接着,它初始化了ov3660模块,设置了图像格式、分辨率等参数。最后,在一个无限循环中,它不断地捕获图像并将其保存为JPEG文件。 注意:这个示例代码仅适用于基本的图像捕获。根据您的需求,您可能需要对代码进行修改,例如添加图像处理功能、调整参数等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值