37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十七:ESP32 V1.0.0 Rev1 wifi 蓝牙 CH340G 4MB FLASH ESP-WROOM-32开发板
处理器:
CPU:Xtensa 双核 32 位 LX6 微处理器,运行频率为 160 或 240 MHz,性能高达 600 DMIPS
超低功耗 (ULP) 协处理器
内存: 520 KiB SRAM
无线连接:
无线网络连接:802.11 b/g/n
蓝牙:v4.2 BR/EDR 和 BLE(与 Wi-Fi 共享无线电)
外设接口:
12 位 SAR ADC,多达 18 个通道
2 × 8 位 DAC
10 × 触摸传感器(电容式传感 GPIO)
4 × SPI
2 个 × I²S 接口
2 个 × I²C 接口
3 × UART
SD/SIO/CE-ATA/MMC/EMMC 主机控制器
SDIO/SPI 从控制器
以太网MAC 接口,支持专用 DMA 和 IEEE 1588 精确时间协议
CAN 总线 2.0
红外遥控器(TX/RX,最多 8 个通道)
电机 PWM
LED PWM(多达 16 个通道)
霍尔效应传感器
超低功耗模拟前置放大器
安全:
全部支持 IEEE 802.11 标准安全功能,包括 WFA、WPA/WPA2 和 WAPI
安全启动
Flash 加密
1024 位 OTP,客户最高 768 位
加密硬件加速:AES、SHA-2、RSA、椭圆曲线加密 (ECC)、随机数生成器 (RNG)
电源管理:
内部低压差稳压器
用于 RTC 的单个电源域
5μA 深度睡眠电流
从 GPIO 中断、定时器、ADC 测量、电容式触摸传感器中断中唤醒
电池管理
用于 3.7v 电池的连接器(如 18650)。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十七:ESP32 V1.0.0 Rev1 wifi 蓝牙 CH340G 4MB
FLASH ESP-WROOM-32开发板
{花雕动手做}项目之四:使用 ESP32 V1 Rev1 自身的热点来创建一个
简易的 HTTP 服务器,并控制板载LED
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十七:ESP32 V1.0.0 Rev1 wifi 蓝牙 CH340G 4MB
FLASH ESP-WROOM-32开发板
{花雕动手做}项目之四:使用 ESP32 V1 Rev1 自身的热点来创建一个
简易的 HTTP 服务器,并控制板载LED
*/
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "ESP32_Hotspot";
const char* password = "12345678";
WebServer server(80);
const int ledPin = 22; // 确认板载LED引脚是否为2
void handleRoot() {
String html = "<html><body>";
html += "<h1>ESP32 LED </h1>";
html += "<p><a href=\"/LED_ON\"><button>ON LED</button></a></p>";
html += "<p><a href=\"/LED_OFF\"><button>OFF LED</button></a></p>";
html += "</body></html>";
server.send(200, "text/html", html);
}
void handleLEDOn() {
digitalWrite(ledPin, LOW); // 打开LED
server.send(200, "text/html", "<html><body><h1>LED ON</h1><p><a href=\"/\">HOME</a></p></body></html>");
Serial.println("LED 已打开");
}
void handleLEDOff() {
digitalWrite(ledPin, HIGH); // 关闭LED
server.send(200, "text/html", "<html><body><h1>LED OFF</h1><p><a href=\"/\">HOME</a></p></body></html>");
Serial.println("LED 已关闭");
}
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // 确保LED初始状态为关闭
WiFi.softAP(ssid, password);
Serial.println("访问以下地址连接到服务器:");
Serial.println(WiFi.softAPIP());
server.on("/", handleRoot);
server.on("/LED_ON", handleLEDOn);
server.on("/LED_OFF", handleLEDOff);
server.begin();
Serial.println("HTTP 服务器已启动");
}
void loop() {
server.handleClient();
}
代码解读:
检查引脚配置:确保板载LED的引脚设置正确。ESP32的不同型号可能有不同的引脚配置,确保使用的是正确的引脚号(如引脚2)。
初始化设置:在setup函数中初始化LED引脚,并设置其初始状态为关闭。通过digitalWrite(ledPin, LOW)确保LED初始状态为关闭。
调试信息输出:通过Serial.println()函数在串口监视器中打印调试信息,帮助确认命令是否正确接收和执行。例如,在LED打开和关闭时打印相应的信息。
HTML响应页面:在处理函数中生成HTML响应页面,向用户提供反馈信息。通过server.send()函数发送HTML页面,确认LED状态的变化。
服务器处理请求:在loop函数中不断调用server.handleClient()函数,以处理客户端请求。确保服务器能够实时响应用户的操作。
实验串口返回情况
手机上搜索热点并连接
在手机端打开浏览器,输入IP地址:192.168.4.1
打开或者关闭LED
实验场景图