37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
知识点:ESP8266
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个外围元器件
超宽工作温度范围:-40°C 至 +125°C
ESP8285 - ESP8266 内封 8 Mbit Flash
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:将内置LED连接到Sigma Delta源,呼吸灯
Arduino实验开源代码
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:将内置LED连接到Sigma Delta源,呼吸灯
*/
#include "sigma_delta.h"
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // blinkie & sigma-delta mix
uint32_t reqFreq = 1000;
uint32_t realFreq;
realFreq = sigmaDeltaSetup(0, reqFreq); // chose a low frequency
Serial.println();
Serial.println("Start Sigma Delta Example\n");
Serial.printf("Frequency = %u\n", realFreq);
}
void loop() {
uint8_t duty, iRepeat;
Serial.println("Attaching the built in led to the sigma delta source now\n");
Serial.printf("Current duty = %i, prescaler = %i\n", sigmaDeltaRead(), sigmaDeltaGetPrescaler());
sigmaDeltaAttachPin(LED_BUILTIN);
Serial.println("Dimming builtin led...\n");
for (iRepeat = 0; iRepeat < 10; iRepeat++) {
for (duty = 0; duty < 255; duty = duty + 5) {
sigmaDeltaWrite(0, duty);
delay(10);
}
for (duty = 255; duty > 0; duty = duty - 5) {
sigmaDeltaWrite(0, duty);
delay(10);
}
}
Serial.println("Detaching builtin led & playing a blinkie\n");
sigmaDeltaDetachPin(LED_BUILTIN);
for (iRepeat = 0; iRepeat < 20; iRepeat++) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
delay(500);
}
}
实验串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:Station模式下的操作实例,查询IP地址
Arduino实验开源代码
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:Station模式下的操作实例,查询IP地址
*/
#include
#define AP_SSID "eagler8" //这里改成你的wifi名字
#define AP_PSW "zy156721"//这里改成你的wifi密码
void setup(){
//设置串口波特率,以便打印信息
Serial.begin(9600);
//启动STA模式,并连接到wifi网络
WiFi.begin(AP_SSID, AP_PSW);
Serial.print(String("Connecting to ")+AP_SSID);
//判断网络状态是否连接上,没连接上就延时500ms,并且打出一个点,模拟连接过程
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected, IP address: ");
//输出station IP地址,这里的IP地址由DHCP分配
Serial.println(WiFi.localIP());
Serial.println("Setup End");
}
void loop() {
}
实验串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:测试ide的eeprom设置是否与硬件匹配
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:测试ide的eeprom设置是否与硬件匹配
*/
void setup(void) {
Serial.begin(115200);
}
void loop() {
uint32_t realSize = ESP.getFlashChipRealSize();
uint32_t ideSize = ESP.getFlashChipSize();
FlashMode_t ideMode = ESP.getFlashChipMode();
Serial.println("测试IDE的闪存设置是否与硬件匹配");
Serial.printf("闪存真实ID: %08X\n", ESP.getFlashChipId());
Serial.printf("Flash 实际大小: %u bytes\n\n", realSize);
Serial.printf("Flash IDE 大小: %u bytes\n", ideSize);
Serial.printf("闪存速度: %u Hz\n", ESP.getFlashChipSpeed());
Serial.printf("闪存模式: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
if (ideSize != realSize) {
Serial.println("Flash Chip configuration wrong!\n");
} else {
Serial.println("Flash 芯片配置正常。\n");
}
delay(5000);
}
实验串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目九:扫描当前环境之中可用的 WiFi 网络并列表
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目九:扫描当前环境之中可用的 WiFi 网络并列表
*/
#include
const int greenPin = 12;
void setup() {
Serial.begin(115200);
pinMode(greenPin, OUTPUT);
digitalWrite(greenPin, HIGH);
delay (6000);
digitalWrite(greenPin, LOW);
Serial.println(F("\nESP8266 WiFi 扫描"));
// 设置 WiFi 为站模式
WiFi.mode(WIFI_STA);
// 如果之前已连接,则断开与 AP 的连接
WiFi.disconnect();
delay(100);
}
void loop() {
String ssid;
int32_t rssi;
uint8_t encryptionType;
uint8_t* bssid;
int32_t channel;
bool hidden;
int scanResult;
Serial.println(F("正在开始WiFi扫描..."));
scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true);
if (scanResult == 0) {
Serial.println(F("未找到网络"));
} else if (scanResult > 0) {
Serial.printf(PSTR("%d 个网络找到:\n"), scanResult);
// Print unsorted scan results
for (int8_t i = 0; i < scanResult; i++) {
WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);
Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"),
i,
channel,
bssid[0], bssid[1], bssid[2],
bssid[3], bssid[4], bssid[5],
rssi,
(encryptionType == ENC_TYPE_NONE) ? ' ' : '*',
hidden ? 'H' : 'V',
ssid.c_str());
delay(0);
}
} else {
Serial.printf(PSTR("WiFi 扫描错误 %d"), scanResult);
}
// 在再次扫描之前稍等片刻
delay(5000);
Serial.println(F(""));
}
实验串口返回情况
Arduino实验场景图