# Wireless Lab 3 ###### tags: `Wireless` ## :star: 實驗結果 1. 請讀取溫溼度感應器的資料,並使用OTAA送出資料,分別截圖`join_ttn.py`,`send_ttn.py`的結果 2. 傳輸資料後用MQTT查看,並用base64解密截圖。 3. **以組為單位(一個人上傳即可)**,將這些截圖結果貼成一個word檔案,命名為`wireless-lab3-groupxx.docx`,並上傳到LMS作業區。 ## [DHT22](https://kingfff.blogspot.com/2018/05/raspberry-pi-3-model-bdht22.html) 1. 首先要將溫溼度感應器晶片插在Raspberry Pi上 ![](https://i.imgur.com/qidslFC.png) * sensor有三個腳位,請對照GPIO腳位圖 * `+` : 接3.3V (#1) * `out` : 接GPIO4 (#7) * `-` : GND (#9) ![](https://i.imgur.com/PopnVra.png) 2. 之後在Raspberry Pi上安裝DHT所需要的Library ```shell $ sudo pip3 install Adafruit_DHT ``` 3. 使用下載[Adafruit_Python_DHT](https://github.com/adafruit/Adafruit_Python_DHT)程式碼 ```shell $ git clone https://github.com/adafruit/Adafruit_Python_DHT ``` 4. 測試 ```shell $ cd Adafruit_Python_DHT/examples $ python3 AdafruitDHT.py 22 4 ``` * 參數一:22,表示使用Adafruit_DHT.DHT22 * 參數二:4 ,表示data的接腳是接在GPIO4 ![](https://i.imgur.com/jS5ArJt.png) 5. 請想辦法與Lab2(OTAA)結合,可以查看Adafruit_DHT.py的程式,把一部分的程式移植到Lab2的程式裡 ```python= import sys import Adafruit_DHT # Parse command line parameters. sensor_args = { '11': Adafruit_DHT.DHT11, '22': Adafruit_DHT.DHT22, '2302': Adafruit_DHT.AM2302 } if len(sys.argv) == 3 and sys.argv[1] in sensor_args: sensor = sensor_args[sys.argv[1]] pin = sys.argv[2] else: print('Usage: sudo ./Adafruit_DHT.py [11|22|2302] <GPIO pin number>') print('Example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO pin #4') sys.exit(1) # Try to grab a sensor reading. Use the read_retry method which will retry up # to 15 times to get a sensor reading (waiting 2 seconds between each retry). # 主要偵測的function humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # Un-comment the line below to convert the temperature to Fahrenheit. # temperature = temperature * 9/5.0 + 32 # Note that sometimes you won't get a reading and # the results will be null (because Linux can't # guarantee the timing of calls to read the sensor). # If this happens try again! if humidity is not None and temperature is not None: print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)) else: print('Failed to get reading. Try again!') sys.exit(1) ``` 6. 可能的結果 ![](https://i.imgur.com/UmsAXyh.png)