ในบทความนี้จะเป็นการกล่าวถึงวิธีการตรวจสอบหน่วยความจำ (RAM) ที่เหลืออยู่ของบอร์ด เพื่อป้องกันการใช้พื้นที่หน่วยความจำจนเต็มแล้วทำให้โปรแกรมพัง โดยปกติแล้วในการประกาศตัวแปรทุกครั้ง จะมีการจองหน่วยความจำส่วนหนึ่งไว้เพื่อจัดเก็บค่าของตัวแปรนั้นๆ โดยที่พื้นที่ๆ จอง จะมีขนาดตามชนิดของตัวแปรที่จะจัดเก็บ เรามาเขียนโปรแกรมเพื่อหาขนาดของ data type แต่ละชนิดกัน


สวัสดีครับ จากบทความที่แล้วผมได้บอกไปแล้วว่าทำไมเราจึงต้องมีการเพิ่มเซ็นเซอร์วัดอุณหภูมิและความชื้นอีกตัวเข้าไปในโปรเจคของเรา ทั้ง ๆ ที่ในบอร์ดก็มีมาให้แล้ว มาในบทความนี้จะเป็นการปรับปรุงตัวโปรเจคเดิมให้สามารถวัดค่าอุณหภูมิและความชื้นได้ถูกต้องมากยิ่งขึ้น โดยการเพิ่ม DHT22 Sensor เข้าไป อ้าว… ไหนเคยบอกว่า DHT22 มันทำให้เราต้องเสีย Digital Pin ไปฟรี ๆ ทำไมไม่ใช้ BME280 Sensor แทนละ ก็เพราะว่าตอนนี้ผมมีแต่ DHT22 ตัวเดียว ส่วน BME280 เพิ่งได้สั่งซื้อไปรอได้รับเมื่อไหรค่อยนำมาเปลี่ยนครับ

อุปกรณ์

  1. CAT LoRa Starter Kit จำนวน 1 บอร์ด
  2. DS3231 Module จำนวน 1 ชิ้น
  3. Red LED จำนวน 1 หลอด
  4. Green LED จำนวน 1 หลอด
  5. 330 ohm resistor จำนวน 2 อัน
  6. Relay Module (active low relay) แบบ 2 Channel ชนิด 5 โวลต์ จำนวน 1 อัน
  7. เต้าปลักไฟบ้านแบบ 2 ช่องแยกกัน จำนวน 1 อัน
  8. สายไฟ
  9. จอ 0.96 inch IIC Serial Yellow Blue OLED Display Module 1 อัน
  10. DHT22 Sensor 1 อัน

การต่อวงจร


ในบทความนี้จะเป็นการทดสอบว่า ทำไมเราควรต้องเพิ่มเซ็นเซอร์วัดอุณหภูมิและความชื้นให้กับ CAT LoRa Starter Kit ของเราอีกละ ในคู่มือก็บอกแล้วว่ามีการใส่เซ็นเซอร์ HTS221 ซึ่งใช้สำหรับวัดอุณหภูมิและความชื้นมาเรียบร้อยแล้ว นั้นก็เพราะว่าจากที่ได้ลองใช้งานดูพบว่ามันวัดค่าได้ไม่ตรงกับอุณหภูมิอากาศภายนอกเลยนะสิครับ มันให้ค่าที่สูงกว่าค่าที่ควรจะเป็นมาก เรามาพิสูจน์กันดีกว่า

เซ็นเซอร์วัดอุณหภูมิและความชื้น

เซ็นเซอร์วัดอุณหภูมิและความชื้นมีมากมายหลายชนิด เซ็นเซอร์ที่เห็นคนส่วนใหญ่เอามาใช้กับบอร์ด Arduino ก็จะเป็น DHT22 (AM2302)

DHT22 Sensor — เป็นเซ็นเซอร์วัดอุณหภูมิและความชื้น ที่มีราคถูกมาก และให้ค่าที่แม่นยำพอควร แต่ข้อเสียคือมันมีขนาดใหญ่ และต้องเสีย 1 Digital Pin ให้กับเซ็นเซอร์ตัวนี้

ถ้า Digital Pin เราเหลือก็ไม่มีปัญหาอะไร แต่ถ้าเราไม่อยากเสียละจะทำยังไงดี ?

BME280 Sensor — เซ็นเซอร์ตตัวนี้ไม่เพียงแต่จะวัดอุณหภูมิ ความชื้นได้เท่านั้น มันยังวัดแรงกดอากาศ (Pressure) ได้อีกด้วย มีความแม่นยำสูงและใช้การเชื่อมต่อแบบ Inter Integrate Circuit (IIC) หรือเรียกว่า I²C ทำให้เราไม่เสียช่อง Digital Pin นั้นเอง

(อุปกรณ์ที่ใช้ I²C ในบทความที่ผ่านมาเราได้ใช้กับ RTC Module (DS3231) และ 0.96 IIC Display)…


สวัสดีครับ บทความนี้จะเป็นการเพิ่มหน้าจอแสดงผลแบบง่าย ๆ ให้กับโปรเจคจากบทความที่แล้วกันครับ ซึ่งหน้าจอแสดงผลในท้องตลาดมีมากมายหลายชนิด หลายขนาด หลายความละเอียด ทั้งแบบแสดงผลได้สีเดียว และแบบแสดงผลได้หลายสี แต่ในบทความนี้เราจะเลือกใช้หน้าจอขนาดเล็กที่ไม่จำเป็นต้องใช้ Digital pin หรือ Analog pin ในตัวบอร์ดมาควบคุมครับ เหตุผลเพราะบอร์ด CAT LoRa Starter Kit นั้นมี pin ให้เราใช้น้อยมาก เอามันไปใช้ทำอย่างอื่นดีกว่าเยอะ

จอแสดงผล


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

Relay Module คืออะไร ?

รีเลย์ คือ อุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าที่เป็นสวิตซ์ตัด-ต่อวงจร โดยการป้อนกระแสไฟฟ้าเข้าไปมีด้วยกันหลายชนิด แต่ในการพัฒนาโปรเจคของเรานี้เราจะใช้ Relay แบบที่ไม่ได้ดีเลิศนัก แต่ก็พอใช้งานได้ ราคาไม่แพง ถูกมาก ๆ โดยที่นิยมใช้จะมีด้วยกันสองชนิดคือ

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


บทความนี้จะเป็นการประยุกต์การใช้งานโมดูล RTC (DS3231) จากบทที่แล้ว โดยเราจะเขียนโปรแกรมกำหนดช่วงเวลาเริ่มต้นและสิ้นสุดสำหรับการเปิด-ปิดหลอดไฟ LED โดยช่วงเวลาการเปิด-ปิดจะถูกส่งมาจากเครือข่าย LoRa by CAT

ความต้องการของระบบ

ตั้งเวลาเปิด-ปิดหลอดไฟ LED ผ่านเครือข่าย LoRa by CAT ได้

อุปกรณ์

  1. CAT LoRa Starter Kit
  2. DS3231 Module
  3. Red LED
  4. Green LED
  5. 330 ohm resistor

การต่อวงจร


สวัสดีครับ ในบทความนี้เราจะมาเพิ่ม Real Time Clock (RTC) ให้แก่บอร์ด CAT LoRa Starter Kit กันครับ

Real Time Clock (RTC) คืออะไร ?

เป็นอุปกรณ์ที่ให้ค่าเวลาตามจริง ทำงานโดยการจับสัญญานนาฬิกาที่ได้มาจาก Crystal มีถ่านสำรองมาให้เพื่อให้สามารถบันทึกเวลาได้ถึงแม้ว่าจะไม่มีไฟเลี้ยงมาที่ตัวบอร์ด ทำให้ไม่ต้องตั้งเวลาใหม่ทุกครั้ง โมดูล RTC นี้จำเป็นอย่างยิ่งกับการใช้งานที่ต้องมีการบันทึกเวลา (Time Stamp) หรือมีการทำงานที่เกี่ยวพันกับเวลาจริง เช่น การตั้งเวลาเปิดปิด Relay Module เป็นต้น

ความจริง Adafruit Feather M0 มีตัวจับเวลาอยู่แล้ว เช่นการใช้ฟังก์ชัน millis() เป็นต้น แต่การประมวลผลคำสั่งจะทำงานแบบ อนุกรม (Serial) คือ ทำทีละบรรทัด ทำให้การทำงานของคำสั่งจับเวลาจะถูกรบกวนจากการประมวลผลคำสั่งอื่น ๆ ไปด้วย เวลาที่ได้จากการใช้คำสั่งนี้เลยไม่สามารถนำมาเป็นเวลาตามจริงที่ต้องการบันทึกไปพร้อมกับค่าอื่น ๆ ที่ต้องการวัดได้ ดังนั้น ในการประยุกต์ใช้กับงานที่ต้องการเวลาที่แม่นยำ และสามารถบอก วันที่ เดือน ปี ชั่วโมง นาที วินาที จึงต้องใช้อุปกรณ์ที่ทำหน้าที่จับเวลาแยก

DS3231 เป็น RTC Module ที่มีข้อดีคือ มีการชดเชยการเปลี่ยนแปลงของสัญญาณนาฬิกา เนื่องจากการเปลี่ยนแปลงของอุณหภูมิแวดล้อมด้วย หรือก็คือ เวลาที่อุณหภูมิเปลี่ยน สัญญาณนาฬิกาจาก Crystal ก็เปลี่ยน ทำให้เวลาก็เพี้ยนไปด้วย แต่โมดูลนี้ได้ทำการวัดค่าอุณหภูมิพร้อมทั้งชดเชยความเปลี่ยนแปลงนี้ไปด้วยแล้ว ทำให้เวลาที่ได้มีความแม่นยำสูงมาก อีกทั้งยังใช้การเชื่อมต่อแบบบัส I2C ทำให้ง่ายต่อการใช้งานมาก…


สวัสดีครับ ในบทความนี้ผมจะแสดงตัวอย่างการทำไฟกระพริบครับ แต่ไฟกระพริบนี้เราจะทำกันในฟังก์ชัน Setup() เพื่อแสดงสถานะการเชื่อมต่อ LoRa โดยจะให้ไฟ LED สีแดง กระพริบ ทุกๆ 1 วินาที ขณะกำลังเชื่อมต่อ LoRa และดับลงเมื่อการเชื่อมต่อเสร็จสิ้น โดยใช้ Timer /Counter (TC) ในการทำครับ

Timer/Counter คืออะไร?

Timer/Counter เป็นส่วนประกอบหนึ่งของไมโครคอนโทรลเลอร์ มีหน้าที่จัดการเกี่ยวกับการทำงานที่เป็นคาบเวลา (interval) โดยการทำงานดังกล่าว จะทำงานด้วยฮาร์ดแวร์และเป็นอิสระกับการประมวลผล จึงช่วยลดภาระการประมวลผลและมีความแม่นยำมากกว่าการทำงานด้วยซอฟแวร์

อุปกรณ์ที่จำเป็น

  1. CAT LoRa Starter Kit
  2. Red LED
  3. Green LED
  4. 330 ohm resistor

การต่อวงจร


สวัสดีครับ ในตอนที่แล้วผมได้อธิบายการสร้างไลบรารี CAT LoRaไว้ใช้เองแบบง่าย ๆ ในบทความนี้เราจะมาทำการเพิ่มการอ่านอุณหภูมิ (Temperature) และความชื้นในอากาศ (Humidity) เนื่องจากในบอร์ด CAT LoRa Starter Kit ได้มีการใส่เซนเซอร์ HTS221 ไว้ให้แล้ว โดยเราจะนำไลบรารี่ที่ชื่อ SmartEverything HTS221 มาใช้ใน CAT LoRa Library ที่เราได้สร้างไว้

ติดตั้งไลบรารี่ SmartEverything HTS221

โดยไปที่ Manage Libraries แล้วคนหาไลบรารี่ชื่อ SmartEverything HTS221 จากนั้นทำการติดตั้งจนเสร็จ


จากบทความที่แล้วเราได้ลองสร้าง Library ง่าย ๆ กันไปแล้ว มาในบทความนี้จะเป็นการนำเอาโค๊ดจากบทความใน ตอนที่ 2 มาแปลงให้เป็น Library กันครับ

ออกแบบ

จากโค๊ดโปรแกรมเดิมจาก ตอนที่ 2 จะพบว่าส่วนหลัก ๆ ของการทำงานจะประกอบด้วย 5 ส่วนที่สำคัญคือ

  1. การกำหนดค่าตั้งต้นเช่น DEV_EUI, DEV_ADDR, NWKS_KEY, APPS_KEY และ LoRa Class
  2. ฟังก์ชั่นในการตั้งค่าความถี่สำหรับใช้ในการเชื่อมต่อกับเครื่อข่ายฯ
    ( void Set_LoraConfig(void) )
  3. ฟังก์ชั่นสำหรับการกำหนดค่าพื้นฐาน และการเชื่อมต่อกับเครือข่ายฯ
    ( void Set_LoraConfigABP_A(void) )
  4. ฟังก์ชั่นสำหรับส่งข้อมูลไปยัง Network Server ผ่านเครือข่ายฯ
  5. ฟังก์ชั่นสำหรับรับข้อมูลจาก Network Server ผ่านเครือข่ายฯ

ดังนั้นเราสามารถออกแบบ Class Diagram ของ Library นี้ได้เป็นดังนี้

CatLoRa Class//Attributes
-devEui:String
-devAddr:String
-nwksKey:String
-appsKey:String
//Methods +begin(baudRate: int):void -freqLoraConfig():void +joinABP(loraClass:String, devEui:String, devADDR:String, nwksKey:String, appsKey:String):void +transmit(port:int, payload:String):void +receive():String +getPortReceive(dataFromReceive:String):int +getPayloadReceive(dataFromReceive:String):String…

Choonewza

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