RaspLass

最後編輯:2017-01-25 建立:2016-01-16 歷史紀錄

蕭漢威(Draft)

RaspLass 是以 Raspberry PI 做為 LASS (Location Aware Sensing System) 偵測系統開發的相關技術討論,本篇說明以 Raspberry PI 來接收 PM2.5(G3)模組、 GPS模組、DHT22溫溼度模組,再以 MQTT 的通訊協定傳的送的架構與程式範例。在 Raspberry PI 是以 RaspBain (RPi 上的 Debain) 和 Python (Python 2.7.9) 為測試開發的基礎工具。

 

1. 所需準備的硬體

  • A 部份 (一般練習 RaspBerry PI 所需要的基本配件)
    • Raspberry Pi 2 Model B (建議先以 version2 有多個 USB 較為方便)

 

  • HDMI 線+支援 HDMI 的螢幕
  • USB鍵盤、滑鼠
  • SD讀卡器(寫入 Raspbian作業系統用)
  • MINI USB 接頭的電源供應器(最好可以)
  • 安裝網路(以下以選一)
    • 1. Ethernet
    • 2. WIFI
    • 3. USB 3G 網卡

 

 

  • 2. DHT22(溫溼度計偵測模組)
    • DHT22 (也可使用 DHT11 的偵測模組,但精確度較差) 有三條接線,Vcc 接到 RPi 上 第 1 個接腳 (3.3v DC Power), GND 接到 RPi 上第 39 個接腳接地(Ground),而訊號的部份 DOut 的接到 RPi 上第 11 個(GPIO17)接腳。

 

 

  • 3. GPS
    • 採用的是 GTPA010 gps module(是以前測試無人機上汰換下來的舊的,所以看上去舊舊的),也需 USB 轉 TTL 此處用的是 FTDI 的 FT232 模組,另一端用 mini USB 接上 RPi 上的 USB 插槽上。

 

  • 4. USB 轉 TTL 模組
    • 用了兩種 USB 轉 TTL 的模組:
    • 1. PL2303 (接 PM2.5 的 G3)
    • 2. FTDI 的 FT232 (接 GPS)

 

2. 安裝 RaspBian

  • 這一部份是 RaspBian 的基本安裝,包括了裝好基本的作業和網路環境。
  • 準備工作,請先下載以下的映象檔和寫入 SD 卡的工具程式(Window 環境),完成後將處理好的 SD 卡插入 Raspberry PI 的板子 SD 卡的插槽中,接上螢幕(HDMI)和鍵盤、滑鼠,再接上電源就可以開機了。

 

 

2.4. 基本 Configuration

  • 請執行 raspi-config 設定:
    • 1. Expand Filesystem 好讓你所使用的 SD 其他部份的容量可以擴充
    • 2. 更改系統預設的密碼: RaspBain 安裝好預設的帳號是 pi 密碼是 raspberry 建議裝好後就更改
    • 3. 更改語系 Internationalisation Options
      • 可參考 http://blogger.gtwang.org/2014/12/raspberry-pi-chinese-input-method.html
    • 4. 中文碼的顯示討論:

 

3. 安裝 Python 所需套件

  • RaspBian 安裝好後已經有 python 的語言和執行環境,要安裝套件請直接開啟終端機環境,以 root 身份以 pip 工具安裝以下所需套件
  • 3.1 pyserial (python 讀取 Serial 資料)
    • 安裝請執行 pip install pyserial
  • 3.2 Adafruit_DHT (python 讀取 DHTxx 系列溫溼度資料)
    • 安裝請執行 pip install Adafruit-DHT
    • LEEWAY S安裝請參考 https://github.com/adafruit/Adafruit_Python_DHT*
  • 蕭漢威3.3 pynmea2 (python 讀取 GPS 的 nmea 資料格式)
    • 安裝請執行 pip install pynmea2
  • 3.4 paho-mqtt (python 讀取、發送 mqtt 訊息)
    • 安裝請執行 pip install paho-mqtt

 

安裝好後可執行 pip list 可看到目前已安裝好的 python 套件

 

4. 安裝 RaspLASS 程式

  • https://github.com/MISNUK/RaspLASS
  • 建議先分別測試各模組程式再整合

4.1 測試 PM2.5 G3 模組

  • G3 模組以 PL2303 接上 RPi 的 USB 插槽後,執行
    • root@raspberrypi:~/RaspLASS# lsusb
    • Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
    • Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
  • 以上 FT232 USB-Serial 所接的是 GPS 模組
  • PL2303 Serial Port 所接的是 PM2.5 G3 模組
  • 再執行以下的 Script:
  • echo `udevadm info --name=/dev/ttyUSB0 --attribute-walk | sed -n 's/\s*ATTRS{\(\(devnum\)\|\(busnum\)\)}==\"\([^\"]\+\)\"/\1\ \4/p' | head -n 2 | awk '{$1 = sprintf("%s:%03d", $1, $2); print $1;}'`

 

  • 若結果為 busnum:001 devnum:004 則可知 PL2303 Serial Port 也就是 PM2.5 的 G3 模組接在 /dev/ttyUSB0
  • 程式 https://github.com/MISNUK/RaspLASS/blob/master/PM2.5/ReadPM25_G3.py 中第 4 行,請填上 /dev/ttyUSB0
  • G3 的 Baudrate 為 9600
    • ser=serial.Serial("/dev/ttyUSB0", baudrate=9600)
  • 設定完後,可測試執行 ReadPM25_G3.py 程式:
  • root@raspberrypi:~/RaspLASS/PM2.5# python ReadPM25_G3.py
    • 424d00140035004800600029003b0053073c002867000309 => 原始資料
    • pm1_cf: 53 => PM1.0 在 CF=1
    • pm25_cf: 72 => PM2.5 在 CF=1
    • pm10_cf: 96 => PM10 在 CF=1
    • pm1: 41 => PM1.0 在大氣環境下
    • pm25: 59 => PM2.5 在大氣環境下 ==> 目標欄位
    • pm10: 83 => PM10 在大氣環境下
    • 424d00140035004800600029003b0053073c002867000309
    • pm1_cf: 53
    • pm25_cf: 72
    • pm10_cf: 96
    • pm1: 41
    • pm25: 59
    • pm10: 83

 

  • 可參照 http://tw.taobao.com/item/43750623059.htm?spm=a1z3o.7695283.0.0.n47YP4 中的資料欄位的說明

 

4.2 測試 DHT22 模組

  • DHT22 的訊號線 DOut 的接到 RPi 上第 11 個(GPIO17)接腳。
  • 在 程式 https://github.com/MISNUK/RaspLASS/blob/master/DHT22/ReadDHT.py 中第 7 行
    • pin =17 (即表示 GPIO17) 參照 RPi 的接腳圖
  • 設定完後,可測試執行 ReadPM25_G3.py 程式:
  • root@raspberrypi:~/RaspLASS/DHT22# python ReadDHT.py
    • Temp=23.2*C Humidity=69.3%
    • Temp=23.0*C Humidity=71.6%
    • Temp=23.0*C Humidity=71.6%
  • 附註: 若使用的為 DHT11 的模組可將程式 中第 5 行換成 DHT11 在輸出時以整數輸出即可(DHT11 溫溼度只到整數位)
    • sensor = Adafruit_DHT.DHT11

 

4.3 測試 GPS 模組