Wemos D1 实现小车的控制

Wemos D1上搭载板载无线网卡
支持AP(路由),STA(上网设备模式)
AP :相当于路由器允许其他设备接入。
STA:相当于手机可连接其他无线设备。

Wemos的WiFi模块测试(代码如下):

 #include<ESP8266WiFi.h>  char* ssid = "TP-LINK";  char* passwd = "111111111";   void InitWifiSta() { WiFi.mode(WIFI_STA);  WiFi.begin(ssid, passwd);  while (WiFi.status() != WL_CONNECTED) {  Serial.print(".");  delay(500); } } void setup() { InitWifiSta();  Serial.begin(115200);  } void loop(){ Serial.println(WiFi.localIP());  delay(500); } 

C/S:客户端/服务器模式
服务器两大要素:
地址 :ip地址,域名等
端口号 :一台电脑或者设备有多个服务每个服务用端口号区别

用Wemos D1架设一个简单的ftp服务器(代码如下):

#include<ESP8266WiFi.h>  char* ssid = "hpy";  char* passwd = "2225341578";  int port=8888;  WiFiServer server(port);   void InitWifiSta() { WiFi.mode(WIFI_STA);  WiFi.begin(ssid, passwd);  while (WiFi.status() != WL_CONNECTED) {  Serial.print("."); delay(500); } Serial.println(WiFi.localIP());  } void setup() { Serial.begin(115200);  InitWifiSta();  server.begin();  } void loop(){ char cmd; WiFiClient client = server.available();  while (client.connected()) {  while (client.available() > 0) {  cmd = client.read();  if(cmd=='1'){ Serial.println("hpy1"); } else { Serial.println("hpy2"); } } } } 

注:手机上下载一个 tcp App,通过APP连接板载WiFi

控制方式:
B-1A —-B-2A —-电机1
0 ——— 1 ——- 正转(假设)
1 ——— 0 ——- 反转
0 ——— 0 ——- 不转
1 ——— 1 ——- 不转

A-1A —- A-2 —- 电机1
0 ——— 1 ——- 正转(假设)
1 ——— 0 ——- 反转
0 ——— 0 ——- 不转
1 ——— 1 ——- 不转

测试L9110s步进电机控制器(用串口实现代码如下):

#define Dong1 D6  #define Dong2 D7  #define Zhuan1 D4  #define Zhuan2 D5   void InitL9110s(){ pinMode(Dong1,OUTPUT);  pinMode(Dong2,OUTPUT); pinMode(Zhuan1,OUTPUT); pinMode(Zhuan2,OUTPUT); }  void qian(){ digitalWrite(Dong1,LOW);  digitalWrite(Dong2,HIGH); }  void hou(){ digitalWrite(Dong1,HIGH);  digitalWrite(Dong2,LOW); }  void zuo(){ digitalWrite(Zhuan1,HIGH);  digitalWrite(Zhuan2,LOW); }  void you(){ digitalWrite(Zhuan1,LOW);  digitalWrite(Zhuan2,HIGH); } void setup() { InitL9110s(); Serial.begin(115200);  } void loop(){ char c; if(Serial.available()>0){  c=Serial.read();  switch(c){  case 'q': qian();break; case 'h': hou(); break; case 'z': zuo(); break; case 'y': you(); break; } } } 

注:此时小车必须通过Wemos连接在电脑上通过串口调试助手实现小车的控制。

串口实现小车的控制必须通过usb数据线与电脑连接,小车不能自由的运动。WiFi方式就实现了小车随意运动。

WiFi实现小车的前后运动(测试代码如下):

#include<ESP8266WiFi.h>   #define Dong1 D6 #define Dong2 D7 #define Zhuan1 D4 #define Zhuan2 D5  void InitL9110s(){ pinMode(Dong1,OUTPUT); pinMode(Dong2,OUTPUT); pinMode(Zhuan1,OUTPUT); pinMode(Zhuan2,OUTPUT); }  void qian(){ digitalWrite(Dong1,LOW); digitalWrite(Dong2,HIGH); } void hou(){ digitalWrite(Dong1,HIGH); digitalWrite(Dong2,LOW); } void zuo(){ digitalWrite(Zhuan1,HIGH); digitalWrite(Zhuan2,LOW); } void you(){ digitalWrite(Zhuan1,LOW); digitalWrite(Zhuan2,HIGH); } char* ssid="hpy";  char* passwd="2225341578";   void InitWiFi(){ WiFi.mode(WIFI_STA);  WiFi.begin(ssid,passwd);  while(WiFi.status()!=WL_CONNECTED){  Serial.print("."); delay(500); } Serial.println(WiFi.localIP());  } int port=8888;  WiFiServer server(port);  void setup() { Serial.begin(115200);  InitL9110s();  InitWiFi();  server.begin();  } void loop(){ char c; WiFiClient client=server.available();  while(client.connected()){  while(client.available()>0){  c=client.read();  switch(c){  case 'q': qian();break; case 'h': hou();break; case 'z': zuo();break; case 'y': you(); break; } } } } 

注:如此就可以实现小车脱离电脑自由运动,可在手机上下载一个 tcp App,通过APP连接板载WiFi并发送数据给板子上的服务器实现小车的自由运动。

当小车在行驶过程中如果遇到障碍物使小车可以紧急制动并倒退

(测试代码如下):

#include<ESP8266WiFi.h>    #define Echo D2 #define Trig D8   #define Dong1 D6 #define Dong2 D7 #define Zhuan1 D4 #define Zhuan2 D5   void initL9110s(){ pinMode(Dong1,OUTPUT); pinMode(Dong2,OUTPUT); pinMode(Zhuan1,OUTPUT); pinMode(Zhuan2,OUTPUT); }   void qian(){ digitalWrite(Dong1,LOW); digitalWrite(Dong2,HIGH); } void hou(){ digitalWrite(Dong1,HIGH); digitalWrite(Dong2,LOW); } void ting(){  digitalWrite(Dong1,LOW); digitalWrite(Dong2,LOW); } void zuo(){ digitalWrite(Zhuan1,HIGH); digitalWrite(Zhuan2,LOW); } void you(){ digitalWrite(Zhuan1,LOW); digitalWrite(Zhuan2,HIGH); } void zhen(){  digitalWrite(Zhuan1,LOW); digitalWrite(Zhuan2,LOW); }   char* ssid="hpy"; char* passwd="2225341578";  void initWiFi(){ WiFi.mode(WIFI_STA);  WiFi.begin(ssid,passwd);  while(WiFi.status()!=WL_CONNECTED){  Serial.print("."); delay(500); } Serial.println(WiFi.localIP());  }   int port=6666; WiFiServer server(port);   long gettime(){ digitalWrite(Trig,HIGH); delayMicroseconds(10);  digitalWrite(Trig,LOW); return pulseIn(Echo,HIGH); }   void initchaosheng(){ pinMode(Trig,OUTPUT); pinMode(Echo,INPUT); }  void setup() { Serial.begin(115200);  initchaosheng();  initL9110s();  initWiFi();  server.begin();  } void loop(){ char c; long dis; WiFiClient client=server.available();  while(client.connected()){  while(client.available()>0){ dis=gettime()/58;  Serial.println(dis); c=client.read();  Serial.println(c); switch(c){  case 'q': if(dis<10){  hou(); delay(500); qian(); }else{ qian(); } break; case 'h': hou(); break; case 't': ting();break; case 'z': zuo(); break; case 'y': you(); break; case 'v': zhen();break; } } } } 

实现小车的自由运动最重要的就是实现WiFi连接以及在开发版上搭建一个服务器用来控制小车的运动。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

在线客服
在线客服
QQ客服