一、项目介绍:通过wemos D1控制小车的行进轨迹及避障功能。

二、项目原理:该模块主要实现避障的功能,超声波发出波遇到前面的障碍物后会返回,通过这段时间来判断距离前面障碍物的距离,距离通过串口传给wemos d1从而判断碰到障碍物该做什么反应。

三、开发及硬件组成:Arduino、wemos D1、小车、步进电机驱动、超声波测距模块。

四、代码部分

1.代码实现wemos接入WiFi:

#include<ESP8266WiFi.h>
char* ssid="WiFi名字";
char *passwd="WiFi密码";
void initWifiSta()
{WiFi.mode(WIFI_STA);//设置STA模式WiFi.begin(ssid,passwd);//连接网络while(WiFi.status() != WL_CONNECTED) //判断是否连接成功,不成功的话每隔0.5秒打印一个.{Serial.print(".");delay(500);  }
}
void setup() {// put your setup code here, to run once:Serial.begin(115200);//开启端口,并设置波特率initWifiSta();
}void loop() {// put your main code here, to run repeatedly:Serial.println(WiFi.localIP());//通过串口每隔0.5秒打印一次wemosIP地址delay(500);
}

效果如下:

2.  编程Wemos服务器,通过手机tcp工具远程网络控制蜂鸣器:

#include<ESP8266WiFi.h>
char* ssid="WiFi名字";
char *passwd="WiFi密码";
int port=6666;
WiFiServer server(port);
void initWifiSta()
{WiFi.mode(WIFI_STA);//设置STA模式WiFi.begin(ssid,passwd);//连接网络while(WiFi.status() != WL_CONNECTED) //判断是否连接成功,不成功的话每隔0.5秒打印一个.{Serial.print(".");delay(500);  } Serial.println(WiFi.localIP());//通过串口每隔0.5秒打印一次wemosIP地址
}
void initBeep()
{pinMode(D5,OUTPUT);digitalWrite(D5,HIGH);}
void setup() {// put your setup code here, to run once:Serial.begin(115200);//开启端口,并设置波特率initWifiSta();//接入WiFiinitBeep();server.begin();//启动服务器
}      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();//读取数据if(cmd == '1'){Serial.println("di di di...");digitalWrite(D5,LOW);}else{Serial.println("wu wu wu~~~~");digitalWrite(D5,HIGH);}}}// delay(500);
}

效果:在手机TCP中输入1,打印“di di di...”,并且蜂鸣器响起;输入其他字符打印"wu wu wu~~~~",并停止响。

3.最终代码

#include<ESP8266WiFi.h>
#define dongh D6
#define dongq D7
#define zhuany D4
#define zhuanz D5
#define Echo D2
#define Trig D8
long getTime()
{digitalWrite(Trig, HIGH);delayMicroseconds(10);digitalWrite(Trig, LOW);return pulseIn(Echo, HIGH);
}
void initchaoShengBo()
{pinMode(Echo, INPUT);pinMode(Trig, OUTPUT);
}
char* ssid = "EB7090";
char *passwd = "000000";
int port = 6666;
WiFiServer server(port);
void initWifiSta()
{WiFi.mode(WIFI_STA);//设置STA模式WiFi.begin(ssid, passwd); //连接网络while (WiFi.status() != WL_CONNECTED) //判断是否连接成功,不成功的话每隔0.5秒打印一个.{Serial.print(".");delay(500);}Serial.println(WiFi.localIP());//通过串口每隔0.5秒打印一次wemosIP地址
}void initrun()
{pinMode(dongh, OUTPUT);pinMode(dongq, OUTPUT);pinMode(zhuanz, OUTPUT);pinMode(zhuany, OUTPUT);
}
void forward()
{digitalWrite(dongh, HIGH);digitalWrite(dongq, LOW);
}
void stop()
{digitalWrite(dongq, HIGH);digitalWrite(dongh, HIGH);
}
void retreat()
{digitalWrite(dongq, HIGH);digitalWrite(dongh, LOW);
}
void left()
{digitalWrite(zhuany, HIGH);digitalWrite(zhuanz, LOW);}
void right()
{digitalWrite(zhuanz, HIGH);digitalWrite(zhuany, LOW);
}
void zheng()
{digitalWrite(zhuanz, HIGH);digitalWrite(zhuany, HIGH);
}
void setup() {// put your setup code here, to run once:initrun();Serial.begin(115200);//开启端口,并设置波特率initWifiSta();//接入WiFiserver.begin();//启动服务器initchaoShengBo();
}void loop() {// put your main code here, to run repeatedly:char cmd;int mark = 0;WiFiClient client = server.available();  //服务初始化while (client.connected())   //等待客户端连接{while (client.available() > 0)  //有数据到来,类似串口的那个函数{cmd = client.read();//读取数据Serial.println(getTime()/58);if (getTime()/58 < 10)//障碍物离小车还有10cm,小车就后撤0.5秒,并停下来,并且让mark=1,不继续执行后面的代码{retreat();delay(500);stop();mark = 1;}else{mark = 0;}if (mark == 0){switch (cmd){case 'q':forward();Serial.print("q");break;case 'h':retreat();Serial.print("h");break;case 'z':left();Serial.print("z");break;case 'y':right();Serial.print("y");break;case 's':stop();Serial.print("s");break;case 'd':zheng();Serial.print("d");break;}}}}
}

效果:通过手机与小车连接同一个WiFi用APP控制小车的前后左右,并且障碍物离小车还有10cm,小车就后撤0.5秒,并停下来

项目:基于wemos的WiFi避障小车相关推荐

  1. 基于Wemos D1的wifi避障小车

    Wemos D1 接入wifi(STA模式) 原型 #include <ESP8266WiFi.h> char* ssid = "gcc-tech"; //" ...

  2. 433M射频遥控灯、震动感应灯、WIFI避障小车

    目录 433M射频遥控灯 1. 433M射频灯的硬件连接 2. 具体接线剖析 3.课堂干货简述 4. 准备工作之环境搭建KEIL_ISP_USBTOTTL驱动 5. KEIL建立工程 6.电子可编程开 ...

  3. 51单片机小车的立项书_毕业论文:基于51单片机智能避障小车的设计报告(范文1)...

    <毕业论文:基于51单片机智能避障小车的设计报告.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文:基于51单片机智能避障小车的设计报告>相关文档资源请在帮帮文库(ww ...

  4. 基于arduino单片机智能避障小车

    基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作'可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理, ...

  5. 基于STM32三路超声波避障小车

    基于STM32的避障小车 最近几天的学习了STM32输入捕获输入捕获的相关知识,为了巩固自己学习的知识特意制作一辆有三个超声波组成的4轮避障小车来加深对输入捕获的理解. 1.输入捕获简介 输入捕获模式 ...

  6. 基于51单片机的红外自动避障小车(lunwen+任务书+开题+文献综述+翻译及原文+避障程序)

    目 录 1 绪论 1 1.1 课题研究背景及意义 1 1.2 国内外研究现状 1 1.2.1国外智能车辆研究现状 2 1.2.2发展前景 3 1.3 课题主要研究内容 4 2 工作原理及总体设计 5 ...

  7. FPGA-超声波避障小车(ego1)

    基于FPGA的超声波避障小车,利用ego1的100HZ时钟,我们可以自己定义不同占空比的PWM来控制电机的转速和舵机的角度,我们可以通过自己写计时器获得超声波来回所需的时间来测量距离,根据距离的远近返 ...

  8. 智能避障小车学习笔记(基于Wemos的避障小车)

    智能避障小车 一.开发环境及硬件 ArduiNo平台 网盘地址:https://pan.baidu.com/s/1w3MHxkCUBOlbqKRxRhlwbQ 提取码:o6gk 硬件 WeMos D1 ...

  9. stm32捕获占空比_基于STM32超声波避障小车

    不管是对于初学者还是对于一个玩过单片机的电子爱好者来说,或多或少都接触到过小车项目,今天给大家介绍的的一个项目基于STM32超声波避障小车.这也是我曾经的一个课设,在此开源分享给大家,全文5000多字 ...

最新文章

  1. 动画 java_Java动画程序介绍
  2. 20应用统计考研复试要点(part2)--统计学
  3. 为产业数字化赋能!施耐德电气数字产业示范园落户北京
  4. HDOJ 杭电1874-畅通工程(Floyd算法)
  5. Python数据分析学习笔记05:用户画像
  6. TensorFlow 深度学习实战指南中文版
  7. php web 简单的系统,Slim 简单而强大的 PHP 微型 Web 开发框架 - 资源分享
  8. 升级dedecms5.5后,出现提示保存目录数据时失败,请检查你的输入资料是否存在问题...
  9. bzoj2339: [HNOI2011]卡农
  10. iconfont阿里矢量图标库的引入与使用
  11. nlp课程_使用nlp阻止无请求的销售电子邮件的无服务器堆栈中的课程
  12. springboot发送短信验证码
  13. 网页音乐制作器(网页钢琴)-- MusicMaker
  14. markdown中修改图片大小
  15. 了解python正则表达式
  16. C语言 文件合成器代码(用图片掩盖.rar文件)
  17. java date before,Java中的LocalDate isBefore()方法
  18. 分析了全国 3447 个地铁站后发现的秘密
  19. 高考录取系统的模拟(1)——成绩的模拟生成程序
  20. 正方体才是素描界的基础,基础决定上层建筑~

热门文章

  1. 通过平面向量角度认知世界
  2. 使用Certify申请Lets Encrype通配符SSL证书
  3. 学会思考(转一位辩友的书单)
  4. Pandas中的轴向堆叠数据—concat()方法
  5. 计算机毕业设计之java+ssm基于协同过滤算法的图书推荐系统
  6. WWW2021论文速递:细粒度城市流量预测
  7. C++lambda 捕获
  8. 计算机毕业设计ssm水果生鲜销售系统7826c系统+程序+源码+lw+远程部署
  9. 鼎沐素食:还生命于自然,还身心于自己!
  10. 已解决:H5移动端网页实现录音功能,js实现录音功能,包括安卓webview接口也可以使用