回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(234)---WeMos D1R32旋转电位器模拟量读取与LED闪烁任务 简单

头像 驴友花雕 2024.10.26 6 0

0.jpg

Wemos D1 ESP32 开发板是一款紧凑而强大的设备,它集成了天线和射频巴伦、功率放大器、低噪声放大器、滤波器和电源管理模块。整个解决方案占用的印刷电路板面积最少。该板采用台积电 40nm 低功耗技术,搭配 2.4GHz 双模 Wi-Fi 和蓝牙芯片,功率和射频性能最佳,安全可靠,可扩展至各种应用。将 WiFi 和蓝牙连接结合在单个 ESP32 芯片上。Wemos D1 ESP32 开发板是基于乐鑫 ESP32 芯片的开发板。它具有 Wi-Fi 和蓝牙连接,以及一系列用于连接传感器、执行器和其他设备的输入和输出引脚。该板具有高性能处理器和广泛的功能,是物联网和家庭自动化项目的理想选择。此外,该板具有易于使用的界面,采用 Arduino UNO 外形尺寸,并与 Arduino 平台兼容,可以轻松开发项目并与其他设备集成。借助 Wemos D1 ESP32 开发板,您可以轻松地为各种应用创建智能、互联的解决方案。该板的一些规格包括:
- 240 MHz 双核 LX6 芯片
- Wi-Fi 802.11 b/g/n 连接
- 蓝牙 4.2 BLE 连接
- 4 MB 闪存
- 520 KB SRAM
- 30 针输入/输出,包括 GPIO、I2C、SPI、UART 和 ADC
- MicroSD支持
- LiPo电池充电支持
该板与 Arduino 平台兼容,可以使用 Arduino IDE 进行编程。此外,它还支持 MicroPython 平台,该平台允许使用 Python 进行编程。

 

01.jpg

ESP32 SPP(Serial Port Profile)是一种基于蓝牙的经典蓝牙串口通信协议,它允许设备之间通过蓝牙进行串口数据传输。在ESP32中,SPP功能可以通过软件协议栈实现,使得ESP32可以作为一个蓝牙串口服务器或客户端与其他蓝牙设备进行通信。

1、Arduino
Arduino 是一种开源硬件和软件平台,用于制作电子项目和物联网(IoT)设备。它包括一个开发板和一套编程环境,使用户可以通过简单的代码来控制各种电子元件。

2、ESP32
ESP32 是由 Espressif Systems 设计的一款单片机(SoC),集成了 Wi-Fi 和蓝牙功能。它广泛应用于移动设备、可穿戴设备和物联网(IoT)应用。ESP32 提供丰富的外设接口和高性能,非常适合开发各种嵌入式系统。

3、SPP(Serial Port Profile)
SPP(Serial Port Profile) 是蓝牙协议中的一种,它模拟了传统的 RS-232(UART)串行连接。通过 SPP,ESP32 可以通过蓝牙与其他设备进行数据传输,就像通过串行端口一样。

4、Arduino ESP32 SPP
Arduino ESP32 SPP 指的是使用 Arduino 开发环境在 ESP32 上实现蓝牙串行端口协议(SPP)。通过这种方式,你可以编写代码来控制 ESP32 的蓝牙功能,使其能够与其他蓝牙设备进行通信。

5、全面详细的科学解释
1)Arduino 开发环境:Arduino 提供了一套开发环境,包括编译器、IDE(集成开发环境)和各种库,使用户可以通过简单的代码来控制硬件。
2)ESP32 硬件:ESP32 是一款集成了 Wi-Fi 和蓝牙的单片机,具有多个 GPIO 引脚、ADC、DAC、PWM 等功能,适用于各种嵌入式系统开发。
3)SPP 协议:SPP 是蓝牙协议中的一种,通过模拟 RS-232 串行连接,实现无线数据传输。SPP 通常用于替代传统的串行端口,使设备可以通过蓝牙进行通信。
4)Arduino ESP32 SPP 应用:通过 Arduino 开发环境在 ESP32 上实现 SPP,可以编写代码来初始化蓝牙、发现服务、建立连接、发送和接收数据。这种应用广泛用于物联网设备、远程控制和数据传输等场景。

 

0.jpg

电位器是一种可变电阻器,它通常由一个电阻体和一个可移动的电刷组成。当电刷沿电阻体移动时,可以在输出端获得与位移量成一定关系的电阻值或电压。电位器可以作为三端或二端元件使用,后者可以视作一个可变电阻器。在电路中,电位器的作用是获得与输入电压(外加电压)成一定关系的输出电压。

电位器模块的工作原理
电位器模块的工作原理是基于电阻的变化来调节电路中电荷的流动。它通常由一个旋转的轴和一个带有电阻材料的环形部件组成。通过旋转电位器的轴,可以改变电阻材料在电路中的位置,从而改变电压的大小。

 

10-0.jpg


  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
   Wifi蓝牙无线开发板CH340 4M内存
 {花雕动手做}项目之十一:WeMos D1R32模拟量读取与LED闪烁任务(旋转电位器模拟输入)
 实验接脚:2脚为板载LED,4脚接电位器OUT

实验开源代码

 

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
    Wifi蓝牙无线开发板CH340 4M内存
  {花雕动手做}项目之十一:WeMos D1R32模拟量读取与LED闪烁任务(旋转电位器模拟输入)
  实验接脚:2脚为板载LED,4脚接电位器OUT
*/

#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif

#ifndef LED_BUILTIN
#define LED_BUILTIN 2
#endif

// 定义任务函数
void TaskBlink(void *pvParameters); // LED 闪烁任务
void TaskAnalogRead(void *pvParameters); // 模拟量读取任务

void setup() {
  Serial.begin(115200); // 初始化串口通信
  // 创建LED闪烁任务
  xTaskCreatePinnedToCore(
    TaskBlink,         // 任务函数
    "TaskBlink",       // 任务名称
    1024,              // 堆栈大小
    NULL,              // 任务参数
    2,                 // 优先级
    NULL,              // 任务句柄
    ARDUINO_RUNNING_CORE); // 运行核心

  // 创建模拟量读取任务
  xTaskCreatePinnedToCore(
    TaskAnalogRead, 
    "AnalogReadA3", 
    1024, 
    NULL, 
    1, 
    NULL, 
    ARDUINO_RUNNING_CORE); 
}

void loop() {
  // 空循环,所有任务在FreeRTOS中处理
}

// LED闪烁任务
void TaskBlink(void *pvParameters) {
  (void) pvParameters;
  pinMode(LED_BUILTIN, OUTPUT);
  for (;;) {
    digitalWrite(LED_BUILTIN, HIGH); // 点亮LED
    vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时1秒
    digitalWrite(LED_BUILTIN, LOW); // 熄灭LED
    vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时1秒
  }
}

// 模拟量读取任务
void TaskAnalogRead(void *pvParameters) {
  (void) pvParameters;
  for (;;) {
    int sensorValue = analogRead(4); // 读取模拟量(A4引脚)
    Serial.println(sensorValue); // 打印读取值
    vTaskDelay(100 / portTICK_PERIOD_MS); // 延时100毫秒
  }
}

实验串口返回情况

 

10-4.jpg

实验场景图  

 

10-5.jpg
10-5-.jpg

评论

user-avatar
icon 他的勋章
    展开更多