当前位置:首页 期刊杂志

基于Android系统的Arduino智能车设计

时间:2024-07-28

辛光红

(三亚学院理工学院,海南 三亚 572022)

基于Android系统的Arduino智能车设计

辛光红

(三亚学院理工学院,海南 三亚 572022)

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(Arduino IDE),是欧美国家应用非常广泛的电子设计实训平台。GOOGLE公司在2011年I/O年会上发布了基于Arduino开发板的Android平台下的SDK,使得Arduino应用更加广泛,发展空间更加广阔。本文基于Android平台,设计了一款通过wifi通信控制的Arduino智能车,可以完成测距、运动控制、无线图像传输等功能。

Andriod;Arduino;WIFI;路由器;ECLIPS

1.引言

通过智能车的研究,锻炼学生动手实践能力已是国内外非常普遍的手段,著名的飞思卡尔公司便是其中之一,并在中国内地举办了多届智能小车大赛。可以说智能小车无论是在国内还是国外都是一个非常热门的项目,历届的国际机器人大赛中都少不了智能小车平台的项目。Arduino平台中使用的AVR中ATMEGA168或是328的芯片,虽然还只是8位芯片,但是却是采用了RISC指令,并且采用了各种先进技术,使得芯片的技术大幅提升,其作为智能小车控制平台有非常大的开发空间。Arduino作为软硬件开源平台,在智能车的研究中更具活力。随着智能手机的普及应用,GOOGLE公司在2011年I/O年会上发布了基于Arduino开发板的Android系统下的SDK,本文就是在此背景下通过wifi通信控制进行Arduino驱动智能车的设计。

2.智能车硬件设计

智能小车作为执行机构主要由以下几部分组成:Arduino开发板、传感器扩展板、L298电机驱动模块、电源、LED指示灯、超声波模块、路由器、摄像头、降压模块。小车利用Android手机与加载到Arduino串口上的wifi路由器进行通信,并通过手机软件控制小车运动,小车上的摄像头采集视频信号,再通过wifi路由器传输图像到Andriod手机。[1]

2.1 Arduino控制器

Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是AT-mega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。UNO已经发布到第三版,与前两版相比有以下新的特点:在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。这样改进了复位电路设计,USB接口芯片由AT-mega16U2替代了ATmega8U2[2]。

2.2 wifi路由器选型与刷机

路由器可以选择体积小巧的的GL-iNet路由器,150M无线速率,迷你外观(尺寸:58x58x22单位:mm),方便安装、携带。双网口,有线无线连接都完美支持。支持连接USB摄像头,实现高清(HD)无线网络监控,通过手机APP可以随时随地轻松访问。加强安全策略,硬件身份认证,对网络监控及个人数据给予充分的安全保护。操作界面简洁友好,不像其它路由器要进行繁杂的设置,支持一键更新固件。内置DNS,为每位用户免费提供独立访问域名,不需要再另外申请。64M内存,8M Flash,支持OPENWRT系统刷机,自带Uboot,Uart调试接口已焊好,另预留5个GPIO接口,充分满足而二次开发的需要。接口:1WAN、1Lan、1USB2.0、1MicroUSB(电源接口),无线开关/复位按键。

为了实现视频图像通过wifi连接传输到Android手机端,需要对路由器刷新系统,系统采用Openwrt。刷机步骤如下:

(1)先按住Reset键,然后加电,等到绿灯闪三次的时候,红灯会亮,这个时候放开Reset键,会发现灯变为橘红色;

(2)用网线连接路由器的LAN口与自己的电脑,电脑IP设置为192.168.1.2/255.255.255.0/192.168.1.1;

(3)通过浏览器打开192.168.1.1,点击Choose File,选择你的刷机包中的factory.bin,然后点击Upload,等待大约3分钟左右,搜索无线网,会发现本机多了个无线网,点击连接,一般第一次可能连接不成功,可以断开连接,然后再次连接;

(4)连接好无线网之后通过浏览器打开192.168.1.1默认用户名密码:root/admin,进入系统目录下的备份升级。点击选择文件,选中刷机包中的sysupgrade.bin文件,然后刷写固件,等待大约三分钟然后搜索看看能否搜到无线信号;

(5)连接路由器的无线网,打开192.168.1.1,修改密码。默认密码是admin,我们进入密码修改界面,也要修改为admin,就是说一定要确保密码是admin;

(6)下载xshell或CRT或winscp或putty等软件,打开软件选择ssh协议,点击连接,输入密码admin,进入linux界面,执行cd/etc,然后回车。

(7)执行vi rc.local,出现如下界面:

使用电脑的下键,将光标移动到motion这一行,然后按下两次d,也就是删除这一行,按一下ESC键,然后输入:wq,然后回车,重启路由器,刷机结束[1]。

2.3 PWM调制电机驱动

驱动电路采用L298N芯片设计,电路见整体方案电路(如图5)。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。在Arduino的UNO开发板上正好有6组PWM输出,所以我们可以非常方便地进行使用。而在Arduino中使用PWM是用的analogWrite(pin,value)这个函数,pin是指的引脚,必须在支持PWM的引脚上使用这个函数,value则是控制电压,即控制电机转速,调节范围是0-255,其次还有一个函数digitalWrite(pin,state)pin一样是指引脚,state则是指的电机状态是正转还是反转,当state是1时正转,是0时则反转。

2.4 超声测距与摄像头选型

超声波测距模块能提供2cm-450cm非接触式感测距离,测距的精度可高达3mm,能很好地满足我们正常的要求。该模块包括超声波发送器、接收器和相应的控制电路。

图4 工作时序

工作原理:

(1)先拉低TRIG,然后至少给10us的高电平信号去触发;(2)触发后,模块会自动发射8个40KHZ的方波,并自动检测是否有信号返回。(3)如果有信号返回,通过ECHO输出一个高电平,高电平持续的时间便是超声波从发射到接收的时间。那么测试距离=高电平持续时间*340m/s*0.5。在Arduino下使用只要控制Trig和Echo两端口接到两个数字端口[3],摄像头只要符合openwrt MJPG格式即可。本方案选择东芝HD摄像头。

2.5 整体方案电路仿真

3.智能车软件设计

小车终端控制器Ardunio开发板采用Ardunio IDE进行程序设计,版本号为:V1.101。Ardunio IDE为绿色开源软件,无需安装,可在Ardunio官网下载使用。Ardunio IDE内置库程序极大地提高了软件的开发效率。手机端上位机软件采用Esclipse For Android开发。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用Java语言开发,通过安装不同的插件,Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其它功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。在Eclipse中解压android sdk,并进行相关配置后,即可在Eclipse下进行Android的应用程序开发。

小车超声测距和避障的程序演示:

int inputPin=4;//define ultrasonic signal receiver pin ECHO to D4

int outputPin=5;//define ultrasonic signal transmitter pin TRIG to D5

void setup()

{

Serial.begin(9600);

pinMode(inputPin,INPUT);

pinMode(outputPin,OUTPUT);

}

void loop()

{

digitalWrite(outputPin,LOW);

delayMicroseconds(2);

digitalWrite(outputPin,HIGH);//Pulse for 10μs to trigger ultrasonic

detection

delayMicroseconds(10);

digitalWrite(outputPin,LOW);

int distance=pulseIn(inputPin,HIGH);//Read receiver pulse time

distance=distance/58;//Transform pulse time to distance

Serial.println(distance);//Output distance

delay(50);

}

4.调试及总结

软件的调试与运行是非常重要的一个环节。经过对小车的每个功能进行调试,还有如下几项需要改进:超声波避障中,返回新数值的刷新时间不宜太快,否则会导致定时器中断不断响应,使串口无法正常接受指令。超声波测距的距离和精度有限,选择2cm作为小车检测障碍距离,小车运动控制较为理想。图像采集传输模块功耗较高,需做散热处理。

[1]张传真,android无线视频监控小车设计[J].电子测量技术,2013,36(10):19-22.

[2]程晨,Arduino开发实战指南[M].北京:机械工业出版社,2012.

[3]刘君华,传感器技术及应用实例[M].北京:电子工业出版社,2008.

[4]班兹,爱上Arduino[M].北京:人民邮电出版社,2012.

Arduino Intelligent Vehicle Design Based onAndriod

Xin Guanghong
(Sanya University,Sanya 572022,Hainan)

tract】Arduino is a flexible open source electronic prototype,including hardware(Arduino plates of various types)and software(ArduinoIDE).It is an electronic design training platform widely used in Europe and US.In 2011 GOOGLE I/O annual meeting,SDK under Android platform based on Arduino development board is published,making Arduino is used more widely.Based on Android platform,this paper designes a Arduino intelligent vehicle communicated with wifi.It has functions of ranging,motion control,wireless image transmission and so on.

words】 Andriod;Arduino;WIFI;router;ECLIPS

辛光红,男,甘肃金昌人,本科,助理实验师,研究方向:单片机系统开发。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!