无线充电智能车的制作
本文素材來(lái)源于寧夏大學(xué)
作者:白二曹、王瑞、穆琴、王童兵
指導(dǎo)老師:康彩
一、項(xiàng)目簡(jiǎn)介
1.功能介紹
? ?無(wú)線充電智能車由無(wú)線充電、自動(dòng)控制、紅外遙控、網(wǎng)頁(yè)顯示四部分組成。
(1)流程描述
? ? ? ? 用戶端瀏覽器訪問http://127.0.0.1頁(yè)面顯示小車所有信息及所需數(shù)據(jù)
? ? ? ? →網(wǎng)頁(yè)通過與小車的WIFI模塊連接檢測(cè)小車是否可以正常工作;
? ? ? ? →手動(dòng)通過紅外遙控器電源按鈕啟動(dòng)小車或者網(wǎng)頁(yè)端點(diǎn)擊啟動(dòng)啟動(dòng)小車;
? ? ? ? →通過網(wǎng)頁(yè)端或紅外遙控對(duì)其進(jìn)行速度和方向的調(diào)節(jié);
? ? ? ? →到達(dá)充電樁通過小車和充電樁的協(xié)同作用反饋電量信息,網(wǎng)頁(yè)通過電量轉(zhuǎn)化為的續(xù)航里程距離下一充電樁的位置判斷是否需要充電,或者用戶自己進(jìn)行判斷并選擇合適的方案(網(wǎng)頁(yè)判斷指令只提供參考價(jià)值);
? ? ? ? →若需要充電則發(fā)送指令小車接收指令并啟動(dòng)充電模式。
(2)主流程的流程圖
(3)分塊功能
? ? ? ?① 無(wú)線充電:無(wú)線充電樁采用電磁感應(yīng)式無(wú)線充電傳輸系統(tǒng)。系統(tǒng)由發(fā)射線圈L1和接收線圈L2組成,2個(gè)線圈組在一起構(gòu)成電磁耦合感應(yīng)器,發(fā)射線圈所攜帶的電流產(chǎn)生磁場(chǎng),并通過線圈耦合使接收線圈產(chǎn)生電壓,充電樁上的紅外發(fā)射模塊與小車上的電量檢測(cè)器協(xié)同 工作判斷車是否需要進(jìn)行無(wú)線充電。
? ? ? ?② 自動(dòng)控制:充電樁上有光電接觸開關(guān)和紅外發(fā)射模塊,車沿規(guī)定路線經(jīng)過無(wú)線充電樁時(shí),充電樁上的光電接觸開關(guān)被遮擋,無(wú)線發(fā)射模塊開始工作;紅外發(fā)射模塊全程工作,與小車上的紅外接收器配合用以檢測(cè)小車是否到達(dá)充電區(qū)域,其與小車上的低壓報(bào)警裝置結(jié)合,便可判斷小車在此充電區(qū)域是否停止充電(判斷條件:紅外模塊檢測(cè)到小車到達(dá)充電區(qū)及低壓報(bào)警裝置工作),若判斷需要充電,網(wǎng)頁(yè)發(fā)送充電指令WiFi模塊接收指令后啟動(dòng)自動(dòng)充電程序小車進(jìn)行充電。
? ? ? ?③ 紅外遙控:紅外遙控是在沒有網(wǎng)絡(luò)時(shí)用戶端網(wǎng)頁(yè)與WIFI模塊不能正常通信的情況下采用紅外遙控的方法對(duì)小車的行進(jìn)方向與速度進(jìn)行 ? 調(diào)整和實(shí)現(xiàn)避障功能,以及在進(jìn)行無(wú)線充電時(shí)微調(diào)車體相對(duì)充電樁的位置使其達(dá)到高效充電的效果。
? ? ? ?④ 網(wǎng)頁(yè)顯示:用戶啟動(dòng)無(wú)線充電智能車后,車體上會(huì)顯示智能車電量,網(wǎng)頁(yè)端將顯示所有數(shù)據(jù)(包括:電量、電壓、續(xù)航里程、溫度、小車線路是否正常、是否需要充電等),網(wǎng)頁(yè)端還可以控制智能車的行進(jìn)方向及速度,需要充電時(shí),網(wǎng)頁(yè)端也可以顯示充電界面與完成充電界面。各團(tuán)隊(duì)成員間已將iis系統(tǒng)搭建成功,可實(shí)現(xiàn)不同電腦在同一局域網(wǎng)下訪問該頁(yè)面的功能。
2.先進(jìn)性、創(chuàng)新性與智能性
? ? ? (1)先進(jìn)性:此智能車采用目前前沿的充電方式對(duì)電源進(jìn)行充電,且可通過多種傳感器的相互配合實(shí)現(xiàn)自動(dòng)充電的功能。該智能車將數(shù)據(jù)監(jiān)測(cè)及操作系統(tǒng)、報(bào)警系統(tǒng)、溫度檢測(cè)、用戶體驗(yàn)及反饋信息服務(wù)等功能集成于網(wǎng)頁(yè)端,可實(shí)現(xiàn)網(wǎng)頁(yè)端控制及無(wú)網(wǎng)絡(luò)狀態(tài)下的手動(dòng)控制,更加全面系統(tǒng)的對(duì)智能車進(jìn)行操控。
? ? ? (2)創(chuàng)新性與智能性:此無(wú)線充電小車采用用戶端網(wǎng)頁(yè)與WiFi模塊數(shù)據(jù)連接進(jìn)行遠(yuǎn)程控制與數(shù)據(jù)傳輸,通過數(shù)據(jù)傳輸反饋小車的整體性能與能量指標(biāo),通過自動(dòng)檢測(cè)電量數(shù)值與充電樁保持通信進(jìn)行自動(dòng)充電和自動(dòng)調(diào)節(jié)車體使其正對(duì)充電位置以達(dá)到能量轉(zhuǎn)化的最高效率,在網(wǎng)絡(luò)失去聯(lián)系的情況下可以采取紅外遙控的方法對(duì)小車進(jìn)行控制;網(wǎng)頁(yè)端可以在設(shè)置IP地址相同和允許公開訪問的情況下可實(shí)現(xiàn)多用戶同時(shí)對(duì)網(wǎng)頁(yè)進(jìn)行瀏覽,查看小車的所有參數(shù)數(shù)據(jù)和性能指標(biāo)。
?二、制作過程
1. 思路來(lái)源
? ? ? ?現(xiàn)在國(guó)家提倡低碳出行,綠色環(huán)保,尤其電動(dòng)車行業(yè)近幾年得到了快速的興起與發(fā)展,越來(lái)越多的人把目光轉(zhuǎn)向電動(dòng)車方面,隨著我國(guó)經(jīng)濟(jì)持續(xù)增長(zhǎng)和城鄉(xiāng)居民收入水平的提高,以及電動(dòng)車便捷、環(huán)保、經(jīng)濟(jì)等特點(diǎn)滿足了居民日常出行的需求,電動(dòng)車市場(chǎng)呈現(xiàn)出穩(wěn)定的發(fā)展勢(shì)頭,同時(shí),消費(fèi)者對(duì)產(chǎn)品品質(zhì)的要求也越來(lái)越高。從市場(chǎng)供給來(lái)看,電動(dòng)車行業(yè)的投資情況良好,行業(yè)投資項(xiàng)目進(jìn)展較好。在電動(dòng)車需求持續(xù)增長(zhǎng)、銷售持續(xù)擴(kuò)大的情況下,現(xiàn)有電動(dòng)車生產(chǎn)企業(yè)不斷擴(kuò)大產(chǎn)能,優(yōu)質(zhì)的生產(chǎn)企業(yè)涌入,將推動(dòng)電動(dòng)車產(chǎn)量持續(xù)增長(zhǎng)。
? ? ? ?從現(xiàn)狀來(lái)看現(xiàn)有的有線充電有諸多弊端例如:找到充電樁后接口標(biāo)準(zhǔn)不一,充不了;公用充電樁太難占;充電樁分布不均,村民買車最吃虧;電壓過高容易引發(fā)火災(zāi)和其他的人員傷亡和財(cái)產(chǎn)損失……因此無(wú)線充電技術(shù)的應(yīng)用將填補(bǔ)這空白區(qū)域,無(wú)線充電技術(shù)暫時(shí)沒有能夠完全達(dá)到客戶和商家的滿意程度,但它的優(yōu)勢(shì)還是值得一提的,首先無(wú)線充電不限地理環(huán)境的影響,不限車輛的型號(hào),不限用戶的多少,占地小、充電便利性高、可無(wú)人值守、人工維護(hù)成本低、空間利用率更高等諸多優(yōu)勢(shì),一旦無(wú)線充電技術(shù)實(shí)現(xiàn)成熟化,其面對(duì)的市場(chǎng)或?qū)⑹侨虻母鱾€(gè)領(lǐng)域和行業(yè)都會(huì)有所涉及,無(wú)線充電技術(shù)應(yīng)用于電動(dòng)車等出行工具來(lái)講,前景是非常可觀的,所以我們組對(duì)于這一想法展開討論后大家一致同意這個(gè)項(xiàng)目的想法,決定首先做一個(gè)基礎(chǔ)一體化的小車模型來(lái)為后期的研發(fā)做基礎(chǔ)。
2.方案選擇過程
? ? ? 對(duì)于方案選擇,我們初選方案有三個(gè):
? ? ? 方案一:
? ? ? ?不使用無(wú)線充電技術(shù),而是做一款大容量的“超級(jí)電池”,其可保障智能車行駛數(shù)百公里。經(jīng)過分析及我們現(xiàn)有條件的限制,一致覺得此方案無(wú)法實(shí)現(xiàn),故放棄此方案。
? ? ? 方案二:
? ? ? ?改造現(xiàn)有有線充電樁的充電方式,優(yōu)化路徑,增大可利用空間以增加充電樁數(shù)目,采用新技術(shù),提高有線充電樁的質(zhì)量。經(jīng)實(shí)地調(diào)研與后期討論,認(rèn)為此方案花費(fèi)較大,并不符合市場(chǎng)需求,故放棄此方案。
? ? ? 方案三:
? ? ? ?采用無(wú)線充電技術(shù),做一套無(wú)線充電裝置,改善電動(dòng)車的充電方式及其自動(dòng)控制能力以提高電動(dòng)車性能。經(jīng)過數(shù)次討論與研究,我們一致認(rèn)為此方案為最可行的方案。
3.制作過程照片
三、程序源代碼
1. 網(wǎng)頁(yè)部分
?
2.驅(qū)動(dòng)、控制部分
| #include<IRremote.h>//使用IRRemote函數(shù)庫(kù). #define choose 2 //1為通過串口打印碼值模式 #definechoose2 4 //3為通過串口打印碼值模式 //.......................................................................................……// 電機(jī)設(shè)置 #define leftA_PIN3; #define leftB_PIN4; #define leftC_PIN 5; #define leftD.PIN 6; #define rigbtA_PIN 7; #define rightB_PIN 8; #define rightC_PIN 11; #define rightD_PIN 12; void motor pinint(); //引腳初始化 void forward(); //前進(jìn) void back( ); //后退 void turnLeftOrigin(); //原地左 void turnRightOrigin(); //原地右 void turnRightforword();//右前 void turnLeftfonword(); //左前 void turnLeftback(); //左后 void setup(); { Serial.begin(9600);//9600(PC端使用) motor pinint();//電機(jī)引腳初始化 Irrecv.enablelRIn();//啟動(dòng)紅外解碼 } void loop(); { if(choose==1 && choose2==3) scan();. else if(choose==2 && choose2==4) rev(); } /*電機(jī)引腳初始化*/ void motor_pinint(); { pinMode(leftA_PIN, OUTPUT); //設(shè)置引腳為輸出引腳 pinMode(leftB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳 pinMode(leftC_PIN, OUTPUT); pinMode(leftD_PIN, OUTPUT); pinMode(rightA_PIN, OUTPUT); //設(shè)置引腳為輸出引腳 PinMode(rightB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳 pinMode (rightC_PIN, OUTPUT); pinMode (rightD_PIN, OUTPUT); } /************************************* forward子函數(shù)——前進(jìn)子函數(shù) 函數(shù)功能∶控制車前進(jìn) **************************************/ void forward(); { analogWrite(leftA_PIN, 30); analogWrite(leftB_PIN, 0); //左輪前進(jìn) analogWriteleftC_PIN, 30); analogWriteleftP_PIN, 0); //----------------------------------------------// analogWrite(rightA_PIN, 60); analogWrite(rightB_PIN, 0); //右輪前進(jìn) analogWrite(rightC_PIN, 60); analogWrite(rightp_PIN, 0); } /******************************* back子函數(shù)——后退子函數(shù).. 函數(shù)功能∶控制車后退. *******************************/ void back(); { analogWrite(leftA_PIN, 0); analogWrite(leftB_PIN, 30); //左輪后退.. analogWrite(leftC_PIN,0); analogWrite(leftD_PIN,30); analogWrite(rightA_PIN, 0); analogWrite(rightB_PIN, 70); //右輪后退 analogWrite(rightC_PIN, 0); analogWrite(rightD_PIN, 70); } /*********************************** turnLeftOrigin 子函數(shù)——原地左轉(zhuǎn)子函數(shù). 函數(shù)功能∶控制車原地左轉(zhuǎn). ***********************************/ void turnLeftOrigin(); { analogWrite(leftA_PIN, 0); analogWrite(leftB_PIN, 120); //左輪后退. analogWrite(leftC_PIN, 0); analogWrite(leftD_PIN, 120); analogWrite(rightA_PIN, 120); analogWrite(rightB_PIN, 0); //右輪前進(jìn) analogWrite(rightC_PIN, 120); analogWrite(rigbtD_PIN, 0); } /***************************************** turnRightOrgin子函數(shù)——原地右轉(zhuǎn)子函數(shù) 函數(shù)功能∶控制車原地右轉(zhuǎn).. *****************************************/ void turnRightOrigin(); { analogWrite(leftA_PIN, 120); analogWrite(leftB_PIN, 0); //左輪前進(jìn).. analogWrite(leftC_PIN, 120); analogWrite(leftD_PIN, 0); analogWrite(rightA_PIN, 0); analogWrite(rightB_PIN, 120); //右輪后退.. analogWrite(rightC_PIN, 0); analogWrite(rightD_PIN, 120); } /*********************************************** turnRightforword子函數(shù)——右前運(yùn)動(dòng)子函數(shù) 函數(shù)功能∶控制車右前 void turnRightforword(); { analogWrite(leftA_PIN, 200); analogWrite(leftB_PIN, 0); //左輪快前進(jìn) analogWrite(leftC_PIN, 200); analogWrite(leftD_PIN, 0); analogWrite(rightA_PIN, 120); analogWrite(rightB_PIN, 0); //右輪慢前進(jìn) analogWrite(rightC_PIN,120); analogWrite(rightD_PIN, 0); } /*************************************** turnLeftforward子函數(shù)——左前運(yùn)動(dòng)子函數(shù) 函數(shù)功能∶控制車左前 void turnLeftforword(); { analogWrite(leftA_PIN, 120); analogWrite(leftB_PIN, 0); //左輪慢前進(jìn). analogWrite(leftC_PIN, 120); analogWrite(leftD_PIN, 0); analogWrite(rightA_PIN, 200); analogWrite(rightB_PIN, 0); //右輪快前進(jìn) analogWrite(rightC_PIN, 200); analogWrite(rightD_PIN, 0); } /****************************************** turnRightforword子函數(shù)——右后運(yùn)動(dòng)子函數(shù) 函數(shù)功能:控制車右后 ******************************************/ void turnRightback(); { analogWrite(leftA_PIN, 0); analogWrite(leftB_PIN, 200); //左輪快后退 analogWrite(leftC_PIN, 0); analogWrite(leftP_PIN, 200); analogWrite(rightA_PIN, 0); analogWrite(rightB_PIN, 120); //右輪慢后退.. analogWrite(rightC_PIN, 0); analogWrite(rightD_PIN, 120); } /*********************************************** turnLeftforward子函數(shù)——左后運(yùn)動(dòng)子函數(shù). 函數(shù)功能∶控制車左后. ***********************************************/ void turnleftback(); { analogWrite(leftA_PIN, 0); analogWrite(leftB_PIN, 120); //左輪慢后退. analogWrite(leftC_PIN, 0); analogWrite(leftD_PIN, 120); analogWrite(rightA_PIN, 0); analogWrite(rightB_PIN, 200); //右輪快后退 analogWrite(rightC_PIN, 0); analogWrite(rightD_PIN, 200); } /***************************************** stop子函數(shù)——停止子函數(shù).. 函數(shù)功能∶控制車停止 *****************************************/ void_stop(); { analogWrite(leftA_PIN, 0); analogWrite(leftB_PIN, 0); //左輪靜止不動(dòng) analogWrite(leftC_PIN, 0); analogWrite(leftD_PIN, 0); analogWrite(rightA_PIN, 0); analogWrite(rightB PIN, 0); //右輪靜止不動(dòng) analogWrite(rightC_PIN, 0); analogWrite(rightD_PIN, 0); } void rev(void); { if (irrecv.decode(&results)) { ? //解碼成功,把數(shù)據(jù)放入results.value 變量中 if ((results.value == 16718055)||(result.value == 1033561079)) ? { forward(); //2前進(jìn) delay(3000); _stopl); } else if((results.value == 1675477)) { if (irrecv2.decode(&results2)) { if(results2.value == 12345677) { _stopl); } else if((results.value ==16738455)) { forward(); //0前進(jìn) } else if ((results.value == 465573243) || (results.value==16730805)|| (results.value == 1228587814)||(reultsvalue == 1045675)||(results.value == 1333775926)||(results.value == 304335233)|| (results.value == 891929274)||(results.value == 93040025) { back(); //8后退 delay(500); _stop(); } else if (resuls.value == 16724175)||(results.value == 2534850111)||(results.value == 814588342)|| (results.value == 2534850111)||(results.value == 16724175)) { turnLeftforward();//1左前 delay(500); _stopl); } else if((results.value == 16743045)||(ceault5.xaluge==1635910171)) { turnRightforward(); //3右前 delay(500); _stop(); } else if ((results .value == 1209942246) || (results.value == 851901943) || (results.value == ? 16728765) || (results.value == 2364611682) || (results.value==3833948210) || (results.value == 1253111733) || (results.value==2268352677)) { turnleftback(); ? //7左后 delay(500); _stop(); ? ? ? } else if ((results.value == 16732845) || (results.value == 1623741183) || (results.value == 1053031451) || (results.value == 3680188601) || (results.value == 2405230358) || (results.value == 3337729400)) { turnRightback(); ? //9右后 delay(500); _stop(); } else if ((results.value == 2351064443) || ? (results.value == 16716015) || (results.value == 3640844469) ||(results.value == 3606423579)) { turnLeftOrigin(); //4原地左轉(zhuǎn) delay(250); _stop(); } else if((results.value == 16734885) || (results.value == 71952287) || (results.value == 16716015) || (results.value == 2351064443)) { turnRistougin(); //6原地右轉(zhuǎn) delay(250); _stop(); } else if (results.value == 1217346747) || (results.value == 16726215) || (results.value == 2740225102)) ? ? ? { _stop(); //5停止 } irrecv.resume(); //繼續(xù)等待接收下一組信號(hào) } if(results.value ==0x16) delay(600);//延時(shí)600毫秒,做一個(gè)簡(jiǎn)單的消抖 } } } void scan(void){ if(irrecv.decode(&results)){ ? //解碼成功,把數(shù)據(jù)放入results變量中. Serial.print("irCode:"); ? //把數(shù)據(jù)輸入到串口 Serial print(results.value, DEC); //顯示紅外編碼, Serial.print(", bits: "); Serial.print(results.bits); //顯示紅外編碼位數(shù).. Irrecv.resume(); //繼續(xù)等待接收下一組信號(hào)., } if(results.value==0x16){ digitalWriter9, HIGH); Delay(600); //延時(shí)600毫秒,做一個(gè)簡(jiǎn)單的消抖. } } void scan1(void){ if(irrecv2.decode(&results)){ ? //解碼成功,把數(shù)據(jù)放入results變量中 //把數(shù)據(jù)輸入到串口 Serial.print(“irCode2:"); Serial.print(results2.value, DEC); //顯示紅外編碼. SeriaLprint(", bits: "); Serial.println(results2.bits); //顯示紅外編碼位數(shù) Serial.print(results2.value, DEC); //顯示紅外編碼 Serial print(", bits: "); Serial.println(results2.bits);//顯示紅外編碼位數(shù). irrecv2.resume(); //繼續(xù)等待接收下一組信號(hào). } } |
無(wú)線充電智能車的詳細(xì)資料請(qǐng)參考無(wú)線充電智能車
總結(jié)
以上是生活随笔為你收集整理的无线充电智能车的制作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机毕业设计之阿里云SpringBoo
- 下一篇: 如何在本地编译器进行油猴脚本的开发