基于wemosD1开发板的小车养成(一)
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 D5char* 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 D5long 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);
}
基于wemosD1开发板的小车养成(一)相关推荐
- 基于wemosD1开发板的小车养成(二)
串口控制小车前进后退 #define Dong1 D6 #define Dong2 D7 #define Zhuan1 D4 #define Zhuan2 D5void initL9110s() {p ...
- 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...
三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...
- 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...
RTOS模板制作好后,后面堆各种中间件就方便了. 1.基于V7开发板的最新版uCOS-II V2.92.16程序模板,含MDK和IAR,支持uC/Probe https://www.cnblogs.c ...
- 基于uFUN开发板的心率计(三)Qt上位机的实现
前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...
- 基于uFUN开发板的RGB调色板
前言 使用uFUN开发板配合Qt上位机,实现任意颜色的混合,Qt上位机下发RGB数值,范围0-255,uFUN开发板进行解析,然后输出不同占空比的PWM,从而实现通过RGB三原色调制出任意颜色. Qt ...
- request[limit]取不到前台的值_基于uFUN开发板的心率计(二)动态阈值算法获取心率值...
前言 上一篇文章:基于uFUN开发板的心率计(一)DMA方式获取传感器数据,介绍了如何获取PulseSensor心率传感器的电压值,并对硬件电路进行了计算分析.心率计,重要的是要获取到心率值,本篇文章 ...
- 基于uFUN开发板和扩展板的联网校准时钟
项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...
- 基于uFUN开发板的心率计(二)动态阈值算法获取心率值
文章目录 前言 IBI和BPM 核心操作 -- 识别一个脉搏信号 问题一:阈值的选取 问题二:特征点识别 算法整体框架与代码实现 总结 基于uFUN开发板的Keil源码下载 uFUN评测系列文章 前言 ...
- 基于STM32开发板I²C总线通信协议浅析
基于STM32开发板I²C总线通信协议浅析 一.前言 I²C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980 ...
最新文章
- Opencv 数学基础--范数(17)
- Spring学习(五)——Spring注解(一)
- 【VB6笔记-01】 读取Excel绑定到DataGrid
- tensorflow 导入新的tensorflow实例
- 约束流–没有Drools规则语言的现代Java约束
- nvidia-smi 命令详解
- 时间紧任务重---extjs的学习就这么开始吧
- 【直播间】移动互联网产品中如何用好HTML5?
- [转载] python中bool啥意思_Python中的bool类型
- linux execl 错误信息,Excel:自动隐藏错误结果的显示信息(转)
- Codeforces Round #388 (Div. 2) C. Voting
- “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!”(下)
- pbrt源码中用全主元消去法求矩阵逆的实现
- 苹果笔记本链接刷卡打印机教程
- Python批量爬取谷歌原图,2021年最新可用版
- 职场饭桌:酒桌上的规矩,与领导吃饭如何谈话
- 京东面试官:从求职者到面试官的心路历程
- 华为路由交换学习篇-链路聚合
- C语言初学 (两数相加求和)
- 智能分拣解决方案市场现状研究分析报告 -