ราสเบอร์รี่ PI และ GPIO: ควบคุม LED ทุบตีและงูเหลือม

ในโพสต์ก่อนหน้านี้ที่เราเห็นเป็นขา GPIO และตัวอย่างของการประยุกต์ใช้งานจริง, วันนี้เราจะเน้นการทำงานของขาที่ใช้งานทั่วไป, และเรียนรู้การควบคุมกับใบสั่งของล่าม ทุบตี และด้วย งูเหลือม.

โปรโต&ไฟ led

จะใช้การ ไฟ LED, ความต้านทานของ 330 โอห์ม, ลวด, และหนึ่ง Breadboard, หรือตะกั่วและหัวแร้งแบบ.

นอกจากนี้เรายังจะต้องของเรา ราสเบอร์รี่ มีอยู่แล้ว Raspbian ติดตั้งไว้แล้ว, ถ้ากรณีของคุณไม่, คุณสามารถดูวิธีการทำ ต่อไปนี้ที่เชื่อมโยงจากการ ไดเรกทอรี.

ขี่กระแส

คุณสามารถประสานโดยตรง ไฟ LED ลวดและต้านทานคุณจะเห็นต่อไปนี้ ไดอะแกรม, แม้ว่ามันจะดีเพื่อใช้เป็น Breadboard; ก็ต้องดูกับจอน, ในขณะ “เส้นทแยงมุม” ภายในการ ไดโอด ไฟ LED รวมสองขายึดวงจร, เรียบร้อยแล้ว ที่ถ้าคุณได้กำหนดใช้ย้อนหลังจะไม่เปิด.

วงจรที่จำเป็นในการควบคุมการจุดระเบิดของไดโอดแบบ LED.

วงจรที่จำเป็นในการควบคุมพลังของไดโอดแบบ LED.

ผมจะใช้ Breadboard, และได้แนะนำให้ คุณใช้การ, มีบาง จากประมาณ 4 ยูโร และอนุญาตให้เราใช้คอมโพเนนต์ซ้ำแล้วซ้ำอีก โดยไม่ต้องบัดกรีได้, การเชื่อมต่อภายในหนึ่ง Breadboard พวกเขามักจะเป็นดังนี้.

protocon

การเชื่อมต่อ Breadboard.

การเชื่อมต่อระหว่างการ Breadboard และการ ราสเบอร์รี่ จะต้องมีในแผนภาพต่อไปนี้, การ GPIO คุณสามารถเข้าถึงปัญหา 3,3V การกำหนดค่าตรรกะสูง.

วงจรบน Breadboard.

วงจรที่จำเป็นในการควบคุมพลังของไดโอดแบบ LED.

สวัสดี โลกของ GPIO กับทุบตี

เมื่อติดตั้งวงจร, เราจะไปทำอะไรที่ผมเรียกการ “สวัสดี โลก GPIO” ใน ทุบตี ทำงานต่อไปนี้ สคริปต์.

#!/bin/bash
#Exportamos el puerto GPIO 17 
echo 17 > /sys/class/gpio/export 
#Lo configuramos como salida 
echo out > /sys/class/gpio/gpio17/direction 
#Encendemos el LED asignandole 1 como valor lógico
echo 1 > /sys/class/gpio/gpio17/value

เมื่อต้องการปิดไฟ LED เราสามารถทำดังนี้ สคริปต์.

#!/bin/bash
#Apagamos el LED asignandole 0 como valor lógico
echo 0 > /sys/class/gpio/gpio17/value  
#Eliminamos la entrada del puerto GPIO 17 
echo 17 > /sys/class/gpio/unexport 

โดยทั่วไปเราทำอะไรอยู่ด้วย ทุบตี คือการ สร้างความ ลำดับชั้นไดเรกทอรี ใน /sys/ชั้น/gpio และเพิ่มเนื้อหาแต่ละไฟล์ที่จะถือเป็นการ ตัวแปร.

ลำดับชั้น

ลำดับชั้นภายในไดเรกทอรี /sys/class/gpio.

แนะนำงูเหลือม

เราได้พิสูจน์แล้วว่า วงจรของเราทำงานอย่างถูกต้องและ ไฟ LED มีมันแล้วยิงให้สูงค่าตรรกะตัวแปร, ตอนนี้ลองมาดูว่าเราสามารถทำเหมือนกันใน งูเหลือม, ที่จะช่วยให้เราสามารถจัดตารางเวลาของเรา โปรแกรมประยุกต์เว็บ การควบคุมอินพุตและเอาท์พุตของการ GPIO จากอุปกรณ์ใด ๆ.

funcweb

ดำเนินงานโดยใช้โปรแกรมประยุกต์เว็บ.

ก่อนดำเนินการต่อ, แนะนำว่า คุณเห็น บทของการ 1 การ 10 ของ วิดีโอแนะนำจากงูเหลือม ช่องทางของ YouTube ของ รหัสที่อำนวยความสะดวก, ถ้าไม่ได้ความคิดมากของการเขียนโปรแกรมใน งูเหลือม, มาให้คุณมากให้ทำความคุ้นเคยกับรหัสที่เราเห็นข้างหน้ามากขึ้น และเข้าใจถึงมัน.

ต่าง ๆ Pinouts ของ GPIO (BCM และคณะ)

มีอยู่สองชนิดของหมายเลขพิน, กายภาพหมายเลขหรือโหมด คณะกรรมการ, และหมายเลขของชิ SoC Broadcom ควบคุม, เราจะใช้ pinout ที่ในโหมด BCM, แต่ลองดูความแตกต่าง.

BCMvsBOARD

สวัสดี โลกของ GPIO กับงูเหลือม

หลังจากดูวิดีโอ, และ pinouts ต่าง ๆ แล้วสามารถเข้าใจพื้นฐานรหัสเพื่อทำการ “สวัสดี โลก GPIO” ใน งูเหลือม.

ครั้งแรก เราจะดาวน์โหลดสิ่งที่คุณต้องการควบคุมการ GPIO มี งูเหลือม, ใน Raspbian พวกเขาติดตั้งอยู่ งูเหลือม และไลบรารี GPIO, แต่เราจะ การติดตั้งการปรับปรุงระบบให้มีรุ่นล่าสุด.

usuario@maquina:~$ sudo apt-get install python-dev
usuario@maquina:~$ sudo apt-get install python-rpi.gpio
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

ปรับปรุงครั้งเดียว, มาดูวิธีการเปิดการ ไฟ LED ด้วยต่อไปนี้ สคริปต์, ตัวอย่างเช่นสามารถโทร enciende.py, และเราสามารถเรียกใช้เป็น root ด้วยคำสั่ง “sudo งูเหลือม enciende.py”.

#!usr/bin/env/ python
#enciende.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico alto para encender el LED
GPIO.output(17, GPIO.HIGH) 

นี้ เราสามารถเปิดปิด, ตัวอย่างเช่น เรียก apaga.py

#!usr/bin/env/ python
#apaga.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM
GPIO.setmode(GPIO.BCM)  
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico bajo para apagar el LED
GPIO.output(17, GPIO.LOW) 
#Finalmente liberamos todos los pines GPIO, es decir, los desconfiguramos)
GPIO.cleanup() 

และ ด้วยเหตุนี้ เราจะเรียกคุณ parpadea.py, เราจะให้กระพริบ ไฟ LED.

#!usr/bin/env/ python
#parpadea.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Importamos la libreria time
import time 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Queremos que lo que contenga el for i in range se repita 5 veces
for i in range(0,5): 
        #Asignamos valor logico alto para encenderlo
               GPIO.output(17, GPIO.HIGH) 
        #Esperamos un segundo
               time.sleep(1)
        #Asignamos valor logico bajo para apagarlo
         GPIO.output(17, GPIO.LOW) 
        #Esperamos un segundo
         time.sleep(1) 
#Una vez termina las 5 repeticiones, liberamos el pin GPIO utilizado; en este caso el 17
GPIO.cleanup() 

ถ้าคุณไม่นำเข้าในไลบรารี “เวลา“, ไม่สามารถเพิ่มการ “นอนหลับ“, และถ้าเพิ่มการ “นอนหลับ” วินาทีระหว่างเปิด และปิด, เป็นไปได้มากว่า ตาเราจะรู้สึกสั่น.

จึงไม่สามารถเพิ่มอักขระพิเศษในการ สคริปต์ ในหลาม, ด้วยเหตุนี้ ความคิดเห็นไม่ได้เน้น, เนื่องจากมันให้อักขระผิดพลาดไม่ถูกต้อง.

ในรายการต่อไปนี้ เราจะเห็นวิธีการทำง่าย โปรแกรมประยุกต์เว็บ ทำให้เราดำเนินการเหล่านี้ สคริปต์, เพื่อให้สามารถควบคุมอุปกรณ์ใด ๆ ด้วยเบราว์เซอร์ เว็บ.

ถ้าคุณชอบคุณสามารถทำตามฉันบน ทวิตเตอร์, Facebook, Google +, LinkedIn, หรือใช้ร่วมกับปุ่มภายใต้ประกาศนี้, ถ้าคุณมีคำถาม หรือข้อเสนอแนะโปรดอย่าลังเลที่จะแสดงความคิดเห็น.

บทความที่เกี่ยวข้อง

ช่วยให้เราเข้าถึงผู้อ่านเพิ่มเติม Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 ความคิดเกี่ยวกับ"ราสเบอร์รี่ PI และ GPIO: ควบคุม LED ทุบตีและงูเหลือม

  1. มีคำถามจากมือใหม่…
    เนื่องจากความต้านทานของ 330 โอห์มและใช้มัน?

    จะใช้สำหรับ 330 เมื่อเราทำงานกับ RPI, หรืออาจแตกต่างกัน?

    บล็อกที่ทักทาย และเยี่ยม!!!

    • สวัสดี ปีเตอร์,

      หลัก มันควรทำ, ข้อผิดพลาดเท่านั้นที่ได้สิทธิ์บางคนแต่การทำงานจากแอพลิเคชันเว็บ, เป็นผู้ใช้ www-ข้อมูล โดยค่าเริ่มต้นไม่มีสิทธิ์เหล่านี้.

      ในกรณีลองใช้ “sudo chmod + x script.py” เพื่อให้ปฏิบัติ, แม้ว่าจะไม่ ให้มันควรทำงานเพียงจากเทอร์มินัล; คุณสามารถสอนถ้าคุณกลับข้อผิดพลาดในเทอร์มินัลเพื่อเรียกใช้สคริปต์หรือไม่?

      ขอบคุณมากครับสำหรับความคิดเห็น.

    • ค้นหาฉันมันแปลกมาก, ในสคริปต์ มีไม่แอท, คุณสามารถให้รายละเอียดของข้อผิดพลาด?

      เจอกันใหม่เร็ว ๆ นี้, และขอบคุณสำหรับข้อคิดเห็น.

  2. สวัสดี,
    เพื่อเปิด LED ผ่านหลามตามตัวอย่างที่แนะนำ แต่มันทำให้ฉันข้อผิดพลาดต่อไปนี้เมื่อฉันเรียกใช้รหัสได้:

    นำเข้า RPi.GPIO เป็น GPIO

    ข้อผิดพลาด:
    -ทุบตี: นำเข้า: ไม่พบใบสั่ง

    คุณรู้ว่าทำไมข้อผิดพลาดนี้คือ?

    ขอบคุณและขอแสดงความยินดีในบล็อกนี้จะให้บริการผมมาก!

  3. ดีอีกครั้ง,
    สิ่งที่ฉันไม่เข้าใจเป็นบรรทัดแรกของรหัส: #!ระบบควบคุม เวอร์ชัน/ช่อง/env/งู
    การให้บริการอะไร?
    ผมเห็นว่า มันทำงานเพียงมี หรือไม่ มีมัน

    • สวัสดี Nano, ยินดีอีกครั้ง.

      บรรทัดที่คุณพูดถึงเป็นคำสั่งที่มักจะรวมอยู่ที่จุดเริ่มต้นของสคริปต์บอกเทอร์มินัลที่ล่ามซึ่งใบสั่งคุณควร ผ่าน, ในกรณีนี้ งูเหลือม; สำหรับทุบตีจะเป็นดังนี้:

      #!/ถังขยะ / ทุบตี

      ในกรณีนี้ การทำงาน กับการประกาศ และ ไม่ได้เนื่องจากแฟ้มมีนามสกุล.py, แต่ก็ควรเพิ่มเสมอ.

      หวังว่าต้องมีล้างข้อสงสัยของคุณ, กลับมาเมื่อใดก็ ตามที่คุณต้องการ และขอขอบคุณมากครับสำหรับคุณ🙂ความคิดเห็น

  4. ขอบคุณ, การสอนเป็นเลิศ, แต่ผมมีข้อสงสัย:

    พวกเขาปล่อยให้ฉัน มีข้อผิดพลาดต่อไปนี้:

    บรรทัด 12 นำเข้า:ไม่พบ
    บรรทัด 14 ข้อผิดพลาดไวยากรณ์: คำที่ไม่คาดคิด (คาดหวังว่า “)”)

    รหัสของฉันคือ:

    #GPIO setup.py
    ### เริ่มต้นข้อมูลเริ่มต้น
    # มี: GPIO setup.ch
    # เริ่มต้นที่จำเป็น: $remote_fs $syslog
    # จำเป็นต้อง: $remote_fs $syslog
    # เริ่มต้นค่าเริ่มต้น: 2 3 4 5
    # เริ่มต้นหยุด: 0 1 6
    # คำอธิบายย่อ: ตั้งค่าโหมด gpio
    # คำอธิบาย: ตั้งค่า gpio 22/27/17/4 ออกจากโหมด
    ### ข้อมูลเริ่มต้นสิ้นสุด

    นำเข้า RPi.GPIO เป็น GPIO
    #กำหนดโหมด BCM
    GPIO.setmode(GPIO BCM)
    #เรากำหนด GPIO หมุด
    GPIO.setup(4, GPIO ออก)
    GPIO.setup(17, GPIO ออก)
    GPIO.setup(27, GPIO ออก)
    GPIO.setup(22, GPIO ออก)

    ความคิดใด ๆ???

    • สวัสดี Leoctam, ขอบคุณสำหรับข้อคิดเห็น.

      บรรทัดแรกให้เข้าใจว่า คุณกำลังพยายามสร้างดีมอนเป็นระบบ, แต่พวกเขามีความเห็นดังนั้นมันจะไม่นำมาพิจารณา.

      ในทางตรงข้าม, รหัสที่คุณใช้ในการโต้ตอบกับ GPIO เป็นงูเหลือม, ดังนั้น คุณต้องพักใน.py สคริปต์ที่จะเรียกจากภูตของคุณระบบ, หรือใช้ทุบตีให้ทำเช่นนั้นเช่นในตัวอย่างแรกในกวดวิชานี้.

ใส่ความเห็น