วันอาทิตย์ที่ 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)



วันพฤหัสบดีที่ 19 กรกฎาคม พ.ศ. 2561

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




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


1. Raspberry Pi 3 Model B+

2. Micro SD Card Class 10 16GB + Card Adapter

3. 5V 2.1A Power Adapter + MircoUSB

4. จอ Monitor แบบมีสายเชื่อมต่อ HDMI

5. HDMI to VGA Adapter สำหรับต่อ Raspberry Pi กับ Monitor

6. USB Keyboard

7. USB Mouse

8. คอมพิวเตอร์ PC / Laptop


บอร์ด Raspberry Pi (ออกเสียงว่า ราส-เบอร์-รี่-พาย) Model B+ (โมเดล บี พลัส)  คือ บอร์ดคอมพิวเตอร์ขนาดเล็ก ที่ถูกพัฒนาขึ้นโดย Raspberry Pi Foundation มีคุณสมบัติเด่น คือ ติดต่อ และ ความคุมอุปกรณ์อิเล็กทรอนิกส์ได้

Raspberry Pi ไม่มีหน่วยความจำแบบแฟลชเมมโมรี ดังนั้นจำเป็นที่จะใช้ SD Card ภายนอก ซึ่งหากเปรียบเทียบกับคอมพิวเตอร์ SD Card นี้ก็จะเปรียบเสมือนฮาร์ดดิสก์นั่นเอง การลงระบบปฏิบัติการ OS รวมถึงการโปรแกรมหรือข้อมูลต่างๆ จะถูกจัดเก็บไว้ใน SD Card นี้ทั้งหมด ดังนั้นความเร็วในการสื่อสารรวมถึงคุณภาพของ SD Card ก็เป็นสิ่งที่ต้องคำนึงถึง ซึ่งโปรเจคนี้เลือกการ์ดที่เป็น Class 10 ที่ความจุ 16GB เพื่อให้การใช้งาน Raspberry Pi มีประสิทธิภาพมากที่สุด




การจะใช้งาน บอร์ด Raspberry Pi นั้น ขั้นแรกจะต้องลงปฏิบัติการ Linux ให้กับบอร์ด Raspberry Pi เสียก่อน ซึ่งในโปรเจคนี้จะใช้ระบบปฏิบัติการ Raspbian (ราสเบียน) น่าจะมาจากคำว่า Raspberry + Debian  เป็นระบบปฏิบัติการที่มีรากฐานมาจากระบบปฏิบัติการ Debian (เดเบียน) ซึ่งแตกตัวออกมาจากระบบปฏิบัติการ Linux โดยได้รับการออกแบบให้รันบนฮาร์ดแวร์ Raspberry PI ดังนั้น คำสั่งต่างๆ ของ Raspbian จึงจะเหมือนกับคำสั่งที่มีใช้งานบนระบบปฏิบัติการ Linux รวมทั้ง Ubuntu เกือบทั้งหมด จะมีแตกต่างกันบ้างเล็กน้อยเท่านั้น

ในใช้งาน บอร์ด Raspberry Pi นั้น Raspbian (ราสเบียน) เป็น OS ที่ได้รับความนิยม เนื่องจากใช้งานง่าย มี x-windows ติดต่อกับผู้ใช้ได้ง่าย, มี Application และ เครื่องมือบางอย่างติดตั้งมาให้แล้ว และยังได้ติดตั้ง Python 3 (IDLE) และ RPi.GPIO (โมดูลสำหรับอินเตอร์เฟสกับพอร์ต GPIO ของ Raspberry Pi) มาไว้เรียบร้อยในตัวแล้ว


ซึ่งตัวอย่างในการทำงานนี้จะเป็น คอมพิวเตอร์ ระบบปฏิบัติการ Windows 7


ขั้นตอนการติดตั้ง Linux เวอร์ชั่น Raspbian


1. ดาวน์โหลดไฟล์ระบบปฏิบัติการ Raspbian สามารถดาวน์โหลดได้จากลิงค์

https://www.raspberrypi.org/downloads/raspbian/


เลือก RASPBIAN STRETCH WITH DESKTOP  (ขนาดไฟล์ 1.62 GB)


เลือก Download ZIP



*** ใช้ในเวลา ในการดาวน์โหลด ประมาณ 2 ชั่วโมง ขึ้นอยู่กับความเร็วอินเตอร์เน็ตด้วย ***


แนะนำดาวน์โหลดที่ drive.google.com  
2018-06-27-raspbian-stretch.zip



2. คลายซิบ ให้เป็นไฟล์ Image (*.img) โดยโปรแกรม WinRar หรือ WinZip


เปิดไฟล์ Raspbian ที่เราดาวน์โหลดมา


ไปที่ Extract To


เลือกโฟลเดอร์ ที่ต้องการเก็บไฟล์ไว้ (ในตัวอย่างเป็น 2018-Raspberry)



โปรแกรมจะทำการคลายซิบ เป็นไฟล์ Image (*.img) ไปยัง โฟลเดอร์ ที่เราเลือกไว้



เมื่อเข้าไปดูที่ โฟลเดอร์ จะพบ Raspbian ที่เป็นไฟล์ Image (*.img)





3. ติดตั้งโปรแกรม SD Card Formatter 5.0 ใช้สำหรับ Format Disk สามารถดาวน์โหลดได้จากลิงก์


https://www.sdcard.org/downloads/formatter_4/eula_windows/


จากนั้นให้คลิกปุ่ม Accept โปรแกรม SD Formatter โปรแกรมจึงจะดาวน์โหลดสู่ คอมพิวเตอร์ของเรา



Micro SD Card , Class 10 ความจุ 16GB + Card Adapter




ให้เสียบ Micro SD Card เข้าไปใน Card Adapter



Card Adapter ที่มี Micro SD Card อยู่ด้านใน



แล้วจึงเสียบ Card Adapter ที่บรรจุ Micro SD Card ใส่ในช่องซ็อกเก็ตของคอมพิวเตอร์ PC (ดันจนกระทั่งมีเสียงคลิก)




แล้วทำการ Format , Micro SD Card โดยใช้โปรแกรม  SD Card Formatter


ถ้าเสียบ Card Adapter ที่บรรจุ Micro SD Card ได้ถูกต้อง ที่ Select card จะมี ไดรฟ์ ให้เลือก ในตัวอย่างจะเป็น ไดรฟ์  F:/


เลือก Quick format และที่ Volume label ในตัวอย่างตั้งชื่อเป็น Robot


คลิก Format



คลิก Yes





คลิก OK  ถึงขั้นตอนนี้การ Format SD Card ของเรานั้นเสร็จสมบูรณ์แล้ว ให้ปิดโปรแกรมลงไป




4. ติดตั้งโปรแกรม Win32 Disk Imager ใช้สำหรับเขียนไฟล์ระบบปฏิบัติการที่เป็นไฟล์ Image (*.img) ลงบน Micro SD Card สามารถดาวน์โหลดได้จากลิงก์


 http://sourceforge.net/projects/win32diskimager/


เมื่อติดตั้งโปรแกรมเสร็จแล้ว 


ให้เขียนไฟล์ image ระบบปฏิบัติการ Raspbian ทีเราทำการคลายซิบ เป็นไฟล์ Image (*.img) แล้ว ลง ไปใน Micro SD Card


โดย Browse เลือกไปยัง โฟลเดอร์ที่เราเก็บไฟล์ Image (*.img)  ระบบปฏิบัติการ Raspbian ไว้ (จากการทำงานในข้อที่ 2)





เลือก Device ที่จะเขียน ไฟล์ image ลงไป  ก็คือ Device ที่เสียบ Micro SD Card อยู่  ในตัวอย่างเป็นไดรฟ์  F:\




คลิกปุ่ม Write


จะปรากฏหน้าต่างยืนยัน ให้คลิกปุ่ม Yes



โปรแกรมจะเริ่มเขียนไฟล์ image ระบบปฏิบัติการ Raspbian ลง ไปใน Micro SD Card



หน้าต่างแสดงเมื่อเขียนไฟล์ image ระบบปฏิบัติการ Raspbian สำเร็จ คลิก OK แล้วปิดโปรแกรมลงไป




ดัน Card Adapter จนกระทั่งมีเสียงคลิก เพื่อนำ Card Adapter ที่มี Micro SD Card อยู่ด้านใน ออกมาจากคอมพิวเตอร์ PC ของเรา


5. นำ Micro SD Card ออกจาก Card Adapter แล้วเสียบลงในช่องซ็อกเก็ต Micro SD Card Slot ของบอร์ด Raspberry Pi โดยมีขั้นตอนดังนี้


Card Adapter ที่มี Micro SD Card อยู่ด้านใน



ถอด Micro SD Card ออกจาก Card Adapter



เสียบ Micro SD Card ลงในช่องซ็อกเก็ต Micro SD Card Slot ที่อยู่ด้านล่างของบอร์ด Raspberry Pi



ดัน Micro SD Card เข้าในช่องซ็อกเก็ต Micro SD Card ของบอร์ด Raspberry Pi





กลับสู่ด้านบนของบอร์ด Raspberry Pi

การต่อใช้งาน Raspberry Pi 3 Model B+


6. เสียบ Keyboard เข้ากับ Quad USB Ports ของบอร์ด Raspberry Pi



7. เสียบ Mouse เข้ากับ Quad USB Ports ของบอร์ด Raspberry Pi




8. เสียบ Monitor เข้ากับ HDMI Port ของบอร์ด Raspberry Pi

สายแปลงสัญญาณ HDMI to VGA 

 ถ้า Monitor เป็นแบบไม่มีที่เสียบสาย แบบ HDMI สามารถใช้  สายแปลงสัญญาณ HDMI to VGA เพื่อให้ ใช้งานได้ตามปกติ



8. ป้อนแหล่งจ่าย  5V 2.1A Power Adapter + MircoUSB เข้ากับ 5V  Micro USB ของบอร์ด Raspberry Pi

5V 2.1A Power Adapter + MircoUSB




ที่จอภาพ จะแสดง ระบบปฏิบัติการ Raspbian  และหน้าต่างให้เริ่มตั้งค่าเริ่มต้น



คลิกที่ Cancel ไปก่อน




การตั้งค่า Keyboard


ไปที่ Menu -> Preferences -> Mouse and Keyboard Settings



คลิกแท็บ Keyboard



คลิก Keyboard Layout



ที่ Layout และ Variant ให้เปลี่ยน จาก English (UK) เป็น English (US) แล้ว คลิก OK




ถึงขั้นตอนนี้ แสดงว่า 
บอร์ด Raspberry Pi ของเรานั้น ได้ติดตั้ง ระบบปฏิบัติการ Raspbian สําเร็จแล้ว และ ตั้งค่า Keyboard เพื่อรอการใช้งานในขั้นตอนต่อไป