19 มีนาคม 2559

Published มีนาคม 19, 2559 by with 3 comments

เชื่อมต่อ Arduino ด้วยภาษา Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะขอแนะนำวิธีการเชื่อมต่อบอร์ด Arduino ด้วย Python กันครับ


เมื่อสองสามวันก่อน ผมได้สั่งซื้อ Arduino UNO R3 ราคา 300 บาท พร้อมสาย USB มา จากร้านแห่งหนึ่งในขอนแก่น และได้ลองเล่นบอร์ด Arduino มาบ้างเล็กน้อย เนื่องจากผมเป็นนักพัฒนาภาษา Python (ณ ปัจจุบัน) แม้ผมจะเคยเขียนภาษา C/C++ บ้าง แต่ผมชอบภาษา Python มากกว่า ผมจึงได้ตามล่าโมดูลที่ช่วยเขียนชุดคำสั่งบอร์ด Arduino ด้วยภาษา Python และแล้ว ผมก็ได้พบกับโมดูล Nanpy
บทความนี้เข้ากันได้กับ Debian/Ubuntu และอื่นๆ
ไม่สนับสนุนWindows
(ไม่ได้ทดลองบน Windows)n ทดสอบแล้วใช้งานได้ครับ

โมดูล Nanpy เป็นโมดูลที่ช่วยให้เราสามารถสั่งงานบอร์ด ด้วยภาษา Python ได้
รองรับทั้ง Python 2 และ Python 3
ใช้ MIT License

ก่อนใช้งานโมดูล Nanpy เราต้องทำการติดตั้ง Nanpy firmware ลงไปในบอร์ด Arduino ของเราก่อน โดยโหลดได้จาก https://github.com/nanpy/nanpy-firmware/ (แนะนำให้ทำการลงบนเครื่อง Linux)

เพื่อเป็นการประหยัดข้อมูล ผมจึงขอไม่กล่าวถึงการตั้งค่า Arduino กับ Linux ครับ สามารถอ่านได้จาก http://blog.opensensors.io/blog/2014/09/13/getting-started-with-arduino-on-linux/

สำหรับ Debian/Ubuntu ใช้คำสั่งนี้ตามผมเลยครับ
$ wget https://github.com/nanpy/nanpy-firmware/archive/master.zip
$ unzip  master.zip


เข้าไปในโฟลเดอร์ nanpy-firmware-master ที่แตกไฟล์ออกมา จะพบกับไฟล์ sample_cfg.h ซึ่งเป็นไฟล์สำหรับกำหนดค่าของ Nanpy firmware ให้ทำการเปิดและแก้ไขตามที่ต้องการ (สำหรับผมไม่ได้แก้ไขค่าใด)

ทำการเปลี่ยนชื่อไฟล์เป็น cfg.h แล้วทำการย้ายไฟล์ cfg.h ไปไว้ในโฟลเดอร์ Nanpy

เปิดไฟล์ Nanpy.ino แล้วทำการอัพโหลดเข้าบอร์ด Arduino
เปิดไฟล์ Nanpy.ino แล้วทำการอัพโหลดเข้าบอร์ด Arduino เปิดไฟล์ Nanpy.ino แล้วทำการอัพโหลดเข้าบอร์ด Arduino
ต่อไปเรามาทำการติดตั้ง Nanpy ด้วยคำสัง :
pip install nanpy

เรามาลองสั่งเปิดไฟบนบอร์ด Arduino กันครับ
from nanpy import *
connection = SerialManager(device='/dev/ttyS0') #ที่ตั้งของบอร์ด Arduino ที่เราอัพโหลด Nanpy firmware
a = ArduinoApi(connection=connection) # เรียกใช้ Arduino API
a.pinMode(13, a.OUTPUT)
a.digitalWrite(13, a.HIGH)
# a.digitalWrite(13, a.LOW) # ปิดไฟ
a.pinMode(13, a.OUTPUT)

ผลลัพธ์
เชื่อมต่อ Arduino ด้วยภาษา Python


นอกจากนั้นเรายังสามารถสั่งให้แสดงข้อความบนจอ LCD จากโค้ด Python ได้ด้วยครับ (อ่านเพิ่มเติมได้จากลิงค์เอกสารข้างล่าง)






ของเสริมสำหรับผู้ใช้ Windows สำหรับใช้งานได้ด้วยการโหลดไฟล์ https://github.com/nanpy/nanpy-firmware/archive/master.zip แตกไฟล์ ทำตามข้างบน คลิกที่ไฟล์ Nanpy.ino แล้วอัพ Nanpy firmware เข้าบอร์ดก่อนครับ (วิธีคล้าย ๆ ข้างบน)

ในการเขียนโค้ดบน Windows เราต้องอ้างอิงตำแหน่งบอร์ด Arduino ให้ถูกต้องครับ เช่น

[caption id="" align="aligncenter" width="991"]บอร์ด Arduino ของผมอยู่ที่ COM5: บอร์ด Arduino ของผมอยู่ที่ COM5:[/caption]

ในการเขียนโค้ด Nanpy สั่งงานบอร์ด ให้เปลี่ยนแค่ตำแหน่งที่ตั้งบอร์ด Arduino ครับ
from nanpy import *
connection = SerialManager(device='COM5:') #ที่ตั้งของบอร์ด Arduino ที่เราอัพโหลด Nanpy firmware
a = ArduinoApi(connection=connection) # เรียกใช้ Arduino API
a.pinMode(13, a.OUTPUT)
a.digitalWrite(13, a.HIGH)
# a.digitalWrite(13, a.LOW) # ปิดไฟ
a.pinMode(13, a.OUTPUT)
ตัวอย่างโปรแกรม
โปรแกรมเปิดปิดไฟ 100 ครั้ง ครั้งละ 1 วินาที
from nanpy import *
connection = SerialManager(device='COM6:')
a = ArduinoApi(connection=connection) # เรียกใช้ Arduino API
a.pinMode(13, a.OUTPUT)
a.digitalWrite(13, a.HIGH)
a.digitalWrite(13, a.LOW)
s=1
import time
while s<=100:
 time.sleep(1)
 a.digitalWrite(13, a.HIGH)
 time.sleep(1)
 a.digitalWrite(13, a.LOW)
 s+=1

อ่านเอกสารการใช้งานได้ที่ https://nanpy.github.io/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

,

3 ความคิดเห็น:

  1. ตอนนี้สามารถรันบนวินโด้ได้หรือยังคับ

    ตอบลบ
  2. ถ้าเราจะ ใช้ ไลบรารรี่ Nanpy เราต้องขอ license จาก MIT หรือเปล่าครับ

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)