Temperature Sensor Coaster
ผมกำลังดื่มกาแฟร้อน ครั้งแรกผมลวกปากตัวเอง จากนั้นผมก็ลืมมันไป และมันก็เย็นลงจนถึงอุณหภูมิห้อง ด้วยอาการเจ็บปากและกาแฟที่เย็นชืด ผมตระหนักว่าผมดื่มกาแฟไม่สำเร็จ แล้วผมก็ถามตัวเองว่า: ผมจะสามารถสร้างอุปกรณ์ที่แก้ปัญหานี้ให้ผมได้ไหม โดยที่ผมไม่มีความรู้เรื่อง Arduino เลย?
รับคำท้าน!
แล้วถ้าสร้างที่รองแก้วพร้อมด้วย Temperature Sensor สักอัน ที่ทำให้สามารถตั้งค่าอุณหภูมิ "ร้อนเกินไป" และ "เย็นเกินไป" ได้ แล้วก็มี LED สีแดง สีเขียว และสีน้ำเงิน แสดงช่วงอุณหภูมิปัจจุบัน อุปกรณ์ควรจะมี Buzzer ส่งเสียงเมื่ออุณหภูมิถึงระดับที่ดื่มได้

นั่นคือแนวคิดพื้นฐาน แต่ผมจะทำอย่างไรให้ตั้งค่าอุปกรณ์นี้ได้ง่ายๆ? เนื่องจาก Arduino มาพร้อมกับ USB ทำไมไม่สร้าง User Interface บนคอมพิวเตอร์ที่สื่อสารกับที่รองแก้ว เพื่อให้สามารถตั้งค่าได้จากตรงนั้น? เมื่อโปรแกรมตั้งค่าเริ่มทำงาน มันควรจะสร้างการสื่อสารกับที่รองแก้วและอ่านค่าปัจจุบัน เช่น อุณหภูมิ เป็นต้น ควรจะสามารถเปลี่ยนการตั้งค่าได้ และการเปลี่ยนแปลงเหล่านี้จะถูกส่งกลับไปยังที่รองแก้ว ซึ่งจะถูกเก็บไว้ใน EEPROM
ก่อนอื่นผมซื้อหนังสือเกี่ยวกับ Arduino ผมซื้อ Arduino for Dummies โดย John Nussey ในหนังสือเล่มนั้นเขาแนะนำให้ซื้อ Starter Kit ผมก็ซื้อ Starter Kit Starter Kit ส่วนใหญ่มาพร้อมกับ Temperature Sensor และ LED และอื่นๆ อีกมากมาย ผมได้ทำแบบฝึกหัดหลายข้อในหนังสือ จากนั้นผมก็พร้อมสำหรับโปรเจกต์ของตัวเอง ทีละเล็กละน้อย ผมสร้างวงจรบน Breadboard ผมพบข้อมูลเกี่ยวกับวิธีใช้ TMP36 Temperature Sensor กับ Arduino และ Sketch
ในหนังสือมีแบบฝึกหัดเกี่ยวกับวิธีใช้ Piezo Element (Buzzer) ผมรวม Buzzer เข้ากับการตั้งค่า Temperature Sensor จากนั้นผมก็เพิ่ม LED ณ จุดนั้น วงจรดิบก็เสร็จสมบูรณ์

จากนั้นผมก็เริ่มทำงานกับโปรแกรมตั้งค่า สำหรับสิ่งนี้ ผมดาวน์โหลด Visual Studio Community Edition และสร้าง User Interface ขึ้นมาใหม่ทั้งหมด นี่คือส่วนที่ยากที่สุดของโปรเจกต์ มีเรื่องที่ซับซ้อนกว่ามากเกิดขึ้นในโปรแกรมตั้งค่าเมื่อเทียบกับ Arduino ผมจะพูดถึงเรื่องนี้เพิ่มเติมในแท็บ Software ของโปรเจกต์นี้
จากนั้นก็ถึงเวลาที่จะประกอบมันเข้าด้วยกัน ด้วยเหตุนี้ ผมจึงตัดสินใจซื้อ Arduino Nano ขนาดเล็กกว่า เพื่อให้ที่รองแก้วบางลงและมีการออกแบบที่สวยงามยิ่งขึ้น
เมื่อชิ้นส่วนอิเล็กทรอนิกส์ทั้งหมดสำหรับที่รองแก้วมาถึง ผมก็สามารถเริ่มสร้างตัวเรือนสำหรับที่รองแก้วได้ ผมตัดสินใจสร้างที่รองแก้วด้วยเครื่อง 3D Printer ของผม ผมจะทำจากพลาสติก ABS ที่สามารถทนต่ออุณหภูมิของเครื่องดื่มร้อนได้ และเป็นโบนัสเพิ่มเติม ผมสามารถใช้ Acetone ทำให้พื้นผิวของพลาสติก ABS เรียบเนียน เพื่อให้ที่รองแก้วดูเงางามได้ สำหรับส่วนนี้ ผมเปิด Fusion 360 และสร้างไฟล์ STL ที่ผม Slice ใน Cura และพิมพ์บน Tevo Black Widow

นี่คือ Link ไปยังโปรเจกต์ Fusion 360 ผมได้รวมไฟล์ STL ไว้ในส่วน Hardware ด้วย
เมื่อผมพิมพ์ที่รองแก้วเสร็จ มักจะต้องใช้เวลาหลายครั้งก่อนจะสำเร็จ บ่อยครั้งที่ชิ้นส่วนต่างๆ ไม่เข้ากัน เช่น ผมไม่สามารถใส่ Arduino ให้เข้ากันได้ Arduino ที่ผมซื้อมามี Tab เพื่อให้สามารถใช้กับ Breadboard ได้ แต่ผมตัดส่วนเหล่านี้ออกด้วย Side Cutter เพื่อให้มันใส่ได้พอดี
จากนั้นก็ถึงเวลาประกอบชิ้นงาน

ผมสั่ง Buzzer ขนาด 50 mm มา ซึ่งผมต้องตัดขอบเล็กน้อยเพื่อให้มันพอดีกับตัวเรือน Temperature Sensor อยู่ตรงกลางของที่รองแก้วและมีก้านเล็กๆ ที่ดันขึ้นไปชนก้นถ้วย ผมใช้เทปกาวสองหน้าสำหรับ Buzzer เพื่อยึด Buzzer เข้ากับที่รองแก้ว LED ของ Arduino ส่องแสงทะลุพลาสติกเล็กน้อย แต่ผมใช้เทปสีดำเพื่อปิดบังมัน ผมใช้ Shrink Tubes เพื่อหลีกเลี่ยงการ Short Circuit ภายในที่รองแก้ว
จากนั้นผมก็ขันสกรูที่รองแก้วเข้าด้วยกัน และวางแผ่นยางรองเล็กๆ ไว้บนสกรูทุกตัว มันดูดีจริงๆ
แต่มันใช้งานได้ไหม? ได้สิ! อย่างไรก็ตาม มีข้อควรระวังเล็กน้อย ตัวอย่างหนึ่งที่ผมไม่ได้ตระหนักถึง คือ คนส่วนใหญ่ดื่มกาแฟเย็น! มันฟังดูแย่และมันก็เป็นอย่างนั้น แต่นี่คือความจริง มีคนจำนวนมากที่ลองใช้อุปกรณ์นี้กับกาแฟเย็นแล้วมันทำงานไม่ถูกต้อง? เฮ้ Jens มันเกิดอะไรขึ้น? ก็กาแฟคุณมันเย็น จะช่วยอะไรได้ล่ะ?
อีกเรื่องคือแก้วฉนวนกันความร้อนที่หนามาก มันก็จะไม่ทำงานเช่นกัน จากนั้นก็มีแก้วที่เกือบจะไม่มีก้น มวลทั้งหมดและความร้อนจึงอยู่สูงขึ้นไปมาก ก่อนที่เครื่องดื่มจะอุ่นก้นแก้ว ด้านบนก็เย็นแล้ว
มันทำงานได้ แต่ใช้ได้กับแก้วที่ "สมเหตุสมผล" และมันขึ้นอยู่กับแต่ละบุคคลว่าการตั้งค่าแบบไหนเหมาะสมที่สุดสำหรับคุณ อย่างไรก็ตาม ผมพยายามตอบสนองความต้องการ "ทางจิตวิทยา" แต่ก็เป็นเรื่องที่ท้าทาย โดยเฉพาะสำหรับเครื่องดื่มที่เกือบจะเย็น
ก็แค่นั้นแหละ ผมเชี่ยวชาญเรื่องนี้แล้ว และผมก็สามารถสร้างอุปกรณ์ที่ช่วยผมได้สำเร็จ ทั้งหมดนี้คือความสำเร็จของความท้าทาย!
Sketch สำหรับโหลดลง Arduino
ในส่วน Software ของโพสต์นี้ คุณจะพบโปรแกรมที่ผมสร้างสำหรับ Arduino เมื่ออุณหภูมิสูงขึ้น ที่รองแก้วจะกระพริบ LED ของช่วงอุณหภูมิปัจจุบัน เมื่ออุณหภูมิคงที่ LED จะหยุดกระพริบ
ที่รองแก้วทำงานภายในด้วยหน่วย Celcious โปรแกรมตั้งค่าสามารถแปลงเป็น Fahrenheit ได้ทันที
โปรแกรมตั้งค่า
ผมสร้างโปรแกรมตั้งค่าด้วยภาษา C# บน Windows ใน Visual Studio 2017 Community Edition โปรแกรมจะเริ่ม Serial Communication กับที่รองแก้วและ Parse ค่าที่ส่งมา เมื่อเปลี่ยนช่วงอุณหภูมิ โปรแกรมตั้งค่าจะเขียน String ไปยัง Serial Interface พร้อมกับค่าใหม่ นี่คือ 'Commands' ที่ที่รองแก้วเข้าใจ:
- 'tt:' Top Temperature หลังจากเครื่องหมาย Colon ให้ป้อน Top Temperature ในรูปแบบ Decimal โดยใช้ Dot เป็น Decimal Separator อุณหภูมิในหน่วย Celsius
- 'bt:' Bottom Temperature หลังจากเครื่องหมาย Colon ให้ป้อน Bottom Temperature
- 'pt:' เล่นเสียงเมื่อถึง Top Temperature ป้อน 0 หรือ 1
- 'pb:' เล่นเสียงเมื่อถึง Bottom Temperature ป้อน 0 หรือ 1
- 'dc:' แสดงหน่วย Celsius ป้อน 0 หรือ 1
ที่รองแก้วจะส่ง String ของค่าต่างๆ ทุกๆ 450 Milliseconds:
- it: Input Temperature
- tt: การตั้งค่า Top Temperature
- bt: การตั้งค่า Bottom Temperature
- dc: การตั้งค่าการแสดงหน่วย Celsius
- at: อุณหภูมิเฉลี่ย (Average Temperature)
- pt: เล่นเสียงเมื่อเปลี่ยนจาก Top Temperature ไปยังอุณหภูมิที่ดื่มได้
- pb: เล่นเสียงเมื่อเปลี่ยนจากอุณหภูมิที่ดื่มได้ไปยังอุณหภูมิที่เย็นเกินไป
อย่างที่คุณอาจจะเข้าใจจากแก้วที่เห็น ผมทำงานให้กับ Translation Agency :)
ขอแสดงความนับถือ,
Jens Malmgren
รายละเอียดทางเทคนิคเพิ่มเติม
Thermal Intelligence Dashboard
โปรเจกต์นี้สร้างที่รองแก้วอัจฉริยะที่คอยตรวจสอบอุณหภูมิของเครื่องดื่มของคุณ และให้การแจ้งเตือนด้านสุขภาพ/ความปลอดภัยด้วยภาพ
- **Precision Thermometry Interface**: ใช้ Arduino ที่เชื่อมต่อกับ High-Sensitivity Temperature Sensor Firmware คำนวณ Thermal Gradient ผ่านวัสดุของที่รองแก้ว, pro