ตอนที่แล้วเราได้ทดลองทำการสั่งงานรีเลย์แบบ 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)
จากนั้นเซฟและทดลองรันด้วยคำสั่ง python automated_relay.py
พบว่ารีเลย์ทำงานได้ตามต้องการและได้ผลดังรูปนี้
จากรูปด้านบน เมื่ออุณหภูมิอยู่ที่ 24 องศา ความชื้น 48% จะทำการ ON Relay 1 และ OFF Relay 2 และ ON Relay 3
จากนั้นทำการรอไป 5 วินาที จากนั้นจึงอ่านค่าใหม่ วนแบบนี้เรื่อยๆ
และเมื่อความชื้นสูงกว่า 50% ก็จะทำการ OFF Relay 3 ขึ้นมา โดยไม่ได้สนใจอุณหภูมิ
จากนั้นเมื่ออุณหภูมิสูงกว่า 28 องศา ก็จะทำการ OFF Relay 1 และ ON Relay 2 ตามโปรแกรมที่เราเขียนเอาไว้
โปรแกรมด้านบนนี้ เป็นโปรแกรมอย่างง่าย ซึ่งอาจจะมีข้อบกพร่อง (bug) อยู่หลายประการ เช่นการ initial state ของ relay ตอนเริ่มต้น, การแสดงผลบนหน้าจอ เป็นต้น
โดยท่านที่สนใจ สามารถนำไปปรับปรุงต่อได้ด้วยตัวเองครับ ผมต้องการเพียงเพื่อจะชี้ให้เห็นถึง concept การทำงานเท่านั้น
การนำไปประยุกต์ใช้ ขึ้นอยู่กับความต้องการเป็นหลัก ซึ่งมีเซนเซอร์ให้เลือกใช้มากมาย เช่น
- หากเราต้องการให้เปิดไฟเมื่อมีคนเดินผ่าน เราสามารถใช้ Passive Infrared Sensor (PIR) มาจับความเคลื่อนไหวและความร้อนของวัตถุ (จากรังสี Infrared ที่ปล่อยออกมา) และนำไป Trig Relay ได้ทันที
- ระบบรดน้ำอัตโนมัติ เมื่ออุณหภูมิหรือความชื้นหรือเวลา ตรงกับเงื่อนไขที่เราตั้งไว้ ให้ Trig Relay ที่ต่อกับ Solinoid Valve (วาล์วน้ำไฟฟ้า ที่จะเปิดเมื่อมีไฟไหลผ่าน) เพื่อรดน้ำต้นไม้
- ระบบระบายความร้อน หรือ HVAC ที่จะทำงานตามเงื่อนไขอุณหภูมิและความชื้น โดยสามารถโปรแกรมให้มีการเปรียบเทียบอุณหภูมิจากภายในและภายนอก ให้พัดลมระบายอากาศทำงานตามที่กำหนด
- ฯลฯ
จากบทความเรื่อง Raspberry PI ทั้งหมดที่เขียนมา จะเห็นว่าเป็นเรื่องเกี่ยวกับการเล่นกับอุปกรณ์ Input/output เท่านั้น ซึ่งแท้จริงๆแล้ว Raspberry PI นั้นมีความสามารถมากกว่านี้อีกเยอะ ซึ่งหากว่าท่านต้องการทำแค่ระบบ Automation หรือ IoT ในบ้านง่ายๆ ยังมี Solution อื่น ที่ประหยัดงบประมาณมากกว่านี้คือการเลือกใช้ Arduino Board ซึ่งจะเป็นการทำงานแบบ Microcontroller เข้ามาทำงานในส่วนประมวลผลง่ายๆ ไม่ซับซ้อน ที่สำคัญหรือราคาถูกกว่าครึ่ง (เฉพาะบอร์ด)
ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ
ขอบคุณครับ