1.避障小车展示
2.该项目所需器材
主控芯片 | WemosD1 |
其他耗材 | 帅气的遥控车一辆、超声波模块、L9110s驱动模块 |
手机APP所需软件 | TCP连接(手机可以直接应用商店下载)、Eslipse、夜神模拟器 |
3.ESP82600WiF模块核心代码
WemosD1集成了ESP8266WiFi模块,而且运行WemosD1的平台有自带的ESP8266的封装库,所以使用该芯片只要知道如何调用库函数即可
char* ssid="Dugad";//wifi热点名称
char* passwd="Ultrman";//wifi热点密码
void initWifiSta(){
WiFi.mode(WIFI_STA);//设置STA模式
WiFi.begin(ssid,passwd);//连接网络
while(WiFi.status() != WL_CONNECTED){//判断是否有网络连接
Serial.print(".");
delay(500);
}
Serial.println(WiFi.LocalIP());//通过串口打印IP地址
delay(500);
}
4.L9110s驱动步进电机原理
驱动原理 :总共有六个引脚 中间两个为电源的正负极 其他四个为信号线 | |||||
B-1A | B-2A | 电机1 | A-1A | A-1B | 电机2 |
0 | 1 | 正转(假设) | 0 | 1 | 正转(假设) |
1 | 0 | 反转 | 1 | 0 | 反转 |
0 | 0 | 不转 | 0 | 0 | 不转 |
1 | 1 | 不转 | 1 | 1 | 不转 |
void initL9110s(){//代码仅供参考
pinMode(going1,OUTPUT);
pinMode(going2,OUTPUT);
pinMode(turn1,OUTPUT);
pinMode(turn2,OUTPUT);
}
void goTail(){//后退
digitalWrite(going1,HIGH);
digitalWrite(going2,LOW);
}
void goFront(){//前进
digitalWrite(going1,LOW);
digitalWrite(going2,HIGH);
}
void goLeft(){//左
digitalWrite(turn1,LOW);
digitalWrite(turn2,HIGH);
}
void goRight(){//右
digitalWrite(turn1,HIGH);
digitalWrite(turn2,LOW);
}
5.超声波模块
见我写的这个垃圾桶
https://blog.csdn.net/weixin_46085524/article/details/109180087
5.通过安卓模拟器实现APP控制小车
(1).小丑小丑的APP展示(哈哈不是俺写的,但还是不错地)
(2).Java和XML俺目前正在学,等我学得差不多了再回来把这个界面改好看点。
6.项目核心代码
#include <ESP8266WiFi.h>
#define going1 D6
#define going2 D7
#define turn1 D4
#define turn2 D5
#define Echo D2 //echo(回应)
#define Trig D8 //Trig(触发)
char* ssid="HONOR 20";//wifi热点名称
char* passwd="123456789";//wifi热点密码
int port=8888;
WiFiServer server(port);
long getTime(){
digitalWrite(Trig,HIGH);
delayMicroseconds(10);//发送一个10微秒(us)的脉冲
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH);
}
void inintChaoShengBo(){
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void initWifiSta(){
WiFi.mode(WIFI_STA);//设置STA模式
WiFi.begin(ssid,passwd);//连接网络
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP());//通过串口打印IP地址
}
void initL9110s(){
pinMode(going1,OUTPUT);
pinMode(going2,OUTPUT);
pinMode(turn1,OUTPUT);
pinMode(turn2,OUTPUT);
}
void goFront(){//前进
digitalWrite(going1,HIGH);
digitalWrite(going2,LOW);
}
void goTail(){//后退
digitalWrite(going1,LOW);
digitalWrite(going2,HIGH);
}
void stopCar(){//停下
digitalWrite(going1,LOW);
digitalWrite(going2,LOW);
}
void goLeft(){//左
digitalWrite(turn1,LOW);
digitalWrite(turn2,HIGH);
}
void returnInit(){//车的方向回正
digitalWrite(turn1,LOW);
digitalWrite(turn2,LOW);
}
void setup() {
initL9110s();
inintChaoShengBo();
Serial.begin(115200);
initWifiSta();
server.begin();
}
void loop() {
char cmd;
int mark=1;//定义一个标志位
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){
goTail();
delay(200);
stopCar();
mark=1;
}else
{
mark=0;
}
if(mark==0){
switch(cmd){
case 'q':goFront();break;
case 'h':goTail();break;
case 'z':goLeft();break;
case 'y':goLeft();break;
case 's':stopCar();break;
case 'd':returnInit();break;
}
}
}
}
}