ในคลิปวันนี้ พี่จะพาน้องไปเซ็ตอัพเจ้า ESP-CAM กับ Arduino ของตัวเองกัน ไปดูกันเลยว่าทำยังไง!
ESP32 คืออะไรวะ?
ESP32 มันคือชิปไมโครคอนโทรลเลอร์ราคาถูก ไฟน้อย แต่แจ่มมาก เพราะมันมี Wi-Fi และ Bluetooth แบบ Dual-Mode ติดมาอยู่ในตัวเลย
แล้ว ESP32-CAM ล่ะ?
เจ้านี่คือโมดูลกล้องจิ๋วที่ใช้ชิป ESP32-S ราคาประมาณ 10 ดอลลาร์เท่านั้น! นอกจากกล้อง OV2640 แล้ว มันยังมี GPIO ให้ต่ออุปกรณ์เสริม และที่เด็ดคือมีช่องเสียบ microSD card ไว้เก็บรูปหรือไฟล์ต่างๆ ได้อีกด้วย งานนี้จัดไปวัยรุ่น!
รายละเอียดสเปค ESP32-CAM:
- โมดูล Wi-Fi BT SoC ขนาดเล็กจิ๋ว 802.11b/g/n
- CPU 32-bit ไฟต่ำ แต่ใช้เป็นตัวประมวลผลหลักได้
- ความเร็วสัญญาณนาฬิกาสูงสุด 160MHz, กำลังประมวลผลรวมสูงถึง 600 DMIPS
- มี SRAM ในตัว 520 KB, และมี PSRAM ภายนอก 4MB
- รองรับ UART/SPI/I2C/PWM/ADC/DAC
- รองรับกล้อง OV2640 และ OV7670, มี Flash LED ในตัว
- อัพโหลดภาพผ่าน Wi-Fi ได้
- รองรับการ์ด TF (microSD)
- รองรับโหมด Sleep หลายแบบ
- มี Lwip และ FreeRTOS ฝังมาให้
- รองรับโหมดการทำงาน STA/AP/STA+AP
- รองรับเทคโนโลยี Smart Config/AirKiss
- รองรับการอัพเกรดเฟิร์มแวร์ผ่านพอร์ตอนุกรม ทั้งแบบต่อตรงและแบบรีโมท (FOTA)
ฮาร์ดแวร์แฮ็กกิ้ง: ฟลัช ESP32-CAM ผ่าน Arduino Uno
เจ้า ESP32-CAM นี่เป็นโมดูลกล้อง Wi-Fi ราคาถูกที่เทพมาก แต่ว่า... ผู้ผลิต (AI-Thinker) ตัดส่วนสำคัญออกไปเพื่อลดต้นทุน นั่นคือมันไม่มีพอร์ต USB! วิธีมาตรฐานคือต้องซื้อโปรแกรมเมอร์ FTDI/USB-TTL แยก งานนี้พี่จะสอน "แฮ็ก" สุดคลาสสิกของเด็กช่าง/วิศวะ โดยใช้ชิปภายในของ Arduino Uno ธรรมดาๆ นี่แหละมาเป็นสะพานโปรแกรมมิ่ง เลยไม่ต้องซื้อฮาร์ดแวร์เพิ่มให้เปลืองตังค์เลย สู้งานนะน้อง!
บายพาส CH340 / ATmega16U2
รู้มั้ยว่าบอร์ด Arduino Uno จริงๆ แล้วมันมีชิปสองตัวนะ ตัวหลักคือสมอง (ATmega328P) อีกตัวคือชิปแปลง USB-to-Serial ที่อยู่ใกล้ๆ พอร์ตสีเงินนั่นแหละ เราต้องการแค่ชิปแปลง USB-to-Serial ส่วนสมองหลักนั่น... อยากให้มันเงียบไปเลย
- ฆ่า Uno ให้สิ้นซาก: ใช้สายจัมเปอร์ต่อขา
RESETของ Uno เข้ากับGNDโดยตรงเลย วิธีนี้จะทำให้โปรเซสเซอร์หลักของ Uno พังไม่เป็นท่า แปลงบอร์ดทั้งอันให้กลายเป็นตัวแปลง USB-to-Serial ธรรมดาๆ - การต่อสาย RX/TX แบบไขว้: ต่อ Uno เข้ากับ ESP32-CAM โดยตรงเลย
Uno 5V->ESP 5VUno GND->ESP GNDUno TX->ESP U0TXUno RX->ESP U0RX(สังเกตนะ: ต่างจากการสื่อสาร Serial ทั่วไป เราต่อ RX เข้ากับ RX และ TX เข้ากับ TX เพราะเรากำลังอัดข้อมูลจากชิปแปลง USB-to-Serial เข้าไป ไม่ได้คุยกับ Arduino เอง)
บังคับโหมดแฟลช (GPIO 0)
ESP32-CAM มันไม่รับโค้ดง่ายๆ แค่เสียบสายหรอกนะ มันมีโครงสร้างความปลอดภัยที่เข้มงวดมาก
- ต้องต่อขา
GPIO 0ของ ESP เข้ากับGNDชั่วคราวก่อน ทางคณิตศาสตร์คือดึงขาบูตให้เป็นล่าง (pull low) - กดปุ่ม Reset บนโมดูล ESP ตัวชิปจะตื่นขึ้นมา อ่านค่าขาที่ถูกดึงลง แล้วเข้าสู่ "โหมดบูตโหลดเดอร์ / อัพโหลด"
- กด
Uploadใน Arduino IDE (อย่าลืมเลือกบอร์ดเป็น "AI Thinker ESP32-CAM" ด้วยนะ) - ข้อมูลจาก USB จะไหลผ่านชิปแปลง USB-to-Serial ของ Uno เข้าไปใน ESP32 ได้อย่างราบรื่น!
- พออัพโหลดขึ้นถึง 100% แล้ว ให้ถอดสายจัมเปอร์ที่
GPIO 0ออก รีเซ็ตบอร์ดอีกที แล้วเว็บเซิร์ฟเวอร์ของกล้องก็จะตื่นมาทำงานแบบสุดพลัง!
ชุดเครื่องมือของนักแฮ็ก
- Arduino Uno (ต้องเป็นรุ่นที่ถอดชิป ATmega328P ออกได้ หรือใช้เทคนิค RESET ต่อ GND)
- โมดูล ESP32-CAM AI-Thinker
- สายจัมเปอร์ Male-to-Female
- (โปรทิป: ESP32-CAM กินไฟแรงมากตอนส่งสัญญาณวิดีโอ ขา 5V บน Uno อาจจ่ายไฟไม่พอ ถ้าสัญญาณวิดีโอหลุดบ่อยๆ แนะนำให้ใช้แหล่งจ่ายไฟภายนอก 5V 2A โดยเฉพาะจะดีที่สุด!)