Raspberry Pi 3 [Automated Relay Controller]
ตอนที่แล้วเราได้ทดลองทำการสั่งงานรีเลย์แบบ Manual ผ่านหน้าเว็บไปแล้ว ครั้งนี้เราลองสั่งให้รีเลย์ทำงานโดยผ่านการประมวลผลค่าที่ได้จากเซนเซอร์ เพื่อให้ก้าวไปอีกขั้นของ IoT โดยเราจะใช้เซนเซอร์ที่เคยได้นำเสนอไปก่อนหน้านี้แล้ว นั่นคือ DHT22 Temperature & Humidity Sensor (ต่อที่ PIN: 32 [GPIO 12]) และรีเลย์ 4 Channel ซึ่งสามารถนำไปต่อกับอุปกรณ์เครื่องใช้ไฟฟ้าได้ ต่อ PIN เดิมจากตอนที่แล้ว ความต้องการเบื้องต้นคือ 1. เมื่ออุณหภูมิต่ำกว่าหรือเท่ากับ 28 องศา ให้เปิดพัดลมระบายอากาศ 1 (ที่ต่ออยู่กับ Relay 1) 2. เมื่ออุณหภูมิสูงกว่า 28 องศา ให้ปิดพัดลมระบายอากาศ 1 และเปิดพัดลมระบายอากาศ 2 (ต่ออยู่กับ Relay 2) 3. เมื่อความชื้นต่ำกว่า 50% ให้เปิดเครื่องสร้างความชื้น (Humidifier) (ต่ออยู่กับ Relay 3) โดยไม่ต้องสนใจอุณหภูมิ เริ่มเขียนโค้ดเพื่อทำการประมวลผลกันเลย (โค้ดบางส่วน ได้อธิบายไว้ในตัวอย่างบทความก่อนหน้านี้แล้ว) ทำการติดตั้ง Library Adafruit จากบทความก่อนหน้านี้ Raspberry Pi 3 [Temperature & Humidity Sensor] จากนั้นทำการเขียน python ด้วยคำสั่ง sudo nano automated_relay.py ด้วยโค้ดต่อไปนี้ import os import time import datetime while True : temperature = os.popen(‘sudo /home/pi/sources/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12 | cut -c 6-7’).read() humidity = os.popen(‘sudo /home/pi/sources/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12 | cut -c 22-23’).read() now = datetime.datetime.now() print ” print ” print now.strftime(“%d-%m-%Y %H:%M:%S”) print ‘Temperature: ‘ + temperature + ‘Humidity: ‘ + humidity if int(temperature) <= 28: os.popen(‘sudo python /var/www/html/relay_off.py 2’).read() os.popen(‘sudo python /var/www/html/relay_on.py 1’).read() print ‘Temperature below 28C ==> Relay 1: ON. Relay 2: OFF’ else: os.popen(‘sudo python /var/www/html/relay_off.py 1’).read() os.popen(‘sudo python /var/www/html/relay_on.py 2’).read() print ‘Temperature above 28C ==> Relay 1: OFF. Relay 2: ON’ if int(humidity) < 50: os.popen(‘sudo python /var/www/html/relay_on.py 3’).read() print ‘Humidity below 50% ==> Relay 3: ON’ else: os.popen(‘sudo python /var/www/html/relay_off.py 3’).read() print ‘Humidity above 50% ==> Relay 3: OFF’ time.sleep(5) จากนั้นเซฟและทดลองรันด้วยคำสั่ง