CAT LoRa Starter Kit ตอนที่ 9 เปิด-ปิดควบคุมเครื่องใช้ไฟฟ้า ผ่านเครือข่าย LoRa IoT by CAT

Choonewza
Choonewza
Jan 25 · 4 min read
Image for post
Image for post

สวัสดีครับ ในบทความนี้จะเป็นการนำโปรแกรมจากบทความที่แล้วมาเพิ่ม Relay Module เพื่อทำปลักไฟที่สามารถตั้งเวลาเปิด-ปิดได้จากเครือข่าย LoRa IoT by CAT

Relay Module คืออะไร ?

1.General Relay — อุปกรณ์ที่ทำหน้าที่เป็นสวิตซ์ตัด-ต่อวงจร โดยใช้แม่เหล็กไฟฟ้า ซึ่งปกติถ้ามีการจ่ายไฟเข้าที่ตัวรีเลย์ (Relay) จะทำให้ขดลวดเหนี่ยวนำหน้าสัมผัสติดกัน จึงมีสถานะปิดวงจร (Closed Circuit) แต่ถ้าหากไม่มีการจ่ายไฟให้ รีเลย์ (Relay) ขดลวดเหนี่ยวนำหน้าสัมผัสไม่ติดกัน จะมีสถานะเปิดวงจร (Open Circuit) ข้อดีคือบำรุงรักษาง่าย ราคาไม่แพง ข้อเสียคือการตัด-ต่อแต่ละครั้งจะเกิดเสียงดัง เพราะเป็นการตัดต่อแบบอาศัยกลไกแมคคานิคในการทำงาน อีกทั้งหน้าสัมผัสของ Relay ค้าง และเสียง่าย

Image for post
Image for post
General Relay — แบบในรูปรองรับไฟฟ้ากระแสสลับได้ 10A

2.Solid State Relay (SSR) — หรือตัวย่อ SSR คืออุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าที่เป็นสวิตซ์ ที่ไม่ใช้หน้าสัมผัสในการตัด-ต่อวงจร โดยใช้เทคโนโลยีของ เซมิคอนดักเตอร์ (Semiconductor) ที่ไม่มีส่วนเคลื่อนที่ จึงไม่มีเสียงในขณะเวลาตัด-ต่อของหน้าสัมผัส (Contact) มีอายุการใช้งานยาวนาน แต่ข้อเสียคือเมื่อใช้งานต่อเนื่องนานๆ จะทำให้เกิดความร้อนขึ้นและพังได้

Image for post
Image for post
Solid State Relay (SSR) — แบบในรูปรองรับไฟฟ้ากระแสสลับได้ 2A

อุปกรณ์

  1. DS3231 Module จำนวน 1 ชิ้น
  2. Red LED จำนวน 1 หลอด
  3. Green LED จำนวน 1 หลอด
  4. 330 ohm resistor จำนวน 2 อัน
  5. Relay Module (active low relay) แบบ 2 Channel ชนิด 5 โวลต์ จำนวน 1 อัน
  6. เต้าปลักไฟบ้านแบบ 2 ช่องแยกกัน จำนวน 1 อัน
  7. สายไฟ

การต่อวงจร

Image for post
Image for post
การต่อวงจรอุปกรณ์

จากภาพจะเห็นว่าเรามีการดัดแปลงสาย micro usb เพื่อให้สามารถจ่ายไฟ 5 โวลต์ เข้าไปยัง Relay Module ได้ เพราะ CAT LoRa Starter Kit จ่ายไฟได้สูงสุดเพียง 3 โวลต์เท่านั้น

Image for post
Image for post
สายไฟภายในสาย Micro USB
Image for post
Image for post
ทดสอบสายสีแดง(+) สายสีดำ (-)
Image for post
Image for post
การแยกสายไฟมาเข้ากับ Relay

มีวิธีการจ่ายไฟ 5 โวลต์ อีกวิธีคือการใช้แหล่งจ่ายไฟภายนอกเช่น mobile adapter แล้วตัดสาย micro usb ออก แล้วสนใสสายแค่ 2 เส้น คือสายสีแดงเป็นขั้ว (+) และสายสีดำเป็นขั้ว (-) ส่วนสายสีขาวและเขียวให้ใช้เทปพันกันไว้เพื่อไม่ให้สายไฟพันกันจนซ็อต จากนั้นต่อสายไฟดังนี้

  • GND ของ Relay → GND ของบอร์ด
  • VCC ของ Relay → สายสีแดง (+)
  • GND ของบอร์ด→ สายสีดำ (-)

เพียงเท่านี้เราก็จะใช้งาน Relay 5 โวลต์ได้

*** ถ้ามันยากไปแนะนำให้หาซื้อ Relay 3 โวลต์ จะทำให้เราสามารถนำมาต่อโดยตรงได้เลย 555+

Image for post
Image for post

Library ที่จำเป็น

  1. DS3231 Real-Time Clock : https://github.com/jarzebski/Arduino-DS3231

ออกแบบ Payload Format

Payload (15 bit) = Device Type + StartDateTime + StopDateTime

Device Type (1 bit) : Relay A → 01, Relay B → 02
StartDateTime (7 bit) : 2020–01–24 12:10:59 → 20200124121059
StopDateTime (7 bit) : 2020–01–24 14:30:0020200124143000

เขียนโปรแกรม

ทดลองส่งข้อมูล Downlink จาก LoRa by CAT

  • Relay A เริ่มเปิดเวลา 2020–01–25 09:00:00 ถึง 2020–01–25 18:00:00
    ดังนั้น Payload คือ012020012509000020200125180000
  • Relay B เริ่มเปิดเวลา 2020–01–25 05:10:59 ถึง 2020–01–25 14:30:00
    ดังนั้น Payload คือ022020012505105920200125143000

เราสามารถทดลองส่ง Payload มายัง Node ของเราได้ที่

Test Downlink : https://loraiot.cattelecom.com/portal/home/downlink

Image for post
Image for post
ตั้งเวลาเปิดปิด Relay A
Image for post
Image for post
ตั้งเวลาเปิดปิด Relay B

อธิบายการทำงาน

content-catlora-lab8.ino

RelayModule relayA("Relay A", RELAY_A_PIN);
RelayModule relayB("Relay B", RELAY_B_PIN);

ทำการเปิดใช้งานและตั้งค่าการทำงานเบื้องต้นให้ Relay ทั้งสองตัวผ่านเมท็อด trunOnWhen(…);

String startTimeRelayA = "1970-01-01 00:00:01";
String stopTimeRelayA = "1970-01-01 00:00:01";
String startTimeRelayB = "1970-01-01 00:00:01";
String stopTimeRelayB = "1970-01-01 00:00:01";
RelayModule relayA("Relay A", RELAY_A_PIN);
RelayModule relayB("Relay B", RELAY_B_PIN);
void setup(){ ...// Initialize Relay
relayA.begin();
relayB.begin();
relayA.trunOnWhen(startTimeRelayA, stopTimeRelayA);
relayB.trunOnWhen(startTimeRelayB, stopTimeRelayB);
...}

ฟังก์ชั่น loop() — จากเดิมเราเช็คค่าวันและเวลาเพื่อเปิดหลอดไฟสีเขียว แต่มาคราวนี้เราจะส่งวันที่และเวลาปัจจุบันไปเช็คกับออปเจ็ค relayA และ relayB ผ่านเมท็อด doAction(…);

void loop(){   ...// ----- Check datetime for action -----
relayA.doAction(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
relayB.doAction(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
...}

ฟังก์ชั่น loraReceive() — จะรับค่า Payload จาก Downling มาแตกข้อมูลออกเป็น DeviceType, StartDateTime และ StopDateTime ตาม Format ที่ได้ออกแบบไว้จากนั้นนำค่าที่ได้ไปตั้งค่าการทำงานให้แก่ Relay ตาม Device Type ที่ได้ผ่านเมท็อด doAction(…);

เพียงเท่านี้เราก็จะได้ ปลักไฟฟ้าที่สามารถตั้งเวลาเปิดปิดผ่านเครือข่าย LoRa IoT by CAT ครับ แต่จะสังเกตุเห็นว่าเราสามารถตั้งเวลาการเปิดปิดได้เพียงครั้งเดียวเท่านั้น เราควรจะปรับปรุงเพิ่มให้สามารถสั่งเปิดปิดได้ทันที และตั้งเวลาเปิดปิดแบบทวนซ้ำตามวันได้ตามใจ ซึ่งการจะทำแบบนี้ได้เราต้องออกแบบ Payload ให้รองรับด้วยครับ อีกทั้งเรายังไม่ได้กล่าวถึงในส่วนของการสร้าง Dashboard เพื่อที่เราจะได้ไม่ต้องมาจำ Payload Format เพื่อสั่งงานเพราะใครมันจะจำได้ละ เหอๆ … เอาไว้ในบทความท้าย ๆ ของซีรี่นี้ ผมจะมาสอนวิธีการสร้างครับ

ดาวน์โหลดไฟล์ตัวอย่าง


บทความนี้ก็ขอจบเพียงเท่านี้ครับ ในบทความหน้าจะเป็นการเพิ่มหน้าจอแสดงผลขนาดเล็กกันครับ

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store