1.项目简介:在现有的车位锁的基础上,弥补缺点,依据车载GPS模块位置信息自动测出与车位之间的距离,当达到一定距离车位锁自动放下,车辆离开自动锁定。
相比比传统车位锁更智能化,方便。
2.引言 在科技发展的今天,车辆越来越多,相应的设施也越来越智能化,在大城市繁华的市区对于司机每天都需要去占车位,这让司机朋友们很头疼。
故开发此装置,在司机不下车的情况下,自动收放车位锁。
3.背景及意义2020年之前,中国仍将处于工业化和城市化同步加速的发展阶段,按照目前的一个大环境来说,国内生产总值和居民收入将持续增长,国家也将继续出台有利于扩大内需的各项政策,加之二、三线城市的汽车需求增加,受“汽车下乡”政策刺激,农村汽车消费潜力也将逐渐释放,预计我国汽车消费市场将进一步扩大。
根据我们对汽车行业研究数据来看,从2012年至2015年中国汽车产量和保有量进行的预测,预计到2015年我国汽车产销量将突破2500万辆,保有量将达到1.5亿辆。
随着车辆数目的增加,而停车位却是有限的,尤其是住宅小区,晚时间回到小区内,有可能就要花大量的时间去找停车位。
由此如果开发出既能提前占据停车位,又能依据北斗位置信息通过无线传输装置,自动开关的车位锁,那么就可以节省驾驶人员找停车位和上下车打开车位锁的时间和精力。
由于当今中国汽车数量不断飞速增加,所以国内市场已经有车位锁的出现,主要分为手动车位锁、遥控车位锁这两种。
而今车位锁大多为机械手动式,汽车进出停车位时需要下车把车位锁的撑杆撑起或放下,然后再上锁,使用非常不便;就算是遥控车位锁也需要在可见可控的范围内,然后人为的进行操控,才能使车位锁给出反应。
在停车前和驶离后都需要停下车,操作遥控。
尤其是车子离开后,很容易忘记遥控车位锁升起来,所以这两种车位锁都存在着多多少少的不足。
而本项目就在遥控车位锁的基础上弥补手动遥控车位锁的升降,既不用司机上下车,也不用车子开走后,还在想车位锁有没有记住升起来。
利用北斗导航模块车位锁自动感应车子的距离,在适当的距离车位锁自动打开或关闭,更加快捷方便的占位和停车。
4.设计方案原理车辆在回到车位时车辆在移动,有移动就有位移,当车辆与车位锁到达一定距离,车位锁自动接收到信息收缩车位锁等待车辆入库,当车辆离开车位锁一定距离,车位锁自动锁定。
本团队将利用Arduino单片机作为开发平台,GPS双模模块作为数据采集器。
arduino uno 开发板gps双模模块处理GPS模块的程序:while (Serial.available() > 0){comdata += char(Serial.read());delay(2);mark = 1;}工作原理 arduino开发板分别置于车位锁与车辆上,每个单片机处理器将北斗模块串口输出的数据进行处理 ,得到经纬度。
两块模块通过以下程序计算得出两者之间的距离,x = R*cos(b1)*cos(a1) - R*cos(b2)*cos(a2);y = R*cos(b1)*sin(a1) - R*cos(b2)*sin(a2);z = R*sin(b1) - R*sin(b2);AB = sqrt(x*x + y*y + z*z);//计算球上A、B两点的直线距离通过433全双工天线将数据传输给另一个模块,另一个模块也是如此,所以两块单片机交换数据,作为车位锁的一端进行测距,但距离小于等于20m时自动触发舵机收缩车位锁。
If (AB<20){digitalWriet(pinmode,HIGH); 舵机自动收放}到达预期目的,大于20m自动锁定。
具体程序见最后一页。
5.发展前景 随着我国经济快速稳步发展,汽车不再遥不可及,它已经成为普通百姓日常生活的必需品之一。
据中国汽车工业协会统计,2010年国内汽车产销量分别达1826万和1806万辆,蝉联全球第一,同比分别增长32.44%、32.37%。
然而政府或地产开发商在基础配套设施上的建设速度远低于汽车产销量增长速度,这样就带来了一个问题,消费者在购车的喜悦之余不得不考虑停车难的烦恼,而且此矛盾会随着时间和汽车产销量的增长显得日益突出。
消费者拥有一辆属于自己的汽车应该是件幸福的事,但为什么六成以上车主幸福指数偏低而且呈下降趋势呢?原因有很多,停车难是最让人幸福感降低的原因之一,为此我们提出北斗车位锁充分意识到了有车一族的烦恼,车位有限而且十分昂贵,就算花了大价钱买来的车位也会被别人趁虚而入,车主们憋气又窝火。
因此我们提出一个概念—我的车位我做主,由我们的"车位锁"来帮车主管理他们的专属车位。
北斗车位锁的智能、便捷可以为客户带来高品质的生活享受,提升客户生活档次,升华人生价值。
截至2010年年底,中国汽车达到7800万辆,但也仅相当于美国的1/3左右,美国现有人口大约3亿人,中国是美国的4.5倍。
若达到美国人口所拥有的汽车保有量的话,中国汽车市场容量在10.9亿辆左右,根据一辆车要配一个车位锁来计算,假如每个车位锁的终端价格600元人民币来计算,未来的市场容量值可突破万亿大关!而且以每年15%以上的增速在增长,汽车越来越成为人们不可代替的交通方式之一。
同时矛盾也由此而生,庞大的汽车基数和增长速度使得汽车越来越多,但停车位的增长速度远远跟不上汽车的增速,而且现有车位的管理混乱使得仅有的车位不能得到最优化的利用,造成大量的浪费和矛盾的产生。
随着汽车保有量和汽车增速的稳定增长,矛盾会日益突出,在未来3年本行业市场将会以爆发式的增长速度发展。
在这样的背景下看到了市场及消费者的需求所在,找准了市场缝隙。
6.总结将大大方便各位车主停车。
相关程序(arduino);String comdata = "";int numdata[5] = {0}, mark = 0;void setup(){Serial.begin(9600);ss.begin(9600);ss.listen();pinMode(an,INPUT);pinMode(bn,OUTPUT);digitalWrite(an,LOW);digitalWrite(bn,LOW);}void loop(){bool newData = false;// For one second we parse GPS data and report some key valuesfor (unsigned long start = millis(); millis() - start < 1000;){while (ss.available()){char c = ss.read();// Serial.write(c); // uncomment this line if you want to see the GPS data flowingif (gps.encode(c)) // Did a new valid sentence come in?newData = true;}}if (newData){float flat, flon;unsigned long age;gps.f_get_position(&flat, &flon, &age);double val = flat;double wc = flon;int a=floor(val);//zheng数部分double p=val-a;int b=p*10000;//小数部分int c=floor(wc);//zheng数部分double l=wc-c;//小数部分int d=l*10000;Serial.print(a);Serial.print(",");Serial.print(b);Serial.print(",");Serial.print(c);Serial.print(",");Serial.print(d);Serial.print(",");Serial.print(0);/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////int j = 0;while (Serial.available() > 0){comdata += char(Serial.read());delay(2);mark = 1;}if(mark == 1){for(int i = 0; i < comdata.length() ; i++){if(comdata[i] == ','){j++;}else{numdata[j] = numdata[j] * 10 + (comdata[i] - '0');}}comdata = String("");////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double a1, a2, b1, b2, x, y, z, AB, A_B, a,R;//AB为A、B两地的直线距离,A_B为A、B两地的大圆距离a1 = wc;//A地的经度b1 = val;//A地的纬a2 = numdata[0]+(numdata[1]*1.0)/10000;b2 = numdata[2]+(numdata[3]*1.0)/1000R = 6371;//球的半径//PS:经度的范围是-180°W~180°E,纬度的范围是-90°S~90°N if (b1 < 0){//如果是西经则需转换才能用于计算b1 = abs(b1) + 180;}if (b2 < 0){b2 = abs(b2) + 180;}a1 = a1*Pi / 180;//将角度制转换为弧度制a2 = a2*Pi / 180;b1 = b1*Pi / 180;b2 = b2*Pi / 180;//以下是将经纬度转换为球坐标然后进行计算x = R*cos(b1)*cos(a1) - R*cos(b2)*cos(a2);y = R*cos(b1)*sin(a1) - R*cos(b2)*sin(a2);z = R*sin(b1) - R*sin(b2);AB = sqrt(x*x + y*y + z*z);//计算球上A、B两点的直线距离a = 2 * asin(AB / (2 * R));//利用三角函数计算角AOB的大小A_B = a*R;//计算A、B的球面距离if(AB>=0.02) //触发锁定{digitalWrite(bn,HIGH);}else{digitalWrite(bn,LOW);}}for(int i = 0; i < 5; i++){numdata[i] = 0;}mark = 0;}}//发射程序#include <SoftwareSerial.h>#include <TinyGPS.h>using namespace std;#define Pi 3.141592654#define an 6#define led a1TinyGPS gps;SoftwareSerial ss(7, 8);String comdata = "";int numdata[5] = {0}, mark = 0;void setup(){Serial.begin(9600);ss.begin(9600);ss.listen();pinMode(an,INPUT);digitalWrite(an,LOW);}void loop(){bool newData = false;// For one second we parse GPS data and report some key valuesfor (unsigned long start = millis(); millis() - start < 1000;){while (ss.available()){char c = ss.read();// Serial.write(c); // uncomment this line if you want to see the GPS data flowingif (gps.encode(c)) // Did a new valid sentence come in?newData = true;}}if (newData){float flat, flon;unsigned long age;gps.f_get_position(&flat, &flon, &age);double val = flat;ouble wc = flon;int a=floor(val);//zheng数部分double p=val-a;int b=p*10000;//小数部分int c=floor(wc);//zheng数部分double l=wc-c;//小数部分int d=l*10000;Serial.print(a);Serial.print(",");Serial.print(b);Serial.print(",");Serial.print(c);Serial.print(",");Serial.print(d);Serial.print(",");Serial.print(0);/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////int j = 0;while (Serial.available() > 0){comdata += char(Serial.read());delay(2);mark = 1;}if(mark == 1){for(int i = 0; i < comdata.length() ; i++){if(comdata[i] == ','){j++;}else{numdata[j] = numdata[j] * 10 + (comdata[i] - '0');}}comdata = String("");////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double a1, a2, b1, b2, x, y, z, AB, A_B, a,R;//AB为A、B两地的直线距离,A_B为A、B两地的大圆距离a1 = wc;//A地的经度b1 = val;//A地的纬度a2 = numdata[0]+(numdata[1]*1.0)/10000;b2 = numdata[2]+(numdata[3]*1.0)/10000;R = 6371;//球的半径//PS:经度的范围是-180°W~180°E,纬度的范围是-90°S~90°Nif (b1 < 0){//如果是西经则需转换才能用于计算b1 = abs(b1) + 180;}if (b2 < 0){b2 = abs(b2) + 180;}a1 = a1*Pi / 180;//将角度制转换为弧度制a2 = a2*Pi / 180;b1 = b1*Pi / 180;b2 = b2*Pi / 180;//以下是将经纬度转换为球坐标然后进行计算x = R*cos(b1)*cos(a1) - R*cos(b2)*cos(a2);y = R*cos(b1)*sin(a1) - R*cos(b2)*sin(a2);z = R*sin(b1) - R*sin(b2);AB = sqrt(x*x + y*y + z*z);//计算球上A、B两点的直线距离a = 2 * asin(AB / (2 * R));//利用三角函数计算角AOB的大小A_B = a*R;//计算A、B的球面距离If (AB<20){digitalWriet(pinmode,HIGH); 舵机自动收放}}for(int i = 0; i < 5; i++){numdata[i] = 0;}mark = 0;}}