余老师 发表于 2024-5-5 19:50:30

FireBeetle 2 ESP32 C6 wifi连接点亮米老鼠灯带

首先,感谢论坛给了我这次评测的机会,评测的过程也是学习的过程,哪怕啥也不干,就是在群里看一看,感觉都很有收获。说实在的,从一开始,我有些低估这次评测的难度了,一直以为自己有掌控板和行空板的操作经验,评测C6应该问题不大,谁知过程中遇到了种种困难。第一天安装arduino esp32库文件,差不多花了近1天时间,总是提示失败,装了3遍以上才装好,就给了一个下马威。Downloading packages
esp32:esp32-arduino-libs@idf-release_v5.1-3662303f31
。。。。。。


【功能说明】:
拿到FireBeetle 2 ESP32 C6 ,第一感觉非常小巧,想做一个点灯的程序,但是又想做一个不一样的点灯程序,真不想点板载灯,于是我翻箱倒柜找出很久以前买的一块米奇小灯,这个小灯最初是适配micro:bit用的,后来玩掌控比较多,就闲置了。刚好这次测试一下这些传感器的兼容性。拿出电烙铁,把针头焊好,然后找出杜邦线,一通连接。这里安利一下杜邦线,如果经常玩这些传感器,建议备一些不同接口(公头、母头、公转母)的杜邦线,转接的时候特别好用。


我这次要实现的功能是:将C6和米奇小灯连接,打开C6自带的wifi热点,手机/电脑连上C6热点,通过手机浏览器或者电脑浏览器,发送命令on/off控制米奇小灯。
https://www.bilibili.com/video/BV1Am411y7fJ/

【准备】:Arduino IDE 2.3.2EPS32库、Adafruit_NeoPixel库
【过程】:接线灯带的DIN接口连接C6的6号口,VCC和GND分别连接C6的3v3、GND接口。
【程序控制】
/*
这个程序是可用的,C6自己做热点,手机或者电脑连到热点上去,控制米老鼠的小灯带。
步骤:
1.手机或者电脑连接到WIFI热点名为 FireBeetle ESP32 ,已设置WIFI密码:12345678
2.手机或者电脑浏览器访问网址 http://192.168.4.1/ON 来打开灯 访问 http://192.168.4.1/OFF 来关闭灯
3.在访问后通过点击上下 here 来便捷控制灯的亮灭
*/

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN      6 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 15 // Popular NeoPixel ring size

// 设置WIFI名称以及密码
const char *ssid = "FireBeetle ESP32";//WIFI名称
const char *password = "12345678";//密码

WiFiServer server(80);//网页服务端口默认为80

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels

void setup() {

Serial.begin(115200);
Serial.println();
Serial.println("Configuring access point...");

//如果想要无密码开放网络请删除password
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.begin();

Serial.println("Server started");
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.

pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
WiFiClient client = server.available();   // 检测等待连接

if (client) {                           // 检测是否连接
    Serial.println("New Client.");
    String currentLine = "";                // 创建String变量来保存数据
    while (client.connected()) {            // 保持连接时一直循环
      if (client.available()) {             // 检测连接是否有数据
      char c = client.read();             // 读取接收的数据
      //Serial.write(c);                  // 打印在串行监视器
      if (c == '\n') {                  // 如果读取的是换行符

          //结尾用换行符提醒结束
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
             //将字符与here连接
            client.print("Click <a href=\"/ON\">here</a> to turn ON the LED.<br>");
            client.print("Click <a href=\"/OFF\">here</a> to turn OFF the LED.<br>");

            // HTTP响应为空行
            client.println();
            // 跳出循环
            break;
          } else {    // 如果有一个换行符就清除变量缓存的数据
            currentLine = "";
          }
      } else if (c != '\r') {// 如果获得回车以外的字符
          currentLine += c;      // 获得的字符添加到变量末尾
      }

      // 检查是否获得/ON或者/OFF
      if (currentLine.endsWith("/ON")) {
          pixels.clear();
          for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

            // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
            // Here we're using a moderately bright green color:
            pixels.setPixelColor(i, pixels.Color(0, 150, 0));

            pixels.show();   // Send the updated pixel colors to the hardware.
            delay(0); // Pause before next pass through loop
          }
                         //得到/ON时打开灯
      }
      if (currentLine.endsWith("/OFF")) {
          pixels.clear();                //得到/OFF时关闭灯
          for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

            // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
            // Here we're using a moderately bright green color:
            pixels.setPixelColor(i, pixels.Color(0, 0, 0));

            pixels.show();   // Send the updated pixel colors to the hardware.
            delay(0); // Pause before next pass through loop
          }
      }
      }
    }
    // 关闭连接
    client.stop();
    Serial.println("Client Disconnected.");
}
}【测试结果】:在手机和电脑网页端分别做测试,都ok。 【评测过程中的感受】:1、C6的开发初衷是什么?其实我挺困惑的,物联网的功能之前我在掌控板和扩展板连接上都能实现,现在C6的优势在哪里呢,是太阳能电池,还是自带热点,还是什么,有没有不可替代性?2、目前C6用起来还不太便利,在进阶版的帮助里面能看到代码,但是并不能找到相应的库文件和演示效果,建议在帮助文档中补齐。https://wiki.dfrobot.com.cn/_SKU_DFR1075_FireBeetle_2_Board_ESP32_C6_Advanced_Tutorial#target_33、期待C6能像掌控板一样,支持图形化,支持添加本地库。说实在的,用arduino和thonny还是有些不太顺手,虽说开放性很好,但是有些库文件真的是不好找,如果小编能出一期,帮助寻找库文件的帖子,我觉得也是极好的。
评测过程中得到了群里众多大神的支持,参考了很多帖子。在此一并表示感谢!参考:点亮板载pin 15 小灯https://wiki.dfrobot.com.cn/_SKU_DFR1075_FireBeetle_2_Board_ESP32_C6 Beetle ESP32 C6 点亮灯带https://makelog.dfrobot.com.cn/article-314220.html



腾龙一凡 发表于 2024-5-7 12:13:36

页: [1]
查看完整版本: FireBeetle 2 ESP32 C6 wifi连接点亮米老鼠灯带