WeMos下實現小車避障與手機控制
提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件
文章目錄
前言
通過WeMos D1開發板、超聲波模組、蜂鳴器、L9110s步進電機實現:小車方向控制,如果小車距離障礙物的距離小於10釐米 ,再按前進蜂鳴器就會報警,並後退一定的距離 。
一、專案軟硬體平臺及開發環境
1.硬體平臺介紹
特性
1.基於ESP-8266EX
2.Arduino相容,使用rduino IDE來程式設計
3.11 x I/O 引腳
4.1 x ADC 引腳(輸入範圍0-3.3V)
5.板載5V 1A開關電源(高輸入電壓24V)
工作中:
和stm32模組開發類似,整合度高
STM32方案也更經濟便宜
2.開發環境介紹
ArduiNo開發環境,和keil對比
優點:
整合很多開發庫如串列埠,網路,sg90等
各種硬體開發介面,迅捷開發
自帶串列埠除錯工具
缺點: 程式編譯速度慢
3.開發環境配置支援Wemos
二、驅動演示
1.蜂鳴器
//基礎控制:蜂鳴器叫喚和不叫喚
void setup()
{
pinMode(D5, OUTPUT); //設定引腳為輸出引腳
}
void loop()
{
digitalWrite(D5, HIGH); // 輸出高電平,蜂鳴器閉嘴
delay(1000); //這一秒內都得閉嘴
digitalWrite(D5, LOW); //輸出低電平,蜂鳴器吼起來
delay(1000); //吼一秒(延時期間,蜂鳴器控制引腳屬於低電平)
}
2.Wemos串列埠通訊
串列埠有關的函式:
串列埠與wemos的簡單通訊:
串列埠控制蜂鳴器程式碼:
#define BEEP D5
void setup() {
Serial.begin(115200); //初始化串列埠,設定波特率為115200
pinMode(BEEP, OUTPUT); //設定引腳為輸出引腳
digitalWrite(BEEP, HIGH); // 上電不讓蜂鳴器響起
}
void loop()
{
int cmd;
if ( Serial.available() > 0 )
{ //檢測串列埠是否有資料
cmd = Serial.read(); // 讀取串列埠資料
Serial.println(cmd);
if (cmd == 1) { //如果讀取的資料是1
digitalWrite(BEEP, LOW); // 蜂鳴器響起
}
else
{
digitalWrite(BEEP, HIGH); // 否則(讀取資料非1)蜂鳴器不響
}
}
}
3.Wemos和wifi
**板載無線網路卡:支援AP(路由), sta(上網裝置)模式**
作為裝置接入wifi(STA模式)
#include <ESP8266WiFi.h>
char* ssid = “TENK-888”; //“wifi熱點名稱”
char* passwd = “12345678”; //”wifi熱點密碼”
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 設定STA模式
WiFi.begin(ssid, passwd); //連線網路
while (WiFi.status() != WL_CONNECTED) //判斷WiFi接入狀態
{
Serial.print(".");
delay(500);
}
}
void setup() {
//初始化串列埠
Serial.begin(115200);
//初始化wifi
initWifiSta();
}
void loop() {
Serial.println(WiFi.localIP()); //通過串列埠列印wemos的IP地址
delay(500);
}
由串列埠列印出wemos的IP地址:192.168.1.5
手機除錯工具傳送指令控制蜂鳴器:
程式設計程式碼:
#include <ESP8266WiFi.h>
#define BEEP D5
char* ssid = “TENK-888”; //“wifi熱點名稱”
char* passwd = “12345678”; //”wifi熱點密碼”
int port = 8888; //埠號
WiFiServer server(port); // 設定伺服器埠號
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 設定STA模式
WiFi.begin(ssid, passwd); //連線網路
while (WiFi.status() != WL_CONNECTED) //判斷WiFi接入狀態
{
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通過串列埠列印wemos的IP地址
delay(500);
}
void initBeep()
{
pinMode(BEEP, OUTPUT); //設定引腳為輸出引腳
digitalWrite(BEEP, HIGH); // 輸出高電平,蜂鳴器閉嘴
}
void setup() {
initBeep(); //初始化蜂鳴器
Serial.begin(115200); //初始化串列埠
initWifiSta(); //初始化wifi
server.begin(); //啟動伺服器
}
void loop() {
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);
}
}
}
}
4.Wemos和超聲波測距
超聲波測距原理:
超聲波測距程式設計實現(距離小於10觸發蜂鳴器發出聲音):
#define Echo D2
#define Trig D8
#define BEEP D5
long getTime()
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH);
}
void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void initBeep()
{
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
}
void setup()
{
initChaoShengBo();
initBeep();
Serial.begin(115200);
}
void loop()
{
//獲取距離
long dis;
dis = getTime()/58;
Serial.print(dis);
Serial.println(“cm”);
if(dis < 10)
{
digitalWrite(BEEP,LOW);
}
else
{
digitalWrite(BEEP,HIGH);
}
delay(500);
}
5.Wemos和L9110s步進電機控制器
L9110s步進電機控制器:
串列埠控制小車主要程式碼:
#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D3
#define Zhuan2 D4
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 zuo()
{
digitalWrite(Zhuan1,LOW);
digitalWrite(Zhuan2,HIGH);
}
void you()
{
digitalWrite(Zhuan1,HIGH);
digitalWrite(Zhuan2,LOW);
}
void setup()
{
initL9110s();
Serial.begin(115200);
}
void loop()
{
char cmd;
if(Serial.available() > 0)
{
cmd = Serial.read();
switch(cmd)
{
case ‘q’: qian();break;
case ‘h’: hou();break;
case ‘z’: zuo();break;
case ‘y’: you();break;
}
}
}
6.安卓APP控制小車
6.1 Android開發環境搭建
程式設計軟體下載,解壓。
Android匯入程式包
Android修改程式碼支援你的Wemos
三、專案整合
1.相關函式
2.程式碼整合
實現小車方向控制,如果小車距離障礙物的距離小於10釐米 ,再按前進蜂鳴器就會報警,並後退一定的距離 。
Arduino完整程式設計程式碼:
#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模組函式 /
/***************************************************************************/
char ssid = “TENK-888”; //“wifi熱點名稱”
char passwd = “12345678”; //”wifi熱點密碼”
int port = 8888; //埠號
WiFiServer server(port); // 設定伺服器埠號
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 設定STA模式
WiFi.begin(ssid, passwd); //連線網路
while (WiFi.status() != WL_CONNECTED) //判斷WiFi接入狀態
{
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通過串列埠列印wemos的IP地址
}
/*****************************************************************************/
/ /
/ 電機控制模組函式 /
/*****************************************************************************/
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);
}
/*****************************************************************************/
/ /
/ 超聲波測距模組函式 /
/*****************************************************************************/
long getTime()
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH);
}
void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
/*****************************************************************************/
/ /
/ 蜂鳴器模組函式 /
/*****************************************************************************/
void initBeep()
{
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
}
/*****************************************************************************/
/ /
/ 各個模組初始化函式 /
/*****************************************************************************/
void setup()
{
initL9110s();
Serial.begin(115200);
initWifiSta();
server.begin();
initChaoShengBo();
initBeep();
}
/*****************************************************************************/
/ 主迴圈函式:實現小車方向控制,如果小車距離障礙物的距離小於10釐米 /
/ 再按前進蜂鳴器就會報警,並後退一定的距離 /
/*****************************************************************************/
void loop()
{
char cmd;
int flag = 0;
long dis;
WiFiClient client = server.available(); //服務初始化
while (client.connected())
{
while (client.available() > 0) //等待客戶端連線
{
cmd = client.read();//讀取資料
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; //前進
case ‘h’: hou(); break; //後退
case ‘z’: zuo(); break; //左轉
case ‘y’: you(); break; //右轉
case ‘s’: ting(); break; //停止
case ‘d’: zheng(); break; //回正
}
}
}
}
}
總結
實現小車方向控制,如果小車距離障礙物的距離小於10釐米 ,再按前進蜂鳴器就會報警,並後退一定的距離 。
相關文章
- 基於51微控制器的小車避障電路實現-PCB下載站
- 樹莓派 - 實戰篇 [基於 websocket 實現手機遠端控制樹莓派小車]樹莓派Web
- 3D 沙盒遊戲之避障踩坑和實現之旅3D遊戲
- ORCA避障原始碼筆記原始碼筆記
- 使用Scrcpy實現電腦控制安卓手機安卓
- iOS手機如何實現電腦控制手機?蘋果手機群控系統詳解iOS蘋果
- (未完)STM32硬體開發——智慧小車(超聲波避障 紅外循跡 藍芽遙控)藍芽
- 基於wemos di製作手機app智慧宿舍開門系統APP
- 無人機避障技術中的黑科技竟然是“他”?無人機
- [小程式開發實戰]使用WxJava實現手機號獲取Java
- JavaWeb之實現檔案上傳與下載控制元件JavaWeb控制元件
- 當聽障人士實現手語自由:手語AI平臺的產業狂想AI產業
- 機器人裝的感測器越多 規避障礙物的效果越好?機器人
- 專訪 INDEMIND:「AI+雙目視覺」才是掃地機最佳避障方案AI視覺
- 隨手記Android無障礙實踐Android
- 小程式實現手寫簽名
- Ros 自動避障和尋路相關資料ROS
- 全球首創雙光源固態鐳射雷達導航避障 石頭V20樹立導航避障新標準
- 基於8266WIFI模組實現智慧手機與51微控制器的通訊入門WiFi
- 快速實現無人車遠端控制開發——實踐類
- WPF開發經驗-實現一種三軸機械手控制元件控制元件
- .net core下訪問控制層的實現
- 小程式手動實現路由攔截路由
- 手機上的實時語音轉錄,谷歌為聽障人士連線世界谷歌
- 微信小程式Tree自定義控制元件實現微信小程式控制元件
- 智慧指標-使用、避坑和實現指標
- 如何規避雲服務當機現象?
- 汽車發動機廠如何實現能源監測與節能管理
- ZYAR20A 亞克力2驅 藍芽 298尋跡避障機器人 ——材料清單藍芽機器人
- 用fiddler實現手機抓包
- 京喜小程式首頁無障礙優化實踐優化
- 提高掃地機器人避障能力,景聯文科技提供專業資料採集服務機器人
- 資料庫系列:InnoDB下實現高併發控制資料庫
- Taro下利用Decorator快速實現小程式分享
- Python3實現搶火車票功能(下)Python
- 小例項: 用vue實現手風琴效果Vue
- win10語音關機怎麼實現_win10使用語音控制小娜關機的方法Win10
- oauth 實現手機號碼登入OAuth