การใช้ Raspberry Pi เป็นอุปกรณ์เพิ่มขยายให้กับระบบสมองกลฝังตัวสำหรับเยาวชน


    โครงงานนี้มีวัตถุประสงค์เพื่อพัฒนาส่วนเพิ่มขยายให้กับชุดหุ่นยนต์เพื่อการเรียนรู้ GoGo Board (http://gogoboard.orgโดยใช้ Raspberry Pi จุดเด่นของส่วนเพิ่มขยายที่สร้างด้วย Raspberry Pi คือจะสามารถเพิ่มความสามารถที่เดิมทำได้ยากในระบบสมองกลฝังตัวทั่วไป เนื่องจาก Raspberry Pi เป็นเครื่องคอมพิวเตอร์ที่ขับเคลื่อนด้วยระบบปฏิบัติการ Linux จึงสามารถเพิ่มความสามารถใหม่ๆ ได้โดยง่ายเช่น การเชื่อมต่อเครือข่าย, การเล่นไฟล์สื่อชนิดต่างๆ, การเชื่อมต่อกับอุปกรณ์ USB เช่น กล้อง Webcam, อุปกรณ์รับพิกัด GPS, Aircard เพื่อรับส่ง SMS,  การใช้บริการเครือข่ายเช่น การส่งอีเมล์, อ่านและรับค่าจากบริการ push/pull ต่างๆ เช่น Pushbullet และ IFTTT เป็นต้น

    ผู้จัดทำได้เพิ่มความสามารถดังกล่าวให้กับ GoGo Board โดยสั่งงานได้ผ่านภาษา Logo ซึ่งใช้งานได้ง่ายสำหรับเยาวชน รวมไปถึงเพิ่มส่วนของการเข้าใช้งานผ่าน Web Application เรียกว่า GoGo Home Screen ที่ประกอบไปด้วย Text-to-Speech, การจัดการไฟล์ (File Manager), การแสดงกราฟของข้อมูลที่ทำการบันทึกไว้ (Live Graph), การบันทึกเสียง (Sound Recording) เพื่อนำไปใช้กับ GoGo Board, การใช้ Web UI (ส่วนประกอบของ HTML) และ Speech-to-Text (Speech Recognition) เพื่อสั่งงาน GoGo Board 

วิดีโอแนะนำโครงการ

โครงสร้างของระบบ

Overall system structure

Overall system structure

1. GoGo Widget

GoGo Widget เป็นโปรแกรมประยุกต์ที่สามารถใช้งานได้หลาย platform พัฒนาขึ้นจากภาษา Python ทำหน้าที่ติดต่อสื่อสารกับผู้ใช้และชุดหุ่นยนต์ผ่านทาง USB HID Protocol ตัวโปรแกรมมี User Interface ที่สามารถเรียกใช้ได้ง่าย สามารถควบคุมการทำงานของชุดหุ่นยนต์, สามารถอ่าน/บันทึกค่าต่างๆ ของโมโมดูลที่ใช้ร่วมกับ GoGo Board สามารถดูค่าสถานะต่างๆ และสั่งงาน Raspberry Pi ได้ รวมถึงมีคอมไพเลอร์ภาษา Logo ในตัวซึ่งทำหน้าที่แปลงโปรแกรม Logo ให้เป็นภาษาไบนารีและโหลดลงไปไว้บนโกโกบอร์ด

GoGo Widget

GoGo Widget

2. Raspberry Pi

Gogod  เป็นชุดคำสั่งที่ทำงานอยู่บน Raspberry Pi ที่ใช้ภาษา Python ในการพัฒนาคือ Gogod (หรือ GoGo daemon) เป็นตัวกลางคอยรับคำสั่งจาก GoGo Board และปฏิบัติงานตามคำสั่งที่ได้รับมา และยังคอยรายงานสถานะระบบให้กับโกโกบอร์ด เช่นสถานะเครือข่าย และสถานะของอุปกรณ์ต่อพ่วง

GoGo Home Screen เป็น Web Application ที่แสดงฟีเจอร์ที่พัฒนาขึ้นใช้ร่วมรับ Gogod โดยพัฒนาจากภาษา PHP, HTML และ JavaScript (jQuery) ใช้ Apache เป็น HTTP Webserver ใช้ OrientDB เป็นฐานข้อมูล รวมไปถึง Library และ API ที่เกี่ยวข้อง อยู่บน Raspberry Pi สามารถแสดงผลได้ดีในทุกอุปกรณ์ (Responsive) 

GoGo Home Screen

GoGo Home Screen

3. GoGo Board

GoGo Board เป็น PIC ไมโครคอนโทรลเลอร์ ที่มีเฟิร์มแวรฺ์ที่พัฒนาโดยใช้ภาษา C ตัว GoGo Board ทำหน้าที่คอยรับคำสั่งจากคอมพิวเตอร์ และสื่อสารควบคุมการทำงานของ Raspberry Pi ผ่านทาง Serial RS232 นอกจากนั้นยังมี Logo Virtual Machine ที่สามารถทำงานตามโปรแกรมไบนารีที่คอมพิวเตอร์ส่งมาได้

 

ความสามารถของระบบ

 IP Address QR Code
IP Address QR Code on GoGo Widget

IP Address QR Code on GoGo Widget

IP Address QR Code on GoGo Home Screen

IP Address QR Code on GoGo Home Screen

 

ใน GoGo Widget แถบ Raspberry เมื่อมีการเชื่อมต่อเครือข่ายผ่านทาง LAN หรือ Wireless LAN โปรแกรมจะทำงานโดยสร้าง QR Code ดังรูปด้านซ้าย เป็น IP Address ของ Raspberry Pi เมื่อสแกนจาก Smart Phone จะได้ URL Link ไปที่ GoGo Home Screen และใน GoGo Home Screen ก็สามารถเรียกดู QR Code ได้จากไอคอน ในกรอบสีส้มของรูปด้านขวา

 

Email Sender

Email Sender

Email Sender on GoGo Widget

ไปที่ GoGo Widget > Raspberry Pi > Gmail Configuration ตามกรอบสีแดงดังรูป เพื่อตั้งค่า Email สามารถตั้งค่า Email ในช่อง Email และ Password เป็น Email  address และ รหัสผ่านของ Gmail

การส่ง Email โดยในกรอบดังรูป ช่อง Recipient, Subject และ Body เป็น Email address ของผู้รับ หัวข้อและเนื้อหาของ Email ตามลำดับ และส่งผ่านคำสั่งภาษา Logo ดังนี้

sendmail “recipient” “subject” “body”

 
SMS Sender

SMS Sender on GoGo Widget

SMS Sender on GoGo Widget

เมื่อเสียบ Aircard เข้ากับพอร์ต USB ของ Raspberry Pi แล้วไปที่ GoGo Widget > Raspberry Pi > Send SMS ตามกรอบแสดงดังรูปกรอกหมายเลขโทรศัพท์และข้อความในช่อง Phone number และ Message หรือใช้คำสั่งภาษา Logo บน GoGo Board ดังด้านล่าง

sendsms “phone number” “message”

 
RFID

RFID commands on GoGo Widget

RFID commands on GoGo Widget

เมื่อเสียบ RFID Reader เข้ากับพอร์ต USB ของ Raspberry Pi แล้วไปที่ GoGo Widget > Logo สามาราถใช้งาน RFID ได้โดยใช้คำสั่งภาษา Logo ดังนี้

·       userfid สั่งให้ Gogod เชื่อมต่อกับ RFID Reader และทำการอ่านค่าของ RFID ไว้ในหน่วยความจำ

·       rfidtagfound? คำสั่งที่ใช้ตรวจสอบดูว่ามี RFID Tag มาแตะที่เครื่อง RFID Reader หรือไม่

·       rfidbeep สั่งให้เครื่อง RFID Reader นั้นส่งเสียง beep

·       readrfid n คำสั่งให้อ่านค่ามาจากหน่สยความจำที่ Gogod ได้อ่านมาเป็นตัวเลขตั้งแต่ 0-255 (n) และนำไปใช้ในภาษา Logo เช่น เทียบตัวเลข หรือนำตัวเลขไปใช้ต่อไป

·       writerfid n คำสั่งให้เขียนค่าลง RFID Tag ด้วยตัวเลขตั้งแต่ 0-255 (n)

 
Data Logging

Data Logging on GoGo Widget

Data Logging on GoGo Widget

record sensor1 “log8″

การบันทึกค่า โดยใช้คำสั่งภาษา Logo ดังด้านบนและดังรูป  Log name เป็นตัวหนังสือที่สือถึงค่าที่ต้องการบันทึก Variable (Log Value) สามารถเป็นได้ทั้งค่าเซ็นเซอร์ตัวที่ 1-8 คือ sensor1 – sensor 8 หรือเป็นค่าตัวแปรในโค้ด

Data Logging on GoGo Home Screen

Data Logging on GoGo Home Screen

การดูค่าหรือกราฟแสดงข้อมูล เข้าไปที่ GoGo Home Screen > และ Data Logging เลือกค่าที่ต้องการ อาจจะเลือก Average sensor values และรอบของเวลา เพื่อเฉลี่ยค่าของข้อมูล กด Submit จะแสดงกราฟดังรูป สามารถเลือกช่วงเวลาที่ต้องการแสดง ส่งออกข้อมูลเป็น PNG, JPEG, SVG, PDF, csv หรือ xls(excel) และยังสามารถดูกราฟแบบ Real time ได้โดยคลิก Auto Update

Data Logging Graph on GoGo Home Screen

Data Logging Graph on GoGo Home Screen

 
Pi Display

Pi Display

Pi Display

เป็นหน้าที่สามารถแสดงรูปภาพเล่นไฟล์เสียงต่าง โดยเข้าไปที่ GoGo Home Screen > Pi Display จะแสดงดังรูปด้านบน

การใช้เล่นไฟล์เสียง หรือเสียงที่บันทึกไว้ในหัวข้อ Sound Recording โดยผ่านคำสั่งภาษา Logo ดังด้านล่างคือ playsound ตามด้วยชื่อไฟล์ เมื่อเรียกใช้งานก็จะเล่นเสียงที่หน้า Pi Display  และที่ Raspberry Pi  หากมีลำโพงต่ออยู่

playsound filename.mp3

การใช้ Text-to-speech ผ่านคำสั่งภาษา Logo ดังด้านล่างคือ say ตามด้วยข้อความที่ต้องการออกเสียง เมื่อะเรียกใช้งานก็จะออกเสียงตามข้อความที่หน้า Pi Display และออกเสียงที่ Raspberry Pi  หากมีลำโพงต่ออยู่

say “phrase want to say”

 
File Manager

File Manager on GoGo Home Screen

File Manager on GoGo Home Screen

เข้าไปที่ GoGo Home Screen > File Manager จะแสดงดังรูป สามารถคลิกเพื่ออัพโหลดไฟล์รูปภาพ เสียง หรือไฟล์ต่างๆ หรือจะ Drag and Drop ที่หน้าต่างให้อัพโหลดได้, สามารถสร้าง text file หรือ folder ได้, เลือกรูปแบบการแสดงผลแบบต่างๆ Filter ไฟล์ที่ต้องการให้แสดง, เรียงลำดับการแสดงไฟล์ สามารถเปลี่ยนชื่อ ลบ คัดลอก หรือดูตัวอย่างไฟล์ได้เช่นเล่นไฟล์เสียง หรือดูรูปภาพขนาดเต็มได้

 
Sound Recording

Sound Recording on GoGo Home Screen

Sound Recording on GoGo Home Screen

เข้าไปที่ GoGo Home Screen > Sound Recording กดปุ่มสี่แดงเพื่อเริ่มบันทึกเสียง ปุ่มสีฟ้าเพื่อหยุดบันทึกเสียง จากนั้นจะทำการแปลงเป็นไฟล์ mp3 เมื่อเสร็จสิ้นจะแสดงดังรูปด้านบน ระบบจะอัพโหลดไปที่โฟล์เดอร์ recordings ซึ่งสามารถเข้าไปดูได้ที่ File Manager โฟล์เดอร์ recordings สามารถนำไฟล์เสียงไปใช้ในภาษา Logo ด้วยคำสั่ง playsound ในหัวข้อ Pi Display ได้

 
Web UI

Rapid Interface Builder on https://01.org/rib/online/

Rapid Interface Builder on https://01.org/rib/online/

สามารถเขียนไฟล์ HTML ที่ส่วนประกอบเช่น button, slider, switch เป็นต้น ขึ้นมาเองได้ หรือใช้เครื่องมือสร้างได้เช่น Rapid Interface Builder ที่สามารถ Drag and Drop เพื่อสร้างไฟล HTML ขึ้นมาเข้าถึงออนไลน์ได้ที่ https://01.org/rib/online/ ดังรูปด้านบน หรือใช้เครื่องมืออื่นๆ ได้เช่นกัน เมื่อเสร็จแล้วคลิกที่ export เป็น zip เมื่อได้ zip แล้วแตกไฟล์ (Extract Files) เปลี่ยนชื่อ index.html เป็นชื่อที่ไม่ซ้ำกับไฟล์อื่น จากนั้นอัพโหลดไฟล์ทั้งหมดไปไว้ที่ File Manager โฟล์เดอร์ recordings 

Web UI Files on GoGo Home Screen

Web UI Files on GoGo Home Screen

if key “key” = “value” [

     do_something

]

การใช้งาน Web UI โดยเขียนคำสั่งภาษา Logo ได้ดังด้านบน key “key” หากเป็น button ค่าหลักจะเป็นคำว่า “button” sliderจะเป็น “slider” เป็นต้น ส่วน “value” จะเป็น Label ของ Button โดยทั้ง key และ value เรียกว่า KeyValue Packet (รายละเอียดเพิ่มในเอกสารท้ายบทความ) และเข้าไปที่ GoGo Home Screen > Web UI จะปรากฏดังรูปด้านล่าง เลือกไฟล์ที่ออกแบบไว้

Web UI Files on GoGo Home Screen

Web UI Files on GoGo Home Screen

ตัวอย่างการใช้งาน Web UI เป็นการทำ Remote Control ควบคุมทิศทางของรถ โดยเขียนคำสั่งภาษา Logo เมื่อกดปุ่มต่างๆ ให้เดินหน้า ถอยหลัง เลี้ยวซ้าย-ขวา หยุด ดังรูปด้านล่างและในวิดีโอหัวข้อวิดีโอแนะนำโครงการ

Logo code for car remote control demo

Logo code for car remote control demo

Car Remote Control Demo

Car Remote Control Demo

 
Speech Recognition

if key “speech” = “value” [

     do_something

]

การใช้งาน Speech Recognition โดยเขียนคำสั่งภาษา Logo ได้ดังด้านบน key “speech” ส่วน “value” จะเป็น คำที่จำแนกมาได้ โดยทั้ง key และ value เรียกว่า KeyValue Packet มีการใช้งานภาษา Logo เช่นเดียวกับหัวข้อ Web UI และการเรียกใช้งานเข้าไปที่ GoGo Home Screen > Speech Recognition จะปรากฏดังรูปด้านล่าง หากไอคอนสีแดงกระพริบแสดงว่าทำงานอยู่ เมื่อจำแนกเสียงได้จะแสดงคำขึ้นมาและส่งไปที่ GoGo Board เพื่อทำงานตามคำสั่งที่เขียน

Speech Recognition on GoGo Home Screen

Speech Recognition on GoGo Home Screen

ตัวอย่างการใช้งาน Speech Recognition ควบคุมทิศทางของรถเช่นเดียวกับหัวข้อ Web UI แต่เป็นการสั่งงานด้วยเสียงแทน

Logo code for Car Speech Control Demo

Logo code for Car Speech Control Demo

Car Speech Control Demo

Car Speech Control Demo

 
Cloud Service (Pushbullet และ IFTTT)

IFTTT, Pushbullet and Social Media

IFTTT, Pushbullet and Social Media

เป็นการใช้งานบริการออนไลน์ต่างๆ เช่น Social Media ที่ IFTTT  รองรับ ส่งต่อค่ามาให้ GoGo Board ทำงาน โดยจะต้องมี่ Account ของบริการ IFTTT (https://ifttt.com/) และ Pushbullet (https://www.pushbullet.com/) ก่อน ผูกบริการทั้งสองเข้าด้วยกัน และ Active บริการที่ต้องการใช้ (รายละเอียดและตัวอย่าง ดูได้ในเอกสารท้ายบทความและในวิดีโอหัวข้อวิดีโอแนะนำโครงการ) ตั้งค่า Pushbullet โดยนำ Acess Token ของ Pushbullet มาใส่ที่ GoGo Home Screen > ไอคอน Setting 29 ช่อง Token ดังรูปด้านล่าง

Pushbullet Setting on GoGo Home Screen

Pushbullet Setting on GoGo Home Screen

การใช้งาน สร้างพฤติกรรมการทำงานโดยไปที่ IFTTT > My Recipes > Create a Recipe เลือก this เป็นบริการที่ต้องการใช้เช่น Twitter ดังรูปด้านล่าง

Create a Recipe on IFTTT

Create a Recipe on IFTTT

จากนั้นเลือก that เป็น Pushbullet, Choose an Action เป็น push a note จะแสดงดังรูปโดย Title จะเป็น key ส่วน Message จะเป็น value ของ KeyValue Packet ที่ส่งไปที่ Raspberry Pi และให้ GoGo Board ทำงานเช่นเดียวกับ Web UI และ Speech Recognition จากนั้นคลิก Create Action > Create Recipe

Create a Recipe | Action on IFTTT

Create a Recipe | Action on IFTTT

ตัวอย่างการใช้งาน สร้าง Recipe จาก Twitter เมื่อ tweet ข้อความใดๆ จะส่ง KeyValue Packet เป็น “twitter” และ “newtweet” เขียนคำสั่งภาษา Logo ดังรูปด้านล่าง คือเมื่อมีเหตุการณ์นี้เกิดขึ้นจะทำงานตามคำสั่ง

Logo code for IFTTT Demo

Logo code for IFTTT Demo

IFTTT, Pushbullet and Social Media Demo

IFTTT, Pushbullet and Social Media Demo

Mobile-friendly (Responsive Design)

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

1. GoGo Board 5.0

GoGo Board 5.0

GoGo Board 5.0

2. Raspberry Pi

Raspberry Pi 2

Raspberry Pi 2

3. Sensors and outputs
4. USB Devices
    • Aircard
    • RFID Reader

 

เอกสาร

 Report-37-2557_Marutpong

ผู้จัดทำ

นายมารุตพงค์  ไชยลังกา  รหัสนักศึกษา 540610639