วันอาทิตย์ที่ 22 กรกฎาคม พ.ศ. 2561

การใช้งาน GPIO ใน Raspberry Pi ด้วย Python



GPIO ย่อมาจาก General Purpose Input/Output เรียกเป็นภาษาไทยง่ายๆว่า พอร์ตเอนกประสงค์ คือเราสามารถควบคุม คอนโทรลให้เป็น ค่าต่างๆได้ และเรายังสามารถกำหนด GPIO เหล่านี้ให้เป็น INPUT หรือ OUTPUT ก็ได้

Raspberry Pi 3 Model B+  มี GPIO ทั้งหมด 40 Pin และที่ใช้สั่งควบคุมในการทำงานทั้งหมด 17 Pin (ที่เป็นวงกลมสีเขียว) ในการใช้งาน GPIO มีสิ่งที่ต้องพึงระมัดระวังให้มากเป็นพิเศษก็คือเรื่อง ในการต่อสาย เพราะหากมีการต่อผิดพลาด เช่น นำไฟ 5 โวลต์ มาต่อเข้ากับ Port GPIO ที่เป็นวงกลมสีเขียว  อาจทำให้เกิดความเสียหายต่อ  Raspberry Pi ทำให้ไม่สามารถใช้งานได้อีกต่อไป และไม่สามารถเปลี่ยน หรือ ซ่อมแซมได้ ดังนั้นก่อนต่อสายควรตรวจสอบความถูกต้อง ในการใช้งาน Pin ต่างๆ โดยสามารถดูการใช้งาน Pin ต่างๆ ได้ ตามภาพ GPIO Pinout ด้านล่าง


GPIO Pinout – Raspberry Pi 3 Model B+


การเขียนโค๊ด (code หรือ ภาษาโปรแกรมคอมพิวเตอร์ ) จะใช้ภาษา Python (ไพธอน) เนื่องจากระบบปฏิบัติการ Raspbian (ราสเบียน) ซึ่งในเวอร์ชั่นนี้ได้ติดตั้ง Python 3 (IDLE) และ RPi.GPIO (โมดูลสำหรับอินเตอร์เฟสกับพอร์ต GPIO ของ Raspberry Pi) มาไว้เรียบร้อยในตัวแล้ว

การเขียนโค้ดคำสั่งในการกำหนดชื่อ ขาต่างๆนั้น มี 2 แบบ คือ Board Number และ BCM Number โดยจะเลือกใช้แบบ Board Number โดยจะอ้างอิง ชื่อขา ต่างๆจากภาพ GPIO Pinout ด้านบน (บริเวณที่อยู่ในกรอบสีแดง 1-40)

โดยใช้คำสั่ง

GPIO.setmode(GPIO.BOARD)




ในการส่งสัญญาณ ไฟ 3.3 โวลต์ ไปยัง ขา GPIO ในสถานะ ว่ามีไฟ หรือ ไม่มีไฟ  นั้น มีอยู่ 3 แบบ โดยจะเลือกใช้ในรูปแบบ True และ False (True = มีไฟ , False = ไม่มีไฟ)

ตัวอย่างใช้คำสั่ง

    GPIO.output(7,True)
    GPIO.output(7,False)



ขั้นตอนการทำงาน


1.
การติดตั้ง Linux ให้กับ Raspberry โดยใช้ไฟล์ image


2. การใช้งาน GPIO ใน Raspberry Pi ด้วย Python
 



การเขียนโปรแกรมภาษาไพธอน ด้วย Python 3 (IDLE)

Python (ไพธอน) มี Editor  สำหรับเขียนคำสั่ง มีชื่อว่า Python Shell โดยทั่วไปจะเรียกว่า IDLE ย่อมาจาก ("Integrated Development Environment")  วิธีการเรียกใช้โปรแกรม IDLE  มี 2 วิธี คือ


1. เรียกใช้โดย คำสั่งคอมมานไลน์ (Command Line)



เริ่มโดย เปิดโปรแกรม เทอมินอล (Root Terminal)



โปรแกรม เทอมินอล (Root Terminal)


แล้วใช้คำสั่ง

sudo idle
 

-> 
กด Enter




2.  เรียกใช้โดย 
Menu


ไปที่ Menu -> Programming -> Python 3 (IDLE)



โปรแกรม Python 3 (IDLE)



เขียนโปรแกรมแรก  Hello World


ไปที่ File -> New File




จะมีหน้าต่างใหม่ปรากฏขึ้นมา (การเขียนโปรแกรมจะเริ่มที่หน้าต่างนี้)





เขียนโค้ดดังนี้


print ("Hello, World!")




ไปที่ File -> Save




ตั้งชื่อไฟล์ ในตัวอย่างเป็น hello_world แล้ว คลิก Save




ทดสอบการทำงานของโปรแกรม โดยไปที่ Run -> Run Module (หรือกด F5)




ผลลัพธ์การทำงานของโปรแกรม



ออกจากโปรแกรมโดย ไปที่  File -> Exit





เขียนโปรแกรม ควบคุม LED ด้วย GPIO


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


1. Breadboard 8.5CM x 5.5CM 400 holes
2. Jumper (F2M) 20cm Female to Male
3. Jumper (M2M) 10cm Male to Male
4.
หลอดไฟ LED 5mm สีแดง
5. รีซิสเตอร์ 220 OHM 1/4W 5%



ประกอบวงจร 1 ตามรูปด้านล่าง

.





เปิดโปรแกรม Python 3 (IDLE) เขียนโค้ดดังนี้ ในตัวอย่าง ตั้งชื่อเป็น led_3


import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)
for x in range(0,3):
    GPIO.output(7,True)
    time.sleep(1)
    GPIO.output(7,False)
    time.sleep(1)
GPIO.cleanup()   


อธิบายการทํางานของโปรแกรม





ทดสอบการทำงานของโปรแกรม

ทดสอบการทำงานของโปรแกรม โดยไปที่ Run -> Run Module (หรือกด F5)



วีดีโอผลลัพธ์การทำงานของโปรแกรม # 1 (ไฟกระพริบ LED ด้วย GPIO Raspberry Pi)



ประกอบวงจร 2 ตามรูปด้านล่าง






เปิดโปรแกรม Python 3 (IDLE) 
เขียนโค้ดดังนี้ ในตัวอย่าง ตั้งชื่อเป็น led_7



import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
for x in range(0,7):
    GPIO.output(7,True)
    time.sleep(.5)
    GPIO.output(7,False)
    GPIO.output(11,True)
    time.sleep(.5)
    GPIO.output(11,False)
    GPIO.output(13,True)
    time.sleep(.5)
    GPIO.output(13,False)    
GPIO.cleanup() 


ทดสอบการทำงานของโปรแกรม


ทดสอบการทำงานของโปรแกรม โดยไปที่ Run -> Run Module (หรือกด F5)




วีดีโอผลลัพธ์การทำงานของโปรแกรม # 2 (ไฟวิ่ง LED ด้วย GPIO Raspberry Pi)



ไม่มีความคิดเห็น:

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