WeMos下实现小车避障与手机控制
參考:WeMos下實現(xiàn)小車避障與手機(jī)控制
作者:愛學(xué)習(xí)的小王呀
發(fā)布時間:2020-10-02 10:17:45
網(wǎng)址:https://blog.csdn.net/hongliwong/article/details/108900048?spm=1001.2014.3001.5501
目錄
- 前言
- 一、項目軟硬件平臺及開發(fā)環(huán)境
- 1.硬件平臺介紹
- 2.開發(fā)環(huán)境介紹
- 3.開發(fā)環(huán)境配置支持Wemos
- 二、驅(qū)動演示
- 1.蜂鳴器
- 2.Wemos串口通信
- 3.Wemos和wifi
- 4.Wemos和超聲波測距
- 5.Wemos和L9110s步進(jìn)電機(jī)控制器
- 6.安卓APP控制小車
- 三、項目整合
- 1.相關(guān)函數(shù)
- 2.代碼整合
前言
通過WeMos D1開發(fā)板、超聲波模塊、蜂鳴器、L9110s步進(jìn)電機(jī)實現(xiàn):小車方向控制,如果小車距離障礙物的距離小于10厘米 ,再按前進(jìn)蜂鳴器就會報警,并后退一定的距離 。
一、項目軟硬件平臺及開發(fā)環(huán)境
1.硬件平臺介紹
特性
1.基于ESP-8266EX
2.Arduino兼容,使用rduino IDE來編程
3.11 x I/O 引腳
4.1 x ADC 引腳(輸入范圍0-3.3V)
5.板載5V 1A開關(guān)電源(高輸入電壓24V)
工作中:
和stm32模塊開發(fā)類似,集成度高
STM32方案也更經(jīng)濟(jì)便宜
2.開發(fā)環(huán)境介紹
ArduiNo開發(fā)環(huán)境,和keil對比
優(yōu)點:
集成很多開發(fā)庫如串口,網(wǎng)絡(luò),sg90等
各種硬件開發(fā)接口,迅捷開發(fā)
自帶串口調(diào)試工具
缺點: 程序編譯速度慢
3.開發(fā)環(huán)境配置支持Wemos
二、驅(qū)動演示
1.蜂鳴器
2.Wemos串口通信
串口有關(guān)的函數(shù):
串口與wemos的簡單通信:
串口控制蜂鳴器代碼:
3.Wemos和wifi
**板載無線網(wǎng)卡:支持AP(路由), sta(上網(wǎng)設(shè)備)模式**- 1
作為設(shè)備接入wifi(STA模式)
由串口打印出wemos的IP地址:192.168.1.5
手機(jī)調(diào)試工具發(fā)送指令控制蜂鳴器:
編程代碼:
#include <ESP8266WiFi.h>
#define BEEP D5
char* ssid = “TENK-888”; //“wifi熱點名稱”
char* passwd = “12345678”; //”wifi熱點密碼”
int port = 8888; //端口號
WiFiServer server(port); // 設(shè)置服務(wù)器端口號
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 設(shè)置STA模式
WiFi.begin(ssid, passwd); //連接網(wǎng)絡(luò)
while (WiFi.status() != WL_CONNECTED) //判斷WiFi接入狀態(tài)
{
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通過串口打印wemos的IP地址
delay(500);
}
void initBeep()
{
pinMode(BEEP, OUTPUT); //設(shè)置引腳為輸出引腳
digitalWrite(BEEP, HIGH); // 輸出高電平,蜂鳴器閉嘴
}
void setup() {
initBeep(); //初始化蜂鳴器
Serial.begin(115200); //初始化串口
initWifiSta(); //初始化wifi
server.begin(); //啟動服務(wù)器
}
void loop() {
char cmd;
WiFiClient client = server.available(); //服務(wù)初始化
while (client.connected())
{
while (client.available() > 0) //等待客戶端連接
{
cmd = client.read();//讀取數(shù)據(jù)
if(cmd == ‘1’)
{
digitalWrite(BEEP, LOW);
}
else
{
digitalWrite(BEEP, HIGH);
}
- 1
}
}
4.Wemos和超聲波測距
超聲波測距原理:
超聲波測距編程實現(xiàn)(距離小于10觸發(fā)蜂鳴器發(fā)出聲音):
5.Wemos和L9110s步進(jìn)電機(jī)控制器
L9110s步進(jìn)電機(jī)控制器:
串口控制小車主要代碼:
6.安卓APP控制小車
6.1 Android開發(fā)環(huán)境搭建
編程軟件下載,解壓。
Android導(dǎo)入程序包
Android修改代碼支持你的Wemos
三、項目整合
1.相關(guān)函數(shù)
2.代碼整合
實現(xiàn)小車方向控制,如果小車距離障礙物的距離小于10厘米 ,再按前進(jìn)蜂鳴器就會報警,并后退一定的距離 。
Arduino完整編程代碼:
這里先看一個別人寫的例子,沒有加入蜂鳴器的代碼實現(xiàn)。主要是因為這篇代碼格式很清晰。
摘自:wifi避障小車最終完整版(可實現(xiàn)手機(jī)端操作小車)
作者:陳峻熙
發(fā)布時間:2020-10-11 10:17:28
網(wǎng)址:https://blog.csdn.net/Tiazz/article/details/109008477?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1329187.10695.16178663918238401&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control
回過頭來繼續(xù)看原文作者的代碼:
#include <ESP8266WiFi.h>#define Dong1 D6 #define Dong2 D7 #define Zhuan1 D3 #define Zhuan2 D4 #define Echo D2 #define Trig D8 #define BEEP D5/*****************************************************************************/ / / / wifi模塊函數(shù) / /***************************************************************************/ char ssid = “TENK-888”; //“wifi熱點名稱” char passwd = “12345678”; //”wifi熱點密碼” int port = 8888; //端口號 WiFiServer server(port); // 設(shè)置服務(wù)器端口號void initWifiSta() { WiFi.mode(WIFI_STA); // 設(shè)置STA模式 WiFi.begin(ssid, passwd); //連接網(wǎng)絡(luò) while (WiFi.status() != WL_CONNECTED) //判斷WiFi接入狀態(tài) { Serial.print("."); delay(500); } Serial.println(WiFi.localIP()); //通過串口打印wemos的IP地址 } /*****************************************************************************/ / / / 電機(jī)控制模塊函數(shù) / /*****************************************************************************/ void initL9110s() { pinMode(Dong1,OUTPUT); pinMode(Dong2,OUTPUT); pinMode(Zhuan1,OUTPUT); pinMode(Zhuan2,OUTPUT); }void qian() { digitalWrite(Dong1,HIGH); digitalWrite(Dong2,LOW); }void hou() { digitalWrite(Dong1,LOW); digitalWrite(Dong2,HIGH); }void ting() { digitalWrite(Dong1,LOW); digitalWrite(Dong2,LOW); }void zuo() { digitalWrite(Zhuan1,LOW); digitalWrite(Zhuan2,HIGH); }void you() { digitalWrite(Zhuan1,HIGH); digitalWrite(Zhuan2,LOW); }void zheng() { digitalWrite(Zhuan1,LOW); digitalWrite(Zhuan2,LOW); } /*****************************************************************************/ / / / 超聲波測距模塊函數(shù) / /*****************************************************************************/ long getTime() { digitalWrite(Trig,HIGH); delayMicroseconds(10); digitalWrite(Trig,LOW);return pulseIn(Echo,HIGH); }void initChaoShengBo() { pinMode(Echo,INPUT); pinMode(Trig,OUTPUT); } /*****************************************************************************/ / / / 蜂鳴器模塊函數(shù) / /*****************************************************************************/ void initBeep() { pinMode(BEEP,OUTPUT); digitalWrite(BEEP,HIGH); }/*****************************************************************************/ / / / 各個模塊初始化函數(shù) / /*****************************************************************************/ void setup() { initL9110s(); Serial.begin(115200); initWifiSta(); server.begin(); initChaoShengBo(); initBeep(); } /*****************************************************************************/ / 主循環(huán)函數(shù):實現(xiàn)小車方向控制,如果小車距離障礙物的距離小于10厘米 / / 再按前進(jìn)蜂鳴器就會報警,并后退一定的距離 / /*****************************************************************************/ void loop() { char cmd; int flag = 0; long dis;WiFiClient client = server.available(); //服務(wù)初始化 while (client.connected()) { while (client.available() > 0) //等待客戶端連接 { cmd = client.read();//讀取數(shù)據(jù) Serial.println(cmd); dis = getTime()/58; if(dis < 10 ) { digitalWrite(BEEP,LOW); hou(); delay(200); ting(); digitalWrite(BEEP,HIGH); flag = 1; } else { flag = 0; } if(flag == 0) { switch(cmd) { case ‘q’: qian(); break; //前進(jìn) case ‘h’: hou(); break; //后退 case ‘z’: zuo(); break; //左轉(zhuǎn) case ‘y’: you(); break; //右轉(zhuǎn) case ‘s’: ting(); break; //停止 case ‘d’: zheng(); break; //回正 } } } } }總結(jié)
以上是生活随笔為你收集整理的WeMos下实现小车避障与手机控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java十字链表存储,图的十字链表存储结
- 下一篇: 梁世豪的读书计划