โลกของ Internet of Things : IoT มีส่วนของเซ็นเซอร์วัดค่า อ่านค่า ของสภาพแวดล้อมต่าง ๆ เป็นส่วนสำคัญ เช่น วัดระดับน้ำในแม่น้ำเพื่อใช้ในการวางแผนจัดการน้ำ, วัดอุณหภูมิ/ก๊าซในป่า เพื่อแจ้งเตือนไฟไหม้ป่า, เซ็นเซอร์วัดการสั่นสะเทือนติดตั้งลงเครื่องจักรเพื่อคาดการความผิดปกติและวางแผนซ่อมบำรุงล่วงหน้า เป็นต้น นอกจากตัวเซ็นเซอร์ที่ดี จะต้องมีอุปกรณ์อ่านค่าจากเซ็นเซอร์แล้วบันทึก/ส่งต่อค่าเพื่อการแจ้งเตือน/วิเคราะห์/ประมวลผลข้อมูลด้วย โดย Tinker C6 เป็นอุปกรณ์ที่ออกแบบมาเพื่องานดังกล่าว
Tinker C6 รองรับการใช้งานร่วมเซ็นเซอร์อุตสากรรมมาตรฐาน RS485 / Modbus, 4-20mA, I2C และ GPIO ซึ่งครอบคลุมเซ็นเซอร์ส่วนที่ถูกผลิตขึ้นมา การเขียนโปรแกรมสั่งงานใช้ Arduino IDE มีโค้ดโปรแกรมตัวอย่างให้พร้อมใช้งาน
Tinker C6 ใช้ ESP32 รุ่น C6 (ESP32-C6) เป็นชิปไมโครคอนโทรลเลอร์หลัก รองรับการเชื่อมต่อ WiFi 6 (คลื่น 2.4GHz), Bluetooth 5, Thread/Zigbee ในตัว รองรับโปรโตคอลเฉพาะอย่าง ESP-NOW ทำให้การเชื่อมต่อกับ Server ทำได้ง่ายผ่านช่องทางที่หลากหลาย ทั้งช่องทาง WiFi ด้วยโปรโตคอล MQTT, CoAP, HTTP, FTP, TCP, UPD, Web Socket และอื่น ๆ รองรับผ่านช่องทาง Bluetooth โดยใช้ Bluetooth Gateway รองรับผ่านช่องทาง Zigbee/Thread ผ่าน Gateway
รูปที่ x กล่อง Tinker C6
ESP32-C6 ใช้ CPU สถาปัตยกรรม RISC-V 32-bit ความเร็ว 160MHz รองรับโหมดประหยัดพลังงานทั้ง Light Sleep และ Deep Sleep ทำให้เหมาะกับการใช้พลังงานจากแบตเตอรี่ รองรับการเชื่อมต่ออุปกรณ์ภายนอกผ่าน UART x2, I2C x2, SPI x2, GPIO, Timer, PWM, RMT และอื่น ๆ การพัฒนาโค้ดโปรแกรมใช้ Arduino IDE, PlatformIO, ESP-IDF โดยผู้ผลิตได้จัดเตรียมสภาพแวดล้อมการพัฒนาซอฟแวร์ (SDK) ไว้อย่างครบครัน มีตัวอย่างโค้ดพร้อมใช้งาน มีการพัฒนา เพิ่มเติมความสามารถ และแก้ไขข้อผิดพลาดของซอฟแวร์อยู่ตลอดเวลา โดยผู้ผลิตรับประกันการอัพเดทซอฟแวร์ (SDK) ต่อเนื่องถึง 10 ปี
รูปที่ x โครงสร้างภายในของ ESP32-C6
อาร์ทรอน ชอป ได้นำความสามารถของ ESP32-C6 มาพัฒนาต่อเป็น Tinker C6 โดยเพิ่มช่องใส่แบตเตอรี่, วงจรชาร์จแบตเตอรี่, วงจรจัดการพลังงานแบตเตอรี่, วงจร Step-Up 12V สำหรับจ่ายไฟเลี้ยงเซ็นเซอร์อุตสาหกรรม, วงจรแปลง RS485 เป็น UART ทำให้รองรับการเชื่อมต่อเซ็นเซอร์ RS485 / Modbus RTU ได้ เพิ่มวงจรแปลงสัญญาณ 4-20mA เป็น I2C ทำให้เชื่อมต่อเซ็นเซอร์ 4-20mA ได้ เพิ่มวงจรจัดการพลังงานและเพิ่มจุดเชื่อมต่ออุปกรณ์ I2C ทั้งรูปแบบเทอมินัลบล็อกต่อสายไฟ และแบบคอนเนคเตอร์ Hot Plug อย่าง Grove ทำให้รองรับเซ็นเซอร์และอุปกรณ์ I2C ทุกประเภท นอกจากนี้ยังรองรับการเชื่อมต่อเซ็นเซอร์ผ่าน GPIO ผ่านโปรโตคอลเฉพาะ เช่น เซ็นเซอร์วัดระยะด้วยคลื่นอัลตร้าโซนิค (HC-SR04 เป็นต้น), เซ็นเซอร์วัดอุณหภูมิและความชื้นแบบ 1-wire (DHT11, DHT22, DS18B20 เป็นต้น), เซ็นเซอร์ทำงานแบบสวิตช์ (เซ็นเซอร์สวิตช์ประตู, ลูกลอยไฟฟ้า, เซ็นเซอร์แม่เหล็ก เป็นต้น)
รูปที่ x ส่วนประกอบของ Tinker C6
ด้วยการออกแบบที่คำนึงถึงการประหยัดพลังงานสูงสุด Tinker C6 รองรับการตัดพลังงานในส่วนที่ไม่จำเป็นบนบอร์ด ประกอบด้วยวงจรตัดการทำงานของ RS485 เมื่อไม่ได้ใช้งาน, วงจรตัดไฟเลี้ยง 12V เพื่อตัดการทำงานของเซ็นเซอร์เมื่อไม่ใช้งาน, วงจรตัดการทำงาน 4-20mA, วงจรตัดการทำงานเซ็นเซอร์ I2C เมื่อรวมกับความสามารถประหยัดพลังงานของ ESP32-C6 อย่าง Deep Sleep Mode กล่อง Tinker C6 สามารถอ่าน และส่งค่าเซ็นเซอร์วัดอุณหภูมิและความชื้นผ่าน MQTT / WiFi ได้นานกว่า 6 เดือน*
*ทดสอบที่แบตเตอรี่ 3600mAh จำนวน 2 ก้อน และใช้เซ็นเซอร์ XY-MD02 ส่งค่าทุก ๆ 15 นาที
รูปที่ x กราฟการใช้พลังงานช่วงส่งข้อมูล (XY-MD02, WiFi, MQTT)
รูปที่ x กราฟการใช้พลังงานช่วงพัก (XY-MD02, WiFi, MQTT)
ลูกค้าที่สั่งซื้อ Tinker C6 ล็อตแรกจะได้รับแบตเตอรี่ 18650 ความจุ 2000mAh จำนวน 2 ก้อน (มี มอก.) ใส่ไปให้ด้วย โดยจะมีกระดาษใส่คั่นไว้ในขั้วบวกของแบตเตอรี่ทั้ง 2 ก้อน ผู้ใช้จำเป็นต้องเปิดฝากล่องด้วยไขควง 4 แฉก แล้วนำกระดาษคั่นขั้วบวกออก (ทั้ง 2 ก้อน) จึงจะสามารถชาร์จ/ใช้ไฟจากแบตเตอรี่ได้
รูปที่ x แบตเตอรี่ 18650 ความจุ 2000mAh มี มอก. ที่แถมไปให้
การชาร์จแบตเตอรี่ใช้การจ่ายไฟผ่านช่อง USB-C โดยกระแสชาร์จสูงสุดอยู่ที่ 500mA และตัดการชาร์จอัตโนมัติเมื่อเต็ม ระยะเวลาในการชาร์จขึ้นอยู่กับความจุรวมของแบตเตอรี่ที่ใส่ ตามสูตร
ความจุแบตเตอรี่รวม / 500mA = ชั่วโมงที่ใช้ชาร์จแบตเตอรี่
ตัวอย่าง แบตเตอรี่ขนาด 2000mAh จำนวน 2 ก้อน รวมความจุ 2000mAh + 2000mAh = 4000mAh
4000mAh / 500mA = 8 ชั่วโมง
การใช้งานจริงหลังติดตั้งใช้งานแล้ว หากแบตเตอรี่หมด สามารถใช้เพาเวอร์แบงค์เพื่อชาร์จแบตเตอรี่ผ่านช่อง USB-C ได้ หรือกรณี ณ จุดที่ติดตั้งมีแหล่งจ่ายไฟหลัก (ไฟบ้าน 220V) สามารถใช้ที่ชาร์จโทรศัพท์มือถือเสียบจ่ายไฟช่อง USB-C ค้างไว้ได้ โดย Tinker C6 จะเลือกใช้ไฟจาก USB-C ก่อน และจะสลับไปใช้ไฟจากแบตเตอรี่อัตโนมัติเมื่อไม่มีไฟจากช่อง USB-C (ไฟดับ / ใช้แบตเตอรี่เป็นเหมือน UPS สำรองไฟ)
Tinker C6 รองรับการอัพโหลดโปรแกรมได้ 2 ช่องทาง ดังนี้
รูปที่ x ช่องทางการอัพโหลดโค้ด Tinker C6
1) ช่อง USB-C - เชื่อมต่อตรงกับ ESP32-C6 การใช้งานครั้งแรกจำเป็นจะต้องกดสวิตช์บังคับเข้าโหมดอัพโหลดโปรแกรมก่อน จึงจะมีพอร์ตขึ้นมาให้เลือกในโปรแกรม Arduino IDE โดยขั้นตอนการบังคับเข้าโหมดอัพโหลดโปรแกรมมีดังนี้
ที่โปรแกรม Arduino IDE สามารถเลือกพอร์ตที่ขึ้นมา แล้วอัพโหลดโปรแกรมเข้าได้เลย หลังจากอัพโหลดโปรแกรมเสร็จ ให้กดแล้วปล่อยปุ่ม EN 1 ครั้งเพื่อรีเซ็ตบอร์ด โปรแกรมที่อัพโหลดเข้าไปจะเริ่มทำงานทันที
การอัพโหลดโปรแกรมครั้งถัดไปให้เลือกพอร์ตใหม่ที่ขึ้นมา แล้วกดปุ่มอัพโหลดได้เลย (ไม่ต้องทำขั้นตอนบังคับเข้าโหมดอัพโหลดโปรแกรม) แต่หากโค้ดโปรแกรมที่อัพโหลดล่าสุดมีปัญหา เช่น โค้ดโปรแกรมทำให้ ESP32-C6 รีเซ็ตตลอดเวลาเนื่องจากโปรแกรมค้าง แล้ว WDT รีเซ็ต, การอ่าน/เขียนข้อมูลในพื้นที่ที่ไม่ได้รับอนุญาต ทำให้บอร์ดรีเซ็ตตลอดเวลา เป็นต้น ก็อาจจำเป็นต้องทำขั้นตอนบังคับเข้าโหมดอัพโหลดโปรแกรมเพื่อให้อัพโหลดโปรแกรมได้อีกครั้ง
การดีบัค/ใช้ Serial Monitor ผ่านช่อง USB-C มีข้อจำกัดในโหมด Light Sleep และ Deep Sleep เนื่องจากวงจรส่วน USB จะถูกปิดเพื่อประหยัดพลังงาน ดังนั้นการดีบัค/Serial Monitor จะใช้งานไม่ได้ระหว่างนั้น จึงไม่แนะนำให้ดีบัคผ่าน USB-C หากในโปรแกรมใช้งาน Light Sleep / Deep Sleep
2) ช่อง Serial0 - เชื่อมต่อกับ ESP32-C6 ผ่านช่อง UART0 ซึ่งเป็นช่องทางอัพโหลดโปรแกรมและดีบัคที่แนะนำ เนื่องจากการเข้าโหมดอัพโหลดโปรแกรมจะเข้าได้แม้โค้ดโปรแกรมเก่าที่เคยอัพโหลดไว้มีปัญหา และสามารถดีบัค/ใช้งาน Serial Monitor ได้ต่อเนื่องแม้เข้า Light Sleep / Deep Sleep Mode
การใช้งานจริงจำเป็นต้องมีอุปกรณ์เสริมอย่าง USB to UART เพื่อให้เชื่อมต่อคอมพิวเตอร์เข้ากับช่อง Serial0 ได้ หรือใช้ตัวอัพโหลดโปรแกรมที่ออกแบบมาเฉพาะอย่าง IOXUploader โดยสามารถต่อสายตามวงจรด้านล่าง แล้วเลือกพอร์ต กดอัพโหลดโปรแกรมได้เลย
รูปที่ x การอัพโหลดโปรแกรมโดยใช้ IOXUploader
ทางอาร์ทรอน ชอปแนะนำให้อัพโหลดโปรแกรมผ่านช่อง Serial0 เพื่อความสะดวกในการอัพโหลดโค้ด/ดีบัคโค้ดมากที่สุด
ติดตั้งโปรแกรม Arduino IDE V2 ตามขั้นตอนต่อไปนี้
1) เข้าไปที่ https://www.arduino.cc/en/software ที่ส่วน Downloads ให้เลือกดาวน์โหลดตามรุ่นของระบบปฎิบัติการ คอมพิวเตอร์ตัวอย่างใช้ Windows 11 64 บิต จึงเลือกดาวน์โหลด Windows
2) จะขึ้นหน้าแนะนำให้บริจาค หากยังไม่สะดวกให้กดปุ่ม JUST DOWNLOAD
3) รอจนกว่าจะดาวน์โหลดเสร็จสิ้น ได้ไฟล์ติดตั้งชื่อ arduino-ide_x.x.x_Windows_64bit.exe มา
4) ดับเบิ้ลคลิกเปิดไฟล์ติดตั้ง ในหน้าแรกของการติดตั้งจะขึ้นเงื่อนไขการใช้งานโปรแกรมมา ให้กดปุ่ม I Agree เพื่อยอมรับเงื่อนไขการใช้งาน
5) จากนั้นหน้าต่างติดตั้งจะถามว่า ให้ติดตั้งโปรแกรมนี้ให้กับทุก User ในคอมพิวเตอร์เครื่องนี้ หรือเฉพาะ User นี้ แนะนำให้ใช้ Only for me แล้วกดปุ่ม Next
6) จากนั้นหน้าต่างติดตั้งจะให้กำหนดโฟลเดอร์ที่เก็บโปรแกรม แนะนำให้ใช้โฟลเดอร์เดิม กดปุ่ม Install เพื่อติดตั้งทันที
7) รอจนกว่าโปรแกรมจะติดตั้งเสร็จ
8) เมื่อติดตั้งเสร็จ หน้าต่างติดตั้งจะแสดงดังรูป หากต้องการเปิดโปรแกรม Arduino IDE ทันที ให้ติ๊กเลือก Run Arduino จากนั้นกดปุ่ม Finish
9) ที่หน้าเดสทอปมีไอคอนโปรแกรม Arduino IDE เพิ่มขึ้นมาแล้ว ดับเบิ้ลคลิกที่ไอคอนเพื่อเปิดโปรแกรมทันที
10) โปรแกรม Arduino IDE V2 จะเปิดขึ้นมา หน้าตาดังรูป
10) การตั้งค่าโปรแกรม โดยกดเมนู File เลือก Preferences...
11) ในหน้าต่าง Preferences มีตัวเลือกให้ตั้งค่าดังนี้
12) ติดตั้งบอร์ด ESP32 เพิ่ม โดยกดรูปบอร์ดที่เมนูด้านซ้าย (1) ค้นหา ESP32 (2) จากนั้นกดปุ่ม Install ของ esp32 by Espressif แล้วรอจนกว่าโปรแกรมจะติดตั้งบอร์ดเพิ่มเสร็จ (ขั้นตอนนี้อาจใช้เวลาหลายนาที ขึ้นอยู่กับความเร็วอินเตอร์เน็ต และความเร็วของคอมพิวเตอร์เครื่องนั้น ๆ)
13) เมื่อติดตั้งเสร็จ จะแสดงข้อความ installed ขึ้นดังรูป
14) เลือกบอร์ดเป็น IOXESP32-C6 โดยกด Tool > Board > ESP32 > IOXESP32-C6
15) ทดสอบอัพโหลดโปรแกรมไฟกระพริบโดยกดที่ File > Examples > 01.Basics > Blink
16) เสียบบอร์ด Tinker C6 เข้ากับคอมพิวเตอร์ เลือกพอร์ต (2) แล้วตั้งค่า USB CDC On Boot (3) ดังนี้
17) กดปุ่มอัพโหลด
18) เมื่ออัพโหลดเสร็จ จะมีข้อความ Done uploading. ขึ้น (ดังรูป)
ที่บอร์ด Tinker C6 หลอดแอลอีดี IO8 จะกระพริบแล้ว ขั้นตอนต่อไปสามารถเขียนโปรแกรมอ่านค่าเซ็นเซอร์ได้เลย
*กรณีอัพโหลดผ่านช่อง USB-C: ในครั้งแรกต้องกด EN แล้วปล่อยเพื่อให้โปรแกรมเริ่มทำงาน ครั้งถัดไปเลือกพอร์ตใหม่แล้วกดอัพโหลดโดยไม่ต้องทำขั้นตอนบังคับเข้าโหมดอัพโหลดอีก
ในบทความนี้เป็นเพียงการแนะนำกล่อง Tinker C6 แบบคร่าว ๆ เพื่อให้เข้าใจ และรับรู้ความสามารถของ Tinker C6 เบื้องต้น ในบทความต่อ ๆ ไปจะเป็นการเจาะลึกรายละเอียดการใช้งานเป็นรายเซ็นเซอร์ เพื่อให้ประยุกต์ใช้งาน Tinker C6 ได้จริง