558浏览
查看: 558|回复: 1

[ESP8266/ESP32] FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配

[复制链接]
本帖最后由 kylinpoet 于 2023-9-6 12:54 编辑

一、固件更新

1. 首先说明下,产品维库给出的固件下载地址错误,麻烦小编更新下:
https://wiki.dfrobot.com.cn/_SKU_DFR0975_FireBeetle_2_Board_ESP32_S3#target_10
FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图1
正确地址应该是这个:
https://micropython.org/download/ESP32_GENERIC_S3/

FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图3
按照教程输入固件后,也使用维库里推荐的 thonny,查看下版本:
FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图2
我们输入例程后:板子上的灯已经成功点亮了:
  1. import time
  2. from machine import Pin
  3. led=Pin(21,Pin.OUT)
  4. while True:
  5.       led.value(1)
  6.       time.sleep(1)
  7.       led.value(0)
  8.       time.sleep(1)
复制代码
照例,我们利用板上自带的 GPIO47 按钮来做个开关:
  1. import time
  2. from machine import Pin
  3. button_pressed = False # global variable
  4. pin_button = Pin(47, mode=Pin.IN, pull=Pin.PULL_UP)
  5. pin_led = Pin(21, Pin.OUT)
  6. pin_led.value(0)
  7. def button_isr(pin):
  8.     global button_pressed
  9.     button_pressed = not button_pressed
  10.     print(button_pressed)
  11. if __name__ == "__main__":
  12.     pin_button.irq(trigger=Pin.IRQ_RISING,handler=button_isr)
  13.     while True:
  14.         pin_led.value(button_pressed)
  15.         time.sleep(0.01)
复制代码


使用系统中断来控制开与关。

二、天气应用

有wifi的地方,就有天气,就像有主板的地方就有LED。
我们使用 esp32,来获取下今日天气,因为维库里没有MicroPython的使用例程,我们手搓一个:
  1. import time
  2. from machine import Pin
  3. import network
  4. import urequests
  5. import ujson
  6. def connectWiFi(ssid, passwd):
  7.       wlan=network.WLAN(network.STA_IF)
  8.       wlan.active(True)
  9.       wlan.disconnect()
  10.       wlan.connect(ssid, passwd)
  11.       j = 0
  12.       while(wlan.ifconfig()[0]=='0.0.0.0'):
  13.             time.sleep(1)
复制代码
FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图4
完美解析!

三、关于MQTT

要在esp32上使用MQTT,我们需要导入两个文件:simple.py 和 robust.py 文件,用于连接mqtt,为了节约篇幅,作为附件附上。具体使用可参考:
https://github.com/micropython/micropython-lib/blob/master/micropython/umqtt.robust/umqtt/robust.py

照例,我们使用 DF 的 iot平台:
FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图5
写入代码:
# main.py
import time
import network
from machine import Pin
from robust import MQTTClient

clientID = "ESP32"        #连接ID
server = "iot.dfrobot.com.cn"        #MQTT服务器地址
port = 1883        #MQTT服务器端口号
userName = "***"        #MQTT登录用户名
passWord = "***"        #MQTT登录密码
keepAlive = 60        #心跳周期
wifiSSID = "**4-2"        #WIFI SSID
wifiPassWord = "x"        #WIFI密码
subTopic = "Q-**"        #订阅的主题
pubTopic = "subTopic"        #发布的主题
num = 0

pinled=Pin(21,Pin.OUT)

#连接WLAN
def wifiConnect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print("开始连接...")
        wlan.connect(wifiSSID, wifiPassWord)
        i = 1
        while not wlan.isconnected():
            print("正在连接中...".format(i))
            i += 1
            time.sleep(1)
    print("网络信息为:", wlan.ifconfig())



#订阅主题回调函数 收到消息时在此处理
def subCallBack(subTopic, msg):
    global pinled
    global num
    print(subTopic, msg)
    msg = msg.decode().lower()
    print(msg)
    if msg == 'off':
        pinled.value(0)
    elif msg == 'on':
        pinled.value(1)
    # num=num+1
    # mqtt.publish(pubTopic,str(num))        #推送消息至发布的主题


wifiConnect()
mqtt = MQTTClient(clientID,server,port,userName,passWord,keepAlive)
mqtt.set_callback(subCallBack)
mqtt.connect()
mqtt.subscribe(subTopic)
print("订阅成功")


while True:
    mqtt.check_msg()
    time.sleep(0.1)

FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配图6
效果视频,就是mqtt的普通视频,这里就不演示了。
四、总结

就问你心不心动?DF商城走起!



木子呢  管理员

发表于 2023-9-6 14:10:28

已看到关于“固件下载地址”反馈,感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail