สวัสดีครับ, ในบทความนี้เรามาทดลองสร้างโครงงานเล็ก ๆ กันครับ โดยโครงงาน "หลอดดูดสีในโลกแห่งความจริง" เป็นโครงงานที่สร้างแล้วเราจะสามารถดึงค่าสีออกมาจากวัตถุจริง ๆ เพื่อใช้ในงานด้านการออกแบบทั่ว ๆ ไปได้ และจะเน้นสร้างเพื่อเป็นไอเดียสำหรับต่อยอดการใช้งานเซ็นเซอร์ และบอร์ดไมโครคอนโทรลเลอร์ แต่หากเมื่อสร้างเสร็จแล้ว เราอาจจะพบว่าอุปกรณ์ทำงานได้ไม่ดีมากนัก โดยสีที่วัดได้จะเข้มกว่าปกติ ทั้งนี้หากต้องการค่าสีที่จริงมากขึ้น ท่านสามารถนำโครงงานนี้ไปปรับปรุงจนนำโครงงานนี้ไปใช้งานจริงได้ครับ
ในโครงงานนี้ เราจะใช้อุปกรณ์หลัก ๆ 2 อย่าง คือ เซ็นเซอร์สี และบอร์ดไมโครคอนโทรลเลอร์ ซึ่งผมเลือกใช้งานมา 2 ชิ้น ดังนี้
เนื่องจากบอร์ด WeMos D1 mini Lite มีราคาถูก และขนาดเล็กมาก รวมทั้งสามารถเชื่อมต่อกับอินเตอร์เน็ตผ่าน WiFi ได้ ทำให้ในโครงงานนี้เราจะเลือกใช้งานบอร์ด WeMos D1 mini Lite เป็นบอร์ดหลักสำหรับเชื่อมต่อกับเซ็นเซอร์ และนำส่งข้อมูลขึ้นสู่อินเตอร์เน็ตต่อไปครับ
สั่งซื้อสินค้า WeMos D1 mini Lite
เซ็นเซอร์สีตัวนี้ ใช้ชิป TCS34725 เชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่าน I2C ทำให้ใช้สายเพียง 4 เส้นในการเชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ ตัวเซ็นเซอร์รองรับการใช้งานกับแรงดันไฟฟ้า 3.3V - 5V และบอร์ด WeMos D1 mini Lite ที่เราเลือกมานั้น ใช้แรงดันไฟฟ้าที่ 3.3V ดังนั้นเวลาที่เราต่อวงจร จึงสามารถต่อเซ็นเซอร์เข้ากับช่อง 3V3 เพื่อจ่ายไฟให้เซ็นเซอร์ได้เลย
สั่งซื้อสินค้า เซ็นเซอร์สี GY-33 TCS34725 color sensor module
นอกจากนี้ เพื่อให้ง่ายต่อการสังเกตการทำงานของระบบ ผมจึงเลือกอุปกรณ์ขึ้นมา 2 ชิ้น สำหรับบอกสถานะการทำงาน ซึ่งอุปกรณ์ที่เสริมมา มีดังนี้
หลอด LED จะใช้แสดงสถานะการทำงานของระบบ โดยในช่วงแรกจะใช้กระพริบเพื่อบอกว่ากำลังเชื่อมต่อกับ WiFi และในช่วงที่สอง จะใช้แสดงสถานะกำลังส่งข้อมูล ซึ่งโดยปกติแล้ว หากอินเตอร์เน็ตที่ใช้ความเร็วสูงอยู่แล้ว เราแทบจะไม่สังเกตเห็นขั้นตอนที่สองเลย ส่วนตัวต้านทาน 220 โอห์มจะใช้คู่กับหลอด LED โดยใช้ลดกระแสที่ไหลเข้าหลอด LED ไม่ให้หลอด LED พังเสียหาย
สั่งซื้อสินค้า หลอด LED และ สั่งซื้อสินค้า ตัวต้านทาน 220 โอห์ม
โพรโทรบอร์ดจะใช้เสียบอุปกรณ์ต่าง ๆ เข้าไว้ด้วยกันเพื่อทดลอง และสายจั้ม ใช้เสียบระหว่างอุปกรณ์ไปยังอุปกรณ์ผ่านรูบนโพรโทรบอร์ดเพื่อให้กระแสไฟฟ้าสามารถไหลผ่านถึงกันได้
สั่งซื้อสินค้า Breadboard 400 Point โพรโทบอร์ด 400 จุด และ สั่งซื้อสินค้า Jumper Wire for Breadboard สายจั้มผู้-ผู้ 65 เส้น
โครงงานนี้จะแบ่งเป็น 2 ฝั่ง ดังนี้
จะใช้ WeMos D1 mini Lite และเซ็นเซอร์สีร่วมกัน โดยตัว WeMos D1 mini Lite จะทำหน้าที่เชื่อมต่อ WiFi จากนั้นอ่านค่าสีจากเซ็นเซอร์ สุดท้ายจึงส่งข้อมูลเข้าอินเตอร์เน็ตผ่าน WiFi และสุดท้าย WeMos D1 mini Lite จะเข้าสู่โหมด Sleep เมื่อกด Reset ระบบจึงจะกลับมาทำงานตามขั้นตอนใหม่อีกครั้ง
จะใช้โปรแกรมบนคอมพิวเตอร์มารับข้อมูลเพื่อแสดงผล ซึ่งเป็นโปรแกรมที่ร้านไอโอเอ็กซ์ฮ๊อบจัดทำขึ้นมาเองในชื่อ ViewColor สร้างจากโปรแกรม Visual Studio 2017 ทางร้านเปิดซอสโค้ดไว้ที่ GitHub:ioxhop/ViewColor หลักการของโปรแกรมนี้คือจะเชื่อมต่ออินเตอร์เน็ต จากนั้น จะนำค่าสีที่รับเข้ามา มาแสดงผล โดยจะแสดงผลเป็นค่าสีจริง ค่าสีในรูป RGB และค่าสีแบบ Hex
ในการเชื่อมต่อระหว่าง 2 ฝั่ง จะใช้สัญญาณอินเตอร์เน็ตในการเชื่อมต่อ และตัวกลางการแลกเปลี่ยนข้อมูลจะใช้ NETPIE ผ่าน HTTP REST API โดยที่ฝั่งส่งข้อมูล จะส่งข้อมูลไปที่ NETPIE และที่ฝั่งรับ จะเข้าไปขอข้อมูลที่ส่งมาล่าสุดจาก NETPIE เพื่อแสดงผลต่อไป
ให้เข้าไปที่ลิงค์ https://netpie.io/login จากนั้นเข้าสู่ระบบได้เรียบร้อย (หากยังไม่เคยเป็นสมาชิก สามารถอ่านขั้นตอนการสมัครได้ที่บทความ [ESP8266 / ESP8285] สร้างแอพแอนดรอยด้วย App Inventor รับ-ส่งข้อมูลผ่าน NETPIE)
เลื่อมเม้าส์ไปที่เมนู RESOURCES แล้วคลิกที่ APPLICATIONS
ตรงส่วน APPLICATION ให้คลิกที่รูป
จะมี Popup ขึ้นมา ให้กรอก App ID ลงในช่อง สามารถกรอกเป็นอะไรก็ได้ เสร็จแล้วให้คลิกที่ปุ่ม CREATE (ค่าที่กรอกนี้ จะนำไปใช้เป็น App ID)
ตรงส่วน APPLICATION KEY ให้กดที่ปุ่ม
ใน Key แรก เราจะสร้าง Key ที่ใช้กับฝั่งส่งก่อน (ให้ WeMos D1 mini Lite) ในช่องแรกจึงตั้งชื่อเป็น ESP และช่องที่สอง เลือก Device Key แล้วกดที่ปุ่ม CREATE
จะเห็นว่าในส่วนของ APPLICATION KEY จะมีชื่อของ Key ใหม่ขึ้นมาแล้ว
ให้เพิ่ม Key ใหม่อีกชุด โดย Key ใหม่จะใช้กับโปรแกรมบนคอมพิวเตอร์ (โปรแกรม ViewColor ที่ฝั่งรับ) ให้เลือกชนิดเป็น Session Key และตั้งชื่อเป็นอะไรก็ได้
รวม ๆ แล้วเราจะมี Key จำนวน 2 ชุด ดังรูป
ข้อมูลที่เราใช้จะมีรวมแล้ว 3 ชุด คือ App ID ที่เราได้ตั้งไว้ และ REST API auth ของฝั่งส่ง และฝั่งรับ โดยฝั่งส่ง จะใช้ REST API auth ของ Device Key และฝั่งรับ จะใช้ REST API auth ของ Session Key
การดูค่า REST API auth ให้คลิกที่ชื่อ Key ที่ต้องการดู จากนั้นให้คลิกที่รูป จะปรากฏค่าของ REST API auth ขึ้นมาให้เห็น ให้เก็บค่านี้ไว้ใช้ต่อไป
ให้ต่อวงจรต่อไปนี้
บอร์ด WeMos D1 mini Lite ยังไม่ได้บัดกรีก้างปลามาให้ ดังนั้นจึงต้องบัดกรีขาต่อให้ครบเสียก่อน
จากนั้น ให้เสียบสาย USB เข้ากับคอมพิวเตอร์ แล้วเปิดโปรแกรม Arduino IDE ขึ้นมา ติดตั้งบอร์ด ESP8266 เพิ่ม โดยอ่านจากบทความ เริ่มต้นพัฒนาเฟิร์มแวร์ EPS8266 ด้วย Arduino IDE แต่เนื่องจาก WeMos D1 mini Lite ยังไม่ถูกเพิ่มลงในบอร์ดที่รองรับอย่างเป็นทางการ จึงต้องเพิ่มบอร์ดขึ้นมาเอง โดยทำตามขั้นตอนต่อไปนี้
ที่โปรแกรม Arduino IDE ให้กดไปที่เมนู File เลือก Preferences
จากนั้น ให้กดในส่วนของ More prefer... เพื่อให้เปิดโฟลเดอร์ที่เก็บไฟล์บอร์ดที่ติดตั้งเสริมเข้ามา
เข้าไปที่โฟลเดอร์ packages\esp8266\hardware\esp8266\2.3.0 จากนั้นเปิดไฟล์ boards.txt ด้วยโปรแกรม Text Editor
เพิ่มโค้ดต่อไปนี้ลงไปท้ายไฟล์ แล้วบันทึกให้เรียบร้อย
ที่โปรแกรม Arduino IDE ให้ปิด แล้วเปิดใหม่ จากนั้นเลือกไปที่ Tool > Board แล้วเลือก WEMOS D1 mini Lite
ติดตั้งไลบรารี่ Adafruit_TCS34725.h เพิ่ม โดยคลิกไปที่เมนู Sketch > Include Library แล้วเลือก Manage Libraries...
ที่ช่องค้นหา ให้พิมพ์ TCS34725 แล้วเลือกติดตั้งของ Adafruit โดยคลิกเลือก (คลิกที่ชื่อของ Adafruit TCS34725) แล้วกดปุ่ม Install
เมื่อติดตั้งเสร็จแล้ว จะปรากฏคำว่า INSTALLED ดังรูป
แล้วปิดหน้าต่าง Library Manager ไปได้เลย
จากนั้น ให้คัดลอกโค้ดโปรแกรมต่อไปนี้ลงโปรแกรม Arduino IDE แล้วแก้ไขดังนี้
เมื่อแก้เสร็จแล้ว ให้อัพโหลดโปรแกรมลงบอร์ดให้เรียบร้อย
เปิด Serial Monitor ขึ้นมา เมื่อกดปุ่ม Reset บนบอร์ด WeMos D1 mini Lite จะพบข้อความแจ้งกำลังเชื่อมต่อ จากนั้นในส่วนของบรรทัด Data หากมีคำว่า Success แสดงว่า สามารถส่งข้อมูลไปยัง NETPIE ได้แล้ว
ให้เข้าไปดาวน์โหลดโปรแกรม ViewColor ได้ที่ลิงค์ ViewColor V0.2 (Release) คลายไฟล์ให้เรียบร้อย จากนั้นเปิดโปรแกรมขึ้นมา จะได้หน้าตาโปรแกรมดังรูป
การใช้โปรแกรม ให้กรอกชื่อ App บน NETPIE ลงในช่อง App id และช่อง REST API auth ให้กรอก REST API auth จาก NETPIE (ของตัวฝั่งรับ หรือ Session Key) แล้วกด Connect
หลังจากกด Connect แล้ว ปุ่ม Connect จะเปลี่ยนเป็นปุ่ม Disconnect แทน จากนั้นค่า RGB Hex และกล่องสีด้านข้าง จะอัพเดทข้อมูลเป็นข้อมูลสีล่างสุดที่ส่งมาจากชุดฝั่งส่ง ท่านสามารถคลิกที่ เพื่อนำค่าสีไปใช้งานได้ทันที
ให้เปิดโปรแกรม ViewColor ขึ้นมา กรอกข้อมูลและเชื่อมต่อให้เรียบร้อย จากนั้นให้เสียบสาย USB ที่บอร์ด WeMos D1 mini Lite นำวัสดุที่ต้องการวัดค่าสีมาปิดที่หน้าเซ็นเซอร์ แล้วกดปุ่ม Reset ที่บอร์ด WeMos D1 mini Lite ตัวหลอด LED จะกระพริบ รอจนกว่าหลอด LED จะดับสนิท แล้วค่าสีที่อ่านได้จะแสดงที่โปรแกรม ViewColor ขึ้นมาให้เห็น
ในบทความนี้เราจะเน้นไปที่การลงมือทำตาม มากกว่าการเรียนรู้ เนื่องจากบทความจะเน้นสร้างชิ้นงานมากกว่า หากท่านต้องการข้อมูลเพิ่มเติมว่าทำไม เพราะอะไร อย่างไร ท่านสามารถอ่านเพิ่มเติมได้ในส่วนของข้อมูลเพิ่มเติม สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ แล้วพบกันใหม่ในบทความหน้านะครับ
~ สวัสดีครับ ~