295浏览
查看: 295|回复: 3

[ESP8266/ESP32] FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯

[复制链接]
本帖最后由 暮光 于 2024-3-28 17:30 编辑

    首先非常感谢DF的这次试用活动,很幸运得到这次机会。
    这次申请的是FireBeetle 2 ESP32 C6,感觉大板接口多一点,功能更丰富。
先介绍一下这块板子:
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图1FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图2FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图3
    FireBeetle 2 ESP32-C6是一款基于ESP32-C6芯片设计的低功耗物联网开发板,适用于智能家居项目。ESP32-C6搭载160MHz的高性能RISC-V 32位处理器,支持Wi-Fi 6、Bluetooth 5、Zigbee 3.0、Thread 1.3通讯协议,可接入多种通讯协议的物联网网络。FireBeetle 2 ESP32-C6支持Type-C、5V DC、太阳能对锂电池进行充电,部署时有更多的供电方式选择。
    之后果断下单了太阳能充电板 和3.7v充电电池(目前还没到货)。
正好手头有块继电器模块 还做了一个LED 氛围灯 于是一拍即合 做了一个ESP32-C6控制的led氛围灯
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图4  下面介绍一下制作过程
一 材料准备
    1当然是FireBeetle 2 ESP32 C6啦。
    2一个继电器模块(某宝几块钱一个)。
    3 led灯带 5v 1米带usb接口 带背胶的
    4 3D打印灯组模型 ,模型链接https://makerworld.com/zh/models/163227?from=search#profileId-179211
   之所以选择这个模型是因为它可以更换背景的,模块化设计,而且很有氛围感。外圈用的灰色PETG ,内圈用的白色,背景的颜色可以用黑色或者其他颜色。
它原来的开关是那种按钮的,没有科技感,这次给它加上物联网手机控制。
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图5
二 接线图
原理是通过FireBeetle 2 ESP32 C6和巴法云结合,再通过手机端app控制继电器的通断从而实现led灯的开关控制。
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图6
FireBeetle 2 ESP32 C6开发板和继电器 还有灯,实测是可以公用电源的,正负极接对了就行 千万不要接反了 ,有可能会烧。
下面是实际接线图
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图7

然后就是先要在巴法云注册个账号 ,创建一个主题 ,类似的教程b站有好多这里就不再赘述了,主要是获得一个私钥,是大串字母加数字的”xxxxxxx“
接着就可以给给开发板注入灵魂了 代码如下: 需要注意的是xxxx的地方需要改成自己的,

  1. #include <WiFi.h>
  2. #include <WiFi.h>
  3. #define TCP_SERVER_ADDR "bemfa.com"
  4. #define TCP_SERVER_PORT "8344"
  5. #ifndef AP_CONFIG
  6. String UID = "xxxxxxxxxxxxxxxxxxxxxxxx";
  7. #endif
  8. #define MAX_PACKETSIZE 512
  9. #define KEEPALIVEATIME 30*1000
  10. int led = 15;
  11. WiFiClient TCPclient;
  12. String TcpClient_Buff = "";
  13. unsigned int TcpClient_BuffIndex = 0;
  14. unsigned long TcpClient_preTick = 0;
  15. unsigned long preHeartTick = 0;
  16. unsigned long preTCPStartTick = 0;
  17. bool preTCPConnected = false;
  18. bool subFlag = false;
  19. void doWiFiTick();
  20. void doTCPClientTick();
  21. void sendtoTCPServer(String p);
  22. void subTopic(String topic){
  23.   String tcpTemp="";
  24.   tcpTemp = "cmd=1&uid="+UID+"&topic="+topic+"\r\n";
  25.   sendtoTCPServer(tcpTemp);
  26.   tcpTemp="";
  27.   Serial.print("sub topic:");Serial.println(topic);
  28.   }
  29. void doWiFiTick(){
  30. static bool taskStarted = false;
  31. static uint32_t lastWiFiCheckTick = 0;
  32. if ( WiFi.status() != WL_CONNECTED ) {
  33.    if (millis() - lastWiFiCheckTick > 1000) {
  34.      lastWiFiCheckTick = millis();
  35.       WiFi.begin();
  36.   }
  37. }
  38. else {
  39.    if (taskStarted == false) {
  40.      taskStarted = true;
  41.      Serial.print("Get IP Address: ");
  42.       Serial.println(WiFi.localIP());
  43.       startTCPClient();
  44.     }
  45.   }
  46. }
  47. void sendtoTCPServer(String p){
  48.   if (!TCPclient.connected())
  49.   {
  50.      Serial.println("Client is not readly");
  51.       return;
  52.    }
  53.    TCPclient.print(p);
  54.    preHeartTick = millis();//
  55.   }
  56. void startTCPClient(){
  57. if(TCPclient.connect(TCP_SERVER_ADDR, atoi(TCP_SERVER_PORT))){
  58.    Serial.print("Connected to server:");
  59.    Serial.println(TCP_SERVER_ADDR);
  60.    subFlag = true;
  61.    preHeartTick = millis();
  62.    TCPclient.setNoDelay(true);
  63. }
  64. else{
  65.   Serial.print("Failed connected to server:");
  66.   Serial.println(TCP_SERVER_ADDR);
  67.   TCPclient.stop();
  68.   preTCPConnected = false;
  69. }
  70. preTCPStartTick = millis();
  71. }
  72. void subTopicCenter(){
  73. if(subFlag == true){
  74.   subFlag = false;
  75.     subTopic("LED001");
  76. }
  77. }
  78.   void doTCPClientTick(){
  79.   if(WiFi.status() != WL_CONNECTED) return;
  80.   if (!TCPclient.connected()) {
  81.   if(preTCPConnected == true){
  82.     preTCPConnected = false;
  83.    preTCPStartTick = millis();
  84.    Serial.println();
  85.    Serial.println("TCP Client disconnected.");
  86.   TCPclient.stop();
  87. }
  88. else if(millis() - preTCPStartTick > 1*1000)
  89.   startTCPClient();
  90. }
  91. else
  92. {
  93. if (TCPclient.available()) {
  94.    char c =TCPclient.read();
  95.    TcpClient_Buff +=c;
  96.   TcpClient_BuffIndex++;
  97.   TcpClient_preTick = millis();
  98. if(TcpClient_BuffIndex>=MAX_PACKETSIZE - 1){
  99.    TcpClient_BuffIndex = MAX_PACKETSIZE-2;
  100.    TcpClient_preTick = TcpClient_preTick - 200;
  101. }
  102. }
  103. if(millis() - preHeartTick >= KEEPALIVEATIME){
  104.   preHeartTick = millis();
  105.   Serial.println("--Keep alive:");
  106.   sendtoTCPServer("ping\r\n");
  107. }
  108. }
  109. if((TcpClient_Buff.length() >= 1) && (millis() - TcpClient_preTick>=200))
  110. {
  111. TCPclient.flush();
  112.   TcpClient_Buff.trim();
  113.    String topic = "";
  114.    String msg = "";
  115. if(TcpClient_Buff.length() > 15){
  116.   int topicIndex = TcpClient_Buff.indexOf("&topic=")+7;
  117.   int msgIndex = TcpClient_Buff.indexOf("&msg=");
  118.   topic = TcpClient_Buff.substring(topicIndex,msgIndex);
  119.   msg = TcpClient_Buff.substring(msgIndex+5);
  120. }
  121. if (msg == "on") {
  122.     digitalWrite(20,HIGH);
  123.     Serial.println("已打开");
  124.   }
  125.   if (msg == "off") {
  126.     digitalWrite(20,LOW);
  127.     Serial.println("已关闭");
  128.   }
  129. msg = "";
  130. topic = "";
  131. TcpClient_Buff="";
  132. TcpClient_BuffIndex = 0;
  133. }
  134. }
  135. void setup(){
  136. pinMode(led,OUTPUT);
  137.   WiFi.begin("SSID", "password");
  138.   while (WiFi.status() != WL_CONNECTED) {
  139.     delay(500);
  140.     Serial.print(".");
  141.   }
  142.   
  143.   Serial.println("Local IP:");
  144.   Serial.print(WiFi.localIP());
  145.   digitalWrite(led,HIGH);
  146.   pinMode(20, OUTPUT);
  147.   Serial.begin(9600);
  148. }
  149. void loop(){
  150.     doWiFiTick();
  151.   doTCPClientTick();
  152.   subTopicCenter();
  153. }
复制代码
下面是 视频操作演示



同时为了美观我给它画了一个底座正好把开发板和继电器模块都放进去。
底座链接:https://pan.quark.cn/s/acd0efbefe29提取码:Jxaf
FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图8FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图9

写到最后,再次感谢DF给了这次试用机会。
新手小白,一边查资料一边做肯定有好多疏漏的地方,还希望各位大佬多提意见。



木子呢  管理员

发表于 2024-3-28 17:38:08

好看好看,我突然想给他头上也弄个灯,有种”佛光“的感觉了FireBeetle 2 ESP32 C6 试用初体验之物联网远程控制LED氛围灯图1
回复

使用道具 举报

暮光  初级技师
 楼主|

发表于 2024-3-28 17:42:33

木子呢 发表于 2024-3-28 17:38
好看好看,我突然想给他头上也弄个灯,有种”佛光“的感觉了

嗯嗯,我也这么觉得
回复

使用道具 举报

hnyzcj  版主

发表于 2024-3-29 12:14:38

木子呢 发表于 2024-3-28 17:38
好看好看,我突然想给他头上也弄个灯,有种”佛光“的感觉了

漂亮
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail