ESP32 สร้างระบบนับคะแนนอัตโนมัติ ทำไมความโปร่งใสถึงสำคัญ
เรียนรู้วิธีสร้างระบบนับคะแนนแบบดิจิทัลอัตโนมัติด้วยไมโครคอนโทรลเลอร์ ESP32 จอแสดงผล TM1638 และควบคุมผ่าน Android Smartphone ด้วย Bluetooth
ภาพรวม
บทความนี้เป็นคู่มือเชื่อมต่อเพื่อสร้างระบบนับคะแนนแบบดิจิทัลที่ใช้งานได้จริง โปรเจคนี้เหมาะสำหรับ:
- กีฬาและการแข่งขัน (ฟุตบอล วอลเลย์บอล บาสเกตบอล)
- การแข่งขันเกม Esports หรือ Arcade
- การเลือกสรรแบบโหวต (งาน บันเทิง)
- โครงการเรียนการสอนหรือ STEM Education
- โครงการสร้างความรู้เบื้องต้นเรื่อง IoT และ Embedded Systems
ระบบนี้ใช้ไฟ LED แบบ 7-segment display ที่สามารถแสดงตัวเลขได้ชัดเจน อ่านได้ง่าย และสามารถควบคุมได้ผ่าน Android Smartphone ด้วย Bluetooth Wireless
อุปกรณ์ที่ต้องใช้
ขั้นแรก คุณจะต้องเตรียมอุปกรณ์ดังต่อไปนี้:
1. ESP32 Microcontroller
บอร์ดคอมพิวเตอร์ขนาดเล็ก ติดตั้ง Bluetooth & WiFi ประมาณ 200-400 บาท
2. TM1638 Module
บอร์ดควบคุมจอ LED 7-segment display 8 หลัก พร้อมปุ่ม 8 ตัว ประมาณ 150-250 บาท
3. Jumper Wires
สายไฟสำหรับเชื่อมต่ออุปกรณ์ต่างๆ ประมาณ 50-100 บาท
4. USB Cable (Micro)
สำหรับให้ไฟฟ้าและอัปโหลดโปรแกรมให้กับ ESP32 ประมาณ 30-50 บาท
5. Power Supply (Optional)
หม้อแปลงไฟ 5V สำหรับให้ไฟระบบเมื่อต้องการใช้งานต่อเนื่อง ประมาณ 100-200 บาท
6. Smartphone + Android App
โทรศัพท์ Android สำหรับควบคุมผ่าน Bluetooth (ฟรี)
7. Arduino IDE
โปรแกรมเขียนโค้ด (ฟรี) ดาวน์โหลดจาก arduino.cc
งบประมาณทั้งหมด: ประมาณ 600-1,000 บาท (ไม่รวม Smartphone)
เรื่องราว
โปรเจคนี้เกิดขึ้นเพราะความต้องการสร้างระบบนับคะแนนที่:
- เห็นได้ชัดเจน: จอ 7-segment LED แสดงตัวเลขได้ใหญ่และอ่านได้ไกล
- ควบคุมได้ง่าย: ใช้ Bluetooth กับ Smartphone เพื่อลดปัญหาสายไฟยุ่งๆ
- ราคาประหยัด: ใช้อุปกรณ์ยอดนิยมที่หาซื้อได้ง่ายในท้องตลาด
- ยืดหยุ่นได้: สามารถนำมาปรับเปลี่ยนใช้งานในหลากหลายสถานการณ์
เมื่อเห็นว่าสารัต (ทำให้งาน) จำเป็น ผู้พัฒนาจึงได้สร้างโปรเจคนี้ขึ้น ซึ่งกำลังได้รับความนิยมในวงการ Maker และผู้สนใจ Embedded Systems ทั่วโลก
หลักการทำงาน 7-Segment Display
7-Segment Display เป็นชิ้นส่วนอิเล็กทรอนิกส์ที่ใช้สำหรับแสดงตัวเลข 0-9 และบางตัวอักษรโดยการจุดไฟ LED 7 ตัวในรูปแบบที่กำหนดไว้
โครงสร้าง 7-Segment:
_ (a)
|_| (f,b)
|_| (g)
(e,c)
(d)
ตัวอักษรแต่ละตัว (a ถึง g) คือ LED แยกตัว เมื่อเปิด-ปิดต่างๆ LED เหล่านี้ก็สามารถแสดงตัวเลขต่างๆ ได้
ตัวอย่าง Hex Values สำหรับตัวเลขต่างๆ:
- 0 = 0x3F (เปิด a,b,c,d,e,f ปิด g)
- 1 = 0x06 (เปิด b,c)
- 2 = 0x5B (เปิด a,b,d,e,g)
- 3 = 0x4F (เปิด a,b,c,d,g)
- 4 = 0x66 (เปิด b,c,f,g)
- 5 = 0x6D (เปิด a,c,d,f,g)
- 6 = 0x7D (เปิด a,c,d,e,f,g)
- 7 = 0x07 (เปิด a,b,c)
- 8 = 0x7F (เปิด ทั้งหมด)
- 9 = 0x6F (เปิด a,b,c,d,f,g)
ความสำคัญของความโปร่งใสในการออกแบบ 7-segment คือ การให้เห็นตัวเลขได้ชัดเจน ถ้า LED บางตัวสลับได้ไม่เต็มที่ หรือมีสีไม่สม่ำเสมอ ตัวเลขก็จะปะปนและอ่านได้ลำบากขึ้น
การเชื่อมต่อวงจร
ขั้นตอนการต่อวงจรระหว่าง ESP32 กับ TM1638:
ESP32 Pin 23 → TM1638 DIO (Data Input)
สำหรับส่งข้อมูล
ESP32 Pin 18 → TM1638 CLK (Clock)
สำหรับการซิงโครไนซ์ (ควบคุมเวลา)
ESP32 Pin 5 → TM1638 STB (Strobe/Chip Select)
สำหรับเลือกและเปิด-ปิดชิ้ป
ESP32 GND → TM1638 GND
ต่อลงดิน (Ground)
ESP32 5V → TM1638 VCC
ให้ไฟบวก
หลังจากต่อวงจรเรียบร้อย ให้ปล่อยไฟของ ESP32 ผ่านพอร์ต USB เพื่อให้แน่ใจว่าระบบทำงานปกติ
โค้ดหลัก
โค้ดพื้นฐานสำหรับควบคุม Scoreboard ทำงานดังนี้:
// Include Libraries
#include <TM1638.h>
#include <BluetoothSerial.h>
// Define Pins
#define DIO 23
#define CLK 18
#define STB 5
// Initialize
TM1638 module(DIO, CLK, STB);
BluetoothSerial SerialBT;
// Score Variables
int player1 = 0;
int player2 = 0;
void setup() {
SerialBT.begin("ESP32_Scoreboard");
module.setupDisplay(true, 7);
displayScore();
}
void loop() {
if (SerialBT.available()) {
String data = SerialBT.readStringUntil('\n');
if (data == "P1+") player1++;
if (data == "P1-") player1--;
if (data == "P2+") player2++;
if (data == "P2-") player2--;
if (data == "R") {
player1 = 0;
player2 = 0;
}
displayScore();
}
}
void displayScore() {
// แสดงคะแนน
// หลักแรก 4 หลัก = Player 1
// หลักสุดท้าย 4 หลัก = Player 2
}
คุณสามารถ:
- ดาวน์โหลด Library ที่จำเป็นจาก GitHub
- ติดตั้ง Arduino IDE สำหรับ ESP32
- อัปโหลดโค้ดให้กับบอร์ด
- ทดสอบการเชื่อมต่อ Bluetooth ด้วย Smartphone
ที่มาโค้ดเต็มรูปแบบ:
เครดิต
โปรเจคนี้อิงมาจากการรวมความรู้จากหลายแหล่ง:
- Hackster.io Project: Scoreboard with ESP32 and TM1638 with BLE Android App
- 3D Models: Thingiverse - Scoreboard 3D Model
- Bluetooth Guide: ESP32 BLE Android Arduino IDE Guide
- 7-Segment Display Info: Wikipedia - Seven-segment Display
วิดีโอการสาธิต
ดูตัวอย่างระบบทำงานจริง:
ต้องการสร้างระบบนับคะแนนของคุณเองหรือต้องการความรู้เพิ่มเติมเกี่ยวกับ ESP32
เรียนรู้เพิ่มเติมที่ Globalbyteshopสอบถามเพิ่มเติมได้ที่กลุ่ม Line: คลิกที่นี่