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)

 

 

จากนั้นเซฟและทดลองรันด้วยคำสั่ง 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 เข้ามาทำงานในส่วนประมวลผลง่ายๆ ไม่ซับซ้อน ที่สำคัญหรือราคาถูกกว่าครึ่ง (เฉพาะบอร์ด)

 

ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ

ขอบคุณครับ