การติดตั้ง inotools บน Raspberry PI

 

Inotool คืออะไร 

Inotool (http://inotool.org/) คือ utility software ที่ใช้ทำงานกับ Arduino IDE แบบ command line ก่อนหน้าที่จะมี Raspberry PI B 2 ออกมานั้น การใช้งาน Arduino IDE บน Raspberry Pi เป็นเรื่องที่ค่อนข้างน่าเบื่อเนื่องจากข้อจำกัดด้านทรัพยากรของ Raspberry Pi  ดังนั้นโครงงานที่มีการทำงานร่วมกันระหว่าง Raspberry Pi กับ Arduino จึงยังคงต้องใช้ PC มาช่วย

การมี Inotool มาช่วยก็ทำงานทำการ create, update, compile และ upload Arduino sketch โดยตรงจาก Raspberry Pi เป็นเรื่องที่ทำได้ง่ายขึ้น แต่เราก็ยังตัองมีการติดตั้ง Arduino IDE บน Raspberry Pi อยู่ดี ทั้งนี้ก็เพื่อให้ inotool สามารถดึงเอา libraries ต่างจาก IDE มาใช้งานได้

การติดตั้ง Inotool

ก่อนการติดตั้ง Inotool   เราจำเป็นต้องติดตั้งสิ่งที่ inotool ต้องการบน Raspberry Pi เสียก่อนได้แก่

1. Arduino IDE


$ sudo apt-get install  arduino

2. picocom ใช้ในการสื่อสารผ่าน Serial port สำหรับ inotool


$ sudo apt-get install picocom

3. ในกรณีที่ยังไม่ได้ติดตั้ง pip


$ sudo apt-get install python-pip



 หลังการติดตั้งเสร็จแล้วก็ทำการติดตั้ง inotool ได้ โดยมีสองทางเลือก
1. ผ่าน pip

$ sudo pip install ino

2. ดาวน์โหลดรหัสต้นฉบับจาก
https://pypi.python.org/pypi/ino/#downloads หรือจาก
git clone git://github.com/amperka/ino.git



$ cd ino
$ sudo make install

ผลจากการติดตั้งเราจะได้ ino ขึ้นมาและถูกสำเนาไปไว้ใน /usr/local/  ดูได้จาการทดลองใช้คำสั่ง


$ ino --help

การสร้าง Arduino Project ด้วย inotool


1. สร้างโฟลเดอร์สำหรับโครงงาน โดยต้องมีโครงสร้างดังนี้

project name
   +- src
   +- lib

project name คือโฟลเดอร์ที่ใช้ชื่อสำหรับโครงงาน (ต้องเป็นไปตามหลักเกณฑ์ของระบบปฎิบัติการ) และภายในจะต้องมีอย่างน้อย 2 โฟลเดอร์ย่อยคือ src สำหรับเก็บ Arduino Sketch และ lib สำหรับเก็บ Third party library

2. สร้าง Arduino sketch ด้วย Text Editor ใช้ syntax เดียวกับที่ใช้ใน Arduino IDE แต่ให้มีนามสกุลเป็น .ino สร้างเสร็จแล้วให้นำไปไว้ในโฟลเดอร์ชื่อ src ตัวอย่าง Arduino sketch  สำหรับควบคุม Servo  บันทึกไว้ในชื่อ ino_servo_demo.ino

// Sweep
// by BARRAGAN  
// This example code is in the public domain.


#include  
 
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
 
void loop() 
{ 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
} 


3. นำ Third party library มาวางไว้ในโฟลเดอร์ชื่อ lib ในกรณีของตัวอย่างต้องใช้ Servo.h (สำเนามาจาก Arduino IDE)

4. Compile sketch ด้วยคำสั่ง

$ ino build

ในการ compile เราจะต้องอยู่ในโฟลเดอร์ของโครงงานก่อนทำการ compile เช่น เรามีโครงงานชื่อ myservo


$ cd myservo
$ ino build
การ compile ด้วยคำสั่งแบบนี้จะได้ผลลัพธ์ออกที่ใช้ได้กับ Arduino UNO ครับ หากเราต้องการใช้งานกับ model อื่น ต้องตรวจสอบก่อนว่ามี model ไหนที่ inotool สนับสนุนด้วยคำสั่ง


$ ino list-models



เมือเลือกได้ model ที่ต้องการแล้ว ให้ใช้การ compile ด้วยคำสั่ง


$ ino build - m [model ]

เช่น


$ ino build -m nano

หมายถึงการ build หรือ compile sketch สำหรับ Arduino Nano เป็นต้น

5.  Upload sketch สู่ Arduino  เราต้องต่อ Arduino กับ USB Port ของ Raspberry Pi เสียก่อน แล้ว upload ด้วยคำสั่ง


$ sudo ino upload -p [port]
หากเราไม่ทราบว่า Raspberry Pi เชื่อมกับ Arduino ด้วย port อะไร ให้ตรวจสอบด้วยคำสั่ง


$ ino serial




จากตัวอย่างเราจะได้ /dev/ttyUSB0 คือ port  ที่ Raspberry Pi ต่อกับ Arduino และเราจะใช้ค่านี้ในคำสั่ง upload ข้างต้น เช่น


$ sudo ino upload -p /dev/ttyUSB0

6. ผ่านข้นตอนมาทั้ง 5 ขั้นตอนแล้ว  Arduino ก็น่าจะพร้อมกับการใช้งานแล้ว ครับ






แนวคิดการใช้งาน

ในขณะที่เขียนบทความนี้ ได้มี Raspberry Pi Model 2 Model B ออกจำหน่ายแล้ว  Raspberry Pi รุ่นนี้มีประสิทธิภาพสูงกว่า Raspberry Pi รุ่นก่อนหน้าค่อนข้างมาก ทำให้การใช้งาน Arduino IDE ง่ายเหมือนกับการใช้งานบน PC เลยทีเดียว ซึ่งก็ดูเหมือนว่าความจำเป็นในการใช้ inotool ก็น้อยลงไป แต่อย่างไรก็ตามในบางกรณีที่เราไม่สามารถไปทำงานกับ Raspberry Pi ได้โดยตรง เช่นต้องทำงานแบบ Remote หรือต้องการให้มีการทำงานแบบอัตโนมัติผ่านการเขียนโปรแกรม การใช้ inotool จะเป็นทางเลือกที่มีเหตุผลเนื่องจากมีการทำงานผ่าน  CLI นั่นเอง




Previous
Next Post »