808浏览
查看: 808|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32 C6:自制APP控制彩灯

[复制链接]
本帖最后由 麦壳maikemaker 于 2024-4-9 21:28 编辑

幸运的获得了试用名额,正好最近在上micropython+APP inventor的课程,所以做一个APP通过MQTT远程控制彩灯的小实验。


硬件:FireBeetle 2 ESP32 C6,WS2812灯环
程序语言:micropython
APP开发环境:APP inventor2


电路图:
FireBeetle 2 ESP32 C6:自制APP控制彩灯图1
C6代码:
  1. '''
  2. 实验名称:自建APP控制RGB灯
  3. 20240409
  4. '''
  5. import network,time
  6. from umqtt.simple import MQTTClient #导入MQTT板块
  7. from machine import Pin,Timer
  8. import neopixel #导入ws2812彩灯库
  9. import urandom #导入随机数库
  10. RGBIO = Pin(5)  # 彩灯控制引脚
  11. LED_NUM = 12  # 彩灯的数量
  12. LED = neopixel.NeoPixel(pin=RGBIO, n=LED_NUM, timing=1)  # 创建控制对象
  13. LED.fill((0, 0, 0))  # GRB填充数据(RGB顺序, 0为不亮,255为全亮)
  14. LED.write()  # 写入数据(生效)
  15. #WIFI连接函数
  16. def WIFI_Connect():
  17.     WIFI_LED=Pin(15, Pin.OUT) #初始化WIFI指示灯
  18.     wlan = network.WLAN(network.STA_IF) #STA模式
  19.     wlan.active(True)                   #激活接口
  20.     start_time=time.time()              #记录时间做超时判断
  21.     if not wlan.isconnected():
  22.         print('connecting to network...')
  23.         wlan.connect('waoo2111280', 'waoo2111280') #输入WIFI账号密码
  24.         while not wlan.isconnected():
  25.             #LED闪烁提示
  26.             WIFI_LED.value(1)
  27.             time.sleep_ms(300)
  28.             WIFI_LED.value(0)
  29.             time.sleep_ms(300)
  30.             #超时判断,15秒没连接成功判定为超时
  31.             if time.time()-start_time > 15 :
  32.                 print('WIFI Connected Timeout!')
  33.                 break
  34.     if wlan.isconnected():
  35.         #LED点亮
  36.         WIFI_LED.value(1)
  37.         #串口打印信息
  38.         print('network information:', wlan.ifconfig())
  39.         LED.fill((0, 255, 0)) #联网成功显示绿色
  40.         LED.write()
  41.         return True
  42.     else:
  43.         LED.fill((255, 0, 0))#联网失败显示红色
  44.         LED.write()
  45.         return False
  46. #控制全部灯珠
  47. def allled(msg):
  48.     #{200,200,200}数据结构RGB
  49.     print(msg[3 : (len(msg) - 2)])
  50.     RGB = msg[3 : (len(msg) - 2)].split(',')
  51.     LED.fill((int(RGB[0]), int(RGB[1]), int(RGB[2])))
  52.     LED.write()
  53. #控制单个灯珠
  54. def oneled(msg):
  55.     #{200,200,200,11}数据结构RGB,灯珠位置
  56.     print(msg[3 : (len(msg) - 2)])
  57.     RGB = msg[3 : (len(msg) - 2)].split(',')
  58.     LED[int(RGB[3])]=((int(RGB[0]), int(RGB[1]), int(RGB[2])))
  59.     LED.write()
  60.    
  61. #设置MQTT回调函数,有信息时候执行
  62. def MQTT_callback(topic, msg):
  63.     print('topic: {}'.format(topic))
  64.     print('msg:{}'.format(msg))
  65. #根据TOPIC调用相应函数,并传入msg
  66.     if "b'dfrobot/fire/beetle/all'"== '{}'.format(topic):
  67.         allled('{}'.format(msg))
  68.     elif "b'dfrobot/fire/beetle/one'"== '{}'.format(topic):
  69.         oneled('{}'.format(msg))
  70. #接收数据任务
  71. #300MS检查一次消息
  72. def MQTT_Rev(tim):
  73.     client.check_msg()
  74. #执行WIFI连接函数并判断是否已经连接成功
  75. if WIFI_Connect():
  76.     SERVER = 'broker.emqx.io'#MQTT服务器
  77.     PORT = 1883 #端口
  78.     CLIENT_ID = '8b7562984asdfg' # 客户端ID
  79.     #全部灯
  80.     TOPIC = 'dfrobot/fire/beetle/all' # TOPIC名称
  81.     #单个灯
  82.     TOPIC1 = 'dfrobot/fire/beetle/one' # TOPIC名称
  83.    
  84.     client = MQTTClient(CLIENT_ID, SERVER, PORT) #建立客户端对象
  85.     client.set_callback(MQTT_callback)  #配置回调函数
  86.     client.connect()#连接服务器
  87.     print('connect')
  88.     client.subscribe(TOPIC) #订阅主题
  89.     client.subscribe(TOPIC1) #订阅主题
  90.     print('subscribe')
  91.     #开启RTOS定时器,编号为-1,周期300ms,执行socket通信接收任务
  92.     #C6定时器编号0
  93.     tim = Timer(0) #创建定时器
  94.     tim.init(period=300, mode=Timer.PERIODIC,callback=MQTT_Rev)
复制代码


APP界面设计:
FireBeetle 2 ESP32 C6:自制APP控制彩灯图2
APP程序设计:
FireBeetle 2 ESP32 C6:自制APP控制彩灯图3
效果:


附:
FireBeetle 2 ESP32 C6: https://www.dfrobot.com.cn/goods-3825.html

彩灯: https://www.dfrobot.com.cn/goods-3472.html
固件:https://mc.dfrobot.com.cn/thread-318231-1-1.html
APPinventor2:http://ai2.17coding.net/?locale=zh_CN





自制APP控制彩灯.zip

8.31 MB, 下载次数: 2885

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

本版积分规则

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

硬件清单

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

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

mail