หุ่นยนต์ติดกล้องควบคุมด้วย Raspberry Pi

.

หุ่นยนต์ติดกล้องเปิดดูภาพผ่านโทรศัพท์มือถือควบคุมด้วย Raspberry Pi

อภิรักษ์ นามแถ่ง

aphirak112@gmail.com

งบประมาณ 3,850 บาท (ไม่รวมหุ่นยนต์)

 

โครงงานนี้เป็นการนำบอร์ด Raspberry Pi มาทำเป็น web server เพื่อควบคุมทิศทางการวิ่งของรถ และในขณะเดียวกันก็สตรีมภาพเคลื่อนไหวจากกล้องที่ติดอยู่บนหน้ารถกลับมาแสดงผลที่หน้าจอเพื่อให้ผู้ใช้งานบังคับทิศทางได้แม่นยำ เนื่องจากภาพที่เห็นเบื้องหน้าจากกล้องนั้นเป็นแบบเรียลไทม์นั่นเอง

 

โครงงานนี้จะเป็นการใช้ Camera Module ของ Raspberry Pi เพื่อถ่ายภาพเคลื่อนไหวแล้วทำการ Steam ข้อมูลภาพเคลื่อนไหวที่ถ่ายได้ส่งไปยัง webserver เมื่อเครื่อง client เชื่อมต่อเข้ามา (คอมพิวเตอร์หรือโทรศัพท์มือถือ) ภาพจะถูกแสดงบนหน้าจอของเครื่อง Client และเนื่องจากงานนี้ผู้เขียนต้องการให้เป็นรูปแบบหุ่นยนต์ ดังนั้นจึงต้องเพิ่มเติมในส่วนของการควบคุมทิศทางมอเตอร์เพื่อให้สามารถเคลื่อนย้ายกล้องไปในสถานที่ต่างๆ ได้ด้วย

พระเอกในโครงงานนี้จะเป็นซอฟต์แวร์ ซึ่งจะมีอยู่ 2 โปรแกรมด้วยกัน คือ โปรแกรม Motion สำหรับ Steam ภาพเคลื่อนไหวจากกล้องและโปรแกรม Webio Pi ที่เป็น Webserver ของเราซึ่ง Webio Pi เป็นเว็บแอพลิเคชันที่ถูกพัฒนามาจากภาษา Python ทำงานร่วมกันกับ REST Frame work คุณสมบัตินี้ทำให้สามารถควบคุม GPIO ของบอร์ด Raspberry pi ได้ เพื่อไม่เป็นการเสียเวลามาเริ่มกันเลยครับ

รูปที่ 1 บอร์ด Raspberry Pi 2 Model B

การลง Linux และตั้งค่าให้กับ Raspberry Pi

สำหรับโครงงานนี้จะใช้บอร์ด Raspberry Pi 3 Model B ขั้นแรกจะต้องลงปฏิบัติการ Linux ให้กับบอร์ด Raspberry Pi เสียก่อน ซึ่งในโครงงานนี้จะใช้ระบบปฏิบัติการ Raspbian Jessie สามารถเข้าไปดาวน์โหลดได้ที่เว็บไซต์ https://www.raspberrypi.org/downloads/raspbian (ดังรูปที่ 2) เพื่อเตรียมสำหรับติดตั้งใน SD Card ซึ่งผู้เขียนใช้รุ่นเวอร์ชัน 2016-03-18 เนื่องจากในเวอร์ชันนี้ได้ติดตั้ง Python 2.7 และ RPi.GPIO (โมดูลสำหรับอินเตอร์เฟสกับพอร์ต GPIO ของ Raspberry Pi) มาไว้เรียบร้อยในตัวแล้ว จึงสะดวกกับงานของเราอย่างมาก

รูปที่ 2 หน้าเว็บไซต์สำหรับดาวน์โหลดระบบปฏิบัติการ Raspbian Jessie

อย่างที่รู้กันดีว่าบอร์ด Raspberry Pi ไม่มีหน่วยความจำแบบแฟลชเมมโมรี่ ดังนั้นจำเป็นที่จะใช้ SD Card ภายนอก ซึ่งหากเปรียบเทียบกับคอมพิวเตอร์ SD Card นี้ก็จะเปรียบเสมือนฮาร์ดดิสก์นั่นเอง การลงระบบปฏิบัติการรวมถึงการโปรแกรมหรือข้อมูลต่างๆ จะถูกจัดเก็บไว้ใน SD Card นี้ทั้งหมด ดังนี้ความเร็วในการสื่อสารรวมถึงคุณภาพของ SD Card ก็เป็นสิ่งที่ต้องคำนึงถึง ซึ่งโครงงานนี้ผู้ใช้เลือกการ์ดที่เป็น Class 10 ที่ความจุ 8GB เพื่อให้การใช้งาน Raspberry Pi มีประสิทธิภาพมากที่สุด อีกทั้งราคาขอวงการ์ด Class 10 กับ Class 4 นั้นราคาไม่ได้ต่างกันมากเท่าไรนัก

รูปที่ 3 ตัวอย่างหน้าต่างโปรแกรม SD Formatter Version 4.0

รูปที่ 4 ตัวอย่างโปรแกรม Win32 Disk Imager

รูปที่ 5 เลือกตำแหน่งไฟล์ Image เพื่อลงระบบปฏิบัติการ Raspbian Jessie

รูปที่ 6 ระหว่างการติดตั้งระบบปฏิบัติการ Raspbian ลง SD Card

รูปที่ 7 หน้าต่างแสดงเมื่อติดตั้ง Raspbian สำเร็จ

ขั้นตอนการติดตั้ง Raspbian Jessie

  1. โปรแกรม SD Formatter 4.0 ใช้สำหรับ Format Disk สามารถดาวน์โหลดได้จากลิงค์ https://www.sdcard.org/downloads/formatter_4/eula_windows/

  2. โปรแกรม Win32 Disk Imager ใช้สำหรับเขียนไฟล์ระบบปฏิบัติการที่เป็นไฟล์ Image (*.img) ลงบน SD Card สามารถดาวน์โหลดได้จากลิงค์ http://sourceforge.net/projects/win32diskimager/

  3. ดาวน์โหลดไฟล์ระบบปฏิบัติการ Raspbian Jessie เวอร์ชัน 2016-03-18 ที่ถูกปรับแต่งให้ใช้สำหรับบอร์ด Raspberry Pi โดยเฉพาะเป็น Linux ที่ให้ใช้งานได้ฟรี สามารถดาวน์โหลดได้จากลิงค์ https://www.raspberrypi.org/downloads/raspbian/

  4. จากนั้นให้ Browse ไฟล์ Image ระบบปฏิบัติการ Raspbian Jessie เวอร์ชัน 2016-03-18 (*img) และเลือก Device ให้ถูกต้อง แล้วคลิกปุ่ม Write แสดงดังรูป และจะปรากฏหน้าต่างยืนยัน ให้คลิกปุ่ม Yes

  5. เมื่อเสร็จสิ้นขั้นตอนการลง Raspbian แล้วให้เสียบ SD Card ที่เตรียมไว้ลงในช่องซ็อกเก็ตของบอร์ด Raspberry Pi

  6. ให้เสียบสาย Ethernet จากโมเด็มเข้าบอร์ด Raspberry Pi

  7. ป้อนแหล่งจ่ายให้กับบอร์ด Raspberry Pi

รูปที่ 8 การเชื่อมต่อสาย Ethernet และแหล่งจ่ายบอร์ด Raspberry Pi

รูปที่ 9 หน้าต่างซอฟต์แวร์ TeraTerm โดยเราจะต้องกรอก IP Address ของบอร์ด ลงที่ช่อง Host

รูปที่ 10 หน้าต่าง Login ของซอฟต์แวร์ TeraTerm โดยให้กรอก User name และ Passphrase เป็น pi และ raspberry

รูปที่ 11 หน้าต่าง terminal ของ Raspbian ซึ่งจะถูกเปิดขึ้นมาหลังจาก remote Login ได้แล้ว

หลังจากที่เชื่อมต่อสาย Ethernet และจ่ายไฟให้กับ Raspberry Pi (ดังรูปที่ 8) เรียบร้อยแล้ว คราวนี้ก็มาเตรียมโปรแกรมทางฝั่งคอมพิวเตอร์ของเรา โดยให้ติดตั้งโปรแกรม TeraTerm (สามารถดาวน์โหลดได้ที่เว็บไซต์ https://en.osdn.jp/projects/ttssh2/releases/) เพื่อไว้สำหรับใช้รีโมต Login (remote login) มายัง Raspberry Pi โดยให้คลิ๊กเปิด TeraTerm ขึ้นมาแล้วให้เติม IP Address ของบอร์ดลงที่ช่อง Host จากนั้นคลิ๊ก Open ดังรูปที่ 9

เมื่อคอมพิวเตอร์เชื่อมเข้ากับบอร์ดได้สำเร็จ ที่หน้าต่าง Login ของ TeraTerm จะถูกเปิดขึ้นมาอย่างอัตโนมัติ (รูปที่ 10) ให้ผู้ใช้เติมที่ช่อง User name และ Passphrase เป็น pi และ raspberry ตามลำดับ จากนั้นคลิ๊ก OK อีกครั้ง ถ้าทุกอย่างถูกต้อง เราก็จะสามารถผ่านไปยังหน้าต่าง Terminal ของ Raspbian ได้แล้ว (รูปที่ 11)

(ก)

(ข)

(ค)

(ง)

รูปที่ 12 หน้าต่างในการเซตค่าตั้งต้นด้วย raspi-config

หลังจากการ Login หากเป็นการใช้งานเป็นในครั้งแรก ก็อาจต้องใช้คำสั่ง sudo raspi-config เพื่อตั้งค่าต่างๆ ให้กับบอร์ด Raspberry Pi ตามรายการต่อไปนี้ด้วยครับ (จากรูปที่ 12 ใช้ปุ่มลูกศรขึ้นลงเพื่อเลื่อนไปยังตัวเลือกที่ต้องการ และเลือกด้วยปุ่ม Enter) สิ่งที่จำเป็นต้องตั้งค่ามีอยู่ 4 ส่วน ได้แก่

  1. Expand Filesystem เพื่อขยายพื้นที่ใช้งานใน SD card เพื่อให้ Raspberry Pi สามารถใช้พื้นที่บน SD card ได้ทั้งหมดหัวข้อที่ 1.

  2. กำหนดให้บอร์ด Raspberry Pi ทำการ Login โดยอัตโนมัติ (ไม่ต้องป้อน Username และ Password) เพื่อให้บอร์ดเริ่มทำงานทันทีหลังจากป้อนแรงดันหัวข้อที่ 3. (รูปที่ 12 ข)

  3. กำหนดให้บอร์ด Raspberry Pi รอความพร้อมของเครือข่ายที่เชื่อมต่อก่อนทำการ Login หัวข้อที่ 4. (รูปที่ 12 ค)

  4. Internationalisation Options > Change Timezone เพื่อตั้งค่า Timezone โดยให้เลือก Geographic area เป็น Asia และเลือก Time zone เป็น Bangkok หัวข้อที่ 5.

  5. เลือกเปิดใช้งานโมดูลกล้องหัวข้อที่ 6. (รูปที่ 12 ง)

  6. จบการตั้งค่าโดยคลิ๊กปุ่ม Finish จากเมนูหลัก (กดปุ่มลูกศรทางขวา) จากนั้นเพื่อความมั่นใจให้รีบูต (reboot) บอร์ดด้วยคำสั่ง sudo reboot

ขั้นต่อไป (remote login มายัง Raspberry Pi เข้ามาอีกรอบได้แล้ว) ให้ใช้คำสั่ง sudo rpi-update เพื่อตรวจสอบและอัพเดตเฟิร์มแวร์ของบอร์ดเป็นเวอร์ชันล่าสุด หลังจากการอัพเดต ก็จะต้อง reboot บอร์ดด้วยคำสั่ง sudo reboot ด้วยเช่นกัน

รูปที่ 13 การเชื่อมต่อกล้องเข้ากับบอร์ด Raspberry Pi

รูปที่ 14 คำสั่งสำหรับติดตั้ง Motion แบบแมนวล

ติดตั้งโปรแกรม Motion

Motion เป็นโปรแกรมที่มีให้ใช้งานอยู่แล้วในระบบปฏิบัติการ Debain ที่เป็น Linux โดยโปรแกรมดังกล่าวสามารถดูภาพกล้องผ่านทางหน้าเว็บได้และยังมี Function ในการดักจับความเคลื่อนไหวของภาพเพื่อบันทึกและเก็บข้อมูลเป็นไฟล์ ภาพ หรือ วีดีโอ เก็บไว้ได้ ก่อนจะติดตั้งโปรแกรมให้เชื่อมต่อโมดูลกล้องเข้ากับบอร์ด Raspberry Pi ดังรูปที่ 13

จากนั้นจะติดตั้งโปรแกรม Motion แต่เนื่องจากโครงงานนี้ใช้ OS หรือระบบปฏิบัติการตัวใหม่ล่าสุด คือ Jessie การติดตั้งด้วยคำสั่งธรรมดาทั่วไปนั้นทำไม่ได้ (sudo apt-get install motion) เพราะจะเกิดความผิดพลาดขึ้น เนื่องจากไลบรารี่ของ Jessie จะแตกต่างจากไลบรารี่ libjpeg ของ Wheezy (ระบบปฏิบัติการตัวเก่า) ดังนั้นการติตตั้งจึงทำแบบแมนนวลด้วยคำสั่งดังนั้น

  • sudo apt-get install -y libjpeg-dev libavformat56 libavformat-dev libavcodec56 libavcodec-dev libavutil54 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev 

จากนั้นก็ให้ทำสร้างกระเป๋าสำหรับงานของเราพร้อมกับการดาวน์โหลดโปรแกรมที่ทำการดัดแปลงแก้ไขเพื่อให้ใช้ได้กับ Jessie ด้วยคำสั่ง

  • mkdir semicar

  • cd semicar

  • wget http://electronics.se-ed.com/download/semi433/motion-mmal-semi.tar.gz

  • tar -zxvf motion-mmal-semi.tar.gz 

เมื่อเสร็จแล้วจะได้ไฟล์ดังแสดงในรูปที่ 15 จากนั้นให้ใช้คำสั่งเพื่อ Run โปรแกรม Motion (ขณะนั้นอยู่ที่พาร์ท /home/pi/semicar/mmal)

  • cd mmal

  • sudo ./motion -c motion-mmalcam-both.conf

ทดสอบการ Stream ไฟล์ภาพเคลื่อนไหวโดยใช้ Video Stream ด้วยโปรแกรม vlc (สำหรับท่านใดที่ไม่มีโปรแกรม vlc ในเครื่องคอมพิวเตอร์สามารถไปดาวน์โหลดได้ฟรีๆ ที่เว็บไซต์ http://www.videolan.org/vlc/index.html) ให้ผู้ใช้ใส่ตำแหนง IP Address ของบอร์ด Raspberry Pi ในรูปแบบ http://[IP]:8081โดยเข้าไปที่เมนู File > open Network และใส่ IP Address หากถูกต้องจะเห็นภาพที่อยู่เบื้องหน้าของกล้อง ดังแสดงในรูปที่ 17

 

รูปที่ 15 กระเป๋าที่ได้จากการดาวน์โหลดไฟล์สำหรับ Motion

รูปที่ 16 หน้าต่างแสดงหลังจากสั่งให้ Motion ทำงาน

รูปที่ 17 การเปิด Video Stream จากโปรแกรม vlc 

ติดตั้งโปรแกรม Webio Pi

เนื่องจากโปรแกรม Webio Pi ได้รับการออกแบบมานานแล้วและขณะนี้มีการพัฒนาจากเวอร์ชันเดิมหลายอย่าง รวมถึงการเพิ่มตำแหน่งของ GPIO ขึ้นมาอีกด้วย โปรแกรม WebIO Pi ที่ใช้ในโครงงานนี้จะอ้างอิงกับบอร์ดรุ่น model B (รุ่นเก่า) แต่ทว่าโครงงานนี้ใช้บอร์ด Model B+ ดังันั้นโปรแกรมจะไม่สามารถใช้กับงานของเราได้ แต่ไม่ต้องตกใจ เพราะมีวิธีอัพเดทให้ Webio Pi สามารถใช้ได้กับบอร์ด Model B+ เพื่อไม่เป็นการเสียเวลา เริ่มโดยการพิมพ์คำสั่งดังนี้

  • cd semicar

  • sudo wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

  • sudo tar xvzf WebIOPi-0.7.1.tar.gz

  • cd WebIOPi-7.1

เสร็จแล้วทำการดาวน์โหลดและติดตั้ง patch เพื่อให้ใช้ได้กับบอร์ด Model B+

  • sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch

  • patch -p1 -i webiopi-pi2bplus.patch

  • sudo ./setup.sh

มาถึงขั้นตอนนี้เป็นการเสร็จสิ้นขั้นตอนการติดตั้ง WebIO Pi

รูปที่ 18 ไฟล์ WebIOPi-0.7.1.tar.gz ในกระเป๋า

รูปที่ 19 การลง patch เพื่อให้ใช้ได้กับบอร์ด Model B+ ได้

รูปที่ 20 หน้าต่างเมื่อสั่งการให้ WebIO Pi ทำงาน 

หลังจากที่ลงโปรแกรม WebIO Pi เสร็จเรียบร้อยก็สามารถทำการทดสอบเว็บของเราได้โดยใช้คำสั่ง

  • sudo webiopi -d -c /etc/webiopi/config

หากถูกต้องที่หน้าต่างจะแสดงค่าต่างๆ ขึ้นมาดังรูปที่ 20 และให้ใส่ Username เป็น webiopi และ Password เป็น raspberry ดังแสดงในรูปที่ 21 หลังจากที่ป้อนเสร็จ หากถูกต้องจะปรากฎหน้าจอของ WebIO Pi ดังรูปที่ 22 แสดงว่าสิ้นสุดขั้นตอนการติดตั้ง การเปิดใช้งานโปรแกร WebIO Pi นอกจากจะใช้คำสั่งที่กล่าวถึงในข้างต้นแล้ว ยังสามารถใช้คำสั่ง

  • sudo /etc/init.d/webiopi start

เพื่อทำการสั่งให้ webserver เริ่มทำงานนแต่ถ้าอยากจะสั่งให้หยุดทำงาน ก็ใช้คำสั่งเดิมแต่เปลี่ยนจาก start เป็น stop ดังนี้

  • sudo /etc/init.d/webiopi stop

รูปที่ 21 WebIO Pi ถามรหัสผ่านเพื่อเข้าใช้งาน

รูปที่ 22 หน้าแรก (index.html) ของ WebIO Pi

รูปที่ 23 กดที่เมนู GPIO Header เพื่อกำหนดและสั่งงานสถานะของ GPIO

ติดตั้งหน้าเว็บสำหรับ semicar

หากมาถึงขั้นตอนนี้แล้ว นั่นแสดงว่าท่านสามารถ Stream ภาพเคลื่อนไหวและสร้าง webserver ด้วยโปรแกรม WebIO Pi ได้แล้ว ต่อไปจะเป็นการแก้ไขหน้าเว็บให้เป็นแบบที่เราต้องการ ซึ่งผู้ใช้ได้เตรียมไว้ให้แล้วในกระเป๋า htdocs ที่ดาวน์โหลดมาแล้วก่อนหน้านี้ (กระเป๋า home/pi/semicar) ในกระเป๋าจะมีไฟล์ต่างๆ เกี่ยวกับการสร้างหน้าเว็บของเราทั้งหมด ดังแสดงในรูปที่ 24 

รูปที่ 24 ไฟล์ที่อยู่ในกระเป๋า htdocs

ขั้นตอนต่อไปเราจะต้องนำไฟล์ทั้งหมดที่อยู่ในกระเป๋า htdocs ไปแทนไฟล์หน้าเว็บเดิมของโปรแกรม WebIO Pi ซึ่งการย้ายไฟล์หรือลบไฟล์ผ่านโปรแกรม TeraTerm นั้นอาจจะทำได้ลำบากสักหน่อย ดังนั้นผู้เขียนจะขอแนะนำโปรแกรมที่จะอำนวยความสะดวกให้ทำขั้นตอนการลบหรือย้ายไฟล์ทำได้ง่ายขึ้นด้วยโปรแกรม WinSCP

รูปที่ 25 การ Login ผ่านโปรแกรม WinSCP

รูปที่ 26 แสดงไฟล์ 2 ฝั่งทั้งบนคอมพิวเตอร์และ Raspberry Pi

การติดตั้งโปรแกรมถ่ายโอนไฟล์

ก่อนอื่นให้เข้าไปดาวน์โหลดมาติดตั้งในเครื่องคอมพิวเตอร์ที่เว็บไซต์ http://filehippo.com/download_winscp ปัจจุบันจะเป็นเวอร์ชัน 5.9.1 ประโยชน์ของโปรแกรม WinSCP คือ การใช้ถ่ายโอนข้อมูลหรือโอนไฟล์ โดยที่โปรแกรมจะทำการเชื่อมต่อจากไคลเอนต์หรือเครื่องคอมพิวเตอร์ผ่านการตั้งค่าของผู้ใช้ เชื่อมโยงระยะไกลไปยังเซิร์ฟเวอร์ หรือคอมพิวเตอร์ปลายทาง (บอร์ด Raspberry Pi) เรียกว่าเป็นโปรแกรมประเภทโปรโตคอล SFTP และ FTP Client (File Transfer Protocol) สำหรับ Windows

เมื่อติดตั้งเสร็จแล้วให้ทำการเปิดโปรแกรมขึ้นมาและใส่ Host name เป็น IP Address ของบอร์ด Raspberry Pi และ User name, Password ให้เรียบร้อย ดังแสดงในรูปที่ 25 เมื่อสามารถเชื่อมต่อกับบอร์ด Raspberry Pi ได้จะขึ้นหน้าต่าง 2 ฝั่งดังรูปที่ 26 โดยหน้าต่างฝั่งซ้ายจะเป็นฝั่งของมูงบนคอมพิวเตอร์และในหน้าต่างฝั่งขวาจะเป็นข้อมูลบนบอร์ด Raspberry Pi

รูปที่ 27 กระเป๋า htdocs บนบอร์ด Raspberry Pi 

กำหนดสิทธิ์การเข้าถึงไฟล์ต่างๆ

ก่อนที่จะทำการถ่ายโอนหรือลบไฟล์ใดๆ ได้นั้น จะต้องกำหนดสิทธิ์ในการเข้าถึงไฟล์หรือกระเป๋านั้นๆ ก่อน ซึ่งโครงงานของเราจำเป็นต้องกำหนดอยู่ 2 กระเป๋า ได้แก่ กระเป๋า semicar (home/pi) ที่เป็นกระเป๋าเก็บงานของเรา และอีกกระเป๋าหนึ่ง คือ htdocs ที่เป็นกระเป๋าเก็บหน้าเว็บของโปรแกรม WebIO Pi (usr/share/webiopi) ดังแสดงในรูปที่ 27 จากนั้นทำการกำหนดสิทธิ์ให้ผู้ใช้สามารถลบและถ่ายโอนไฟล์ได้ดังคำสั่งต่อไปนี้

  • sudo chown -R pi:pi /home/pi/semicar

  • sudo chown -R pi:pi /usr/share/webiopi

หลังจากที่พิมพ์คำสั่งด้านบนเสร็จแล้วท่านก็พร้อมที่จะจัดการกับไฟล์ที่อยู่ในกระเป๋า semicar และ webiopi แล้ว เพื่อไม่เป็นการเสียเวลาให้ทำการลบกระเป๋า htdocs เดิมที่อยู่ใน usr/share/webiopi และทำการถ่ายโอนกระเป๋า htdocs ที่อยู่ใน home/pi ไปไว้ที่ usr/share/webiopi แทนกระเป๋าเดิมที่ลบออกไป 

รูปที่ 28 การเชื่อมต่อระหว่างบอร์ด Raspberry Pi กับอุปกรณ์อื่นๆ

การประกอบ

เครื่องต้นแบบของโครงงานนี้จะไม่มีการสร้างลายวงจรพิมพ์เหมือนกับโครงงานอื่นๆ เนื่องจากใช้อุปกรณ์เพียงไม่เยอะ ดังนั้นการเชื่อมต่ออุปกรณ์จึงสามารถใช้สายไฟจั๊มระหว่างบอร์ด Raspberry Pi ไปยังอุปกรณ์ตัวอื่นๆ ได้ด้วยสายจั๊มดังแสดงในรูปที่ 28

อุปกรณ์ทั้งหมดที่ใช้สำหรับโครงงานนี้มีส่วนประกอบหลักๆ คือ บอร์ด Raspberry Pi, บอร์ดขับมอเตอร์, กล้อง, โครงสร้างหุ่นยนต์และแบตเตอรี่ จะเห็นว่าการเชื่อมต่อมีเพียงไม่กี่คอนเน็กชันเท่านั้น และในการใช้งานจริงจำเป็นต้องแยกแหล่งจ่ายออกเป็น 2 ส่วน คือ ส่วนที่ไว้จ่ายให้กับบอร์ด Raspberry Pi และส่วนที่สำหรับจ่ายให้กับบอร์ดขับมอเตอร์

ในเครื่องต้นแหล่งจ่ายที่ไว้จ่ายให้กับบอร์ดขับมอเตอร์จะใช้แบตเตอรี่ขนาด AA จำนวน 6 ก้อน เนื่องจากแรงดันมอเตอร์ที่ใช้อยู่ที่ 9 โวลต์ (แรงดันส่วนนี้ควรใช้ให้สอดคล้องกับแรงดันของมอเตอร์) ส่วนแรวดันที่จ่ายให้กับบอร์ด Raspberry Pi จะต้องเป็นแหล่งจ่าย 5V ซึ่งในเครื่องต้นแบบผู้ใช้เลือก Power bank มาใช้งาน

 

รูปที่ 29 หุ่นยนต์ที่ประกอบขึ้นมาจาก T.O.P Full series

รูปที่ 30 เฟรมอะลูมิเนียมที่นำมาประกอบหุ่นยนต์

โครงสร้างหุ่นยนต์

ส่วนโครงสร้างของหุ่นยนต์ที่ถูกเลือกมาใช้ในโครงงานนี้ ผู้เขียนได้นำ ชุดหุ่นยนต์เพื่อการศึกษา T.O.P (Training course Of Professional) ชุดเรียนรู้หุ่นยนต์ขั้นสูง มาใช้งานเนื่องจากเป็นชุดคิตที่มีชิ้นส่วนประกอบแบบอะลูมิเนียม ถอดประกอบได้ง่าย และยังสามารถปรับปรุงดัดแปลงตามจินตนาการได้อย่างไม่จำกัดอีกด้วย โดยคุณผู้อ่านที่สนใจหุ่นยนต์รุ่นนี้ก็สามารถสอบถามข้อมูลได้แผนก STEM Education ของบริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน)

 
รูปที่ 31 หุ่นยนต์ Wi-Fi Robot ที่ประกอบเสร็จเป็นรูปเป็นร่าง

รูปที่ 32 คำสั่ง Run โปรแกรมโครงงานของเรา

การทดสอบ

ขั้นตอนนี้เป็นการทดสอบระบบทั้งหมด ให้ผู้ใช้พิมพ์คำสั่งด้านล่าง (ดังรูปที่ 32)

  • cd semicar/mmal

  • sudo /etc/init.d/webiopi start & sudo ./motion -c motion-mmalcam-both.conf

หลังจากนั้นให้เปิดโปรแกรมเว็บเบราว์เซอร์ขึ้นมา อาทิเช่น google chrome, firefox หรือ maxthon เป็นต้น แล้วใส่ IP Address ในรูปแบบ http://[IP]:8000 ดังตัวอย่างของเครื่องต้นแบบจะเป็น http://10.18.2.22:8000 หากถูกต้องจะมีหน้าต่างแสดงขึ้นมาถาม Username และ Password ในส่วนนี้ผู้เขียนกำหนดให้เป็น semi ทั้ง Username และ Password (ดังรูปที่ 33) เมื่อใส่ถูกต้องแล้วท่านจะเห็นภาพที่อยู่เบื้องหน้ากล้องดังแสดงในรูปที่ 34

นอกจากจะเห็นภาพเคลื่อนไหวแล้ว จะเห็นที่พื้นหลังของภาพนั้นจะมีลูกศร 4 ด้านและรูป 8 เหลี่ยม เพื่อใช้เป็นปุ่มบังคับทิศทางเลี้ยวซ้าย, เลี้ยวขวา, เดินหน้า, ถอดหลังและหยุด ดังรูปที่ 35 ทดสอบโดยการกดแต่ละปุ่ม โดยเมื่อกดปุ่มแล้วจะเห็นความเคลื่อนไหวของล้อที่บังคับ ให้ทดสอบทุกปุ่ม หากพบว่าขั้วของมอเตอร์สลับกันอยู่ก็ให้สลับให้ถูกต้อง

รูปที่ 33 Username และ Password ในที่นี้กำหนดเป็น semi ทั้งสอง

รูปที่ 34 ตัวอย่างหน้าเว็บ

รูปที่ 35 ลักษณะของปุ่มบังคับทิศทาง

ตั้งค่าการเชื่อมต่อไร้สายและ Run โปรแกรมโดยอัตโนมัติ

ขณะนี้หากการเชื่อมต่อระหว่างคอมพิวเตอร์ของท่านกับบอร์ด Raspberry Pi ใช้สาย LAN อยู่ อาจจะต้องเปลี่ยน ถ้าการใช้งานเป็นแบบหุ่นยนต์ที่จำเป็นต้องเคลื่อนไหวไปมา หากการเชื่อมต่อกับเครือข่ายใช้สายคงจะไม่สะดวกแน่นอน ดังนั้นจึงต้องกำหนดให้บอร์ด Raspberry Pi ของเราเชื่อมต่อแบบไร้สาย และเนื่องจากโครงงานของเราใช้ Raspberry Pi เวอร์ชัน 3 มีโมดูล Wi-Fi ภายในอยู่แล้ว จึงสามารถเรียกใช้งานได้เลย (หากเป็นเวอร์ชัน 2 หรืออื่นๆ สามารถใช้ Wi-Fi dongle แบบ USB ได้) โดยให้ทำการตั้งค่าเครือข่ายที่ต้องการเชื่อมต่อดังนี้

  • sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

เมื่อพิมพ์คำสั่งด้านบนจะพบหน้าต่างดังรูปที่ 36 ให้ทำการตั้งค่า Wi-Fi ที่จะเชื่อมต่อ โดยกำหนดชื่อ WiFi ที่ต้องการเชื่อมต่อใน ssid และกำหนดรหัสผ่าน WiFi ตามภาพตัวอย่าง เสร็จแล้วให้กดปุ่ม ‘CTRL-X’ (เพื่อเลือกปิด) จากนั้นกดปุ่ม ‘Y’ (เพื่อ ตกลง บันทึกการแก้ไข) แล้วกดปุ่ม ‘ENTER’

ขั้นตอนต่อไปให้ทำการแก้ไขไฟล์ .bashrc เพื่อให้โปรแกรมงานของเราทำงานอัตโนมัติหลังจากที่บูทเสร็จ เพื่อจะไม่ต้องมาคอยเปิดโปรแกรมเองทุกครั้ง โดยใช้คำสั่ง

  • sudo nano .bashrc

จากนั้นเลื่อนลงมาที่บรรทัดสุดท้ายแล้วเพิ่มคำสั่งที่บรรทัดสุดท้ายดังนี้ (แสดงดังรูปที่ 37)

  • sudo /home/pi/semicar/mmal/motion -c /home/pi/semicar/mmal/motion-mmalcam-both.conf & sudo webiopi -d -c /etc/webiopi/config

เสร็จแล้วให้กดปุ่ม ‘CTRL-X’ (เพื่อเลือกปิด) จากนั้นกดปุ่ม ‘Y’ (เพื่อ ตกลง บันทึกการแก้ไข) แล้วกดปุ่ม ‘ENTER’ เป็นอันเสร็จสิ้นขั้นตอนการสร้าง สุดท้ายให้ปิดแล้วเปิดเครื่องขึ้นมาใหม่เพื่อทดสอบว่าโครงงานของเราจะทำงานเองโดยอัตโนมัติหรือไม่

รูปที่ 36 การตั้งค่าเครือข่ายไร้สาย

รูปที่ 37 การตั้งค่าให้โปรแกรมทำงานเองโดยอัตโนมัติ

 

หากทุกอย่างเป็นไปตามที่กล่าวมา แสดงว่าโครงงานของเราใช้งานได้แล้ว การใช้งานจริงอาจจะไม่จำเป็นต้องต่อกับหุ่นยนต์ก็ได้ โดยอาจจะต่อกับมอเตอร์เพื่อควบคุมกล้องให้หมุนขึ้น, ลง, ซ้าย และ ขวา เพื่อดูภาพรอบบริเวณ หรืออาจจะไม่จำเป็นต้องหมุนกล้องก็ได้หากทิศทางของกล้องครอบคลุมกับมุมที่ต้องการมอง

 

รายการอุปกรณ์

บอร์ด Raspberry Pi เวอร์ชัน 3        1                    ตัว

บอร์ดขับมอเตอร์           1                    ตัว

โมดูลกล้อง                      1                    ตัว

รางถ่านแบตเตอรี่ขนาด AA จำนวน 6 ก้อน         1                    ตัว

สายจั๊มสำหรับเชื่อมต่ออุปกรณ์        10                 เส้น

 

 

Leave a Comment