Henry-0755

  • 2024-12-08
  • 发表了主题帖: 【Follow me第二季第2期】任务补充 esp32与arduinoUNOR4之间的的udp通信

    本帖最后由 Henry-0755 于 2024-12-8 21:52 编辑 【Follow me第二季第2期】任务补充 esp32与arduinoUNOR4之间的udp通信 购买的时候额外购买了块 FIREBEETLE 2 ESP32 DEV BOARD 补充下这个与开发板简单联动 首先是如何用起来的教程: 来自DFRobot家的开发板都有手把手的教程:[教程](https://wiki.dfrobot.com/SKU_DFR1075_FireBeetle_2_Board_ESP32_C6#target_10 "教程"),初学者很快就能上手 也是一个wifi的小模块,下面用它体验下arduino下的esp32与arduino UNOR4之间的udp通信 为了方便演示,当两个开发板之间建立了通信的时候,esp32会每隔1s发送一个心跳包给unoR4,uno接到后将一个一个的亮起matrix_led灯,效果如下: [localvideo]38c556c34f31ad04592526651c66e074[/localvideo] 附上完整代码(一行不用改就能运行滴~): UnoR4端(基于官方例程中的开启ap模式代码,unoR4作为热点让esp连接): ``` /*   WiFi Web Server LED Blink   A simple web server that lets you blink an LED via the web.   This sketch will create a new access point (with no password).   It will then launch a new server and print out the IP address   to the Serial Monitor. From there, you can open that address in a web browser   to turn on and off the LED on pin 13.   If the IP address of your board is yourAddress:     http://yourAddress/H turns the LED on     http://yourAddress/L turns it off   created 25 Nov 2012   by Tom Igoe   adapted to WiFi AP by Adafruit   Find the full UNO R4 WiFi Network documentation here:   https://docs.arduino.cc/tutorials/uno-r4-wifi/wifi-examples#access-point */ #include #include "Arduino_LED_Matrix.h"   // Include the LED_Matrix library #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h char ssid[] = SECRET_SSID;        // your network SSID (name) char pass[] = SECRET_PASS;        // your network password (use for WPA, or use as key for WEP) int keyIndex = 0;                 // your network key index number (needed only for WEP) int led =  LED_BUILTIN; int status = WL_IDLE_STATUS; WiFiServer server(80); unsigned int localPort = 2390;      // local port to listen on ArduinoLEDMatrix matrix;          // Create an instance of the ArduinoLEDMatrix class char packetBuffer[256]; //buffer to hold incoming packet char  ReplyBuffer[] = "acknowledged\n";       // a string to send back uint32_t counter[] = {         0,         0,         0 }; WiFiUDP Udp; void setup() {   //Initialize serial and wait for port to open:   Serial.begin(9600);   while (!Serial) {     ; // wait for serial port to connect. Needed for native USB port only   }   Serial.println("Access Point Web Server");   pinMode(led, OUTPUT);      // set the LED pin mode   matrix.begin();   // check for the WiFi module:   if (WiFi.status() == WL_NO_MODULE) {     Serial.println("Communication with WiFi module failed!");     // don't continue     while (true);   }   String fv = WiFi.firmwareVersion();   if (fv < WIFI_FIRMWARE_LATEST_VERSION) {     Serial.println("Please upgrade the firmware");   }   // by default the local IP address will be 192.168.4.1   // you can override it with the following:   WiFi.config(IPAddress(192,48,56,2));   // print the network name (SSID);   Serial.print("Creating access point named: ");   Serial.println(ssid);   // Create open network. Change this line if you want to create an WEP network:   status = WiFi.beginAP(ssid, pass);   if (status != WL_AP_LISTENING) {     Serial.println("Creating access point failed");     // don't continue     while (true);   }   // wait 10 seconds for connection:   delay(10000);   // start the web server on port 80   server.begin();   // you're connected now, so print out the status   printWiFiStatus();   Udp.begin(localPort); } void loop() {      // compare the previous status to the current status   if (status != WiFi.status()) {     // it has changed update the variable     status = WiFi.status();     if (status == WL_AP_CONNECTED) {       // a device has connected to the AP       Serial.println("Device connected to AP");     } else {       // a device has disconnected from the AP, and we are back in listening mode       Serial.println("Device disconnected from AP");     }   }   // if there's data available, read a packet   int packetSize = Udp.parsePacket();   if (packetSize) {     Serial.print("Received packet of size ");     Serial.println(packetSize);     Serial.print("From ");     IPAddress remoteIp = Udp.remoteIP();     Serial.print(remoteIp);     Serial.print(", port ");     Serial.println(Udp.remotePort());     // read the packet into packetBuffer     int len = Udp.read(packetBuffer, 255);     if (len > 0) {       packetBuffer[len] = 0;     }     Serial.println("Contents:");     Serial.println(packetBuffer);     if (counter[2] != 0xffffffff)       counter[2] = (counter[2]

  • 2024-10-22
  • 发表了主题帖: 【Follow me第二季第2期】任务汇总-ArduinoUnoR4尝鲜LTR329与LCD_SHIELD_V3

    # 【Follow me第二季第2期】任务汇总—ArduinoUnoR4尝鲜LTR329与LCD_SHIELD_V3 ## 视频展示 https://training.eeworld.com.cn/course/68723 物料: 使用包括开发板与传感器。 | **制造商产品编号** | 描述                            | 图片                                                         | | ------------------ | ------------------------------- | ------------------------------------------------------------ | | ABX00087           | ARDUINO UNO R4 WIFI             | | | DFR1075            | FIREBEETLE 2 ESP32 DEV BOARD    | | | 5591               | ADAFRUIT LTR-329 LIGHT SENSOR - | | 实物图: ## 任务实现 ### 入门任务(必做) 搭建环境并开启第一步Blink / 串口打印Hello EEWorld! 使用的是arduino ide,串口也通过arduino ide进行查看 ``` c void setup() {   pinMode(13, OUTPUT);   Serial.begin(9600);   Serial.println("Hello EEWorld!"); } void loop() {   delay(500);   digitalWrite(13, !digitalRead(13)); } ``` ### 基础任务(必做) 基础任务可以分为两个 一个是LED矩阵,另一个是DAC,ADC以及OPAMP的模拟信号处理 #### LED矩阵 Arduino的LED矩阵是一个12*8的矩阵,官方有给出原理图,原理和矩阵按键很类似,且利用了发光二极管的单向导电性。 实际点亮的方式应当是时分复用,比如最左边7与剩余的io可以控制第一列,6与剩余控制第二列,类推,按照这样的方式最多应该是10+9+8+7+6+5+4+3+2 = 54,再反向*2最多应当是108个led,这里最后一列少了12个所以是96个。挺巧妙的,虽然实际上我们直接调库就好~ 代码如下:心跳 ``` #include "Arduino_LED_Matrix.h"  /*包含官方的驱动库*/ ArduinoLEDMatrix led_matrix;  //实例化一个对象 byte frame[3][8][12] = {   {     { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },     { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },     { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },     { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },     { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },   },   {     { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },     { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },     { 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0 },     { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },     { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 },     { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },   },   {     { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },     { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },     { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },     { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },     { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 },     { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },   }, }; void setup() {   Serial.begin(115200);   led_matrix.begin(); } void loop() {   led_matrix.renderBitmap(frame[0], 8, 12);   delay(300);   led_matrix.renderBitmap(frame[1], 8, 12);   delay(300);   led_matrix.renderBitmap(frame[2], 8, 12);   delay(500);   led_matrix.renderBitmap(frame[1], 8, 12);   delay(300); } ``` 效果图: #### DAC + OPAMP + ADC 参考官网`https://docs.arduino.cc/tutorials/uno-r4-wifi/opamp/` 这里将A0 A1短接(DAC输出信号由AMP0+再反馈到放大电路) 按照官网 ![Voltage 2x Amplifier Circuit](https://docs.arduino.cc/static/45f63f884a62fa52a30abd12bf5e9755/a6d36/circuitAmplifierWiFi.png) 接线图: 通过一个10k和20k的电阻,将信号放大3倍 代码如下: ``` #include "analogWave.h" #include analogWave wave(DAC); int freq = 600; void setup() {         // put your setup code here, to run once:         Serial.begin(1000000);         analogReadResolution(14);         wave.sine(freq);         wave.amplitude(0.1);   OPAMP.begin(OPAMP_SPEED_HIGHSPEED); } void loop() {         int value = analogRead(A3);         Serial.println(value); } ``` 上述代码,当代码采用14bit精度的DAC再经过dac的amplitude为0.1倍 理论adc直接采集dac的信号应当是2^14/0.1=1638 但adc采集的是经过OPAMP放大3倍的信号,因此实际的峰值为4800左右。 由此例子,便可以验证DAC的sin波形输出、ADC的采集以及OPAMP的放大功能。 ### 进阶任务与扩展任务 进阶任务与扩展任务均是使用HomeAssistant结合wifi做控制,放到一起来做 拓展任务采用的是LTR329的光传感器,实物如图: 安装homeassistant不再赘述 基本的概念是有三个:HomeAssistant、MQTT、HAClient HomeAssistant是一个web服务器,负责展示和与用户交互。 有了web服务器,后台也是需要的,后台采用的是MQTT协议的服务器,有许多实现这个协议的后台,比如本次使用的是mosquitto后台,负责建立与板子的tcp通信。 HAClient就是开发板子上与HomeAssistant交互的客户端,提供数据,提供控制接口实例。 (个人理解) 下面是板端的代码与设计思路,揉合了网上ArduinoHA示例,MQTTClient等示例。 #### 设计思路 使用ArduinoHA库声明实例,包括灯、LTR329的红外光强度、LTR329的可见光强度。 设置回调,控制板子上的灯状态。 再loop循环中,读取LTR329的值,实时更新到HA上。 ```arduino #include #include #include #include "Adafruit_LTR329_LTR303.h" const char WIFI_SSID[] = "LH";     // CHANGE TO YOUR WIFI SSID const char WIFI_PASSWORD[] = "qwertyuiop";  // CHANGE TO YOUR WIFI PASSWORD //const char MQTT_BROKER_ADRRESS[] = "test.mosquitto.org";  // CHANGE TO MQTT BROKER'S ADDRESS const char MQTT_BROKER_ADRRESS[] = "192.168.2.35";  // CHANGE TO MQTT BROKER'S IP ADDRESS const int MQTT_PORT = 1883; const char MQTT_CLIENT_ID[] = "arduino-uno-r4";  // CHANGE IT AS YOU DESIRE const char MQTT_USERNAME[] = "";              // CHANGE IT IF REQUIRED, empty if not required const char MQTT_PASSWORD[] = "";              // CHANGE IT IF REQUIRED, empty if not required // The MQTT topics that Arduino should publish/subscribe const char PUBLISH_TOPIC[] = "arduino-uno-r4/send";       // CHANGE IT AS YOU DESIRE const char SUBSCRIBE_TOPIC[] = "arduino-uno-r4/receive";  // CHANGE IT AS YOU DESIRE WiFiClient client; HADevice device(MQTT_CLIENT_ID); // 创建一个HA设备 HAMqtt mqtt(client, device); HASwitch led_switch("ledSwitch"); // 开关实体 HASensorNumber light_sensor("lightSensor"); HASensorNumber infrared_sensor("infraredSensor"); Adafruit_LTR329 ltr = Adafruit_LTR329(); uint16_t visible_lx, infrared_lx; void onSwitchCommand(bool state, HASwitch *sender) {   Serial.print("state: ");   Serial.println(state);   sender->setState(state);   if (state)     digitalWrite(LED_BUILTIN, HIGH);   else     digitalWrite(LED_BUILTIN, LOW); } void wifi_up(); void printWifiStatus(); void setup() {   Serial.begin(9600);   pinMode(LED_BUILTIN, OUTPUT);   wifi_up();   led_switch.setIcon("mdi:led-outline");   led_switch.setName("arduino LED");   led_switch.onCommand(onSwitchCommand);   light_sensor.setName("arduino light");   light_sensor.setIcon("mdi:alarm-light-outline");   infrared_sensor.setName("arduino infrared");   infrared_sensor.setIcon("mdi:sun-wireless-outline");   if ( ! ltr.begin(&Wire1) ) {     Serial.println("Couldn't find LTR sensor!");     while (1) delay(10);   }   Serial.println("Found LTR sensor!");   ltr.setGain(LTR3XX_GAIN_2);   ltr.setIntegrationTime(LTR3XX_INTEGTIME_100);   ltr.setMeasurementRate(LTR3XX_MEASRATE_200); } void loop() {   mqtt.loop();   if (ltr.newDataAvailable()) {     ltr.readBothChannels(visible_lx, infrared_lx);     light_sensor.setValue(visible_lx);     infrared_sensor.setValue(infrared_lx);   } } void onMqttConnected() {   Serial.println("Connected to the broker!");   mqtt.subscribe(SUBSCRIBE_TOPIC);   Serial.println("Subscribe to topic: ");   Serial.print(SUBSCRIBE_TOPIC); } void onMqttDisconneted() {   Serial.println("Disconnected from the broker!"); } void onMqttStateChanged(HAMqtt::ConnectionState state) {   Serial.print("MQTT state changed to: ");   Serial.println(static_cast(state)); } void wifi_up() {   WiFi.begin(WIFI_SSID, WIFI_PASSWORD); // Connect to WPA/WPA2 network:   Serial.print("Attempting to connect to WPA SSID: ");   Serial.println(WIFI_SSID);   while (WiFi.status() != WL_CONNECTED)   {     WiFi.begin(WIFI_SSID, WIFI_PASSWORD);     delay(1000);   }   Serial.println("Starting connect to MQTT server");   mqtt.onConnected(onMqttConnected);   mqtt.onDisconnected(onMqttDisconneted);   mqtt.onStateChanged(onMqttStateChanged);   mqtt.setDataPrefix("homeassistant/sensor");   if (!mqtt.begin(MQTT_BROKER_ADRRESS, MQTT_PORT, MQTT_USERNAME, MQTT_PASSWORD))   {     Serial.print("Failed");     while(1);   } } ``` 在HA面板上,便有了相应entity与device ### 点屏LCD Shield V3 手头上有个不知从何而来的UNO适配的2.8''TFT LCD Shield V3的板子,如图: 想着不用白不用,网上搜啊搜也没有找到屏幕信息,好在社区资源丰富,找到个第三方库[MCUFriendly_kvb](https://docs.arduino.cc/libraries/mcufriend_kbv/) 看到国外友人有适配这个板子,但又很可惜的是这个库的最后版本停留在2年前,自然是没有适配ArduinoR4(因为他是直接写mcu寄存器,不是调用arduino的接口,因此需要根据不同信号适配读写) 找到一个分支今年专门适配的R4,[链接](https://github.com/slviajero/MCUFRIEND_kbv/tree/master),便终于用上屏幕板子啦~ 效果如图,屏幕刷新率还不错,目测30帧+ ## 心得体会 首先板子选得非常好玩,很有趣功能很丰富的板子,网上也有许多教程。 也是首次接触HomeAssistant,以后可以搭建自己的智能家居了哈哈。 且活动十分人性化,由于个人原因(本来都打算放弃了)迟交了许久也允许补交,太感动了。 非常好的活动与论坛~~,希望自己之后能多总结、多动手,以后有DIY项目,首先就分享到咱们论坛。 ## 代码 https://download.eeworld.com.cn/detail/Henry-0755/634602 补充内容 (2024-12-8 21:50): 补充了之前没用上的esps3模块~帖子链接在:https://bbs.eeworld.com.cn/thread-1301229-1-1.html

  • 加入了学习《【Follow me第二季第2期】全部任务演示》,观看 任务汇总视频

  • 加入了学习《【Follow me第二季第2期】+视频介绍》,观看 【Follow me第二季第2期】

  • 上传了资料: FollowMe第二季第二期代码

  • 2024-10-09
  • 上传了资料: FollowMe第二季第一期代码

  • 加入了学习《 【Follow me第二季第1期】全部任务演示》,观看 全部视频任务

  • 2024-09-01
  • 发表了主题帖: 【Follow me第二季第1期】任务汇总—炫酷圆彩灯

    本帖最后由 Henry-0755 于 2024-10-9 21:42 编辑 Follow Me第二季 第一期 ## Follow me 第二季第1期任务 简单介绍: 本次活动使用[Adafruit Circuit Playground Express](https://www.digikey.cn/zh/products/detail/adafruit-industries-llc/3333/7310913),板卡支持的开发环境多样,支持MakeCode平台、CircuitPython、Arduino 之前使用CircuitPython比较多,接下来的任务都将以这个平台展开。 购买的物料清单: | 购买清单                     |                                                              |                                                   | | ---------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | | CIRCUIT PLAYGROUND EXPRESS   | [购买链接](https://www.digikey.cn/zh/products/detail/adafruit-industries-llc/3333/7310913) | [官网链接](https://www.adafruit.com/product/3333) | | ADDRESS LED RING SERIAL RGBW | [购买链接](https://www.digikey.cn/zh/products/detail/adafruit-industries-llc/3333/7310913) | [官网链接](https://www.adafruit.com/product/2855) | 板卡板载非常多的sensor 无论是红外,光照传感器还是温度传感器以及麦克风,都与LED灯非常搭配,就是各种点灯。 **任务完成效果请看VCR~** [任务视频链接](https://training.eeworld.com.cn/video/40820) **入门任务(必做):**开发环境搭建,板载LED点亮 ```python import time import board import digitalio led = digitalio.DigitalInOut(board.LED) led.switch_to_output() while True:     led.value = True     time.sleep(1)     led.value = False     time.sleep(1) ``` **基础任务一(必做):**控制板载炫彩LED,跑马灯点亮和颜色变换 网上找到好几个非常优秀的灯效控制开源项目,circuitpython适用的是这个 [Adafruit_CircuitPython_LED_Animation](https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation) 有很多的灯效,跑马灯,彩虹跑马灯,sparkle,多灯效组合等等,然而很可惜运行了下,发现很多demo都无法跑起来,仅import库就已经超出内存范围了。[ATSAMD21G18](https://www.microchip.com/en-us/product/ATSAMD21G18)仅板载32k sram,用code.py脚本一运行就大概仅剩16048bytes了,进命令行还能省点内存。 效果: ```python Auto-reload is on. Simply save files over USB to run them or enter REPL to disable. code.py output: 16048 Code done running. Press any key to enter the REPL. Use CTRL-D to reload. Adafruit CircuitPython 9.1.1 on 2024-07-22; Adafruit CircuitPlayground Express with samd21g18 >>> import gc >>> gc.collect() >>> print(gc.mem_free()) 16624 >>> >>> ``` 只能简单的控制灯效,在命令行运行 ```python from adafruit_led_animation.animation.customcolorchase import CustomColorChase import neopixel from board import * # Update to match the number of NeoPixels you have connected pixel_num = 10 pixels = neopixel.NeoPixel(NEOPIXEL, pixel_num, brightness=0.05, auto_write=False) custom_color_chase_rainbow = CustomColorChase(pixels, speed=0.1, size=2, spacing=3) while True:     custom_color_chase_rainbow.animate() ``` 额外购买的灯圈模块一起亮 ```python from adafruit_led_animation.animation.customcolorchase import CustomColorChase import neopixel from board import * pixels_ex = neopixel.NeoPixel(A2, 16, brightness=0.05, auto_write=False, pixel_order=neopixel.RGBW) pixels_in = neopixel.NeoPixel(NEOPIXEL, 10, brightness=0.05, auto_write=False) custom_color_chase_rainbow_ex = CustomColorChase(pixels_ex, speed=0.1, size=2, spacing=3) custom_color_chase_rainbow_in = CustomColorChase(pixels_in, speed=0.1, size=2, spacing=3) while True:     custom_color_chase_rainbow_ex.animate()     custom_color_chase_rainbow_in.animate() ``` **基础任务二(必做):**监测环境温度和光线,通过板载LED展示舒适程度 温度、光线 通过手指头的温度来让开发板升温 [Playground Light Sensor](https://learn.adafruit.com/adafruit-circuit-playground-express/playground-light-sensor) [Playground Temperature](https://learn.adafruit.com/adafruit-circuit-playground-express/playground-temperature) 将官网的这两个结合并修改,通过slide switch切换温度检测还是光线检测 ```python import time import adafruit_thermistor import neopixel import simpleio import analogio import digitalio import time import board pixels = neopixel.NeoPixel(board.NEOPIXEL, 10, brightness=.05, auto_write=False) pixels.fill((0, 0, 0)) pixels.show() thermistor = adafruit_thermistor.Thermistor(     board.TEMPERATURE, 10000, 10000, 25, 3950) light = analogio.AnalogIn(board.LIGHT) switch = digitalio.DigitalInOut(board.SLIDE_SWITCH) switch.switch_to_input(pull=digitalio.Pull.UP) while True:     if switch.value:         temp_c = thermistor.temperature         temp_f = thermistor.temperature * 9 / 5 + 32         print("Temperature is: %f C and %f F" % (temp_c, temp_f))         peak = simpleio.map_range(temp_c, 26, 32, 0, 9)                  for i in range(0, 9, 1):             if i 0:             pixels[int(peak)] = PEAK_COLOR     for i in range(16):         if i < c_ex:             pixels_ex = volume_color(i, 16)         if c_ex >= peak_ex:             peak_ex = min(c_ex, 16 - 1)         elif peak_ex > 0:             peak_ex = peak_ex - 1         if peak_ex > 0:             pixels_ex[int(peak_ex)] = PEAK_COLOR     pixels.show()     pixels_ex.show()     time.sleep(0.01) ``` **最后再简单介绍下买的拓展模块** ** 设计思路 ** 同样来自adafruit的16灯珠,丝印表明了5v供电 GND,DIN,DOUT,GND,我连接到了对应的PIN,DOUT接到D2,通过neopixel很方便的就配置上了 再通过热熔胶把它固定再背板上,如图: 一开始颜色不对,明明16个灯珠却要填21个才能全亮 后来找库介绍才发现要写RGB的order ``` This example demonstrates using a single NeoPixel tied to a GPIO pin and with a pixel_order to specify the color channel order. Note that bpp does not need to be specified as it is computed from the supplied pixel_order. import board import neopixel pixel = neopixel.NeoPixel(board.D0, 1, pixel_order=neopixel.RGBW) pixel[0] = (30, 0, 20, 10) ``` 这里需要填的模式是RGBW,因为之前忽略了W,所以少了1/3的灯珠颜色。 效果很好,亮度超高: 官网链接在:[NeoPixel Ring - 16 x 5050 RGB LED with Integrated Drivers : ID 1463 : Adafruit Industries, Unique & fun DIY electronics and kits](https://www.adafruit.com/product/1463) 5v的供电非常的亮,之后拿来做屏幕炫彩背光应当很不错。 ** 活动总结 ** 这次的开发板选的很好玩,多样的传感器,花样电灯,开发平台也很丰富,还带小朋友玩了下MakeCode,也很有意思。已经多次参加了,也有推荐给身边的朋友一起参加,非常好的活动~ ** 代码 ** https://download.eeworld.com.cn/detail/Henry-0755/634563

  • 2024-08-23
  • 回复了主题帖: 《黑神话 悟空》是由什么语言编写的?

    UE作游戏引擎的啦 c++ 网上有人用ue vr插件已经玩上VR黑神话了

  • 2024-08-19
  • 回复了主题帖: 【Follow me第二季第1期】+作业提交+显眼包胸章

    干货满满,很值得参考,内存确实是个问题,跑一些库刚import完就内存不够了

  • 2024-06-06
  • 回复了主题帖: 【Beetle ESP32 C6迷你开发板】低功耗模式与功耗测试

    walker2048 发表于 2024-6-6 08:51 大佬要不要测试下降频的功耗,我没搞过。想知道80Mhz主频的情况下,是否能使用wifi,功耗多少? 好的嘞 可以测试下 就80M下看看能不能ping通喽

  • 发表了主题帖: 【Beetle ESP32 C6迷你开发板】低功耗模式与功耗测试

    # 【Beetle ESP32 C6迷你开发板】低功耗模式与功耗测试 ## 一 低功耗模式 esp32主要有两种节能模式 light-sleep 与 deep-sleep 根据官方文档 在 Light-sleep 模式下,数字外设、CPU、以及大部分 RAM 都使用时钟门控,同时电源电压降低。退出该模式后,数字外设、CPU 和 RAM 恢复运行,内部状态保持不变。 在 Deep-sleep 模式下,CPU、大部分 RAM、以及所有由时钟 APB_CLK 驱动的数字外设都会被断电。芯片上继续处于供电状态的部分仅包括: > - RTC 控制器 > - ULP 协处理器 > - RTC 高速内存 *** 其实还有额外的降低功耗的模式Modem-sleep mode 实际就是给cpu降频+RT部分周期性启动 *** 结合datasheet中的框架图 其中 RTC 高速内存 通常是指与实时时钟模块关联的一小块快速存取内存。 ulp指白色的模块 lp相关的硬件 lp memory 指16 KB of low-power SRAM (LP SRAM) that can be accessed by HP CPU or LP CPU. It can retain data in Deep-sleep mode 进入休眠模式后依据不同的休眠等级 唤醒需要的源也不同 基本包括定时器 外部ext0/1 ULP协处理器(RISC-V核)以及light-sleep下GPIO UART唤醒 ## 二 功耗测试 板子的功耗其实高出文档很多 文档中light-sleep与deep-sleep都是uA级别 文档中描述 deep_sleep模式 demo位置`examples/system/deep_sleep/main/deep_sleep_example_main.c` 测量结果 light_sleep模式 demo位置`examples/system/light_sleep/main/light_sleep_example_main.c` 通过测试可以看出ligth_sleep模式比deep_sleep模式高出180uA是符合预期的,所以大概就是板子的一些io没有匹配上或外围电路有一点点的漏电

  • 2024-05-26
  • 发表了主题帖: 【Beetle ESP32 C6迷你开发板】ADC以及蓝牙初体验

    #【Beetle ESP32 C6迷你开发板】ADC以及蓝牙初体验 ## 一 ADC 芯片只有一个12bit的ADC通道 引出了三个channels 4 5 6如下图 摇杆需要连续的采样两个ADC通道 采样xy坐标 接线如图 demo在sdk的`examples/ble_handle/main/continuous_read_main.c` 略作修改 采样4 5通道 采样率降低 减小每次READ的长度 提高实时性 修改部分如下 ``` #define EXAMPLE_READ_LEN                    16 static adc_channel_t channel[2] = {ADC_CHANNEL_4, ADC_CHANNEL_5}; adc_continuous_handle_cfg_t adc_config = {     .max_store_buf_size = 256,     .conv_frame_size = EXAMPLE_READ_LEN, }; ESP_ERROR_CHECK(adc_continuous_new_handle(&adc_config, &handle)); adc_continuous_config_t dig_cfg = {     .sample_freq_hz = 1 * 1000,     .conv_mode = EXAMPLE_ADC_CONV_MODE,     .format = EXAMPLE_ADC_OUTPUT_TYPE, }; ``` 就可以及时的得到采样值啦 ## 二 蓝牙 想让开发板作为一个蓝牙设备可以参考 `examples/bluetooth/esp_hid_device/main/esp_hid_device_main.c` 默认的例子采用的是Bluedroid协议的HID 编译运行 在手机上连接设备 会每隔一段时间交替设置声音加减 而要模拟其他设备 比如鼠标设备 也是在这个例子总 通过宏控制 根据EXAMPLE_MOUSE配置menuconfig ``` CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y CONFIG_EXAMPLE_MOUSE_ENABLE=y CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y CONFIG_BT_CONTROLLER_DISABLED=y ``` 再编译运行 手机端匹配这个esp设备 输入配对码123456即可连接 蓝牙与网络相关的demo有许多呢 提供的demo也很全面 非常优秀的sdk~~

  • 2024-05-13
  • 发表了主题帖: 【Beetle ESP32 C6迷你开发板】开箱、LinuxMint Docker环境搭建

    # 【Beetle ESP32 C6迷你开发板】开箱、LinuxMint Docker环境搭建 # 一、前言 本次测评的产品DFROBOT家的esp32c6开发板 这种小巧低功耗,带蓝牙wifi,且自带锂电池充放电芯片很适合diy,本次测评想使用这个板子完成一个蓝牙遥控手机的小制作 板卡支持多种开发环境,C、MicroPython、Arduino,考虑想研究蓝牙以及低功耗的功能,主要使用C进行开发 # 二、开箱 正反面 连接type c上电,默认程序有cdc串口打印 开发板灯随之闪烁 # 三、编译环境 官方SDK文档介绍 [esp-idf 快速入门-官方doc](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2/esp32c6/get-started/index.html) 开发环境为linux mint,电脑上有其他开发的工程,因此采用docker来创建编译环境 参考的教程如下,都是非常详细的教程,值得推荐: linux mint 21.1上安装docker https://linuxiac.com/how-to-install-docker-on-linux-mint-21/ 安装docker_desktop https://docs.docker.com/desktop/install/debian/#install-docker-desktop 运行docker https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/tools/idf-docker-image.html# 编译 `docker run --rm -v $PWD:/project -w /project -u $UID -e HOME=/tmp espressif/idf idf.py build` 烧录 docker映射的device没研究明白,有其他tty设备但始终没有ttyACM0设备,所以找了其他的烧录方式: [esptool](https://github.com/espressif/esptool) 下载好release后,给esptool权限`sudo chmod +x esptool`接着执行命令 `./esptool --chip esp32c6 -p /dev/ttyACM0 write_flash 0x1000 ../esp-idf/examples/get-started/hello_world/build/hello_world.bin` 至此已经可以愉快的开发应用了~~

  • 2024-04-26
  • 回复了主题帖: 测评入围(第二波):Beetle ESP32 C6迷你开发板 基于ESP32-C6芯片

    个人信息无误,确认可以完成评测计划。

  • 2024-02-27
  • 加入了学习《FollowMe第4期》,观看 FollowMe第四期任务视频

  • 上传了资料: FollowMe第四期

  • 2024-02-26
  • 回复了主题帖: 【补 DigiKey“智造万物,快乐不停”创意大赛】3.usb_otg_hs虚拟串口的调试 基于ST...

    wangerxian 发表于 2024-2-26 17:19 当然不是用眼测,不停的发数据,然后看一段时间接收到的数据量,然后和时间计算。 usb眼图测试,可以测usb phy的最大速度,stm32这种各种测试应该都过了,大概就标准的12m,如果测传输速度应该是配置为usb mass storage device然后电脑上看发送的传输速度,或者otg读u盘看读取的速度

  • 回复了主题帖: 【补 DigiKey“智造万物,快乐不停”创意大赛】3.usb_otg_hs虚拟串口的调试 基于ST...

    wangerxian 发表于 2024-2-18 17:04 全速那个能测试吗,速率能达到多快? 是想测眼图吗?还是啥

  • 回复了主题帖: 【得捷Follow me第4期】+ 任务汇总 包含MaixDuino的使用

    秦天qintian0303 发表于 2024-2-26 09:14 任务汇总呢?是不是内容被吞了?建议先在word里面写,然后可以直接文件导上来 都有呀 目录结构是这样的视频介绍一、入门任务:开发环境搭建二、基础任务一:静态IP联网三、基础任务二:主控板建立TCPIP或UDP服务器四、简易FTP文件服务器心得代码习惯用markdown 导进来的

最近访客

< 1/2 >

统计信息

已有25人来访过

  • 芯积分:197
  • 好友:--
  • 主题:12
  • 回复:11

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言