วันนี้มาคุยกันเรื่องการติดต่อกับโลกภายนอกของ Raspberry Pi กันครับ
ก่อนอื่นอยากจะเริ่มต้นจากว่า ทำไมต้อง Raspberry Pi ในเมื่อเรามี Arduino อยู่แล้วนี่.. อันนี้ขอบอกครับว่ามันมีข้อดีข้อเสียคนละแบบ ครั้งแรกที่ RPi ออกมาใหม่ๆ เมื่อปี 2012 หลายๆคนก็คิดว่า Raspberry Pi คงจะมาฆ่า Arduino แน่แล้ว เพราะราคาก็ไม่ต่างกันมาก แถมความสามารถที่ Run Linux ได้ เนืองจากมี Processing power ที่สูงกว่า
เวลาผ่านไปทุกคนก็พอจะมองเห็นภาพว่าทั้งสองอุปกรณ์นั้นเข้ามาเติมเต็มซึ่งกันและกันซะมากกว่า ข้อดีของ Raspberry Pi ที่เห็นชัดคือ Processing power การรับค่า และการแสดงผล ผ่าน keyboard และ monitor แบบ PC ทำให้สามารถทำงานประเภทที่ต้องใช้แรงมากๆ อย่างการประมวลผลภาพ (Image processing) ได้ (ใช้คู่กับ Webcam หรือ Picam ก็ได้)
ส่วน Arduino ก็มีข้อได้เปรียบตรงที่สามารถติดต่อกับโลกภายนอกโดยใช้ Shield สารพัดที่มีอยู่มากกว่า Accessories ของ Raspberry Pi เยอะมากๆ แถมด้วยมีการพัฒนาโดยกลุ่มคนที่นิยมใช้แล้วเอามา share กันอยู่ทั่วโลก เรียกว่ามีขอฟรีให้ใช้เพียบ ดังนั้นจึงมีคนกลุ่มนึงที่นิยมใช้ทั้งสอง Platform นี้คู่กัน (จะเขียนบทความเกี่ยวกับการเชื่อมต่อใช้งานระหว่างสองค่ายนี้ในโอกาสต่อไปครับ)
เอาละครับกลับมาที่เรื่องที่วันนี้ตั้งใจจะมาเขียนให้อ่านกัน คือเรื่องของการติดต่อกับโลกภายนอกโดยใช้ Gernal Purpose Input/Output หรือ GPIO บน Raspberry Pi กัน จริงๆแล้วเราสามารถใช้ภาษาโปรแกรมได้หลายภาษาเพื่อการติดต่อสั่งงาน RPi นะครับ ได้ทั้ง C C++ Python แต่ที่นิยมกันและมีคนใช้มากก็คือภาษา Python ครับ ภาษา Python นี้เป็นที่นิยมมากๆ โดยเฉพาะพวกที่ใช้ Linux ทำวิจัยกันครับ เพราะว่ามันฟรี และมี library ที่ share กันเยอะแยะ
ถ้าใครเป็นมือใหม่อยากลองเรียนวิธีการเขียนโปรแกรมด้วยภาษา Python ก็เชิญทางนี้นะครับ บทความที่เราเขียนจะไม่ได้สอนการเขียนโปรแกรม Python นะครับ เป็นการแนะนำการใช้อุปกรณ์มากกว่า
http://www.thenewboston.org/list.php?cat=36
มีข้อมูลที่อยากจะให้ทุกคนที่เป็นมือใหม่ Raspberry Pi ออก GPIO รู้กันก่อนซักนิดครับ
1. GPIO ของ Raspberry Pi นั้นไม่เหมือนกับ Arduino โดยเฉพาะรุ่นยอดนิยมอย่าง UNO R3 และ Mega 2560 นะครับ สองบอร์ดของ Arduino ที่กล่าวไปนั้นทำงานที่แรงดัน Input/Output ที่ 5 V ในขณะที่ RPi นั้น Port ต่างๆ บน GPIO ทำงานที่ 3.3 V นะครับ การใช้งานผิดระดับแรงดัน อาจจะทำให้ RPi ในมือของคุณเกิดความเสียหาย กลายเป็นบอร์ดพิการไปได้ ต้องระวังให้มากๆ
2. การป้องกันความเสียหายจากการต่อผิด ทำให้กระแสไหลเกินเข้าหรือออกจาก RPi นั้นจะไม่ดีเท่า Arduino นะครับ เรียกว่าแทบจะไม่มีเลยก็ได้ จะต่อก็ต้องระวังให้มาก
มีสามทางเลือกสำหรับมือใหม่ที่ต้องการทดลองครับ ทางเลือกแรก คือ ระวังให้มากๆ อย่าต่อผิด เพราะ RPi ไม่มีระบบในการป้องกันกระแสเกิน หรือ การต่อขาผิด ที่ดีเหมือน Arduino นะครับ (ไม่ได้ขู่ แต่ไม่อยากให้มานั่งเสียดายบอร์ดราคาพันกว่าบาทเพราะต่อผิดเพียงเสี้ยววินาที)
ทางเลือกที่สองคือ ใช้ Berry Clip ที่เห็นบนรูปด้านบนเพื่อทดลองเขียนโปรแกรมควบคุม และทดสอบ Software ให้เรียบร้อยซะก่อน แน่ใจในฝีมือและค่อยไปลองที่ Hardware จริงๆ
หรือ ทางที่สาม คือ การใช้ Arduino board เข้ามาติดต่อกับ Raspberry Pi และ ต่อออกโลกภายนอกด้วย Arduino แทนครับ
เลือกเอาตามสะดวกครับแต่ถ้าใครไม่อยากเสี่ยง ยอมลงทุนซื้อบอร์ด Berry Clip ก็ลองดูตามนี้นะครับ ผมจะบรรยายให้อ่าน
Berry Clip ก็เป็นบอร์ดเสริม (Daughter Board) ที่ออกแบบมาสำหรับ RPi โดยเฉพาะ มีทั้งแบบที่ต้องมานั่งลงแรงบัดกรีต่อกับ PCB กันเอง หรือ แบบที่ Arduitronics เอามาขาย คือแบบสำเร็จรูปครับ ประกอบไปด้วย
เพื่อการเรียนรู้การใช้งาน GPIO ของ Raspberry Pi ตั้งแต่เริ่มต้นนะครับ ขอบรรยายเป็นขั้นตอนตามนี้ครับ
1. ลง OS ของ Raspberry Pi ตามปกติครับ อ่านได้จาก บทความนี้ครับ สำหรับตัวโปรแกรมที่ Run Python นั้นจะมีมาให้แล้วพร้อมกับ Raspbian นะครับ
2. จากนั้นก็ Log in เข้าด้วย Username: Pi และ Password: Raspberry ตามปกติ
3. เปิด LXTerminal แล้วลงโปรแกรมโดยใช้คำสั่งต่อไปนี้
mkdir berryclip
cd berryclip
wget https://bitbucket.org/MattHawkinsUK/rpispy-berryclip/get/master.tar.gz
tar -xvf master.tar.gz --strip 1
โดยที่คำสั่งด้านบนก็จะสร้าง Folder ใหม่ชื่อ berryclip
จากนั้นก็เปลี่ยน Current directory ไปที่ Folder ที่สร้าง
และ Download โปรแกรมตัวอย่างจากเว็บ Bitbucket.org
สุดท้ายก็ Unzip ไฟล์ที่ได้มาครับ
สำเร็จตามนี้แล้ว ลองเปิด File manager ดูจะเห็นตามนี้ครับ
ตัวอย่างที่มีใน Folder ก็มีทั้งหมด 12 แบบดังรายการด้านล่างนี้ครับ
การ Run Program ที่ต้องมีการติดต่อกับ GPIO นั้นต้องสั่งการโดยใช้ Superuser เท่านั้นนะครับ ถ้าไม่อย่างนั้นจะ RUN ไม่ได้ ดังนั้นการใช้งาน โปรแกรมที่มี GPIO เข้ามาเกี่ยวข้องจะมีวิธีเปิดสองแบบดังนี้ครับ
1. Run ผ่านการเรียกบน LXTerminal ด้วยคำสั่ง (สำหรับตัวอย่าง berryclip_01.py)
sudo python berryclip_01.py
2. หรือจะเรียก IDLE ขึ้นมาก่อน โดยการเรียกที่ LXTerminal ด้วยคำสั่ง
>>> sudo idle
เพื่อให้เปิดโปรแกรม IDLE ด้วย Superuser นะครับ ถ้าไม่อย่างนั้นจะติดต่อ GPIO ไม่ได้ จากนั้นก็เปิดไฟล์ที่ต้องการ RUN แล้วกด F5
เราไม่สามารถเรียก IDLE โดยการ double click บนหน้า Desktop นะครับ การทำแบบนั้นจะไม่ได้เป็น Superuser ซึ่งจะทำให้ไม่สามารถเรียก GPIO ได้ครับ ต้องเรียก IDLE ผ่าน LXTerminal ด้วยคำสั่ง sudo idle เท่านั้นครับ
การเรียก อุปกรณ์ที่ต่ออยู่บน Berry Clip ตาม คำสั่ง GPIO.setmode(GPIO.BMC) ก็มีรายละเอียดดังนี้ครับ
LED 1 Pin 07 GPIO4
LED 2 Pin 11 GPIO17
LED 3 Pin 15 GPIO22
LED 4 Pin 19 GPIO10
LED 5 Pin 21 GPIO9
LED 6 Pin 23 GPIO11
Buzzer Pin 24 GPIO8
Switch Pin 26 GPIO7
หากต้องการอ่านฉบับเต็มก็ไปที่นี่ครับ
http://www.raspberrypi-spy.co.uk/berryclip-6-led-add-on-board/berryclip-plus-instructions/
http://www.thirdeyevis.com/pi-page-2.php
วันนี้พอแค่นี้ครับ ครั้งหน้ามาต่อกันในรายละเอียดของคำสั่งที่ใช้ คราวนี้เราลองให้มันทำงานได้ปกติก่อน ครั้งหน้ามาลงคำสั่งกันครับ
ถ้ามีข้อสงสัย เสนอแนะ หรือ คำถามก็ยินดีนะครับ
โดย Mountain A
หน้านี้เป็นสารบัญของบทความที่ปรากฏในเว็บของ Arduitronics.com นะครับ จะขอแบ่งออกเป็นหัวข้อตามกลุ่มของสินค้าในร้านดังต่อไปนี้
หน้าที่เข้าชม | 15,413,077 ครั้ง |
ผู้ชมทั้งหมด | 5,916,156 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 30 ก.ย. 2568 |