ESPIno32CAM : Introduction

Introduction to ESPIno32CAM

     ESPIno32CAM คือ บอร์ดที่ทาง ThaiEasyElec พัฒนาขึ้นโดยใช้ ESP32 ร่วมกับกล้อง OV2640 เพื่อให้ผู้ใช้งานสามารถสร้าง Application ที่เกี่ยวกับการถ่ายภาพ และ ประมวลผลภาพได้สะดวกมากยิ่งขึ้น ESPIno32CAM ใช้ Module ESP32Wrover-IB ซึ่งภายในใช้ชิพ ESP32 Dual-Core Tensilica LX6 Microcontroller 32-bit ความเร็ว 240 MHz (600 DMIPS) หน่วยความจำ PSRAM 8 MB และ Flash Memory 16 MB (128 Mbit) เป็นส่วนประมวลผลหลัก และ โมดูลกล้อง CMOS Camera OV2640 ที่สามารถถ่ายถาพความละเอียดสูงสุด 2 Megapixel (1600 x 1200) 

ส่วนประกอบของ ESPIno32CAM

– Camera OV2640 คือ โมดูลกล้อง CMOS Camera ซึ่งสามารถถ่ายภาพได้สูงสุด 2 Megapixel ใช้การเชื่อมต่อแบบ Serial Camera Control BUS (SCCB)
– LED 3.3V คือ LED แสดงสถานะของไฟ 3.3V บนบอร์ด ไฟ LED จะสว่างเมื่อ วงจร Regulator บนบอร์ดทำงาน (จ่าย Logic High ให้ขา EN)
– CP2102N คือ Chip แปลง USB เป็น Serial ใช้สำหรับ Upload Program, Stream Data และ Serial Monitor
– USB Port คือ ช่องต่อสาย USB เพื่อจ่ายไฟ และ เชื่มต่อ ESPino32CAM กับ Computer
– ขา Digital input/output ต่างๆ

          – กลุ่ม POWER มีจำนวน 5 pin ประกอบด้วย    
                    –  GND
                    –  VIN จำนวน 2 pin ใช้สำหรับต่อแหล่งจ่ายไฟ 5VDC จากภายนอก
                    –  EN สำหรับ เปิด/ปิด ไฟบนโมดูล ESPIno32CAM โดยจะทำงานเมื่อเป็น Logic High
                    –  3.3V คือ ไฟ Output จาก Regulator 3.3V บน ESPIno32
          – กลุ่ม SPI มีจำนวน 4 pin ประกอบด้วย 
                    –  IO23 ใช้เป็นขา MOSI
                    –  IO19 ใช้เป็นขา MISO                    
                    –  IO18 ใช้เป็นขา SCK
                    –  IO05 ใช้เป็นขา SS

                    !!!ทั้ง 4 Pin สามารถใช้งานเป็น Digital input/output ได้

          – กลุ่ม I2C มีจำนวน 2 pin ประกอบด้วย

                    –  IO22 ใช้เป็นขา SCL
                    –  IO21 ใช้เป็นขา SDA

!!! เนื่องจาก I2C มีการใช้งานกับ SCCB ของ OV2640 อยู่แล้วจึงไม่สามารถใช้งานเป็น Digital input/output ได้ ควรนำไปใช้กับอุปกรณ์ที่ใช้การเชื่อมต่อแบบ I2C เท่านั้น

          – กลุ่ม Digital IO ทั่วไป
                    –  IO15
                    –  IO02 มีผลกับ Program Mode หากต่อ IO2 กับ อุปกรณ์อื่นที่มี Logic High ในขณะProgram จะทำให้ไม่สามารถเข้าMode Program ได้

– U.FL Antenna Connector คือช่องต่อเสาสัญญาณความถี่ 2.4 GHz สำหรับ Wi-Fi และ Bluetooth

การใช้งานขา EN

          – เปิดใช้งาน ESPIno32CAM ตลอดเวลา โดย Jump ขา EN เข้ากับขา VIN ที่อยู่ติดกัน

          – เปิด/ปิด ESPIno32CAM ด้วย Switch  

          – เปิด/ปิด ESPIno32CAM โดยสั่งงานจาก Microcontroller

 การเชื่อมต่อเสาอากาศ

 วิธีติดตั้ง Arduino IDE

          1. Download Arduino IDE จาก https://www.arduino.cc/en/main/software

          2. เลือกดาวน์โหลดไฟล์ตามระบบปฏิบัติการที่ใช้ สำหรับ Windows ควรใช้ Windows 7 ขึ้นไป และแนะนำให้ใช้แบบ ZIP file for non admin install ที่แตกไฟล์แล้วใช้งานได้ทันที
                    -สำหรับ Mac ใช้งานได้ตั้งแต่ Mac OS X 10.7 ขึ้นไป แตกไฟล์แล้วลากไฟไว้ใน Application แล้วเรียกใช้งาน
                    – สำหรับ Linux ให้เลือกตรงกับรุ่นที่ใช้ว่าเป็น 32-bit 64-bit สำหรับคอมพิวเตอร์ x86 / x86-64 หรือเลือก ARM หากใช้บนบอร์ด Embedded OS ที่ใช้ซีพียู ARM อย่าง Raspberry Pi แตก ไฟล์แล้วใช้งานได้ทันที
                   * ไม่แนะนำให้ใช้ตัวติดตั้งที่เป็น Hourly Builds เนื่องจากเป็นตัว BETA อาจเปิดปัญหากับการใช้งาน
          3. ให้แตกไฟล์เป็นไดเรกทอรี arduino-1.8.x แนะนำให้วางไว้ด้านนอกสุดของไดรฟว์หรือพาร์ติชัน ตัวอย่างเช่น C:\ arduino-1.8.x หรือ D:\arduino-1.8.x โดยภายในจะมีโครงสร้างดังรูป

           4. เปิดโปรแกรม Arduino IDE จากไฟล์ ไฟล์ arduino.exe

 การติดตั้งชุดพัฒนา ESPino32CAM บนแพลตฟอร์ม Arduino

     การพัฒนา ESPino32CAM ด้วย Arduino จะใช้ชุดพัฒนา arduino-esp32 ที่ทาง Espressif Systems จัดทำขึ้นมา อยู่บนพื้นฐานของ ESP-IDF สามารถเข้าไปดูรายละเอียดได้ที่ https://github.com/espressif/arduino-esp32 โดยมีนักพัฒนาที่เชี่ยวชาญตั้งแต่การพัฒนา Arduino สำหรับ ESP8266 มาเป็นแกนหลัก ร่วมกับนักพัฒนาบอร์ด ESP32 รุ่นต่างๆ และผู้พัฒนาซอฟต์แวร์ไลบรารี่เข้าเป็น contributors กว่า 130 ชื่อผู้ใช้ ชุดพัฒนา Arduino-esp32 ปล่อยให้ดาวน์โหลดไปทดสอบและใช้งานมาอย่างต่อเนื่องโดยติดตั้งผ่านการดาวน์โหลดไฟล์ตั้งต้นและรันสคริปต์ติดตั้งคอมไพล์เลอร์เพิ่มเติม
ปัจจุบัน (ก.ค. 2018) ชุดพัฒนาได้ออก Stable Release v1.0.0 ที่สามารถติดตั้งผ่าน Board Manager ได้เพื่อความสะดวกในการใช้งานและอัพเดท มีบอร์ด ESP32 ในลิสต์กว่า 40 บอร์ด

การติดตั้ง arduino-esp32 ผ่าน Board Manager ทำได้ดังนี้

           1. เลือกเมนู File > Preferences หรือกดคีย์ลัด Ctrl + Comma

           2. ในช่อง Additional Boards Manager URLs ใส่ https://dl.espressif.com/dl/package_esp32_index.json แล้วกดปุ่ม OK เพื่อบันทึกและปิดหน้าต่าง Preferences

           3. เลือกเมนู Tools > Board:…. > Boards Manager

           4. เมื่อหน้าต่าง Boards Manager ปรากฎขึ้นมา รอให้โปรแกรมดาวน์โหลดอัพเดทรายการของบอร์ดสักครู่ จากนั้นพิมพ์ค้นหา esp32 ลงในช่องจะแสดงรายการ esp32 by Espressif Systems ให้เลือก แล้วกดปุ่ม Install
!!!! Update 6/17/2019 แนะนำให้ใช้ Version 1.0.1 เนื่องจาก 1.0.2 ยังมีปัญหาเกี่ยวกับส่วน face Detect

           5. ในเมนู Tools > Board:… จะแสดงรายการของบอร์ด ESP32 ขึ้นมา 

การติดตั้งไดรฟเวอร์ USB-to-UART บอร์ด ESPino32CAM

               บอร์ด ESPino32 ใช้ USB-to-UART ของ Silicon Labs เบอร์ CP2104 สามารถดาวน์โหลดและติดตั้งไดรฟเวอร์ได้ตามขั้นตอนดังนี้

            1. ไปที่เว็บไซต์ https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

            2. สำหรับ Windows 10 ให้เลือกตัว Windows 10 Universal เลือก Download VCP (2.3 MB)สำหรับ Windows 7 / 8 / 8.1 เลือก Download VCP (5.3 MB) (Default)

            3.เมื่อติดตั้งไดรฟเวอร์เรียบร้อยแล้วเสียบสาย micro USB เข้ากับคอมพิวเตอร์ บอร์ดจะแสดงเป็น COM Port ใน Devices Manager

            4. ใน Arduino IDE เมนู Tools > Port เลือก Serial ports ให้ตรงกับพอร์ตที่แสดงขึ้นมา

ตั้งค่า Arduino IDE เพื่อใช้งานกับ ESPIno32CAM

            1. เปิด Arduino IDE เมนู Tools เลือก Board ESP32 Dev Module

            2.กลับไปที่ เมนู Tools แล้วตั้งค่าดังนี้

                        – ตั้งค่า Flash Size = 4MB(32Mb)

                        – ตั้งค่า Partition Scheme: “Huge APP (3MB No OTA)”

                        – ตั้งค่า PSRAM : “Enabled”

                        – ตั้งค่า Port: ให้ตรงกับช่อง Comport ของ ESPIno32CAM 

ติดตั้ง   Library ESPIno32CAM 

                        Libraly ESPIno32CAM คือ Libraly สำหรับใช้งานร่วมกับบอร์ด ESPino32CAM โดยรวมเอา Libraly พื้นฐานที่เกี่ยวกับการควบคุม CMOS Camera และ การประมวลผลภาพ เช่น Face detect และ Face Recognition เดิมทีมีอยู่ใน ESP32 Packet มาทำให้ใช้งานง่ายยิ่งขึ้น 

                        – Download Library จาก  https://github.com/ThaiEasyElec/ESPIno32CAM

                        – คลิก Download ZIP File 

                        – เปิด Program ArduinoIDE ไปยัง Menu Sketch > Include Library เลือก Menu Add.ZIP Library…

                        – เลือก File ESPIno32CAM-master.zip ที่ Download มาจาก Github

                        – ไปที่ Menu File > Example จะปรากฏ ตัวอย่างการใช้งานของ Board ESPIno32CAM

โปรแกรม JPG Serial Streaming

       JPG Serial Streaming คือ โปรแกรมที่ทาง ThaiEasyElec สร้างขึ้นเพื่อรับ Data ที่เป็น JPG File ผ่านทาง Serial Port จาก ESPino32CAM แล้วนำภาพมาแสดงผล 

-> โปรแกรม JPG Serial Streaming อยู่ใน Folder Tool ภายใน ESPIno32CAM-master.zip 

จาก  https://github.com/ThaiEasyElec/ESPIno32CAM 

หรือ Download JPG Serial Streaming.exe

ส่วนแสดงผลภาพ

ส่วนแสดงผลภาพจะเริ่มเก็บ data ที่ได้รับทาง Serial ลง Buffer เมื่อพบ 2 Byte ที่เท่ากับ 0xFF,0xD8 (Start of image) จุดเริ่มต้นของ JPG File และ สิ้นสุดการเก็บ Data เมื่อเจอ 0xFF,0xD9 (End of image) จุดสิ้นสุดของ JPG File จากนั้นนำ data ใน Buffer ไปแสดงผลบน Picture Box

ภาพจาก https://en.wikipedia.org/wiki/JPEG

ส่วนแสดงข้อความ

          ส่วนแสดงข้อความ ที่ได้รับจาก Serial โดยจะแสดงผลข้อความที่อยู่ระหว่าง <DBG> และ ปิดท้ายด้วย </DBG> เช่น “<DBG>Hello World </DBG>” จะแสดงข้อความ
“Hello World” หรือ ใช้คำสั่ง printfDebug จาก Libraly ESPino32CAM.h เช่น
cam.printfDebug(“Hello World”); 

ภาพตัวอย่างการทำงาน