
1. รถหุ่นยนต์ Raspberry Pi คอนโทรลด้วยมือถือ
สิ่งที่ต้องมี
1. สัญญาณ Wi-Fi โดยบอร์ด Raspberry Pi และมือถือจะต้องทำการเชื่อมต่อ Wi-Fi ตัวเดียวกัน ซึ่งภายในตัวบอร์ดนั้นจะมี Wi-Fi อยู่ในตัวบอร์ดแล้ว
2. บอร์ด Raspberry Pi ใช้บอร์ดที่มี GPIO 40 ขา

3. ชุดประกอบรถหุ่นยนต์ ซึ่งประกอบด้วยตัวรถ ล้อ มอเตอร์ กระบะใส่ถ่าน

4. บอร์ดขับเคลื่อนมอเตอร์ ในที่นี้จะใช้บอร์ด L298N

5. Power bank ที่มีขนาดความจุ 2,200 mAh. ขึ้นไป เพื่อจ่ายไฟให้แก่บอร์ด Raspberry Pi เพื่อให้หุ่นยนต์เคลื่อนที่ได้อย่างอิสระ

6. โปรแกรม Node-RED ใช้ในการสร้างปุ่มคำสั่งควบคุมการเคลื่อนที่ของหุ่นยนต์ ไม่ว่าจะเป็นเดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา และหยุดเดิน โดยจะต้องเพิ่มปุ่มปิดลงในโปรแกรมเพื่อให้สามารถปิด Raspberry Pi จากระยะไกลได้

ขั้นตอนการเชื่อมต่อบอร์ด L298N กับบอร์ด Raspberry Pi
1. ใช้ไขควงคลายน็อตในช่อง GROUND (ช่องกลาง) ของบอร์ด L298N ให้เปิดออก แล้วนำขาเสียบฝั่งตัวผู้ของสาย Jumper แบบตัวผู้-ตัวเมีย เสียบเข้าไปในช่อง แล้วขันน็อตให้แน่น ส่วนปลายสายฝั่งตัวเมียของสาย Jumperให้เสียบเข้าไปที่ขา PIN6 (GND) ของขา GPIO ที่บอร์ด Raspberry Pi

2. ใช้สาย Jumper ตัวเมีย-ตัวเมีย 4 เส้น เสียบเข้าไปในช่อง IN1 – IN4 ของบอร์ด L298N

3. ปลายสาย Jumper อีกด้านเสียบเข้ากับขา GPIO ที่เป็นขา Input/Output ของบอร์ด Raspberry Pi (ในที่นี้จะเสียบเข้ากับขา GPIO ที่บอร์ด Raspberry Pi ตามลำดับคือ
- ขา IN1 ของ L298N ต่อเข้ากับขา PIN31 ของบอร์ด Raspberry Pi
- ขา IN2 ของ L298N ต่อเข้ากับขา PIN33 ของบอร์ด Raspberry Pi
- ขา IN3 ของ L298N ต่อเข้ากับขา PIN35 ของบอร์ด Raspberry Pi
- ขา IN4 ของ L298N ต่อเข้ากับขา PIN37 ของบอร์ด Raspberry Pi

4. นำบอร์ด Raspberry Pi มาเสียบสาย HDMI ต่อเข้ากับจอภาพหรือเครื่องคอมพิวเตอร์ที่มีพอร์ต HDMI IN และเชื่อมต่อเมาส์และคีย์บอร์ดเข้ากับบอร์ด Raspberry Pi หลังจากนั้นเชื่อมต่อสาย Adapter เข้ากับ Power Bank เชื่อมต่อกับบอร์ด เพื่อจ่ายไฟแก่บอร์ด Raspberry Pi จะปรากฏไปสถานะสีส้มที่ตัวบอร์ด ระบบจะทำการบู๊ตเข้าระบบปฏิบัติการ Raspbian โดยอัตโนมัติ

สร้างปุ่มควบคุมและเขียนโปรแกรมคำสั่งด้วยภาษา JavaScript จากโปรแกรม Node-RED
1. ทำการเชื่อมต่อ Wi-Fi โดยคลิกที่เมนู Wi-Fi ที่มุมบนขวาของหน้าจอและคลิก Turn On Wi-Fi หลังจากนั้นคลิกที่ Wi-Fi อีกครั้ง คลิกเลือก Wi-Fi ที่ต้องการเชื่อมต่อ หากมีรหัส Wi-Fi ก็ต้องกรอกรหัสและคลิกปุ่ม OK

2. เปิดใช้งาน Node-RED โดยคลิกที่ RasPi --> Programming --> Node-RED และรอจนกว่าจะเปิดใช้งานเสร็จเรียบร้อย


3. ตรวจสอบ IP Address ของบอร์ด Raspberry Pi โดยใช้เมาส์ชี้ที่ Wi-Fi จะปรากฏหมายเลข IP Address ของเครื่อง
4. คลิกที่ Web Browser แล้วพิมพ์ url ตามรูปแบบด้านล่าง แล้วกดปุ่ม Enter
 http://<ใส่ IP Address ของบอร์ด Raspberry Pi>:1880
 เช่น http://10.0.1.38:1880

5. ดาวน์โหลด Node dashboard โดยไปที่เมนู แล้วคลิกที่ แล้วคลิกเมนู Manage palette

6. คลิกแท็บ Palette แล้วคลิกที่แท็บ Install

7. คลิกในช่อง search modules แล้วพิมพ์คำว่า "dashboard" จะเจอโหนดที่มีชื่อว่า node-red-dashboard ให้คลิกปุ่ม install

8. จะปรากฏโหนด dashboard ขึ้นมาด้านซ้ายของโปรแกรม ดังรูป

9. คลิกที่เมนู dashboard ที่มุมด้านบนขวา ในแท็บ Layout แล้วคลิกที่ +tab เพื่อทำการสร้างแท็บใหม่ขึ้นมา

แท็บที่สร้างขึ้นใหม่จะชื่อว่า Tab1 ให้เปลี่ยนชื่อแท็บโดยคลิกที่คำสั่ง edit ที่อยู่ด้านหลังแท็บ

เปลี่ยนชื่อแท็บ ในที่นี้จะตั้งชื่อแท็บว่า Robot แล้วคลิกที่ปุ่ม Update

สร้าง Group ในแท็บ Robot โดยคลิกที่ +group ด้านหลังแท็บ

เมื่อสร้าง Group ขึ้นมา จะมีชื่อว่า Group1 ให้เปลี่ยนชื่อ Group โดยคลิกที่ปุ่ม edit

เปลี่ยนชื่อ Group เป็น Main และคลิกปุ่ม Update ดังรูป

สร้าง Group เพิ่มขึ้นมาอีก 1 Group โดยตั้งชื่อว่า Poweroff โดยทำตามขั้นตอนเดียวกับ Group Main

10. สร้างปุ่มควบคุมขึ้นมา 5 ปุ่ม คือ ปุ่ม Forward, Backward, Turn Left, Turn Right และ Stop ใน Group : Main
 10.1 ลากปุ่มคำสั่ง button มาวางบนพื้นที่วาด

 10.2 ดับเบิ้ลคลิกปุ่มที่เพิ่งลากมาวาง หลังจากนั้นให้กำหนดค่าต่างๆ ดังรูป แล้วคลิกปุ่ม Done
 - Group : Main
 - Icon : fa-arrow-up
 - Label : Forward
 - Payload : forward

10.3 สร้างปุ่ม Backward, Turn Left, Turn Right และ Stop ขึ้นมาตามลำดับ โดยทำซ้ำตามขั้นตอน 10.1 และ 10.2 โดยกำหนดค่าดังนี้
NODE |
การกำหนดคุณสมบัติ |
Forward |
Group : Main[Robot]
Size : auto
Icon : fa-arrow-up
Label : Forward
Payload : forward |
Backward |
Group : Main[Robot]
Size : auto
Icon : fa-arrow-down
Label : Backward
Payload : backward |
Turn Left |
Group : Main[Robot]
Size : auto
Icon : fa-arrow-left
Label : Turn Left
Payload : left |
Turn Right |
Group : Main[Robot]
Size : auto
Icon : fa-arrow-right
Label : Turn Right
Payload : right |
Stop |
Group : Main[Robot]
Size : auto
Icon : fa-hand-paper-o
Label : Stop
Payload : stop |

11. ลากปุ่ม Function เข้ามา เพื่อเขียนโปรแกรมด้วยภาษา JavaScript ควบคุมการการเคลื่อนที่ของรถหุ่นยนต์ เมื่อผู้ใช้กดปุ่มคำสั่ง

12. ลากบล็อก rpi gpio ออกมา 4 อัน ซึ่งจะเป็นส่วน Output ของโปรแกรม ซึ่งในที่นี้คือขา GPIO ที่เชื่อมต่อกับมอเตอร์ของหุ่นยนต์นั่นเอง

13. ดับเบิ้ลคลิกที่บล็อก PIN : แต่ละบล็อกแล้วกำหนดขา GPIO ที่เชื่อมต่อมอเตอร์ ซึ่งก่อนหน้านี้เราได้ทำการเชื่อมต่อเข้ากับขา GPIO ลำดับที่ 31, 33, 35 และ 37 ตามลำดับ (จากรูปเป็นตัวอย่างการเชื่อมต่อกับขา PIN31)


14. ลากเส้นเชื่อมต่อส่วน Input (ปุ่ม) เข้ากับฟังก์ชั่น (โปรแกรม) ให้ครบทุกปุ่ม

15. ดับเบิ้ลคลิกเข้าไปในบล็อกฟังก์ชั่น แล้วกำหนดว่ามีกี่ Output แล้วคลิกปุ่ม Done

16. ลากเส้นเชื่อมต่อบล็อกฟังก์ชั่นเข้ากับ Output ให้ครบทุกจุด

17. ดับเบิ้ลคลิกเข้าไปในบล็อกฟังก์ชัน แล้วใส่โค้ดภาษา JavaScript ดังนี้
var msg1 = {payload: 0};
var msg2 = {payload: 0};
var msg3 = {payload: 0};
var msg4 = {payload: 0};
if(msg.payload === "forward"){
 msg1.payload = 1;
 msg2.payload = 0;
 msg3.payload = 0;
 msg4.payload = 1;
}
if(msg.payload === "backward"){
 msg1.payload = 0;
 msg2.payload = 1;
 msg3.payload = 1;
 msg4.payload = 0;
}
if(msg.payload === "right"){
 msg1.payload = 1;
 msg2.payload = 0;
 msg3.payload = 0;
 msg4.payload = 0;
}
if(msg.payload === "left"){
 msg1.payload = 0;
 msg2.payload = 0;
 msg3.payload = 0;
 msg4.payload = 1;
}
if(msg.payload === "stop"){
 msg1.payload = 0;
 msg2.payload = 0;
 msg3.payload = 0;
 msg4.payload = 0;
}
return [msg1,msg2,msg3,msg4];
 
 
 
18. สร้างปุ่มปิดใน Group : PowerOff
 18.1 ลากบล็อก button เข้ามาวางในพื้นที่การวาด แล้วดับเบิ้ลคลิกเข้าไปตั้งค่าดังนี้ แล้วคลิกปุ่ม Done


 18.2 ลากบล็อก exec มาวาง เพื่อใส่โค้ดคำสั่งในการปิดบอร์ด Raspberry Pi โดยดับเบิ้ลคลิกเข้าไปในบล็อก และตั้งค่าดังนี้


 18.3 ลากเส้นเชื่อมโยงระหว่าง 2 บล็อก ดังรูป

19. เมื่อเขียนโปรแกรมเสร็จเรียบร้อยแล้ว ให้กดปุ่ม Deploy ด้านบนขวาของโปรแกรม Node-RED

20. คลิกเมนู Preview เพื่อเปิดหน้าจอผลลัพธ์ ดังรูป

ซึ่งจะเห็นว่าหน้าแสดงผลจะมีรูปแบบ URL ดังนี้
 http://<ใส่ IP Address ของบอร์ด Raspberry Pi>:1880/ui
 เช่น http://10.0.1.23:1880/ui
จะได้หน้าจอโปรแกรม ดังรูป

21. นำถ่านขนาด 2A จำนวน 4 ก้อนใส่ในกระบะถ่าน หลังจากนั้นให้ทดลองกดปุ่มต่างๆ แล้วดูการเคลื่อนที่ของหุ่นยนต์ หากผลลัพธ์ไม่ถูกต้อง ก็กลับไปแก้ไขในโปรแกรม Node-RED หลังการแก้ไขให้คลิกปุ่ม Deploy ใหม่อีกครั้ง
22. เมื่อได้ผลลัพธ์ตามที่ต้องการแล้ว ให้ถอดสาย HDMI เมาส์ และคีย์บอร์ดออกจากบอร์ด Raspberry Pi เพื่อให้รถหุ่นยนต์เคลื่อนที่ได้อย่างอิสระ
23. ใช้มือถือ แท็บเล็ต หรือคอมพิวเตอร์จับ Wi-Fi ตัวเดียวกับ Raspberry Pi แล้วเปิดเว็บบราวเซอร์ขึ้นมา แล้วพิมพ์ url
http://<ใส่ IP Address ของบอร์ด Raspberry Pi>:1880/ui
จะได้หน้าจอโปรแกรมควบคุมหุ่นยนต์ ดังรูป

2. หุ่นยนต์หลบหลีกสิ่งกีดขวาง
สิ่งที่ต้องมี
1. โมดูลวัดระยะทาง HC-SR04 (เซนเซอร์อัลตราโซนิก)

2. บอร์ด Raspberry Pi ใช้บอร์ดที่มี GPIO 40 ขา

3. ชุดประกอบรถหุ่นยนต์ ซึ่งประกอบด้วยตัวรถ ล้อ มอเตอร์ กระบะใส่ถ่าน

4. บอร์ดขับเคลื่อนมอเตอร์ ในที่นี้จะใช้บอร์ด L298N

5. Power bank ที่มีขนาดความจุ 2,200 mAh. ขึ้นไป เพื่อจ่ายไฟให้แก่บอร์ด Raspberry Pi เพื่อให้หุ่นยนต์เคลื่อนที่ได้อย่างอิสระ

ขั้นตอนการเชื่อมต่อบอร์ด L298N กับบอร์ด Raspberry Pi
1. ใช้ไขควงคลายน็อตในช่อง GROUND (ช่องกลาง) ของบอร์ด L298N ให้เปิดออก แล้วนำขาเสียบฝั่งตัวผู้ของสาย Jumper แบบตัวผู้-ตัวเมีย เสียบเข้าไปในช่อง แล้วขันน็อตให้แน่น ส่วนปลายสายฝั่งตัวเมียของสาย Jumperให้เสียบเข้าไปที่ขา PIN6 (GND) ของขา GPIO ที่บอร์ด Raspberry Pi

2. ใช้สาย Jumper ตัวเมีย-ตัวเมีย 4 เส้น เสียบเข้าไปในช่อง IN1 – IN4 ของบอร์ด L298N

3. ปลายสาย Jumper อีกด้านเสียบเข้ากับขา GPIO ที่เป็นขา Input/Output ของบอร์ด Raspberry Pi (ในที่นี้จะเสียบเข้ากับขา GPIO ที่บอร์ด Raspberry Pi ตามลำดับคือ
- ขา IN1 ของ L298N ต่อเข้ากับขา PIN31 ของบอร์ด Raspberry Pi
- ขา IN2 ของ L298N ต่อเข้ากับขา PIN33 ของบอร์ด Raspberry Pi
- ขา IN3 ของ L298N ต่อเข้ากับขา PIN35 ของบอร์ด Raspberry Pi
- ขา IN4 ของ L298N ต่อเข้ากับขา PIN37 ของบอร์ด Raspberry Pi

ขั้นตอนการเชื่อมต่อโมดูลวัดระยะทาง HC-SR04 กับบอร์ด Raspberry Pi
1. ใช้สาย Jumper ตัวเมีย-ตัวเมีย 4 เส้นเสียบเข้ากับขาของโมดูล HC-SR04 ซึ่งมี 4 ขา ดังนี้
 - GND จะเสียบเข้ากับขา PIN9 (GROUND) ของบอร์ด Raspberry Pi
 - ECHO จะเสียบเข้ากับขา PIN18 ของบอร์ด Raspberry Pi
 - TRIG จะเสียบเข้ากับขา PIN16 ของบอร์ด Raspberry Pi
 - VCC จะเสียบเข้ากับขา PIN2 (5V) ของบอร์ด Raspberry Pi
หลังจากนั้นให้นำโมดูล HC-SR04 ติดตั้งไว้ด้านหน้าของรถหุ่นยนต์

2. นำบอร์ด Raspberry Pi มาเสียบสาย HDMI เข้ากับจอภาพหรือเครื่องคอมพิวเตอร์ที่มีพอร์ต HDMI IN เชื่อมต่อเมาส์และคีย์บอร์ด และหลังจากนั้นเสียบสาย Power Bank เพื่อจ่ายไฟแก่บอร์ด Raspberry Pi จะปรากฏไปสถานะสีส้มที่ตัวบอร์ด ระบบจะทำการบู๊ตเข้าระบบปฏิบัติการ Raspbian โดยอัตโนมัติ

หลักการทำงานของโมดูลวัดระยะทาง HC-SR04
HC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส โดยใช้คลื่นอัลตราโซนิก ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2 – 400 เซนติเมตรหรือ 1 – 156 นิ้ว สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติหรืองานด้านหุ่นยนต์ หลักการทำงานจะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว โดยจะประกอบไปด้วยตัวรับ-ส่งอัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40 kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ (t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จากสูตร
S = 346 × 0.5t

รูปที่ 1 หลักการตรวจจับและวัดระยะห่างระหว่างวัตถุด้วยคลื่นเสียง

รูปที่ 2 การต่อใช้งานโมดูลอัลตราโซนิก HC-SR04
ตามคุณลักษณะของเซนเซอร์ จะต้องสร้างสัญญาณพัลส์ความกว้างไม่น้อยกว่า 10 msec ป้อนเข้าที่ขา Trig หลังจากนั้นอีกประมาณ 1.4 msec จึงจะเริ่มมีสัญญาณพัลส์เกิดขึ้นที่ขา Echo มีความกว้างของสัญญาณตั้งแต่ 150 usec – 25 msec ซึ่งถ้าหากกว้างกว่านี้จะถือว่าตรวจไม่พบวัตถุ หลังจากนั้นควรหน่วงเวลาออกไปอีก 10 msec จึงจะส่งสัญญาณ Trig ออกไปอีกรอบ ตามรูปที่ 3

รูปที่ 3 สัญญาณที่ขา Trig และขา Echo ของโมดูลเซนเซอร์อัลตราโซนิก HC-SR04


เขียนโปรแกรมด้วยภาษา Python
1. เปิดโปรแกรม Python โดยคลิกที่สัญลักษณ์ Raspberry Pi ที่อยู่มุมด้านบนซ้ายของหน้าจอ แล้วเลือกเมนู Programming เลือกโปรแกรม Python 3 (IDLE) หรือโปรแกรม Thonny Python IDLE (ในที่นี้จะเลือกใช้โปรแกรม Thonny Python IDLE)

2. เขียนโค้ดคำสั่ง ดังนี้
 
 
3. เมื่อเขียนโค้ดคำสั่งเสร็จแล้ว ให้คลิกปุ่ม Run เพื่อทดสอบโปรแกรม ระบบจะให้ทำการบันทึกไฟล์ .py ในที่นี้จะตั้งชื่อไฟล์ว่า robot.py โดยโฟลเดอร์เริ่มต้นในการบันทึกไฟล์จะอยู่ที่ /home/pi/ และหากต้องการหยุดการรันโปรแกรม ให้คลิกปุ่ม Stop หากรถหุ่นยนต์ยังไม่หยุดหมุน ให้ปิดสวิตช์บนตัวรถหุ่นยนต์

4. หากต้องการให้รถหุ่นยนต์เคลื่อนที่ตามโค้ดคำสั่งโดยอัตโนมัติ เมื่อเปิดบอร์ด Raspberry Pi (Autostart) จะต้องเข้าไปตั้งค่าดังนี้
 4.1 เปิดโปรแกรม Terminal แล้วพิมพ์คำสั่งดังนี้
  sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

 4.2 เลื่อนมาที่บรรทัดสุดท้าย เพิ่มคำสั่งในการรันโปรแกรม ดังนี้
  python /home/pi/ชื่อไฟล์.py
  ในที่นี้จะต้องพิมพ์คำสั่ง python /home/pi/robot.py เป็นต้น

 4.3 ทำการบันทึก โดยกดปุ่ม Ctrl + X ระบบจะถามว่าต้องการบันทึกการเปลี่ยนแปลงหรือไม่ ให้พิมพ์ Y แล้วกด Enter ออกจากหน้าแก้ไข โดยกด Enter อีกครั้ง
5. Reboot บอร์ด Raspberry Pi โดยคลิกที่สัญลักษณ์ Raspberry แล้วคลิกเมนู Shutdown แล้วคลิกเลือกคำสั่ง Reboot รอสักครู่เมื่อบอร์ด Raspberry เปิดขึ้นมาอีกครั้ง รถหุ่นยนต์จะเคลื่อนที่ตามโค้ดคำสั่งในไฟล์ .py ที่ได้ทำการตั้งค่า autostart ขึ้นโดยอัตโนมัติ


|