文章目录[隐藏]
WeMos D1介绍
特性:
-
基于ESP-8266EX
-
Arduino兼容,使用rduino IDE来编程
-
11个 I/O 引脚
-
1 个ADC 引脚(输入范围0-3.3V)
-
板载5V 1A开关电源(高输入电压24V)
工作中:
和stm32模块开发类似,集成度高
STM32方案也更经济便宜
开发环境介绍
Arduino开发环境,和keil对比
优点:
- 集成很多开发库如串口,网络,sg90等
- 各种硬件开发接口,迅捷开发
- 自带串口调试工具 ;
缺点: 程序编译速度慢
开发环境的配置
Wemos同Arduino
上电后不断执行loop函数中的代码,核心控制代码写入loop
setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等
void setup() {
}
void loop() {
}
实操:蜂鸣器
基础控制:蜂鸣器响与不响
void setup()
{
pinMode(D5, OUTPUT); //设置引脚为输出引脚
}
void loop()
{
digitalWrite(D5, HIGH); // 输出高电平,蜂鸣器不响
delay(1000); //停一秒
digitalWrite(D5, LOW); //输出低电平,蜂鸣器响
delay(1000); //响一秒(延时期间,蜂鸣器控制引脚属于低电平)
}
串口通信
初始化函数
Serial.begin()
- 描述:开启串口,通常置于setup()函数中
- 原型:
- Serial.begin(speed)
- Serial.begin(speed, config)
- 参数:
- speed:波特率,一般取值9600,115200等
- config:设置数据位,校验位和停止位。默认SERIAL_8N1表示8个数据位,无校验位,1个停止位。
- 返回值:无
串口发送函数
Serial.println()
- 描述:串口输出数据并换行
- 原型:
- Serial.println(val)
- Serial.println(val, format)
- 参数:
- val:打印的值,任意数据类型
- config:输出的数据格式
- 返回值:返回写入的字节数
Serial.read()
- 描述:读取串口数据,一次读一个字符,读完后删除已读数据
- 原型:
- Serial.read()
- 参数:无
- 返回值:返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型。
有数据到来函数
Serial.available()
- 描述:判断串口缓存区的状态,返回从串口缓冲区读取的字节数
- 原型:Serial.available()
- 参数:无
- 返回值:可读取的字节数
// 串口控制蜂鸣器
#define BEEP D5
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
int cmd;
if (Serial.available() > 0)
{
cmd = Serial.read();
if (cmd == 1)
{
Serial.println(cmd);
digitalWrite(BEEP, LOW);
}
else
{
Serial.println(cmd);
digitalWrite(BEEP, HIGH);
}
}
}
WiFi模块
支持AP(路由), sta(上网设备)模式
作为设备接入wifi(STA模式)
#include <ESP8266WiFi.h>
char* ssid = "wifi名";
char* passwd = "WiFi密码";
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
initWifiSta();
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
delay(500);
}
C/S模式(服务器和客户端)
服务器两大要素:
- 地址:IP地址,域名等
- 端口号:一台电脑或者设备有多个服务,每个服务用端口号区别
架设Wemos为ftp服务器
int port = 8888; //端口号
WiFiServer server(port); // 设置服务器端口号
void loop() {
WiFiClient client = server.available(); //服务初始化
while (client.connected()) { //等待客户端连接
while (client.available() > 0) { //有数据到来,类似串口的那个函数
cmd = client.read();//读取数据
}
}
}
Tips: 启动服务器的API: server.begin();
手机TCP工具远程网络控制蜂鸣器
#include <ESP8266WiFi.h>
#define BEEP D5
char* ssid = "WiFi名";
char* passwd = "WiFi密码";
int port = 8888; //端口号
WiFiServer server(port); // 设置服务器端口号
void beepInit()
{
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
}
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
initWifiSta();
beepInit();
server.begin();//起动服务器
}
void loop() {
// put your main code here, to run repeatedly:
char cmd;
WiFiClient client = server.available(); //服务初始化
while (client.connected()) //等待客户端连接
{
while (client.available() > 0) //有数据到来,类似串口的那个函数
{
cmd = client.read();//读取数据
if (cmd == '1')
{
digitalWrite(BEEP, LOW);
}
else
{
digitalWrite(BEEP, HIGH);
}
}
}
}
超声波的测距原理
超声波模块介绍
超声波模块原理
超声波和蜂鸣器结合
#define Echo D2
#define Trig D8
#define BEEP D5
long getTime()
{
digitalWrite(Trig, HIGH);//设置一个方波
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);//微秒
}
void initUltrasonic()
{
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
void setup() {
// put your setup code here, to run once:
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
initUltrasonic();
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
long dis; //距离
dis = getTime() / 58;
Serial.print(dis);
Serial.println("cm");
if (dis < 10)
{
digitalWrite(BEEP, LOW);
}
else
{
digitalWrite(BEEP, HIGH);
}
delay(50);
}
版权声明:本文为CSDN博主「Luish Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47642634/article/details/122440513
WeMos D1介绍
特性:
-
基于ESP-8266EX
-
Arduino兼容,使用rduino IDE来编程
-
11个 I/O 引脚
-
1 个ADC 引脚(输入范围0-3.3V)
-
板载5V 1A开关电源(高输入电压24V)
工作中:
和stm32模块开发类似,集成度高
STM32方案也更经济便宜
开发环境介绍
Arduino开发环境,和keil对比
优点:
- 集成很多开发库如串口,网络,sg90等
- 各种硬件开发接口,迅捷开发
- 自带串口调试工具 ;
缺点: 程序编译速度慢
开发环境的配置
Wemos同Arduino
上电后不断执行loop函数中的代码,核心控制代码写入loop
setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等
void setup() {
}
void loop() {
}
实操:蜂鸣器
基础控制:蜂鸣器响与不响
void setup()
{
pinMode(D5, OUTPUT); //设置引脚为输出引脚
}
void loop()
{
digitalWrite(D5, HIGH); // 输出高电平,蜂鸣器不响
delay(1000); //停一秒
digitalWrite(D5, LOW); //输出低电平,蜂鸣器响
delay(1000); //响一秒(延时期间,蜂鸣器控制引脚属于低电平)
}
串口通信
初始化函数
Serial.begin()
- 描述:开启串口,通常置于setup()函数中
- 原型:
- Serial.begin(speed)
- Serial.begin(speed, config)
- 参数:
- speed:波特率,一般取值9600,115200等
- config:设置数据位,校验位和停止位。默认SERIAL_8N1表示8个数据位,无校验位,1个停止位。
- 返回值:无
串口发送函数
Serial.println()
- 描述:串口输出数据并换行
- 原型:
- Serial.println(val)
- Serial.println(val, format)
- 参数:
- val:打印的值,任意数据类型
- config:输出的数据格式
- 返回值:返回写入的字节数
Serial.read()
- 描述:读取串口数据,一次读一个字符,读完后删除已读数据
- 原型:
- Serial.read()
- 参数:无
- 返回值:返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型。
有数据到来函数
Serial.available()
- 描述:判断串口缓存区的状态,返回从串口缓冲区读取的字节数
- 原型:Serial.available()
- 参数:无
- 返回值:可读取的字节数
// 串口控制蜂鸣器
#define BEEP D5
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
int cmd;
if (Serial.available() > 0)
{
cmd = Serial.read();
if (cmd == 1)
{
Serial.println(cmd);
digitalWrite(BEEP, LOW);
}
else
{
Serial.println(cmd);
digitalWrite(BEEP, HIGH);
}
}
}
WiFi模块
支持AP(路由), sta(上网设备)模式
作为设备接入wifi(STA模式)
#include <ESP8266WiFi.h>
char* ssid = "wifi名";
char* passwd = "WiFi密码";
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
initWifiSta();
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
delay(500);
}
C/S模式(服务器和客户端)
服务器两大要素:
- 地址:IP地址,域名等
- 端口号:一台电脑或者设备有多个服务,每个服务用端口号区别
架设Wemos为ftp服务器
int port = 8888; //端口号
WiFiServer server(port); // 设置服务器端口号
void loop() {
WiFiClient client = server.available(); //服务初始化
while (client.connected()) { //等待客户端连接
while (client.available() > 0) { //有数据到来,类似串口的那个函数
cmd = client.read();//读取数据
}
}
}
Tips: 启动服务器的API: server.begin();
手机TCP工具远程网络控制蜂鸣器
#include <ESP8266WiFi.h>
#define BEEP D5
char* ssid = "WiFi名";
char* passwd = "WiFi密码";
int port = 8888; //端口号
WiFiServer server(port); // 设置服务器端口号
void beepInit()
{
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
}
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
initWifiSta();
beepInit();
server.begin();//起动服务器
}
void loop() {
// put your main code here, to run repeatedly:
char cmd;
WiFiClient client = server.available(); //服务初始化
while (client.connected()) //等待客户端连接
{
while (client.available() > 0) //有数据到来,类似串口的那个函数
{
cmd = client.read();//读取数据
if (cmd == '1')
{
digitalWrite(BEEP, LOW);
}
else
{
digitalWrite(BEEP, HIGH);
}
}
}
}
超声波的测距原理
超声波模块介绍
超声波模块原理
超声波和蜂鸣器结合
#define Echo D2
#define Trig D8
#define BEEP D5
long getTime()
{
digitalWrite(Trig, HIGH);//设置一个方波
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);//微秒
}
void initUltrasonic()
{
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
void setup() {
// put your setup code here, to run once:
pinMode(BEEP, OUTPUT);
digitalWrite(BEEP, HIGH);
initUltrasonic();
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
long dis; //距离
dis = getTime() / 58;
Serial.print(dis);
Serial.println("cm");
if (dis < 10)
{
digitalWrite(BEEP, LOW);
}
else
{
digitalWrite(BEEP, HIGH);
}
delay(50);
}
版权声明:本文为CSDN博主「Luish Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47642634/article/details/122440513
暂无评论