19 มีนาคม 2559

Published 3/19/2559 by with 0 comment

เชื่อมต่อ 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

[caption id="" align="aligncenter" width="1366"]เปิดไฟล์ Nanpy.ino แล้วทำการอัพโหลดเข้าบอร์ด Arduino เปิดไฟล์ Nanpy.ino แล้วทำการอัพโหลดเข้าบอร์ด Arduino[/caption]

ต่อไปเรามาทำการติดตั้ง Nanpy ด้วยคำสัง :
pip install nanpy

เรามาลองสั่งเปิดไฟบนบอร์ด Arduino กันครับ

[python]
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)
[/python]

ผลลัพธ์
เชื่อมต่อ 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 ครับ

[python]
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)
[/python]

ตัวอย่างโปรแกรม

โปรแกรมเปิดปิดไฟ 100 ครั้ง ครั้งละ 1 วินาที
[python]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
[/python]

อ่านเอกสารการใช้งานได้ที่ https://nanpy.github.io/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
หากท่านใดมี Raspberry Pi ที่ไม่ใช้แล้ว ต้องการบริจาค ผมขอรับบริจาค Raspberry Pi เพื่อใช้ในการศึกษาค้นคว้าครับ (บล็อกนี้ไม่มีโฆษณา) สามารถติดต่อได้ที่ [email protected] ครับ ขอบคุณครับ

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

แสดงความคิดเห็น

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