实现小车自动避障功能,当距离小于设定的距离时,蜂鸣器会响,同时小车也会后退。用串口进行调试,手机tcp软件进行控制。
硬件组成
ESP-8266的wemos芯片,蜂鸣器,超声波模块和驱动电机模块和SG90电机
软件
代码编写
#include <ESP8266WiFi.h>
#define Dong1 D6
#define Dong2 D7
#define zhuan1 D4
#define zhuan2 D5
#define Tfig D8
#define Echo D2
#define BEEP D3
char* ssid = "Xiaomi_1A0E"; //WiFi名字
char* passwd = "lh19981112"; //WiFi密码
int port = 8888; //端口号
WiFiServer server(port); //服务端端口号
//超声波模块初始化
long gettime()
{
digitalWrite(Tfig, HIGH);
delayMicroseconds(10);
digitalWrite(Tfig, LOW);
return pulseIn(Echo, HIGH);
}
void initChaoShengBo()
{
pinMode(Echo, INPUT);
pinMode(Tfig, OUTPUT);
}
void initWifiSta() //设置网络
{
// put your setup code here, to run once:
WiFi.mode(WIFI_STA); //设置STA模式
WiFi.begin(ssid, passwd);//连接网络
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP());
delay(500);
}
void initBeep() //初始化蜂鸣器
{
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
}
void initL9110s()
{
pinMode(Dong1, OUTPUT);
pinMode(Dong2, OUTPUT);
pinMode(zhuan1, OUTPUT);
pinMode(zhuan2, OUTPUT);
}
void qian()
{
digitalWrite(Dong1, HIGH);
digitalWrite(Dong2, LOW);
}
void hou()
{
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, HIGH);
}
void ting()
{
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, LOW);
}
void zuo()
{
digitalWrite(zhuan1, LOW);
digitalWrite(zhuan2, HIGH);
}
void zheng()
{
digitalWrite(zhuan1, LOW);
digitalWrite(zhuan2, LOW);
}
void you()
{
digitalWrite(zhuan1, HIGH);
digitalWrite(zhuan2, LOW);
}
//各个模块初始化函数
void setup() {
// put your setup code here, to run once:AAAAAAAAAAAAAA
initL9110s();
initBeep();
initChaoShengBo();
Serial.begin(115200);
initWifiSta();
server.begin();
}
void loop() {
// put your main code here, to run repeatedly:
char cmd;
long dis;
int mark = 0;
WiFiClient client = server.available(); //服务器初始化
while (client.connected()) {
while (client.available() > 0) {
cmd = client.read();
Serial.println(cmd);
dis = gettime() / 58;
if (dis < 10) {
digitalWrite(BEEP, LOW);
hou();
delay(200);
digitalWrite(BEEP, HIGH);
ting();
mark = 1;
} else {
mark = 0;
}
if (mark == 0) {
switch (cmd) {
case 'q':
qian();
break;
case 'h':
hou();
break;
case 'z':
zuo();
break;
case 'y':
you();
break;
case 's':
ting();
break;
case 'd':
zheng();
break;
}
}
}
}
}