基于WEMOS的智能WiFi避障小车

文章目录

    • 基于WEMOS的智能WiFi避障小车
  • 前言
  • 一、设计平台介绍
  • 二、设计步骤
  • 三、项目演示效果
  • 四、结语
  • 五、参考文献

前言

学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义[1]。智能小车的竞赛在我国各大高校中都受到了重视,吸引了大批的高校学生的兴趣,而且取得了很多优异的成果,为我国推进智能化的进程做出了巨大的贡献,也为智能汽车的发展提供了理论依据。只有当把理论和模型应用到实践中,这样的创新才用意义,我们国家这几年在智能化方面的进步越来越快,也推动了我国在国际社会上在智能化方面的话语权。智能小车是智能化的一部分,它的系统里的避障、循迹、红外遥控的技术用到了智能化[2-4],将智能化应用到传统技术上是21世纪发展的趋势。我国虽然从改革开放以来大力发展科技创新,但是在智能化的创新水平与国外较发达的国家相比还有巨大的差距,智能竞赛在高校越来越流行,也证明了我国教育在这方面很快会赶上世界上的发展水平。本次设计是以安卓系统APP通过控制手机内部的Wi-Fi模块去连接车载Wi-Fi,实现手机和小车的连接,然后利用手机上的控制软件以Wi-Fi网络信号为载体发送相关信号,Wi-Fi模块接收手机端发送来的相关信号并分析转换成TTL电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块和超声波模块以实现小车的前进、后退、左拐、右拐和超声波避障等功能[5],从而达到控制小车。对于电子知识的热爱与钻研有利于研发更多智能车辆,使我们的生活更加便利、智能化。

一、设计平台介绍

1.1 Arduino描述
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于Wiring)和Arduino开发环境(基于Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,它们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

                      图1  Arduino界面

1.2 Wemos D1开发板介绍
(1)Wemos D1是自带ESP8266 Wifi芯片并兼容Arduino的开发板,可使用Arduino IDE直接进行开发。它有11个 I/O 引脚,1 个 ADC 引脚(输入范围0-3.3V),而且板载5V及1A开关电源(高输入电压24V),在工作中,它和stm32模块开发类似,集成度高,同时也比STM32单片机更经济便宜。Wemos D1开发板实物图如下图所示:

                图2  wemos D1开发板

(2)此开发板芯片为ESP8266(32位),缓存比Arduino Uno大,并且包含11个数字IO引脚以及1个模拟输入引脚,使用Micro-B type USB线进行连接。ESP8266EX 内置超低功耗Tensilica L106 32 位 RISC 处理器,CPU 时钟速度最高可达 160 MHz,工作电压为3.3V,闪存为4Mbytes,支持实时操作系统(RTOS) 和 Wi-Fi 协议栈,可将高达 80% 的处理能力留给应用编程和开发,ESP8266模块可以独立于Arduino等开发板,作为一块独立的开发板使用。它拥有GPIO、I2C、ADC、SPI、PWM等模块,可以用它做大多数MCU能做的工作,且性能甚至远超多数MCU。

二、设计步骤

2.1 电机控制前进后退左右转和端口初始化的实现
本次使用的是L9110s步进电机控制器,该模块供电电压为2.5V-12V,其GND接到开发板上的GND引脚,IA1\IB1\IA2\IB2外接开发板IO口[6],如下图所示:

                  图3 L9110s步进电机

(1)宏定义端口
在编写控制代码前,我们要先宏定义出电机前进后退和左转右转在开发板上对应的引脚,代码如下:

#define zhuan1 D6
#define zhuan2 D7
#define dong1 D4
#define dong2 D5

(2)初始化串口
首先我们要创建一个无类型串口初始化函数,把宏定义的引脚设置为输出引脚,代码如下:

void initLs() {pinMode(zhuan1, OUTPUT); //设置引脚为输出引脚pinMode(zhuan2, OUTPUT);pinMode(dong1, OUTPUT);pinMode(dong2, OUTPUT);
}

(3)前进后退和左转右转
首先创建出小车前进后退,左转右转和停止的函数,然后再在函数里设置转向的高低电平,比如小车左转向时,对应引脚设置为高电平,相反转向的引脚设置为低电平,同理,小车回正,前进后退,停止也是如此[7]。代码如下:

void you() {                 //右转向digitalWrite(zhuan1, HIGH);//高电平digitalWrite(zhuan2, LOW);
}
void zuo() {                   //左转向digitalWrite(zhuan1, LOW);digitalWrite(zhuan2, HIGH);
}
void  zheng() {                 //回正digitalWrite(zhuan1, LOW);digitalWrite(zhuan2, LOW);
}
void qian() {                   //小车前进digitalWrite(dong1, LOW);digitalWrite(dong2, HIGH);
}
void hou() {                      //小车后退digitalWrite(dong1, HIGH);digitalWrite(dong2, LOW);
}
void ting() {                     //小车停止digitalWrite(dong1, LOW);digitalWrite(dong2, LOW);
}

2.2 WiFi模块的初始化
(1)定义WIFI库
在编写WIFI连接的代码前,我们要定义一个特有的WIFI库,从而才能调用相应的函数[8],代码如下:

#include <ESP8266WiFi.h>

(2)初始化WIFI
① 定义我们要连接的WIFI帐号密码并且声明端口号,代码如下:

char* ssid = "chendan520";       //定义WIFI
char* passwd = "chendan2016";    //输入WIFI密码
int port = 8888;                //设置端口号
WiFiServer server(port);         //端口接入WIFI

② 创建一个WIFI连接函数,代码如下:

void initWifiSta()
{WiFi.mode(WIFI_STA);//设置STA模式WiFi.begin(ssid, passwd);//连接网络while (WiFi.status() != WL_CONNECTED) { //判断WIFI是否连接成功Serial.print(".");delay(500);}Serial.println(WiFi.localIP());//通过串口打印wemos的ip地址
}

2.3 超声波测距
(1)超声波测距原理
① 超声波传感器先发送一个信号,信号遇到障碍物后就会被反弹回来再被超声波传感器接收,接收到的高电平持续的时间就是超声波从发射到接收到的时间,所以测试的距离=(高电平时间*声速)/2;再将距离单位换算成厘米,所用函数为:distance=pulseIn(接收信号的引脚echo,HIGH)/58,声速为340m/s[9-11];

             图4  超声波测距原理图

② 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收,电路板上有4个引脚:VCC(正极),Trig(触发),Echo(回应),GND(接地)。

                  图5 超声波传感器

(2)测距编程实现
超声波测距的主要代码如下[12]。

#define Echo D2  //宏定义“回应”引脚
#define Trig D8  //宏定义“触发”引脚
long getTime() {     //超声波测距digitalWrite(Trig, HIGH); //接受一个高电平delayMicroseconds(10);  //持续10秒digitalWrite(Trig, LOW); //再变成低电平return pulseIn(Echo, HIGH);
}
void initChaoshenbo() {    //选定超声波管脚pinMode(Echo, INPUT);pinMode(Trig, OUTPUT);
}

2.4 setup函数所需要写的代码
该函数为初始化执行函数,主要内容是以上提到的各个初始化函数,代码如下:

void setup() {                       // put your setup code here, to run once:initLs();      //初始化电机管脚Serial.begin(115200); //设置波特率initWifiSta();   //连接WIFIinitChaoshenbo();  //选定超声波管脚server.begin();
}

2.5 loop函数所需要写的代码
该函数是循环执行函数,主要内容如下:

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); //打印cmd的值,测试cmd输出是否正确dis = getTime() / 58;    //测试超声波距离if (dis < 10) {            //当小车遇到障碍物时,若距离小于10厘米,则执行下一条指令hou();        //小车后退delay(200);   //持续200毫秒   ting();        //然后小车停止} 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;}}}}
}

2.6 安卓app模拟器
(1)Android开发环境搭建
首先下载编程软件–eclipse ADT,如图6所示,解压。然后再导入程序包,最后在代码中编写我们要连接WIFI的ip地址[13-14]。如图7所示。

                    图6 Eclipse ADT

                 图7  WiFi的IP地址修改

(2)把程序跑在模拟器上
安卓app模拟器和小车怎么连接起来的关键是adb软件,打开电脑的命令提示符cmd,需要进到我们存储adb位置上,然后输入adb connect 127.0.0.1:62001(62001是夜神模拟器的端口号,模拟器不一样可能端口号也不一样),这样我们就能把APP跑进去,然后就能控制小车了!如图8,图9所示。

               图8 adb连接模拟器

                图9 安卓app界面

三、项目演示效果

我们将所有模块进行代码整合,然后将程序烧写到Wemos D1开发板上,再使用串口助手来调试经改装后的小车前进后退和左转右转是否正常。如果正常,再测试超声波测距,我们将一障碍物放置于小车正前方,然后点击app模拟器前进按钮,当小车与障碍物的距离小于10cm时,如果小车后退然后停止,表示测试成功。硬件实物如下图所示。

                      图10 小车实物图

同时也可以使用12v电池给小车供电,让小车脱掉数据线自己动起来,但是由于小车耗电量大,所以我们尽量使用小型充电宝来给小车供电,从而达到更佳的效果。

四、结语

避障小车是一种智能设备,可以自动感知前方的障碍物,并通过朝另一个方向转动来避开障碍物。避障小车的应用不受限制,现在大多数军事组织都使用它,这有助于执行许多士兵无法完成的危险工作。通过本次基于C语言与Java的WiFi避障小车的设计,我们对嵌入式系统设计的整个过程有了初步的了解,我们首先要需求分析,然后分模块设计,再进行代码整合,最后最重要的是对项目进行调试,在调试过程找出错误点,寻求更优的,更符合设计目的方案。这个过程需要自己动手拼装制作,这样完成后会有满满的成就感,小车作为一个基本的开发平台,可以在上面搭建各种传感器,自定义功能,相对于四旋翼等安全系数高,技术能力要求较低,适合初学者,这样为以后做更复杂的嵌入式系统设计项目奠定坚实的基础。与此同时,本次项目多了个WiFi的功能,它要有一定的网络知识储备,需懂得串口通信,网络协议,服务器与客户端的连接等,对于开发其他一些连接家用WiFi的智能家居项目具有很好的帮助。.

五、参考文献

[1]陆蕊. 基于单片机的智能小车系统的设计[J]. 电子世界,2017(8):166-167.
[2]陈梦婷,胡白燕,黄璨.基于单片机的智能循迹避障小车的设计与实现[J].智能机器人,2016:47-51.
[3]陈海宴.51单片机原理及应用[M].北京:北京航空航天大学出版社,2010:62-65.
[4]高枫.基于ARM的智能寻迹小车的设计与实现[D].山西:中北大学,2012:6.
[5]陈海洋,李东京.基于单片机的智能循迹避障机器人小车设计[J].科技风,2014(20):99.
[6]钱栢霆,李娟.基于单片机的循迹避障智能小车系统的设计[J].电子制作,2015:25-26.
[7]寸巧萍.基于Mega16单片机的智能小车循迹避障设计方案[J].电子世界,2016:45-46.
[8]顾群,蒲双雷.基于单片机的智能小车避障循迹系统设计[J].数字技术与应用,2012(5):23.
[9]蔡莉莎,曾维鹏.基于人工智能路径规划系统的智能小车的设计与实现[J].电子世界,2016(18):112-113.
[10]朱思敏.自循迹智能小车控制系统的设计与实现[D]. 浙江工业大学,2013:16-17.
[11]徐少朋.基于Android开发的智能小车路径规划[D]. 天津大学,2014:7-8.
[12]吕闪,金巳婷,沈巍.基于STM32的循迹避障智能小车的设计[J].计算机与数字工程,2017:549-552.
[13]朱丹峰, 葛主冉,林晓雷.基于Android平台的无线遥控智能小车[J].电子器件,2013:408-412.
[14]俞文武,程恒文,金天宝等.基于STM32的智能跟踪小车的设计[J].山东工业技术,2017:294-296.

基于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. 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)

    基于STM32F103C8T6的循迹避障小车完整制作过程 本文适合小白观看 由于本人的一个小项目,要做一个基于STM32的循迹避障小车,前后花了约1周的时间,这个过程中也参考了很多大神分享的资料,学到 ...

  4. 基于51单片机的超声波避障小车设计(含Proteus仿真)

    超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...

  5. 项目:基于wemos的WiFi避障小车

    一.项目介绍:通过wemos D1控制小车的行进轨迹及避障功能. 二.项目原理:该模块主要实现避障的功能,超声波发出波遇到前面的障碍物后会返回,通过这段时间来判断距离前面障碍物的距离,距离通过串口传给 ...

  6. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)

    + 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...

  7. STM32蓝牙控制循迹避障小车——2.循迹模块

    STM32蓝牙控制循迹避障小车源代码--2.循迹模块 注意-所需模块: 接线:四个循迹模块(从左到右分别为1,2,3,4) B4–第1个循迹模块的D0 B5–第2个循迹模块的D0 B6–第3个循迹模块 ...

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

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

  9. 智能循迹避障小车C语言程序编写思路,基于单片机的智能小车红外避障循迹系统设计与制作...

    余秀玲 余秀娟 摘 要:随着科技的高速发展,人们对生活质量的要求越来越高,无人驾驶汽车已经被广为研发和试用,由此智能小车的快速发展也是在情理之中.通过对基于单片机的智能小车的硬件及软件设计分析,实现红 ...

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

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

最新文章

  1. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
  2. P1984 [SDOI2008]烧水问题
  3. python爬虫框架实例项目_python爬虫框架scrapy实例详解
  4. des加密解密JAVA与.NET互通实例
  5. 入门云虚拟主机,为你的业务快速实现数据备份和数据恢复
  6. mysql5.7.11无法启动_macos - mysql 5.7.11 启动报错
  7. ORA-19809: limit exceeded for recovery files
  8. C++11 Unicode 支持
  9. 9. jQuery 停止动画
  10. 电脑无线连接打印机(DCP-1618W)
  11. C/C++实现关闭命令行快速编辑模式(Windows系统)
  12. 计算机网络(第7版) - 第五章 运输层 习题答案
  13. 东南大学女孩子学计算机的多吗,2019年应届南邮上岸东南大学计算机生,经验分享,希望能帮助到迷茫的你...
  14. windows server 2012 AD 活动目录部署系列(二)创建域控制器
  15. 题解 [CF1682D] Circular Spanning Tree
  16. ios模拟器装ipa包_用iOS模拟器安装App的方法
  17. Nginx:配置 proxy_pass 代理转发
  18. php密钥,php – 唯一的密钥生成
  19. canvas画圆和线条动画
  20. 私域流量运营平台有哪些?

热门文章

  1. 大宗商品交易平台支持多种交易模式,你了解多少?
  2. c# 财务报表数字转大写的方法
  3. 区块链对人工智能的变革:去中心化将带来数据新范式
  4. Git学习-本地版本库的创建与简单操作
  5. HttpServletResponse
  6. electron 自定义标题栏_如何在Electron Framework中创建自定义标题栏(灵感来自Visual Studio Code标题栏)...
  7. Qt 之 自定义窗口标题栏
  8. 对象的高级使用-插入图片对象(转)
  9. 一世人中,最黑仔嘅一日
  10. 小白初上手HTML+CSS 仿写小米官网logo动画