CAT LoRa Starter Kit ตอนที่ 10 หน้าจอแสดงผลขนาดเล็ก

Image for post
Image for post

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

จอแสดงผล

Image for post
Image for post

เราเลือกใช้ 0.96 inch IIC Serial Yellow Blue OLED Display Module ความละเอียด 128x64 รองรับการแสดงผลสีเหลือง และสีน้ำเงิน โดยเชื่อมต่อกับบอร์ดผ่าน I2C และใช้ไดร์เวอร์ SSD1306 ในการแสดงผลภาพ

อุปกรณ์

  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

การต่อวงจร

ให้ต่อ SDA และ SCL ของ 0.96 Display กับบอร์ด แบบขนาด ดังนั้นในโปรเจคนี้เราจะมีอุปกรณ์ชนิด I2C จำนวน 2 ตัวคือ 0.96 Display และ DS3231

Image for post
Image for post

Library ที่จำเป็น

  1. SmartEverything HTS221 : https://github.com/ameltech/sme-hts221-library
    (เนื่องจากมีการใช้ CatLoRaS76S จากตอนที่ 4 )
  2. DS3231 Real-Time Clock : https://github.com/jarzebski/Arduino-DS3231
  3. Adafruit_SSD1306 : https://github.com/adafruit/Adafruit_SSD1306
  4. Adafruit-GFX : https://github.com/adafruit/Adafruit-GFX-Library

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

ผลลัพธ์

ด้านบนสุดจะแสดงวันเวลาปัจจุบัน บรรทัดต่อมาแสดง ุณหภูมิ และความชื้น ตามลำดับ

Image for post
Image for post

เมื่อมีการส่งค่าออกไป จะมีการแสดง port และ payload ที่ส่งออกไปด้วย

Image for post
Image for post

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

ในการเขียนโปรแกรมแสดงผลบนหนาจอ 0.96 Display ผมได้สร้างไฟล์ Screen.h และ Screen.cpp เพื่อใช้แสดงผลโดยเฉพาะ ทำให้ส่วนของโค๊ดการแสดงผล แยกออกจากโค๊ดหลัก คล้าย ๆ การทำ View ในการเขียนโปรแกรมแบบ MVC นั้นเอง ซึ่งการเขียนแบบนี้มีข้อดีคือทำให้โค๊ดในส่วนของโค๊ดหลักไม่เยอะ ง่ายต่อความเข้าใจ และเวลาที่เราต้องการเปลี่ยนประเภทจอแสดงผลเป็นแบบอื่นเช่น จอ TFT เราก็เพียงแค่สร้างไฟล์โค๊ดใหม่ชื่อ Screen.h และ Screen.cpp ที่ทำงานกับหน้าจอ TFT แล้วนำมาแทนไฟล์เดิมได้เลย

ไฟล์ content-catlora-lab10.ino

ทำการ Include ไฟล์ Screen.h แล้วทำการสร้างออปเจ็คของคลาส Screen ชื่อ display

include "Screen.h"Screen display;

ก่อนการใช้งานเราต้องเปิดใช้งานก่อนด้วยคำสั่ง display.begin(); ภายในฟังก์ชั่น setup() แล้วเวลาเราต้องการแสดงข้อความอะไรบนหน้าจอเราก็ไป implement ใน Screen Class ที่อยู่ในไฟล์ Screen.h และ Screen.cpp แทน

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

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

Written by

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