file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F4.tmp.png 圖1 各模塊關系框圖 各模塊關系圖如圖1 所示,電源模塊A用于為各個模塊供電的,其電源輸出端分別連接所用到的各個模塊的電源端。當使用時,首先通過遙控器B1發送命令,此命令通過無線信號傳輸給無線電模塊B2,無線模塊B2將信號處理后傳送至Arduino主控單元G,由主控單元G發送命令至電機驅動模塊D,垃圾桶按照命令,在電機驅動模塊D的驅動下實現前進、后退、左移、右移功能。在行駛過程中,距離障礙物20cm處,垃圾桶可通過紅外避障模塊C1感應前方障礙物,此模塊發送命令至主控單元G,再發送給電機驅動模塊指令,此時垃圾桶會向左或向右轉彎,控制者可根據自己的方位對垃圾桶進行實時控制以使垃圾桶到達控制者附近,控制者向垃圾桶內扔垃圾,當手靠近垃圾桶時,垃圾桶可通過紅外控制模塊C3發送命令到主控單元G,再由主控單元G發送命令到軸承控制模塊F,使垃圾桶自動開蓋,5秒后自動關蓋。如果垃圾桶內物品裝滿時,可通過紅外測試模塊C2感應到垃圾桶內物品高度,如果桶內物品高度到達距桶蓋5厘米處,紅外測試模塊C3可向主控單元G發送命令,主控單元G向語音控制模塊E傳輸命令,使得語音控制模塊E自動發出提醒聲。 2. 智能垃圾桶設計器材的選擇 由于時間及材料有限,我們僅利用紅外避障模塊和紅外感應模塊及Arduino板模擬 了躲避障礙物,自動感應周圍的人來自動開蓋關蓋的功能。所需材料如表一所示: 表一 設計所需器材說明表 元件名稱 | | | | | | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F5.tmp.jpg | [size=10.0000pt] [size=10.0000pt] [size=10.0000pt] 9V電池
| | | [size=9.0000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F6.tmp.png | | | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F7.tmp.jpg | | | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F8.tmp.jpg | [size=10.0000pt] [size=10.0000pt] 無線遙控模塊
| [size=10.0000pt] [size=10.0000pt] OPENJUMPER藍牙模塊v2.0
| | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsD9F9.tmp.jpg | | | | file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0A.tmp.png | |
Openjumper小車車體套件 [size=10.0000pt] | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0B.tmp.jpg | |
UNO配套的傳感器擴展板 [size=10.0000pt] | | [size=9.0000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0C.tmp.png | | [size=10.0000pt] [size=10.0000pt] openjumperL298電機驅動板 [size=10.5000pt] | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0D.tmp.jpg | | | | file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0E.tmp.png | | | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA0F.tmp.jpg [size=10.5000pt] | | | | [size=10.5000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA10.tmp.jpg | | | | file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA21.tmp.png |
2.1 芯片說明 2.1.1 ArduinoUNO芯片
[size=12.0000pt]file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA22.tmp.png 圖2 Arduino UNO芯片實物圖 Arduino UNO芯片,如圖2 Arduino UNO是Arduino USB接口系列的最新版本,作為Arduino平臺的參考標準模板。UNO的處理器核心是ATmega328,同時具有14路數字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個16MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復位按鈕。與51單片機相比,Arduino UNO具有很多優勢,例如功耗小、每個人模塊是打包好的可以直接用,操作簡單等等。所以在這里我們選用Arduino UNO芯片。 參考數據 (1) 處理器 ATmega328 (2) 工作電壓 5V (3) 輸入電壓(推薦) 7-12V (4) 輸入電壓(范圍) 6-20V (5) 數字IO腳 14 (其中6路作為PWM輸出) (6) 模擬輸入腳 6 (7) IO腳直流電流 40 mA (8) 3.3V腳直流電流 50 mA (9) Flash Memory 32 KB (ATmega328,其中0.5 KB 用于 bootloader) (10) SRAM 2 KB (ATmega328) (11) EEPROM 1 KB (ATmega328) (12) 工作時鐘 16 MHz 2.1.2 HC-SR501芯片 file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA23.tmp.png 圖3 HC-SR501實物圖 紅外感應模塊可采用HC-SR501普通型人體紅外感應模塊熱釋電紅外傳感器。如圖3 其技術參數如下: (1)工作電壓:DC5V至20V (2)靜態功耗:65微安 (3)電平輸出:高3.3V,低0V (4)延時時間:可調(0.3秒~18秒) (5)封鎖時間:0.2秒 (6)觸發方式:L不可重復,H可重復,默認值為H (7)感應范圍:小于120度錐角,7米以內 (8)工作溫度:-15~+70度 (9)PCB外形尺寸:32*24mm,螺絲孔距28mm,螺絲孔徑2mm,感應透鏡尺寸:(直徑):23mm(默認) 其功能特點如下: (1)全自動感應:當有人進入其感應范圍則輸出高電平,人離開感應范圍則自動延時關閉高電平。輸出低電平。 (2)兩種觸發方式:L不可重復,H可重復。可跳線選擇,默認為H。 A.不可重復觸發方式:即感應輸出高電平后,延時時間一結束,輸出將自動從高電平變為低電平。 B.可重復觸發方式: 即感應輸出高電平后,在延時時間段內,如果有人體在其感應范圍內活動,其輸出將一直保持高電平,直到人離開后才延時將高電平變為低電平(感應模塊檢測到人體的每一次活動后會自動順延一個延時時間段,并且以最后一次活動的時間為延時時間的起始點)。 (3)具有感應封鎖時間(默認設置:0.2秒):感應模塊在每一次感應輸出后(高電平變為低電平),可以緊跟著設置一個封鎖時間,在此時間段內感應器不接收任何感應信號。此功能可以實現(感應輸出時間和封鎖時間)兩者的間隔工作,可應用于間隔探測產品;同時此功能可有效抑制負載切換過程中產生的各種干擾。 (4)工作電壓范圍寬:默認工作電壓DC5V至20V (5)微功耗:靜態電流65微安,特別適合干電池供電的電器產品。 7.輸出高電平信號:可方便與各類電路實現對接。 把人體紅外感應模塊放在垃圾桶蓋上,放在桶蓋中心位置,一個即可。若有條件,可放4個甚至跟多,均勻的放在桶蓋邊上,并聯即可。 2.1.3 紅外避障模塊原理 file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA24.tmp.png 圖4 紅外障傳感器實物圖 如圖4 紅外避障模塊采用普通的紅外障傳感器,該傳感器模塊對環境光線適應能力強,其具有一對紅外線發射與接收管,發射管發射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器電路處理之后,綠色指示燈會亮起,同時信號輸出接口輸出數字信號(一個低電平信號),可通過電位器旋鈕調節檢測距離,有效距離范圍 2~80cm,工作電壓為3.3V-5V。該傳感器的探測距離可以通過電位器調節、具有干擾小、便于裝配、使用方便等特點,可以廣泛應用于機器人避障、避障小車、流水線計數及黑白線循跡等眾多場合。 其主要參數說明如下: (1) 當模塊檢測到前方障礙物信號時,電路板上綠色指示燈點亮電平,同時OUT端口持續輸出低電平信號,該模塊檢測距離2~80cm,檢測角度35°,檢測距離可以通過電位器進行調節,順時針調電位器,檢測距離增加;逆時針調電位器,檢測距離減少。 (2) 傳感器主動紅外線反射探測,因此目標的反射率和形狀是探測距離的關鍵。其中黑色探測距離最小,白色最大;小面積物體距離小,大面積距離大。 (3) 傳感器模塊輸出端口OUT可直接與單片機IO口連接即可,也可以直接驅動一個5V繼電器;連接方式:VCC-VCC;GND-GND;OUT-IO (4) 比較器采用LM393,工作穩定; (5) 可采用3-5V直流電源對模塊進行供電。當電源接通時,紅色電源指示燈點亮; (6) 具有3mm的螺絲孔,便于固定、安裝; (7) 電路板尺寸:3.1CM*1.5CM (8) 每個模塊在發貨已經將閾值比較電壓通過電位器調節好,非特殊情況,請勿隨意調節電位器。 模塊接口說明(3線制)如下: (1) VCC 外接3.3V-5V電壓(可以直接與5v單片機和3.3v單片機相連) (2) GND 外接GND (3) OUT 小板數字量輸出接口(0和1) 這個模塊的主體是三個紅外傳感器。只需要把三個紅外傳感器均勻的安裝在小車上。 2.1.4 電源 Arduino UNO可以通過3種方式供電,而且能自動選擇供電方式 (1)外部直流電源通過電源插座供電。 (2)電池連接電源連接器的GND和VIN引腳。 (3)USB接口直接供電。 電源引腳說明: VIN --- 當外部直流電源接入電源插座時,可以通過VIN向外部供電;也可以通過此引腳向UNO直接供電;VIN有電時將忽略從USB或者其他引腳接入的電源。 5V --- 通過穩壓器或USB的5V電壓,為UNO上的5V芯片供電。 3.3V --- 通過穩壓器產生的3.3V電壓,最大驅動電流50mA。 GND --- 地腳。 2.1.5 遙控器和無線模塊: file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA34.tmp.jpg 圖5藍牙串口通信模塊HC-05實物圖 OPENJUMPER藍牙模塊v2.0是主從一體的藍牙串口通信模塊HC-05,可通過AT模式改寫其各參數。適用于Arduino與PC、手機等設備的無線連接,如圖5 所示。 將藍牙模塊通過USB傳串口模塊連接到電腦USB端口,可直接通過串口助手發送AT命令來配置藍牙模塊。 設置好AT指令后,讓藍牙主機通過轉串口模塊連接電腦,藍牙從機連接小車上。藍牙處于工作狀態,也就是AT引腳接低電平或者懸空(工作狀態下,藍牙state燈為快閃)。此時藍牙會自動搜索能夠與之配對的模塊,自動連接配對,配對成功后LINK燈變為常亮 2.1.6 紅外測距模塊 file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA35.tmp.png 圖6 紅外測距傳感器實物圖 在垃圾桶蓋的下方安裝一個紅外測距傳感器,該傳感器與主控單元連接,用來測試桶內垃圾高度,實物圖如圖6所示。 2.1.7 電機驅動模塊 file:///C:\Users\lengshao\AppData\Local\Temp\ksohtml\wpsDA36.tmp.jpg 圖7 整體連接效果圖 先下載一個程序來為電機接線做準備。電機的2根線并沒有正負之分,電機驅動板上的M1,M2接線端子也不能確定應該對應左右哪一個電機然后要對uno下載一段程序,以方便我們對小車電機進行連線。效果圖如圖7所示。 2.2 設計說明 由于時間和材料有限,我們利用小燈、面包板、HC-SR501普通型人體紅外感應器、紅外避障傳感器等實驗器材,編寫了紅外避障、紅外感應模塊的程序,并用小燈的亮滅檢測兩個模塊是否能正常執行。各模塊程序如下: 電機測試程序: int INA = 4; //電機A正反轉控制端 int PWMA = 5; //電機A調速端 int INB = 7; //電機B正反轉控制端 int PWMB = 6; //電機B調速端 void setup(){ pinMode(INA,OUTPUT); pinMode(INB,OUTPUT); //配置電機輸出IO口為輸出 } void loop(){ int value; for(value = 20 ; value <= 255;value+=2){ //循環每次速度增加2最大到255 motosp(-value,value);//電機速度賦值,左電機負值為反轉,右電機正轉。 delay(50); } } void motosp(int sp1,int sp2)//聲明電機速度控制函數。括號內定義的變量分別為左右電機速 { if(sp1>0) { digitalWrite(INA, HIGH); } else { digitalWrite(INA, LOW); } if(sp2>0) { digitalWrite(INB, HIGH); } else { digitalWrite(INB, LOW); } analogWrite(PWMA,abs (sp1)); analogWrite(PWMB,abs (sp2)); } 功能:測試電機驅動功能和電機連線是否正確,左電機反轉,右電機正轉,電機轉速由小到大。 紅外感應模塊: int Sensor = 2; int ina = 13; void setup() { pinMode(ina, OUTPUT); //13引腳定義為輸出 Serial.begin(9600); //設置下載程序的串口的波特率為9600 pinMode(Sensor, INPUT); //2引腳定義為輸入 } void loop() { int SensorState = digitalRead(Sensor);//讀取2引腳的電平 while(SensorState == 1){ SensorState = digitalRead(Sensor); //2引腳為高電平時,設置13引腳為高 digitalWrite(ina,HIGH); delay(1000); //延時1000ms } while(SensorState == 0){ //當2引腳為低電平時,設置13引腳為低 SensorState = digitalRead(Sensor); digitalWrite(ina,LOW); } delay(100); //延時100ms }
實驗現象:當我們靠近此模塊圓形凸面時,13引腳連接的小燈亮了并延時一段時間,過后小燈滅,也延時一段時間,在此期間內,在接近圓形凸面時,小燈不亮,過后會亮。這說明紅外感應模塊能夠正常工作。 避障模塊: int Sensor1 = 2; int Sensor2 = 4 ; int ina = 13; int inb = 12; void setup() { pinMode(ina, OUTPUT); //定義輸入、輸出引腳 pinMode(inb, OUTPUT); Serial.begin(9600); pinMode(Sensor1, INPUT); pinMode(Sensor2, INPUT); } void loop() { int SensorState1 = digitalRead(Sensor1);//讀取數據 int SensorState2 = digitalRead(Sensor2); boolean Write = true; //定義布爾變量 boolean Black = true; if(SensorState1 == 1){ Write = false; } if(SensorState2 == 1){ Black = false; } if(Write && Black){ //當量輸入引腳同時為高時,兩輸出引腳為高 digitalWrite(ina,HIGH); digitalWrite(inb,HIGH); delay(1000); } digitalWrite(ina,LOW); //復位 digitalWrite(inb,LOW); delay(100); } 實驗現象說明:當芯片上紅外發射管周圍有障礙物時,12、13引腳連接的小燈同時亮,有障礙物時一直亮,障礙物除去以后,小燈滅。這說明紅外避障模塊能夠正常工作。 二、課程設計工作記錄 1. 設計步驟與時間安排(含調試步驟與時間安排) 12月23日至12月27日,選課題,查閱資料,確定設計方案。 12月28日至1月1日,根據設計方案,確定所需模塊及器材,學習Arduino的編寫語言,然后分模塊編寫程序。 1月2至1月5日,通過實驗板調試程序,糾正程序的功能錯誤,不斷完善程序。 1月6日,行答辯。 1月7日至1月8日,交實習報告,修改實習報告。 2. 課題完成結果說明 (1)程序實現了以下功能 1)當避障模塊周圍出現障礙物時,連接的小燈點亮,障礙物移走,小燈滅,反應比較靈敏。 2)當紅外感應模塊周圍有人活動時,連接的小燈點亮,亮一段時間后,小燈滅并延時,再次期間,再有人活動小燈不亮,過了延時期,才會正常感應。 3)通過量模塊小燈的亮滅,正確判斷了兩模塊是否正常工作。 (2)遇到的問題總結如下 1)以前沒有接觸過Arduino,所以開始做有點費力,時間、材料有限的情況下,就做出兩個模塊的功能。 2)紅外感應模塊所用的芯片HC-SR501,上面有兩個旋轉按鈕,一個控制延時時間,一個控制感應距離,開始的時候沒發現它們的作用,就單靠程序的延時控制小燈的亮滅時間,發現實驗現象和預想不符,仔細閱讀了芯片引腳功能分析后,發現并解決了這個問題。 3)網上對Arduino的解說材料特別少,查找十分不便,對初期工作造成困擾。 (3)心得體會 三周的實習很快過去了,雖然過程很痛苦,但果實是豐碩的。以前我們學習知識總是停留在知識層面,覺得書本上的只弄懂了就不錯了。但通過這次實習我發現我以前的想法真是大錯特錯。要適應現在高速發展的社會的人才需求,我們不光要具備良好的學習習慣,還有有優秀的仔細能力、融會貫通能力。通過這次實習我發現,我在這方面真的十分欠缺。我們做的基于Arduino的智能垃圾桶的設計,聽似簡單,但設計之初,我們焦頭爛額,首先,沒有學過Arduino板,一點都沒了解過,那時才發現,作為電子信息工程專業的學生,我們的知識面有多么狹隘。其次,對于智能垃圾桶要具備哪些功能,我們也一無所知,我焦躁過,放棄過,但最終,都想著要最后提交實習報告,而重新振作。我們在網上利用并不豐富關于Arduino的資料,查閱圖書館僅有的一種關于Arduino的圖書,團結一致,發揮我們的想象力。在真正設計期間,我們遇到很多困難,但是我們沒有在氣餒,堅持了三個星期。 在這門課程設計中,我鍛煉了自己動手能力,提高了解決問題的能力。我學習了Arduino編程,了解了HC-SR501芯片,及紅外避障、紅外感應的原理。這次課設,我學到最多的還是,要獨立學習,不要滿足,不斷學習和了解新的內容,電子業是個更新換代特別快的行業,我們不跟上它的腳步,只能被淘汰。
|