ประวัติศาสตร์ (แบบย่อๆ)
โปรเจคเก่าของพี่มันซีเรียสและซับซ้อนไปหน่อย: เป็นเทอร์โมสแตทแบบตั้งโปรแกรมได้ไร้สาย ขอบคุณน้องๆ ทุกคนที่ช่วยกันกดดูจนยอดวิวใน Project Hub พุ่งไปกว่า 3000 ครั้งแล้ว พี่ซาบซึ้งใจมากจริงๆ
เป้าหมายต่อไปของพี่คือต้องทะลุ 5000 วิวให้ได้ เลยต้องคิดโปรเจคใหม่ที่มันต้องตลกกว่า, ดั้งเดิมกว่า, ง่ายกว่า และทำตามซ้ำได้ง่ายกว่าโปรเจคเทอร์โมสแตทเดิมๆ นั่นแหละ และที่สำคัญ... ต้อง "ไร้ประโยชน์" สุดๆ ด้วย
พี่เลยตัดสินใจทำ "ตาคู่" นี้ขึ้นมา มันจะคอยจ้องตามวัตถุที่เคลื่อนที่อยู่ตรงหน้า มันตามไปทางซ้าย-ขวาได้ และตาทั้งสองข้างจะเบนเข้าหากันเมื่อวัตถุเข้ามาใกล้
และถ้าน้องกำลังอ่านข้อความนี้อยู่ แสดงว่าน้องคลิกเข้ามาแล้ว! นี่แหละคือสิ่งที่พี่ต้องการ ขอบคุณมากนะน้อง
โปรเจคนี้คืออะไร




ตาทั้งสองข้างวาดลงบนลูกปิงปองสองลูก แล้วเอาไปติดบนเซอร์โวมอเตอร์สองตัว เซ็นเซอร์อัลตราโซนิค (Ultrasonic Sensor) สองตัวใช้สำหรับวัดตำแหน่งของวัตถุ บอร์ด Arduino Nano Every จะอ่านค่าจากเซ็นเซอร์แล้วสั่งการเซอร์โวมอเตอร์ให้ขยับตาม
เซอร์โวมอเตอร์ที่ใช้คือรุ่น SG90 (ไมโครเซอร์โว) และเซ็นเซอร์อัลตราโซนิคคือรุ่น HC-SR04 ของถูกและหาง่ายมาก บอร์ด Arduino อาจจะใช้รุ่นอื่นที่ไม่ใช่ Nano Every ก็ได้ ขอแค่มีไฟ 5V สำหรับเลี้ยงมอเตอร์และเซ็นเซอร์ก็พอ
ฮาร์ดแวร์


เซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิคติดอยู่บนแผ่นฐาน ตามตำแหน่งที่แสดงในแผนภาพนี้:

ตำแหน่งของเซ็นเซอร์อัลตราโซนิคแกน X (แนวนอน) สามารถเปลี่ยนได้นะ เช่น ถ้าอยากให้ตามวัตถุที่ใหญ่ขึ้น ในกรณีนี้ต้องไปปรับค่าคงที่ A และ B ในซอฟต์แวร์ให้ตรงกับตำแหน่งจริงของเซ็นเซอร์ตัวนั้น ค่าสองค่านี้ต้องน้อยกว่า 200 ซม.
การต่อสายต้องทำตามนี้:
กราวด์ (GND) ของเซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิค ต้องต่อกับกราวด์ของบอร์ด Arduino และจ่ายไฟให้พวกมันที่ +5V
ขา Trigger ของเซ็นเซอร์อัลตราโซนิคแกน X ต่อกับดิจิตอลพิน 2 และขา Echo ต่อกับดิจิตอลพิน 3
ขา Trigger ของเซ็นเซอร์อัลตราโซนิคแกน Y ต่อกับดิจิตอลพิน 5 และขา Echo ต่อกับดิจิตอลพิน 6
ขาควบคุมเซอร์โวมอเตอร์ซ้ายและขวา ต่อกับดิจิตอลพิน 8 และ 10 ตามลำดับ ซ้าย-ขวานี่หมายถึงตาของบิ๊กบราเดอร์นะ ตาซ้ายของมันคือด้านขวาของน้องนั่นแหละ อย่าสับสน
แผนภาพการต่อสายทั้งหมดเป็นแบบนี้:

รายละเอียดเทคนิค & การปรับปรุง
โปรเจคนี้ใช้เซ็นเซอร์อัลตราโซนิก (HC-SR04) ตรวจจับระยะและตำแหน่งด้านข้างของวัตถุ จากนั้น Arduino จะคำนวณพิกัดของวัตถุและแปลงเป็นมุมให้เซอร์โวสองตัวที่ทำหน้าที่เป็นดวงตา ทำให้รู้สึกเหมือนมีอะไรจ้องมองเราอยู่
แต่ถ้าจะให้การเคลื่อนไหวดูเป็นธรรมชาติและมีชีวิตชีวามากขึ้น ห้ามสั่งให้เซอร์โวขยับไปยังมุมใหม่ทันทีเด็ดขาด! ให้ใช้ลูปค่อยๆ เพิ่มมุมทีละ 1 องศาพร้อมดีเลย์เล็กน้อยระหว่างขั้นตอนแทน ดวงตาจะได้ค่อยๆ *กวาด* ไปหาวัตถุอย่างเนียนๆ การเคลื่อนไหวแบบเนิบๆ นี่แหละที่เพิ่มความสมจริงและความหลอนให้กับโปรเจคได้เป็นกองเลย
Software
โค้ดง่ายมากกก ไม่ถึง 70 บรรทัด ไม่ต้องใช้ไลบรารี่เสริมด้วย
จัดไปวัยรุ่น สู้งานนะน้อง