由于题目中没有给出小车的硬件结构,本回答只提供代码框架和思路,具体的代码需要根据实际情况进行修改。

  1. 配置WiFi连接

使用ESP8266库中的WiFi相关函数进行WiFi连接的配置,代码如下:

#include <ESP8266WiFi.h>

const char* ssid = "car"; // WiFi名称
const char* password = "password"; // WiFi密码
const IPAddress ip(192, 168, 2, 1); // IP地址

void setup_wifi() {
  WiFi.mode(WIFI_AP); // 将ESP8266设置为AP模式
  WiFi.softAPConfig(ip, ip, IPAddress(255, 255, 255, 0)); // 设置AP的IP地址
  WiFi.softAP(ssid, password); // 开启AP
}
  1. 控制L298n

使用ESP8266的GPIO输出信号控制L298n模块的IN1,IN2,IN3和IN4引脚,使得两个电机可以实现前进、后退、左转和右转的功能。同时可以通过PWM调整电机的速度。代码如下:

const int ENA = D1; // 电机A的PWM控制引脚
const int IN1 = D2; // 电机A的正转控制引脚
const int IN2 = D3; // 电机A的反转控制引脚
const int ENB = D4; // 电机B的PWM控制引脚
const int IN3 = D5; // 电机B的正转控制引脚
const int IN4 = D6; // 电机B的反转控制引脚

void setup_motor() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

// 前进
void forward(int speed) {
  analogWrite(ENA, speed); // 电机A的PWM控制
  analogWrite(ENB, speed); // 电机B的PWM控制
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

// 后退
void backward(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

// 左转
void left(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

// 右转
void right(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

// 停止
void stop() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}
  1. 控制LED灯

使用ESP8266的GPIO输出信号控制LED灯的亮灭,代码如下:

const int LED = D7; // LED灯控制引脚

void setup_led() {
  pinMode(LED, OUTPUT);
}

void light_on() {
  digitalWrite(LED, HIGH);
}

void light_off() {
  digitalWrite(LED, LOW);
}
  1. 接收WiFi指令并控制小车

使用ESP8266的WiFiServer库监听指定端口的TCP连接,接收控制小车的指令并调用相应的函数控制小车的运动和LED灯的状态。代码如下:

#include <WiFiServer.h>

const int PORT = 80; // 监听的端口号
WiFiServer server(PORT); // 创建一个WiFiServer对象

void setup() {
  Serial.begin(115200);
  setup_wifi();
  setup_motor();
  setup_led();
  server.begin(); // 启动WiFiServer
}

void loop() {
  WiFiClient client = server.available(); // 等待客户端的TCP连接
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        String request = client.readStringUntil('\r'); // 读取客户端发送的指令
        Serial.println(request); // 将指令打印到串口,方便调试
        if (request.indexOf("forward") != -1) {
          forward(255);
        } else if (request.indexOf("backward") != -1) {
          backward(255);
        } else if (request.indexOf("left") != -1) {
          left(255);
        } else if (request.indexOf("right") != -1) {
          right(255);
        } else if (request.indexOf("stop") != -1) {
          stop();
        } else if (request.indexOf("speed") != -1) {
          int speed = request.substring(request.lastIndexOf("=") + 1).toInt();
          analogWrite(ENA, speed);
          analogWrite(ENB, speed);
        } else if (request.indexOf("light_on") != -1) {
          light_on();
        } else if (request.indexOf("light_off") != -1) {
          light_off();
        }
      }
    }
    client.stop(); // 断开客户端连接
  }
}

至此,我们就完成了一个简单的WiFi小车控制程序。用户可以通过连接到“car”热点,并在浏览器中输入“192.168.2.1”来控制小车的运动和LED灯的状态。例如,用户可以在浏览器中输入“http://192.168.2.1/?forward”来让小车前进,输入“http://192.168.2.1/?speed=127”来调整小车的速度,输入“http://192.168.2.1/?light_on”来开启LED灯

用esp8266单片机在arduino的环境下写一辆WiFi小车的程序。WiFi名称为carWiFi密码为passwordIP地址为19216821控制L298n控制两个电机实现小车的前进后退左转右转pwm调速开灯的功能。

原文地址: https://www.cveoy.top/t/topic/dKiy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录