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