kylinpoet 发表于 2023-9-6 12:54:33

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

正确地址应该是这个:
https://micropython.org/download/ESP32_GENERIC_S3/


按照教程输入固件后,也使用维库里推荐的 thonny,查看下版本:

我们输入例程后:板子上的灯已经成功点亮了:import time
from machine import Pin

led=Pin(21,Pin.OUT)

while True:
      led.value(1)
      time.sleep(1)
      led.value(0)
      time.sleep(1)照例,我们利用板上自带的 GPIO47 按钮来做个开关:
import time
from machine import Pin

button_pressed = False # global variable
pin_button = Pin(47, mode=Pin.IN, pull=Pin.PULL_UP)
pin_led = Pin(21, Pin.OUT)
pin_led.value(0)

def button_isr(pin):
    global button_pressed
    button_pressed = not button_pressed
    print(button_pressed)


if __name__ == "__main__":
    pin_button.irq(trigger=Pin.IRQ_RISING,handler=button_isr)
    while True:
      pin_led.value(button_pressed)
      time.sleep(0.01)

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

二、天气应用

有wifi的地方,就有天气,就像有主板的地方就有LED。
我们使用 esp32,来获取下今日天气,因为维库里没有MicroPython的使用例程,我们手搓一个:
import time
from machine import Pin

import network
import urequests
import ujson


def connectWiFi(ssid, passwd):
      wlan=network.WLAN(network.STA_IF)
      wlan.active(True)
      wlan.disconnect()
      wlan.connect(ssid, passwd)
      j = 0
      while(wlan.ifconfig()=='0.0.0.0'):
            time.sleep(1)
完美解析!

三、关于MQTT

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

照例,我们使用 DF 的 iot平台:

写入代码:
# 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)

效果视频,就是mqtt的普通视频,这里就不演示了。
四、总结

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



木子呢 发表于 2023-9-6 14:10:28

已看到关于“固件下载地址”反馈,感谢!
页: [1]
查看完整版本: FireBeetle 2 ESP32-S3 【02】esp32和MicroPython更配