โปรเจกต์น้ำดี! สร้างเครื่องสแกนธนบัตรบอกเสียง เพื่อผู้พิการทางสายตาด้วย ESP32-CAM

Indian Currency Recognition Using ESP32-CAM
อุปกรณ์สแกนธนบัตรอัจฉริยะที่ใช้ ESP32-CAM ในการวิเคราะห์และบอกจำนวนเงินด้วยเสียงพูด

สวัสดีชาว Maker ทุกคนครับ! 💡 วันนี้เราไม่ได้มาแค่หาทำโปรเจกต์สนุกๆ แต่เราจะมาสร้างเทคโนโลยีที่ **ช่วยเปลี่ยนชีวิตคนได้จริงๆ** ลองจินตนาการดูนะครับ ผู้สูงอายุหรือผู้พิการทางสายตา มักจะใช้วิธีคลำสัมผัสเนื้อกระดาษเพื่อแยกแยะมูลค่าของธนบัตร แต่เมื่ออายุมากขึ้น ความแม่นยำในการสัมผัสก็ลดลง ทำให้เสี่ยงต่อการรับเงินทอนผิดพลาดหรือถูกโกงได้ง่ายมาก

เพื่อแก้ปัญหานี้ วันนี้เราจะพาไปทำโปรเจกต์ "เครื่องตรวจจับและแยกธนบัตร" (Currency Recognition) ที่ทำงานง่ายสุดๆ แค่เอาธนบัตรวางหน้ากล้องแล้วกดปุ่ม ตัวเครื่องจะประมวลผลด้วย AI และ "พูดบอกจำนวนเงินออกมาเป็นเสียง" ผ่านลำโพงได้ทันที! โดยพระเอกของงานนี้คือบอร์ดตัวจิ๋วแต่แจ๋วอย่าง ESP32-CAM ครับ!

ทำไมโปรเจกต์นี้ถึงโคตรเหมาะกับมือใหม่? 🤔

ปกติถ้าพูดถึงการทำ AI ตรวจจับรูปภาพ เราก็ต้องมานั่งถ่ายรูปธนบัตรเป็นร้อยๆ ใบ มานั่งตีกรอบ (Labelling) และเสียเวลาเทรนโมเดลเป็นวันๆ ใช่ไหมครับ? แต่โปรเจกต์นี้ ไม่ต้องเทรนโมเดลเองเลยแม้แต่นิดเดียว!

เพราะเราจะใช้บริการจาก CircuitDigest Cloud API ที่เขาเทรนโมเดล AI มารอไว้ให้แล้วบนเซิร์ฟเวอร์ (ในตัวอย่างเป็นธนบัตรรูปีอินเดีย) หน้าที่ของเรามีแค่เขียนโค้ดให้ ESP32-CAM ถ่ายรูป แล้วโยนไฟล์ขึ้น Cloud ผ่าน Wi-Fi พอ Cloud คืนค่ากลับมาว่าแบงก์อะไร เราก็แค่สั่งให้บอร์ดไปดึงไฟล์เสียงจาก Google Text-to-Speech (TTS) มาพูดออกลำโพง จบปิ๊ง!

💡 Maker's Tip: เนื่องจากบอร์ด ESP32 ไม่มีกำลังขับเสียงที่ดังพอ เราจึงต้องใช้โมดูล PAM8403 (Audio Amplifier) มาช่วยขยายสัญญาณเสียงก่อนส่งเข้าลำโพง เพื่อให้เสียงพูดดังฟังชัดครับ!

หากเพื่อนๆ อยากประกอบโปรเจกต์ดีๆ แบบนี้ แวะมาช้อป บอร์ด ESP32-CAM, โมดูลขยายเสียง PAM8403, ลำโพงตัวจิ๋ว, และปุ่มกด ได้ที่ Globalbyte Shop เลยครับ! ของพร้อมส่ง ทัก LINE OA มาปรึกษาแอดมินได้ตลอดเลยครับ!

การต่อวงจรและสเปกที่ใช้ ⚙️

การต่อสายในโปรเจกต์นี้เรียบง่ายมากครับ แค่เชื่อมต่อโมดูลต่างๆ เข้ากับพินของ ESP32-CAM ตามนี้เลย:

ขาพินบน ESP32-CAM เชื่อมต่อไปยัง หมายเหตุ
GPIO 2 ปุ่มกด (Push button) เพื่อสั่งถ่ายภาพ (เขียนโค้ดใช้โหมด INPUT_PULLUP)
GPIO 4 (หรือ 12) ขา Audio IN ของ PAM8403 ส่งสัญญาณเสียง (PWM) ไปยังวงจรขยาย
5V และ GND VCC & GND ของ PAM8403 เพื่อจ่ายไฟเลี้ยงให้โมดูลขยายเสียงทำงาน
Output ของ PAM8403 ลำโพง 8 โอห์ม (Speaker) ขับเสียงให้ดังออกมา

⚠️ คำแนะนำเรื่องกล้องและการเชื่อมต่อ (Troubleshooting)

ปัญหาที่เจอบ่อยคือกล้องเบลอหรือค้างตอน Boot ครับ แนะนำให้ใช้แหล่งจ่ายไฟ (Power Supply) ขนาด 5V / 2A เต็ม เพื่อให้บอร์ดและลำโพงทำงานได้เสถียรที่สุด และควรวางกล้องให้ห่างจากธนบัตรประมาณ 10-15 ซม. พร้อมมีแสงสว่างส่องถึง เพื่อให้ AI บน Cloud ทายผลได้แม่นยำที่สุดครับ!

ผังการต่อสายวงจร (Circuit Diagram) 🔌

ESP32-CAM Indian Currency Recognition Circuit Diagram

การจัดวางฮาร์ดแวร์เพื่อความนิ่ง 📸

Hardware Setup on a stand
ควรออกแบบแท่นวางกล้องให้มั่นคง (ใช้ บริการ 3D Print ของร้านเราช่วยได้นะ!) เพื่อป้องกันภาพสั่นเบลอขณะสแกน

วิดีโอสาธิตการทำงานจริง 🎬

ระบบ CircuitDigest Cloud สำหรับทดสอบ API 🌐

CircuitDigest Cloud Home Page Try API Section Tested Image with API
เราสามารถอัปโหลดภาพเข้าหน้าเว็บเพื่อปรับความแม่นยำ (Confidence level) และทดสอบโมเดลได้ฟรีก่อนเขียนโค้ดครับ

ตัวอย่างโค้ด: การถ่ายภาพและโยนขึ้นคลาวด์ 💻

นี่คือส่วนของโค้ดหลักที่สั่งให้ ESP32-CAM ถ่ายรูป (UXGA Format) แล้วยิง HTTPS POST ไปที่ Server:

// การตั้งค่าคุณภาพของกล้อง
cfg.frame_size   = FRAMESIZE_UXGA; // ความละเอียดภาพสูง
cfg.jpeg_quality = 8;              // ย่อขนาดไฟล์แต่ยังคงความคมชัด
cfg.fb_count     = 2;
cfg.fb_location  = CAMERA_FB_IN_PSRAM;
sensor_t* s = esp_camera_sensor_get();
s->set_sharpness(s, 2); // เพิ่มความคมชัดเพื่อให้ AI อ่านง่ายขึ้น

// การส่งข้อมูลรูปภาพขึ้นไปยัง API (CircuitDigest Cloud)
client.printf(
 "POST %s HTTP/1.1\r\n"
 "Host: %s\r\n"
 "X-API-Key: %s\r\n"
 "Content-Type: multipart/form-data\r\n",
 serverPath, serverName, API_KEY);
client.write(buf, len);
      

ตัวอย่างโค้ด: การดึงเสียงพูดจาก Google TTS 🔊

พอคลาวด์ตอบกลับมาว่ามันคือแบงก์อะไร เราก็จะโยนคำนั้นไปให้ Google เปลี่ยนเป็นเสียง (Text-to-Speech) ครับ:

// ดึงเสียงอ่าน MP3 จากเซิร์ฟเวอร์แปลภาษาของ Google
String path = "/translate_tts?ie=UTF-8&q=" + encoded + "&tl=en&client=tw-ob";
WiFiClient httpClient;
httpClient.connect("translate.google.com", 80); 

// ฟังก์ชันลำดับการทำงาน (ถ่ายรูป -> โยนเข้า API -> เล่นเสียง)
void detectCurrency() {
 camera_fb_t* fb = esp_camera_fb_get();
 String currency = sendImageToAPI(fb->buf, fb->len);
 playMP3(mp3Buf, mp3Len);
}
      

ผลลัพธ์ผ่านหน้าจอ Serial Monitor 🖥️

Uploading code to ESP32 Serial Monitor Output Data
บนหน้าจอคอมพิวเตอร์จะรายงานทันทีว่าตรวจพบแบงก์อะไร พร้อมความมั่นใจ (Confidence) กี่เปอร์เซ็นต์ ก่อนที่จะพูดออกลำโพง
*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากโปรเจกต์ต่างประเทศ โปรเจกต์นี้เป็นการนำร่องด้วยโมเดลธนบัตรอินเดีย และจำเป็นต้องใช้เครือข่ายอินเทอร์เน็ตที่เสถียรในการทำงาน หากต้องการประยุกต์ใช้กับสกุลเงินอื่น อาจต้องมีการฝึกโมเดล AI ใหม่เพิ่มเติม แนะนำให้ศึกษาโค้ดและการตั้งค่าอย่างละเอียดจาก ลิงก์อ้างอิงต้นฉบับ ก่อนนำไปสร้างใช้งานจริงครับ

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี