文章來(lái)自于Designspark Jackzhang的BLOG 《樹(shù)莓派小應(yīng)用之無(wú)線感應(yīng)》 DIY目的: 通過(guò)把LCD1602,蜂鳴器和單路徑循跡傳感器模塊都接入到樹(shù)莓派的GPIO引腳上面,用單路徑循跡傳感器檢測(cè)物體的距離或顏色。當(dāng)物體距離過(guò)近時(shí),此時(shí)路徑傳感器模塊輸出為低電平,這個(gè)時(shí)候LCD1602顯示出“DETECTED:YES”,同時(shí)蜂鳴器發(fā)出聲音。而當(dāng)物體為黑色或者距離較遠(yuǎn)時(shí),蜂鳴器沒(méi)有輸出,同時(shí)LCD1602顯示“DETECTED:NO”。 DIY工具: 主要包括樹(shù)莓派B+,LCD1602,蜂鳴器,單路徑循跡傳感器模塊。其主要作用如下: 樹(shù)莓派:主控芯片,根據(jù)外部輸入控制輸出。主要利用樹(shù)莓派的GPIO口 蜂鳴器:無(wú)源蜂鳴器,通過(guò)PWM波驅(qū)動(dòng)其發(fā)聲,由樹(shù)莓派驅(qū)動(dòng)。 LCD1602:顯示必要的信息,輸出設(shè)備。 單路徑循跡傳感器模塊:輸入設(shè)備?梢酝▽(duì)反射紅外線的接收情況來(lái)判斷物體的距離。當(dāng)被檢測(cè)物體在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來(lái)且強(qiáng)度足夠大,模塊的輸出端為低電平,指示二極管被點(diǎn)亮。否則輸出高電平。 分配樹(shù)莓派的引腳 因?yàn)橛玫氖荁+的板子,所以GPIO口比較多,我就把其他的小模塊直接和樹(shù)莓派的GPIO口連接起來(lái),不要擔(dān)心GPPIO口不夠用。 樹(shù)莓派和蜂鳴器相連,使用了兩個(gè)引腳,Pin20和Pin36。其中Pin20是樹(shù)莓派的Ground引腳,所以我通過(guò)Pin36引腳(GPIO16)來(lái)發(fā)PWM波驅(qū)動(dòng)蜂鳴器。 接下來(lái)是樹(shù)莓派和LCD1602連接。特別主要LCD1602的RW引腳一定要接地,否則可能燒壞樹(shù)莓派。 對(duì)于LCD1602大家應(yīng)該很熟悉不過(guò)了,如果大家之前有玩過(guò)單片機(jī)的話。這個(gè)就是它的樣子,我們可以用它來(lái)顯示字母、數(shù)字、符號(hào)等信息。它背面總共包含16個(gè)引腳,能同時(shí)顯示16X02個(gè)字符。對(duì)于一些小應(yīng)用和演示,還是很不錯(cuò)的一個(gè)工具哦。 今天我做的就是把樹(shù)莓派和LCD1602連接起來(lái)。那首先第一問(wèn)題就出來(lái)了?我們?cè)趺催B線呢?這需要我們知道樹(shù)莓派的GPIO口輸出信息,也要我們知道LCD1602的引腳信息,只有把這個(gè)都對(duì)上號(hào)了,才能正確給LCD上電,我們才能正式的編程,使用LCD1602。 這個(gè)就是我使用的樹(shù)莓派的GPIO和LCD1602的連線的原理圖。 下面是我實(shí)際的接線圖。 這里有幾點(diǎn)需要和大家說(shuō)一下: (1)原理圖的樹(shù)莓派是B版,我實(shí)際使用的是B+的板子,但是引腳編號(hào)沒(méi)有改變。大家也一定要注意實(shí)際和原理圖的區(qū)別 (2)由于樹(shù)莓派的引腳很少,所以關(guān)于LCD的7~10號(hào)引腳我們不使用 (3)由于樹(shù)莓派沒(méi)有過(guò)流保護(hù),并且十分脆弱在使用中保證LCD1602的RW引腳接地,否則嘗試從LCD1602讀取數(shù)據(jù)可能會(huì)燒掉樹(shù)莓派。 (4)原理圖中Ri是電位器,即10KΩ滑動(dòng)變阻器,可以調(diào)節(jié)LCD的亮度 最后當(dāng)我們檢查完畢,一定不要有短路,確保接地。我們就可以上電了。這個(gè)時(shí)候LCD就應(yīng)該點(diǎn)亮了哦。我們旋轉(zhuǎn)電位器,還能看到LCD上的小格子消失或者出現(xiàn)。 樹(shù)莓派和單路徑循跡模塊連接,一共有三個(gè)引腳,其中一個(gè)引腳接電壓正極,Pin1,樹(shù)莓派輸出5V。一個(gè)接地,Pin34,樹(shù)莓派的Ground。另外一個(gè)是信號(hào)輸出,Pin3。在程序里面,通過(guò)判斷樹(shù)莓派引腳的電壓來(lái)判斷物體的距離。 完成這些步驟以后,我們就基本完成硬件的連接了。接下來(lái)就是軟件的實(shí)現(xiàn)了。 軟件實(shí)現(xiàn) 這一部分主要和大家介紹的我這個(gè)小應(yīng)用的軟件部分。 軟件是實(shí)現(xiàn)這個(gè)功能的核心啊,主要包括以下幾個(gè)部分: (1)感應(yīng)模塊,感知無(wú)線感應(yīng)模塊的輸入 (2)驅(qū)動(dòng)蜂鳴器,需要產(chǎn)生PWM波 (3)顯示模塊,LCD1602根據(jù)不同的感應(yīng)情況顯示不同的信息。 這三部分我們都可以借鑒網(wǎng)上的資料,但是要根據(jù)自己的情況做一些修改。當(dāng)然,我非常推薦下面這個(gè)網(wǎng)站:http://wiringpi.com/。我程序里面用到的函數(shù)都在下面的目錄里,大家點(diǎn)進(jìn)去,對(duì)著我后面的程序找就能找到原型了! Wiring是為了更好的應(yīng)用樹(shù)莓派的GPIO口專門編寫的控制函數(shù)。這個(gè)控制函數(shù)包含了很多已經(jīng)寫好了庫(kù)函數(shù),我們只要按照規(guī)則調(diào)用就行。當(dāng)然在使用這些函數(shù)的時(shí)候,我們要根據(jù)自己樹(shù)莓派GPIO口的連接情況更改一些參數(shù)。 下面是整個(gè)軟件實(shí)現(xiàn)過(guò)程: |