基于Arduino平台的停车场智能引导系统*
2017-04-19任海燕王宇耿爽陈思羽
任海燕,王宇,耿爽,陈思羽
(南京工程学院 自动化学院,南京 211167)
基于Arduino平台的停车场智能引导系统*
任海燕,王宇,耿爽,陈思羽
(南京工程学院 自动化学院,南京 211167)
设计了一种基于Arduino的车位信息采集和车位信息显示系统。系统通过超声波传感器采集车位信息,再通过nRF24L01系统将车位信息发送到车位信息显示模块。该系统能可靠地引导停车,在停车场管理方面有一定实用价值。
智能引导;Arduino;超声波传感器;nRF24L01
引 言
随着国家经济的不断发展,人民的生活水平也在不断提高,越来越多的人们选择驾驶私家车出行。这种现象虽然极大地便利了人们的生活,但是也带来了一些问题,比如停车耗时长。研究科学有效的停车场智能引导系统可以在一定程度上缓解停车问题,帮助司机在停车场快速找到位置。该系统利用了Arduino便捷灵活,超声波测距成本低、精度高、速度快等技术特点,并结合无线通信技术,可将车位信息在OLED上进行实时显示。
1 总体组成及功能
该停车场智能引导系统主要包括两个部分:车位信息采集模块和车位信息显示模块。车位信息采集模块包括车位探测、车位信息红绿灯显示,以及无线发射模块;车位信息显示模块包括整个停车场车位信息显示以及无线接收模块。
司机在停车场入口便可了解车位信息以及空车位所在区域,并且在进入该区域后,通过红绿灯指示准确找到空车位。系统整体结构图如图1所示。
图1 停车场智能引导系统总体框图
1.1 车位信息采集模块
车位信息采集模块位于每个车位的中央。超声波传感器将探测的车位信息送入Arduino处理,并通过红绿灯来标识车位信息(红灯表示车位被占用,绿灯反之)。与此同时,Arduino通过无线模块nRF24L01将每个车位信息发至车位信息显示模块。
1.2 车位信息显示模块
车位信息显示模块位于停车场入口处。停车场被划分为4个区域:A、B、C、D。它通过无线模块接收每个车位信息后,在显示屏OLED上集中车位信息,车位信息包括车位剩余总数以及剩余车位所在ABCD任一区域。
2 硬件电路设计
2.1 硬件总体设计
Arduino是一个开源的、拥有简单输入/输出(I/O)的电路板,它沿用Processing语言的开发环境。Arduino可以用来开发独立运作互动装置,或者可以连接到计算机上的软件[1]。
该系统利用超声波传感器检测车辆信息,送入Arduino集中处理,然后再通过无线收发模块,将信息发送给显示模块。它主要由硬件平台Arduino、超声波传感器HC-SR04、无线收发模块nRF24L01、显示屏OLED以及LED灯组成。
2.2 车位信息采集模块
车位信息采集模块由Arduino、超声波传感器、红绿LED灯以及无线收发模块组成。
(1) 超声波传感器HC-SR04
超声波测距模块型号为HC-SR04,可提供2~400 cm的非接触式距离感测功能,测距精度可达高到3 mm。它采用I/O口TRIG 触发测距,给最少10 μs的高电平信号。模块自动发送8 个40 kHz的方波,自动检测是否有信号返回;有信号返回,则通过I/O口ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间×声速(340 m/s))/2。[2]
HC-SR04用来探测车位的信息,它由上而下发出超声波,精确测量出反射面到探测器的距离。如果距离小于1.5 m,则表示车位被占用,从而可以准确判断车位是否被占用。
(2) 红绿LED指示灯
LED灯用来指示每个车位占有情况。当车位被占用,给红色指示灯高电平,从而红灯亮,表示车位被占用;当车位空闲,给绿色指示灯高电平,则绿灯亮,表示车位未被占用工作。LED灯的电压一般为1.5~2.0 V,工作电流一般为10~20 mA,反向击穿电压为5 V,控制板逻辑电路供电为5 V。根据限流电阻=(总电压-LED电压)/电流,本次硬件设计采用的限流电阻为220 Ω。
(3) 无线收发模块nRF24L01
无线收发模块将Arduino处理过的信息发送给车位显示模块。nRF24L01 是一款新型单片射频收发一体器件,工作于2.4~2.5 GHz ISM 频段[3],其内置频率合成器、功率放大器、晶体振荡器、调制器、低噪声放大器等功能模块,并融合了增强型 ShockBurst 技术,其中输出功率和通信频道可通过程序进行配置。 nRF24L01 具有极低的电流消耗,当工作在发射模式下发射功率为0 dBm 时,电流消耗为11.3 mA,接收模式时为13.5 mA,掉电模式和待机模式下电流消耗更低。这里的nRF24L01设置为发射模式。[4]
车位信息采集模块的电路图如图2所示。图中A0与红色指示灯相连,该模拟值A0通过无线发送模块发送至车位信息显示模块。
图2 车位信息采集模块电路连接图
2.3 车位信息显示模块
车位信息显示模块的硬件电路由Arduino、OLED和无线接收模块nRF24L01组成。
该系统采用OLED来显示停车场整体剩余车位信息,以及剩余车位所在的具体区域。OLED,即有机发光二极管(Organic Light-Emitting Diode),它是以有机半导体和发光材料作为其材料,在电场驱动下通过载流子注入并导致发光的现象。OLED在显示和照明两大应用领域都显示了巨大的发展潜力和光明前景[5]。相比传统LCD显示屏,其更轻更薄,可视角度更大,柔软环保且更省电,同时nRF24L01设置为接收模式。Arduino、OLED和nRF24L01的电路连接图如图3所示。
图3 车位信息显示模块电路连接图
3 软件设计
该停车场智能引导系统是在Arduino平台上进行编程。Arduino语言是建立在C/C++基础上的,它将AVR单片机(微控制器)相关的一些参数设置都函数化。Arduino通过超声波传感器测量到的距离,来判断车位信息,并将这一车位信息通过无线收发装置送入车位显示模块。
3.1 车位信息采集模块
车位信息采集模块主要由两部分组成:一部分是车位信息的探测,另一部分是车位信息的无线发射。它的软件流程图如图4所示。
图4 车位信息采集模块软件流程图
(1) 超声波探测
每个车位安装一个超声波测距装置,当车辆进入车位,只需提供一个10 μs以上脉冲触发信号,该模块内部会发出8个40 kHz周期电平并检测回路,一旦检测到有回波信号则输出回响信号,回响信号的脉冲宽度输出与所测距离成正比,由此通过发射信号到收到的回响信号时间间隔可以通过计算得到距离。感知到有车辆停放,则红色LED灯亮。
下面是超声波测距主要功能实现的代码:
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
(2) 无线发射模块
无线发射模块首先先进行初始化,然后设置nRF24L01为发送模式,再通过MOSI写入数据,从MISO端口读出数据。输入数据保存到寄存器,并开始发送。在发送之后,输出端口开始检测是否有信号传出,如果有则说明发送成功;如果没有,再次发送,如此循环。
其核心代码为:
pinMode(A0,OUTPUT);
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
Mirf.setRADDR((byte *)"Sen01");
//设置接收标识符"Sen01"
adata = analogRead(A0); //读取A0值到adata
byte data[Mirf.payload];
//data高低8位拆分
data[0] = adata & 0xFF; //低8位给data[0]
data[1] = adata >> 8; //高8位给data[1]
//设置向"serv1"发送数据
Mirf.setTADDR((byte *)"Rec01");
Mirf.send(data);
while(Mirf.isSending())
3.2 车位信息显示模块
车位信息显示模块主要由两部分组成:一是它接收从车位信息收集端发送的A0的模拟值,二是显示车位信息。它的软件流程图如图5所示。
图5 车位信息显示模块软件流程图
(1) 无线接收模块
无线接收模块先进行初始化,再设置nRF24L01为接收模式。值得注意的是,接收端必须与发射端的配置相匹配,通过读取状态存储器判断接是否收到有数据。如果有,将接收端数据与发射端数据相比较,如果地址相匹配,说明数据接收成功。如果数据不同,则舍弃这个数据,重新接收,直到接收到正确的数据为止。
它的核心代码为:
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
Mirf.setRADDR((byte *)"Rec01");
Mirf.payload = sizeof(unsigned int);
Mirf.channel = 3;
Mirf.config();
Serial.println("I'm Receiver...");
byte data[Mirf.payload];
if(Mirf.dataReady())//等待接收数据准备好
Mirf.getData(data);//接收数据到data数组
//data[1]重组数据
adata = (unsigned int)((data[1] << 8) | data[0]);
//Serial.print输出数据
Serial.print("A0=");
Serial.println(adata);}
(2) 显示屏模块
显示屏OLED上显示停车场剩余量以及剩余车位所在具体位置。它显示的信息主要由无线接收模块将接收的信息送到Arduino处理后得到的车位信息。
本文主要的OLED显示函数如下:
display.println("107PARK");
display.setTextColor(WHITE);//设置文本颜色
display.println(" ");//显示空白行
display.setTextSize(2);//设置文本大小
display.print("parking:");//显示文本内容
display.println(x);//x为车位数量为整型变量
……
结 语
[1] 班兹.爱上Arduino[M].北京:人民邮电出版社,2011:5-6.
[2] 苏琳.基于HC-SR04的超声波测距器的设计[J].科技信息,2012(9).
[3] 孙志远.2.4 GHz无线传感器网络节点通信模块的设计与实现[D].长沙:国防科学技术大学,2010.
[4] 刘卫国,王红彬.基于nRF24L01+与Arduino的超声波测距系统设计[J].电子设计工程,2015, 23(22):150-152 .
[5] 何豪,张腊花.OLED[J].科技创新导报,2012(20).
任海燕(本科),主要研究领域为自动控制方向。
Intelligent Guide Parking System Based on Arduino
Ren Haiyan,Wang Yu,Geng Shuang,Chen Siyu
(School of Automation,Nanjing Institute of Technology,Nanjing 211167,China)
An intelligent guide parking system is designed which is based on Arduino,in order to collect and display the parking information.The system collects the parking information by the ultrasonic sensor,then the system sends the parking information to the display module by nRF24L01.The system can reliably guide the parking,which has practical value in the parking management.
intelligent guide;Arduino;ultrasonic sensor;nRF24L01
南京工程学院大学生科技创新基金项目(项目名称:停车场智能引导系统设计研究,项目编号为TB20160553)。
TP271
A
�迪娜
2016-08-19)