ใช้ micro:bit กับเครื่องให้อาหารแมวอัตโนมัติ (Update-210220)

ใช้ micro:bit กับเครื่องให้อาหารแมวอัตโนมัติ (Update-210220)

เนื่องจากโครงงานเครื่องให้อาหารแมวอัตโนมัตินั้น มีผู้สนใจจำนวนมาก ส่วนใหญ่ไม่เคยเขียนโปรแกรมและไม่มีความรู้ด้านอิเล็กทรอนิกส์มาก่อน โดยในบทความกึ่งโครงงานนี้ จึงขอแนะนำบอร์ดไมโครคอนโทรลเลอร์ที่ทำหน้าที่เดียวกับบอร์ด POP-168 (Arduino) ที่แนะนำในโครงงานฯ และที่จะแนะนำในบทความนี้ก็คือบอร์ด micro:bit (อ่านรายละเอียดเพิ่มเติม) ที่เหมาะอย่างยิ่งสำหรับน้องๆ นักเรียน ที่ยังไม่เคยเขียนโปรแกรมมาก่อน

ดังนั้นในบทความนี้ ผู้เขียนขออนุญาตไม่กล่าวถึงขั้นตอนการสร้างตัวโครงของเครื่องให้อาหารแมว แต่จะกล่าวถึงเฉพาะการนำไมโครบิตมาทำส่วนควบคุมการจ่ายอาหารเท่านั้น หากต้องการดูการสร้างโครงของเครื่องแนะนำให้เปิดดูเนื้อหาเกี่ยวกับการสร้างเครื่องให้อาหารแมวอัตโนมัติแทนนะครับ (คลิกดูโครงงานเครื่องให้อาหารแมวอัตโนมัติ)

อุปกรณ์ที่ต้องใช้

1. บอร์ด micro:bit V1 หรือ V2 ก็ได้
ใช้สำหรับสำหรับเขียนโปรแกรมเพื่อควบคุมการทำงาน (คลิกสั่งซื้อ)

2. บอร์ด AX-microBIT+
สำหรับเชื่อมต่ออุปกรณ์อินพุต เอาต์พุต หรืออุปกรณ์ภายนอกอื่นๆ (คลิกสั่งซื้อ)

3. ZX-SONAR หรือ ZX-SONAR1M (ใช้แทน ZX-SONAR ได้)
แผงวงจรวัดระยะทางด้วยคลื่นอัลตร้าโซนิกแบบให้ผลการทำงานเป็นแรงดันไฟตรงแบบแอนะล็อก (คลิกสั่งซื้อ ZX-SONAR) (คลิกสั่งซื้อ ZX-SONAR1M)

4. KSERVO-270J
 เซอร์โวมอเตอร์กำลังไฟฟ้าต่ำ ขั้วต่อเป็นแบบ JST 2.0 มม. ตัวเมีย 3 ขา สำหรับใช้งานไมโครคอนโทรลเลอร์สมัยใหม่ที่ใช้ไฟเลี้ยง 3.3V (คลิกสั่งซื้อ)

5. อะแดปเตอร์ไฟตรง 9 โวลต์ (คลิกสั่งซื้อ)

ขั้นตอนการเชื่อมต่ออุปกรณ์และพัฒนาโค้ดโปรแกรม

(1) ติดตั้งบอร์ดไมโครบิตเข้ากับแผงวงจร AX-microBIT+  จากนั้นเชื่อมต่อโมดูลวัดระยะทาง กับจุดต่อ 1/AN1

(2) เชื่อมต่อเซอร์โวมอเตอร์ เข้ากับจุดต่อ 12 ของแผงวงจร AX-microBIT+


ภาพแสดงการเชื่อมต่ออุปกรณ์ทั้งหมดเข้าด้วยกัน

(3) อ่านค่าจากโมดูลวัดระยะทาง (ZX-Sonar) ให้แสดงผลด้วย LED บนบอร์ดไมโครบิต เพื่อหาค่าระยะห่างเมื่อแมวเข้ามากินอาหารที่ชาม

(3.1) วิธีการคือเปิดเว็บเบราเซอร์ไปที่ https://makecode.microbit.org/ ลากบล็อก show number จากกลุ่มคำสั่ง Basic วางในบล็อก forever แล้วลากบล็อก analog read pin จากกลุ่มคำสั่ง Pins วางในบล็อก show number โดยกำหนดให้เป็นจุด P1 (เพราะเราเชื่อมต่อเซนเซอร์วัดระยะทางไว้ที่ P1)

(3.2) เสียบสาย microUSB เข้ากับบอร์ดไมโครบิตและคอมพิวเตอร์ จะพบไดรฟ์ที่ชื่อ MICROBIT ปรากฎขึ้นมาในเครื่องคอมพิวเตอร์ของเรา จากนั้นคลิกปุ่ม Download (ด้านล่างซ้ายมือ) แล้วเลือกวางไฟล์โค้ดไปยังไดรฟ์ MICROBIT

(3.3) ทดลองนำ ZX-Sonar เคลื่อนเข้าหาวัตถุในตำแหน่งที่เหมาะสม (ระยะห่างที่แมวเดินเข้ามาหาชามอาหาร) แล้วบันทึกค่าที่อ่านได้จากหน้าจอ LED ของ micro:bit  (ZX-Sonar จะให้ค่าต่ำลงเมื่อมีวัตถุเข้าใกล้) ในตัวอย่างนี้เราจะได้ค่า 95 เพื่อนำไปสร้างเงื่อนไขต่อไป

 

(4) วางบล็อกคำสั่งง่ายๆ ดังตัวอย่างต่อไปนี้ เพื่อควบคุมการทำงานเครื่องให้อาหารแมวอัตโนมัติ (ขออนุญาตข้ามการอธิบายบล็อกคำสั่งนะครับ เนื่องจากมันค่อนข้างง่ายลองไล่ตามดูก็จะเข้าใจ)

สั่งเกตที่ด้านซ้ายของโปรแกรมจะมีบอร์ดจำลองของไมโครบิตแสดงการทำงานตามโค้ดที่เราเขียนไว้แบบทันทีทันใด ทำให้ง่ายในการทดลองเขียนโค้ด

จากบล็อกข้างต้นได้สร้างเงื่อนไขจากค่าของโมดูลวัดระยะทาง ZX-Sonar ที่เราอ่านได้จากขั้นตอนที่แล้ว โดยใช้บล็อก if then else จากกลุ่มคำสั่ง Logic มาเป็นส่วนสรางเงื่อนไข โดยถ้าค่าที่อ่านได้น้อยกว่า 95 ให้ทำตามคำสั่งในส่วน then (เงื่อนไจเป็นจริง) ที่ประกอบไปด้วย

  • แสดงหน้ายิ้มด้วยบล็อกคำสั่ง show icon (สามารถเลือกไอคอนได้มากถึง 40 แบบ)
  • สั่งให้เซอร์โวมอเตอร์หมุนด้วยบล็อก servo write pin (จากกลุ่มคำสั่ง  Pins) เลือกพอร์ต P12 และกำหนดองศาการหมุนเป็น 90 องศา เพื่อหมุนตีลูกบอลเปิดให้อาหารแมวหล่นลงมา
  • หน่วงเวลาการหมุน (ให้ค้างตำแหน่งไว้) 2 วินาที (ค่า 1000 = 1 วินาที) ด้วยบล็อกคำสั่ง pause
  • สั่งให้เซอร์โวมอเตอร์หมุนด้วยบล็อก servo write pin เลือกพอร์ต P12 และกำหนดองศาการหมุนเป็น 0 องศา เพื่อให้ก้านตีออกจากลูกบอลและกลับไปยังตำแหน่งเดิม
  • ใช้บล็อกคำสั่ง pause หน่วงเวลาที่ต้องการ ในตัวอย่างจะเท่ากับ 12 วินาที (จริงๆ แล้วควรนานกว่านี้) ในส่วนการหน่วงเวลาส่วนที่สองนี้คือการเผื่อเวลาให้แมวกินเสร็จ ก็ลองพิจารณาดูนะครับ ว่าควรกำหนดค่าไว้กี่วินาที โดยค่า 1000 เท่ากับ 1 วินาที

อีกส่วนหนึ่งคือส่วนที่หากค่าที่อ่านได้จาก ZX-Sonar มากกว่า 95 (เงื่อนไขเป็นเท็จ) แสดงว่าแมวยังไม่เดินมาที่ชามอาหาร ให้ข้ามไปทำส่วน else โดยให้แสดงเป็นรูปหัวใจกำลังเต้นด้วยบล็อกคำสั่งต่อไปนี้

  • โชว์รูปหัวใจด้วยบล็อก show icon แล้วเลือกไอคอนรูปหัวใจดวงใหญ่
  • หน่วงเวลา 100 มิลลิวินาที ด้วยบล็อก pause 
  • โชว์รูปหัวใจด้วยบล็อก show icon แล้วเลือกไอคอนรูปหัวใจดวงเล็ก
  • หน่วงเวลา 100 มิลลิวินาที ด้วยบล็อก pause 

เสร็จแล้วก็อย่าลืมดาวน์โหลดลงบนไมโครบิตแล้วทดสอบ

ทั้งหมดนี้ก็คือการใช้บอร์ด micro:bit มาควบคุมเครื่องให้อาหารแมวของเรา แทนการใช้บอร์ด Arduino ซึ่งง่ายและเหมาะสำหรับน้องๆ ที่ไม่เคยเคยโปรแกรมและไม่มีความรู้ด้านอิเล็กทรอนิกส์มาก่อน สำหรับใครที่ต้องการสร้างหรือใช้งานไมโครบิตในรูปแบบอื่นๆ สามารถสั่งซื้อหนังสือคู่มือไว้ศึกษาเพิ่มเติมได้จากลิงก์นี้เลย https://inex.co.th/home/product/book-microbit-coding-beginner

การประดิษฐ์โครงสร้างเครื่องให้อาหารแมว

บทความแนะนำ micro:bit