2014年6月18日 星期三

[ Wireless-RF ] RF433MHZ 無線發射接收模組搭配 Raspberry Pi 控制 74HC595 操控 HT12E 遙控器編碼晶片

網頁中所使用的零件可至露天賣場訂購:


使用 75HC595 可以簡單的使用 Raspberry Pi ( 樹莓派 ) 三支 GPIO 接腳設定 HT12E 編碼晶片的位址與資料,可一次控制多達 256 個 HT12D 解碼晶片,很值得學習與使用!

Raspberry Pi + 74HC595 + HT12E + RF 發射模組

關於樹莓派如何控制 74HC595,請參考賣場部落格網頁 IO 擴充應用 - 使用 74HC595 (三態輸出八位元移位暫存器 IC)

線路連接分為兩個部分:第一部分是編碼發射電路;第二部分是接收部分,可延用賣場部落格另一個網頁中介紹的 HT12D 接收電路。

74HC595 控制 HT12E 編碼晶片無線發射電路圖

HT12D 解碼晶片無線接收電路圖


編碼線路佈線:

請依下面圖片的說明,將樹莓派、74HC595、HT12E 與無線發射模組進行相互之間的佈線。

圖片上所使用的麵包板與跳線不在無線模組套件中,若需訂購請至露天賣場:

在麵包上面插上三顆 IC,缺口都是朝左,中間哪一顆是 HT12E。接著根據下圖接上電源正極 (紅) 與電源負極 (綠) 的單芯線;最後在 HT12EP15P16 中間插上藍色為底的電阻 ( 1 M , 4/1 W, 1%,色碼為棕黑黑黃 )
74HC595、 HT12E 編碼晶片、Rosc 電阻與電源正負極的佈線位置

連接樹莓派  ( GPIO #23 - #25 ) 和 74HC595  ( P11, P12, P14 ) 之間的控制線路
  • GPIO #34 --> P11 ( SCLK )

  • GPIO #24 --> P12 ( SER )

  • GPIO #25 --> P14 ( RCLK )
樹莓派與 74HC595 的接線

連接編碼晶片之編碼訊號輸出 P17 ( DOUT ) 到無線發射模組的 DATA 接腳位置,再把無線發射模組照圖片方向插上
連接編碼晶片訊號輸出到無線發射模組 DATA 接腳

另一方向的佈線圖

插上無線發射模組

照下圖連接兩顆 74HC595 的串連線路,這是兩顆 74HC595 晶片連接時的方法
  • 左 (   9, QH* )       -->  右 ( 14, SER )

  • 右 ( 11, SRCLK )  -->  右 ( 11, SRCLK )

  • 右 ( 12,  RCLK)    -->  右 ( 12, RCLK )
兩顆 74HC595 的連接方式

HT12E 編碼資料的設定由位於左邊的那一顆 74HC595 負責,(74HC595) QA - QD 分別對應到 (HT12E) AD8 - AD11
  • 左 ( 15, QA )  -->  中 ( 10, AD8 )

  • 左 (   1, QB )  -->  中 ( 11, AD9 )

  • 左 (   2, QC )  -->  中 ( 12, AD10 )

  • 左 (   3, QD )  -->  中 ( 13, AD11 )
編碼資料控制線連接

HT12E 的編碼位址設定則是由右邊的 74HC595 負責,(74HC595) QA - QH ( pin15, pin1 - 7  ) 分別對應到 (HT12E) A0 - A7 ( pin1 - 8 )
編碼位址控制線連接

完成配線之後的全圖,這時就可以插上記憶卡、網路與電源開始進行測試了。
Raspberry Pi + 74HC595 + HT12E + RF 發射模組


程式碼說明:

我們使用樹莓派的三支 GPIO 做為 74HC595 的控制接腳,如果想要由程式觸控制傳送功能的話,就將第 29 行前面的雙斜線取消掉,並加入控制的程式碼在主程式裏,如果不需要此功能就先不要理它

主程式以選單的方式讓使用者選擇所要執行的動作;先輸入編碼位址 ( 0 - 255 ) 再輸入編碼資料 ( 0 - 16 ),這兩數值都是必須自行換算為整數再做輸入,輸入完畢後程式就會將這些編碼送出並由無線模組發送出去,這時就可以由接收端的 LED 亮滅情形得知接收的狀態是否正確

編碼傳送的程式是以賣場部落格 74HC595 的程式為基礎,因為一次要傳送兩個位元組,因此原先的範例程式必須修改,才可以一次傳送兩個位元組出去。

74HC595 控制接腳的設定與初始化,由 SIPO_Create() 負責

74HC595 的控制程式由 SIPO (unsigned char ADR, unsigned char DATA) 函式負責;傳送時編碼資料先傳送再傳送編碼的位址,位元組由高位元先送出


以上,就是使用樹莓派與 74HC595 控制編碼晶片的程式碼。


程式碼下載與測試:

使用下面指令下載原始程式碼與編譯好的執行檔

pi@raspberrypi ~ $ cd codes
pi@raspberrypi ~/codes $ mkdir RPi_74595CTLHT12E 
pi@raspberrypi ~/codes $ cd RPi_74595CTLHT12E
pi@raspberrypi ~/codesRPi_74595CTLHT12E $ wget -O - http://goo.gl/TG3uA | tar xvf -

--2013-03-02 18:38:24--  http://goo.gl/TG3uA
正在查找主機 goo.gl (goo.gl)... 74.125.31.139, 74.125.31.100, 74.125.31.101, ...
正在連接 goo.gl (goo.gl)|74.125.31.139|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 301 Moved Permanently
位置: <<...此行內容刪除...>> [跟隨至新的 URL]
--2013-03-02 18:38:24--  <<...此行內容刪除...>>

正在查找主機 dl.dropbox.com (dl.dropbox.com)... 107.20.203.119, 107.22.172.16, 107.22.210.127, ...
正在連接 dl.dropbox.com (dl.dropbox.com)|107.20.203.119|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 35328 (34K) [application/x-tar]
Saving to: `STDOUT'

 0% [                                                       ] 0           --.-K/s              rpi_HT12E_74595_test
43% [=======================>                               ] 15,539      60.4K/s              rpi_HT12E_74595_test.c
100%[======================================================>] 35,328       133K/s   in 0.3s

2013-03-02 18:38:26 (133 KB/s) - written to stdout [35328/35328]
pi@raspberrypi ~/codes/RPi_74595CTLHT12E $ ls -l
總計 36
-rwxr-xr-x 1 pi pi 29652  2月 23 18:32 rpi_HT12E_74595_test
-rwxr-xr-x 1 pi pi  3423  2月 23 18:32 rpi_HT12E_74595_test.c
pi@raspberrypi ~/codes/RPi_74595CTLHT12E $

如果有編輯程式碼需要重新編譯,就輸入下面的指令

pi@raspberrypi ~/codes/RPi_74595CTLHT12E $ sudo sudo gcc rpi_HT12E_74595_test.c -l rt -l bcm2835 -std=gnu99 -o rpi_HT12E_74595_test

程式實際執行的情形,如下面所示;要結束就按下 "Ctrl + C"

pi@raspberrypi ~/codes/RPi_74595CTLHT12E $ sudo ./rpi_HT12E_74595_test
Please input encoder adress and data:

address (0xff): 240

data (0xf): 1

 Input address: 0xf0, data: 0x1

 Encoder Address
7=0, 6=0, 5=0, 4=0, 3=0, 2=0, 1=0, 0=1,
 Encode Data
7=1, 6=1, 5=1, 4=1, 3=0, 2=0, 1=0, 0=0,
Transmission completed!!!

Please input encoder adress and data:

pi@raspberrypi ~/codes/RPi_74595CTLHT12E $

這個例子也是另一個 595 晶片的應用,使用 595 晶片雖然接線會比較多,但是可省下很多可用的 IO 接腳,使用在 HT12E 編碼位址 ( 8-pin ) 和編碼資料 (4-pin) 共 12 支接腳,只需用到三個樹莓派 GPIO 接腳非常好用。


<<相關資料與使用說明連結>>

沒有留言:

張貼留言