欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于Wemos的WiFi避障小车

程序员文章站 2022-05-21 22:44:09
...

基于Wemos的WiFi避障小车

一 所用到的器件

Wemos开发板、一个电机、超声波模块、一个玩具车

基于Wemos的WiFi避障小车
基于Wemos的WiFi避障小车
(大致是这样,有点丑。)

功能和思路

功能:这小车能通过载入的安卓系统APP的前进后退左转右转,这个APP跟小车在同一个网段里。
思路:我们把玩具车改装成能够使用WIFI控制的话,那我们需要在Arduino上配置WiFi的设置还有初始化WiFi模块。
电机和Womos开发板的串口D4D5D6D7也要初始化。

介绍一下Arduino运行的模式

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

**setup函数:**在这个函数里,就是一开始运行时,只会运行一次。
**loop函数:**在这个函数里,他会一直循环,执行函数里的函数。

电机控制前进后腿左转和端口初始化的实现

我们先宏定义端口:

#define turn1 D6
#define turn2 D7
#define move1 D4
#define move2 D5

在初始化串口:

void initCom()
{
  pinMode(move1, OUTPUT);
  pinMode(move2, OUTPUT);
  pinMode(turn1, OUTPUT);
  pinMode(turn2, OUTPUT);

}

控制前进:

void goAhead()
{
  digitalWrite(move1, HIGH);
  digitalWrite(move2, LOW);
}

后退就相反;
控制左边:

void turnLeft()
{
  digitalWrite(turn1, LOW);
  digitalWrite(turn2, HIGH);
}

右边相反的高低电平;

WiFi模块的初始化

1 我们首先要加入一个WiFi的库

#include <ESP8266WiFi.h>

2 我们要初始化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());  //通过串口打印wemos的IP地址
  delay(500);

}

我们可以通过这个函数,通过串口通信的方法,将这个Arduino的地址发送到电脑上,到时候要连接这个Arduino就知道了。
ps:还要宏定义帐号密码还要声明端口号,这些都放在前面

char* ssid = "GCC-Tech";
char* passwd = "1865071****";
int port = 8888;  //端口号
WiFiServer server(port);

这边的账号密码,得改成所在网络的帐号密码,端口号的可以不一样。

setup函数所需要写的代码

void setup() {
  // put your setup code here, to run once:
  initCom();//这个函数是端口初始化
  Serial.begin(115200);//这个是波特率,串口通信用的
  initWifiSta();//这个是WiFi模块初始化,函数原型就是上面那个
  server.begin();

}

loop函数所需要写的代码

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();//读取数据
      Serial.println(cmd);//这边是打印cmd的值,测试cmd输出是否正确
      switch (cmd) {//这个是控制小车行走,wsad分别是上下左右
        case 'w':
          goAhead();
          break;
        case 's':
          goBack();
          break;
        case 'a':
          turnLeft();
          break;
        case 'd':
          turnRight();
          break;
        case 'q':
          stop1();
          break;
         case 'z':
          stop2();
          break;

      }
    }
  }



}

安卓手机控制

我们就需要一部安卓手机,或者下载安卓模拟器,我用的安卓模拟器,所用到的软件是eclipse还有adb。
**eclipse:**这个软件是用来创建一个APP,然后界面有上下左右。如图
基于Wemos的WiFi避障小车
这个我是基于别人的代码改的一点点的参数。
安卓模拟器和小车怎么连接起来的关键是adb软件,打开cmd,需要进到我们存储adb位置上,然后输入adb connect 127.0.0.1:5555(5555是雷神模拟器的端口号,模拟器不一样可能端口号也不一样)
我们就能把APP跑进去,然后就能控制小车了!

相关标签: arduino 嵌入式