基于Arduino+ESP8266的wifi遥控智能车实现方法

一.ESP8266介绍

ESP8266是由中国乐鑫科技(Espressif Systems)推出的一款高度集成的Wi-Fi模块,采用Tensilica L106 32位微处理器,主频支持80 MHz或160 MHz(超频)。它集成了完整的Wi-Fi网络功能和TCP/IP协议栈,支持802.11 b/g/n协议,适用于物联网(IoT)设备开发。

引脚图:
在这里插入图片描述

二.Arduino+ESP8266连接方式:

Arduino和ESP8266的引脚连接如下图所示:
在这里插入图片描述
使用Arduino的输出电源给ESP8266供电。

三.ESP8266 TCP客户端源代码:

/**
**TCP client 
*顺序:连接wifi-连接tcp server 
**最后接收tcp server的信号
**/
#include<ESP8266WiFi.h>
#include<WiFiClient.h>
int led = LED_BUILTIN;//2代表GPIO2(D4) 控制板上的LED  或者是 LED_BUILTIN
const char* staSID = "***";//需要连接的路由器名
const char* staPASSWD = "***";//需要连接的路由器密码
WiFiClient client;
const char *serverIP = "***";//TCP Server IP
const int serverPort = 1200;//TCP Server port
bool isConnect = 0;
void setup() {
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);
  digitalWrite(led,1);//熄灭LED
  WiFi.mode(WIFI_STA);//设置为STA模式
  WiFi.begin(staSID,staPASSWD);//配置连接信息 开始连接
  Serial.begin(9600);
  connectWiFi();//未连接到路由器,闪烁LED,直到连接成功,点亮LED 
  connectTCPServer();
}
void loop() {
  // put your main code here, to run repeatedly:
  if(WiFi.status() != WL_CONNECTED)
  {
    WiFi.disconnect();//清除之前的连接信息
    WiFi.begin(staSID,staPASSWD);
    connectWiFi();
  }
  else
  {
    if(!client.connected())
    {
      //未连接到TCP Server
      connectTCPServer();
      return;
    }
    else
    {
      //连接TCP Server成功
      if(isConnect == 0)
      {
        client.println("hello server");
        isConnect = 1;
      }
    }
  }
  tcpHandle(readTCPData());
}
//读取TCP数据
String readTCPData()
{
  String data = "";
  while(client.available() > 0)
  {
    data += char(client.read());
    delay(2);    
  }
  return data;
}
//处理接收的数据
void tcpHandle(String data)
{
  if(data != "")
  {
    //Serial.print("收到服务器信息:");
    //Serial.println(data);
    if(data == "open")
    {
      digitalWrite(led,0);
      client.println("open led");
      Serial.print("open");
    }
    else if(data == "close")
    {
      digitalWrite(led,1);
      client.println("close led");
      Serial.print("close");
    }
    else if(data == "f")
    {
      //前进
      client.println("f");
      Serial.print("U");
    }
    else if(data == "b")
    {
      //后退
      client.println("b");
      Serial.print("D");
    }
    else if(data == "l")
    {
      //左转
      client.println("l");
      Serial.print("L");
    }
    else if(data == "r")
    {
      //右转
      client.println("r");
      Serial.print("R");
    }
    else if(data == "s")
    {
      //停止
      client.println("s");
      Serial.print("S");
    }
  }
}
void connectWiFi()
{
  Serial.println("开始连接网络");
  while(WiFi.status() != WL_CONNECTED)
  {
    Serial.print("-");
    delay(500);
  }
  Serial.println("连接网络成功");
}
void connectTCPServer()
{
  Serial.println("开始连接TCP Server");
  client.connect(serverIP,serverPort);
  delay(1000);
}

四.Arduino源代码

Arduino通过串口接收ESP8266接收的远程TCP Server的指令,并控制小车前进、后退、左转、右转、停止。
源代码参考本专题文章《基于Arduino的蓝牙遥控智能小车》

五.TCP Server

将TCP Server 的IP和端口,放入ESP8266TCP客户端源代码中,如下图所示:
在这里插入图片描述

六:运行效果:

通过TCP Server按键控制模块控制远程小车运动的完整过程:

wifi遥控智能车-剪辑版

wifi遥控智能车

TCP Server 控制软件可关注下方微信公众号《电子设计研习社》,并回复"TCP"获取下载地址。

ESP8266遥控小车是一种基于ESP8266微控制器的智能小车项目。ESP8266是一款低成本的Wi-Fi微控制器,广泛应用于物联网(IoT)项目中。通过将ESP8266与电机驱动模块、传感器和其他电子元件结合,可以实现远程控制的小车。 ### 主要组成部分 1. **ESP8266模块**:作为主控制器,负责处理无线通信和控制逻辑。 2. **电机驱动模块**:如L298N,用于控制小车的电机。 3. **直流电机**:驱动小车移动。 4. **电源模块**:为整个系统提供电力。 5. **其他传感器**:如超声波传感器,用于避障。 ### 功能 1. **远程控制**:通过Wi-Fi连接到手机或电脑,使用相应的应用程序或网页界面控制小车的移动。 2. **自动避障**:通过超声波传感器检测前方障碍物,并自动避开。 3. **实时监控**:可以添加摄像头模块,实现小车的实时视频监控。 ### 实现步骤 1. **硬件连接**:将ESP8266模块、电机驱动模块、直流电机和其他传感器按照电路图连接。 2. **编写代码**:使用Arduino IDE或其他开发环境编写控制代码,实现小车的移动控制和传感器数据处理。 3. **配置无线网络**:将ESP8266配置为Wi-Fi客户端,连接到指定的无线网络。 4. **开发控制界面**:在手机或电脑上开发一个简单的网页界面或应用程序,通过按钮控制小车的移动。 ### 示例代码 ```cpp #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; WiFiServer server(80); void setup() { Serial.begin(115200); pinMode(16, OUTPUT); // 控制电机 pinMode(5, OUTPUT); // 控制电机 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } server.begin(); Serial.println("Connected to WiFi"); } void loop() { WiFiClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { String command = client.readStringUntil('\n'); if (command == "FORWARD") { digitalWrite(16, HIGH); digitalWrite(5, LOW); } else if (command == "BACKWARD") { digitalWrite(16, LOW); digitalWrite(5, HIGH); } else if (command == "STOP") { digitalWrite(16, LOW); digitalWrite(5, LOW); } } } client.stop(); } } ``` ### 优点 - **低成本**:ESP8266模块价格低廉,适合DIY项目。 - **灵活性**:可以通过编程实现多种功能。 - **易用性**:与Arduino IDE兼容,编程简单。 ### 缺点 - **功率限制**:ESP8266的功率输出有限,需要外部电机驱动模块。 - **复杂性**:需要一定的电子和编程知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT永勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值