完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 jeffc_good 于 2016-9-1 20:26 编辑 基于物联网的智能小车平台搭建 最终的小车的效果如下视频所示: 项目概述 介于手上有一些配件,感觉放着浪费,在物联网的大氛围下,就顺便搭建一个智能小车平台出来,基于这样的平台学习技术,我认为比天天翻书和做小的例子效果要好,我们学校有专门的基于项目的这样的课程,感觉效果挺好的,所以自己也就搞一下。感谢电子发烧友以及Intel给提供Intel Edison这么高大上的控制板。由于是自己随意拼凑出来的硬件,所以如果大家感觉有什么简陋的地方,敬请见谅。本设计旨在设计一款基于物联网的智能小车平台,可以实现通过wifi控制小车,以及可以通过各种传感器对周围环境进行检测以及适当的进行自己的对环境的适应。 本次项目的目的是搭起来智能小车平台,用Arduino编写主要程序。实现的功能主要是,可以通过Intel Edison的无线模块连接我设置好的无线,通过在浏览器中的网页上的链接控制小车的启动、停止、前进、后退、左转以及右转;小车自带前后超声模块,在距离障碍很近的时候,前面有障碍物小车自动往后退,后面有障碍物,小车往前行进;温度传感器监控周围环境温度,并在LCD屏以及网页上进行显示;声音传感器检测周围动静,如果声音超过阈值,蜂鸣器发出警报声;光度传感器检测周围光度,如果周围环境温度较暗,点亮小灯。 所需材料 Intel Edison模块 X1 Arduino扩展版 X1 Grove-Led X1 Grove-Buzzer X1 Grove-Relay X1 Grove-SoundSensor X1 Grove-LigntSensor X1 Grove-Temperature X1 Grove-RGBBacklight LCD X1 57步进电机 X2 DKD-TB6560驱动器 X2 24V锂电池 X1 电压转换模块 X1 SPP-C 蓝牙转串口适配器模块组 X1 HC-SR04 超声波模块 X2 13cm车轮 X2 万向轮 X1 杜邦线、电机支架等各种其他各种配件。 小车的硬件搭建是个很复杂的过程,费去了我很多时间,费时间主要是根据手上的仅有的器件,所以就是凑出来的,用了很多胶带,甚至各位客观可以看到上面有牙膏盒的痕迹。所以一步步的介绍搭建的流程不现实,我就将其画成示意图,大概讲一下硬件的分布。总之,我的原则是手上有什么就用什么。 执行器件主要是两个57步进电机,两个大轮子以及一个行李箱的万向轮,两个步进电机驱动器,电源是24V锂电池,其直接给驱动器供电,通过一个电压转换模块,转换成12V给Intel Edison的Arduino供电。两个超声波模块是很常见的HC-SR04 超声波模块,传感器以及控制板就是Grove套件以及Intel Edison套件,小车的车体是一块亚克力板。整个硬件的结构图如下所示,Intel Edison上的接口为Arduino底板上的对应接口。驱动板的使能接口没有连接,可以省两个IO口。 搭建成的小车实物如下图所示: 拼凑完成之后还是感觉挺霸气侧漏的。 从上面看,蓝色电池上面的是蓝牙模块。 驱动器部分的细节,下面是继电器。 这是车后面,两个步进电机还是很清楚的 电池部分,上面的蓝色的方块是24V锂电池,下面的盒子里面是电源转换模块,将24v转换成12V提供给主板。 前面的万向轮 主控板部分, 工作流程 程序的开始肯定是初始化了,初始化主要包括如下几个步骤: 初始化的部分包括了串口、Wifi、Web服务器、LCD、IO以及定时器的初始化,串口采用Serial 1,也就是Arduino板上的RX、TX两个引脚占用的串口,其主要是打印出一些要查看的信息,这里我连接了一个串口蓝牙模块;无线扫描主要是查看一下周围的无线有哪些,然后连上指定的无线;Web服务器主要是等会的传送Html代码;LCD要显示温度,对其进行初始化;IO根据实际需要进行输入输出的初始化;定时器初始化主要是对timer1的初始化,其为步进电机提供脉冲,周期是10ms。 主程序如下所示: 前面主要是包括读取模拟量值,并进行相应的显示以及控制。温度值是将环境温度显示在LCD以及网页上;亮度值控制小灯是否亮灭,环境足够亮时熄灭小灯,环境比较暗的时候打开小灯;声音控制蜂鸣器是否发声,当周围声音很吵的时候表示有人闯入(模拟监控)发出警报声,并至少延迟一秒钟,家里没人的时候可以用来吓唬小偷。超声波传感器主要是来检测前后距离,当低于安全距离的时候改变运行方向,防止碰撞到墙壁或其他障碍物。在之后就是主要的在服务器上运行网页的实现了,其是控制的主体,其主要包括建立客户端,读取客户端请求内容,并发送网页内容。其根据客户端的返回内容主要包括启动、停止、前进、后退、左转以及右转。 程序编写 程序主要讲几段,以下片段是判断周围环境,val1是判断亮度,val2是判断声音大小,length1以及length2是判断前后安全距离的判断。 下面一段是判断web客户端返回的请求中的关键字是否有返回相应的控制类的字符,比如说是否返回了GET /On,如果有,就是启动小车。 步进电机的脉冲是在定时器中断函数里面的,其到时候就将两个的PUL引脚进行反转,形成脉冲。当然,其速度不可控。 这个程序段是超声波的驱动函数,num是对前后两个超声波的判断,其为1的时候代表的前面的超声波,其为2的时候代表驱动后面的超声波。先给trig至少10us的拉高,然后拉低,这时候Echo在返回超声波的时候是会拉高的,并且拉高时间跟距离是成正比的关系,因此需要记录这段拉高的时间。duration = pulseIn(echo, HIGH, 60000)这句会读取引脚上的高电平脉冲,最大脉冲时间间隔为60毫秒,并且把结果赋值给duration变量 调试与实验 将下载的执行文件设置成开机启动项后就可以开机后自动等待它的运动了。当然开始主要是通过开关给系统上电了,Edison的启动过程还是挺慢的。我用串口蓝牙,可以通过手机上的蓝牙调试助手查看系统打印的信息,并能最终得到Edison得到的IP号码。蓝牙接收到的信息如下所示: 在浏览器输入IP:8080(这是我定义的端口号),然后就可以进入网页控制页面了。 点击turn on就是启动小车,点击turnoff就是关闭小车,turn on状态下是可以控制小车运动方向的。这时候蓝牙界面是可以显示客户端的请求信息。 最终的小车的效果如下视频所示: 实验总结 因为Intel Edison的缘故,竟然第一次接触了Arduino的开发,怪不得很多人喜欢用Arduino,确实是因为很简单,无脑就能完成项目的实现。所以很happy的采用这种简单的方法进行试用以及功能验证。上手是快,但是随着开发的深入,也会发现,其实采用这种方法的局限性很强,过于依赖提供的库,而且很多功能无法实现。当然也可能是自己并不是很了解这些库。总之,通过Arduino的开发过程是个很开心的过程,但是如果深层次的学习技术我感觉还是不能这么玩。 我的这次试用的项目的实现,总体来说是实现了预期的各种功能,但是功能的实现效果一般,当然跟硬件的胡乱拼凑有关系,但是也是跟很多地方设计还是不是很精确。所以接下来需要进行深入的学习和开发,希望能够打造出一个灵活好用的物联网智能小车平台。 整体来说,这次提供的试用套件用起来很方便,资料齐全,而且定位准确,其丰富的资源以及多样的开发环境,可以满足各个层次的发烧友的需求,可以像我试用这样简单的玩,也可以很高端的开发。Intel Edison模块小巧的外形以及强大的处理运算能力是对当下物联网等行业很准确的定位,而Arduino底板以及其相应的开发环境使得整个的开发难度可以降到非常低。Grove套件则能使得玩法各种各样,总体很满意。当然,由于其IO引脚数等相对较少的缘故,我认为其无法满足大的开发项目的需求。 评分 |
|
相关推荐
28 个讨论
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1210个成员聚集在这个小组
加入小组2857 浏览 2 评论
【下载】《物联网设计:从原型到产品》——从技术设想到实现成品
102913 浏览 804 评论
6502 浏览 9 评论
12126 浏览 24 评论
5017 浏览 8 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 06:03 , Processed in 0.655386 second(s), Total 58, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号