реклама
Научаването да използвате GPIO игли на вашия Raspberry Pi отваря цял свят от възможности. Основните принципи, научени чрез начинаещи проекти, проправят пътя към полезни знания както за „Направи си сам“ електроника, така и за програмиране.
Този урок ще ви покаже два начина да добавите бутон към вашия Raspberry Pi проект. Бутонът ще се използва за управление на светодиод. Писмени инструкции са достъпни под видеоклипа.
Ще имаш нужда
За да започнете, уверете се, че имате следните компоненти:
- 1 x Raspberry Pi (Всеки ще направи, модел 3B се използва в този урок)
- 1 x бутон
- 1 x LED
- 1 x 220 ома резистор (по-високите стойности са добре, светодиодът ви просто ще бъде по-слаб)
- 1 х тавичка
- Закачете проводници
Веднъж събрани, трябва да имате компоненти, които изглеждат така:
Ще ви трябва и SD карта с инсталирана Raspbian операционна система. Най-бързият начин да направите това е с изображението на NOOBS (New Out Of the Box Software). Инструкции как да направите това са достъпни в този видеоклип:
Настройка на веригата
Ще използвате GPIO щифтовете на Pi, за да направите веригата и ако не сте запознати с тях нашата ръководство за Raspberry Pi GPIO щифтове ще помогне. Веригата тук е почти същата като в предишната ни Raspberry Pi LED проект, с добавянето на бутона, който ще използвате днес.
Настройте вашата схема според тази диаграма:
- Най- 5 V и GND щифтове се свързват към силовите релси на дъската.
- Пин 12 (GPIO 18) се свързва към положителния крак на светодиода.
- Един крак на резистор се прикрепя към отрицателния крак на светодиода, а другият крак се закрепва към земната шина на дънната платка.
- Пин 16 (GPIO 23) прикрепя се от едната страна на бутона, другата страна се закрепва към земната шина на дънната платка.
След като е настроен, ето как трябва да изглежда:
Проверете веригата си, за да се уверите, че е правилна, и след това включете Raspberry Pi.
Метод 1: RPi. GPIO библиотека
След като Pi стартира, отидете на менюто и изберете Програмиране> IDE на Thonny Python. Ще се отвори нов Python скрипт. Ако сте напълно нов в Python, това е чудесен език за начинаещи и има много страхотни места, за да научите повече за Python след като сте готови с този урок!
Започнете с импортиране на RPi. GPIO библиотека и настройка на режима на дъската.
импортиране на RPi. GPIO като GPIO GPIO.setmode (GPIO.BOARD)
Сега декларирайте променливите за номера на светодиодите и бутоните.
ledPin = 12. бутонPin = 16.
Обърнете внимание, че тъй като режимът на дъската е настроен на СЪВЕТ ние използваме пин номера, а не GPIO номера. Ако това е объркващо за вас, Raspberry Pi графика може да ви помогне да го изчистите.
Настройване на бутона
Време е да настроите GPIO игли. Задайте светодиоден щифт за изход, а щифта на бутона за въвеждане с резистор за издърпване
GPIO.setup (ledPin, GPIO.OUT) GPIO.setup (buttonPin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
Текстът след GPIO.IN се отнася до вътрешен издържлив резистор на Raspberry Pi. Трябва да активирате това, за да получите чисто четене от бутона. Тъй като бутонът отива към заземяващия щифт, се нуждаем от издърпващ резистор, който да държи входния щифт ВИСОК, докато не го натиснете.
Преди да продължим, нека да разгледаме резисторите за издърпване и сваляне.
Intermission: Издърпайте нагоре / издърпайте резистори
Когато конфигурирате GPIO пин за въвеждане, той чете този пин, за да определи неговото състояние. В тази схема трябва да прочетете дали е щифт ВИСОКО или LOW за задействане на светодиода при натискане на бутона. Това би било просто, ако това бяха единствените състояния, които пин може да има, но за съжаление има трето състояние: Плаващ.
Плаващ щифт има стойност между високо и ниско, което кара входът да действа непредсказуемо. Издърпващите се и свалящите резистори решават това.
Горното изображение е опростена диаграма на бутон и Raspberry Pi. GPIO щифтът се свързва към земята чрез бутона. Вътрешният издърпващ резистор прикрепя GPIO щифта към вътрешното Pi захранване. Този ток тече и щифтът е безопасно изтеглен до ВИСОКА.
Когато натиснете бутона, GPIO щифтът се свързва директно към заземяващия щифт и бутона се чете ниско.
Изпускащите резистори са, когато превключвателят е свързан към захранващия щифт. Този път вътрешният резистор прикрепя GPIO щифта към земята, като държи LOW, докато не натиснете бутона.
Теорията за издърпване и спускане на резистора на пръв поглед е объркваща, но важни знания, които трябва да имате при работа с микроконтролери. Засега, ако не го разбирате съвсем, не се притеснявайте!
Нека продължим там, където спряхме.
Програмата
След това настройте програмния цикъл:
докато вярно: buttonState = GPIO.input (buttonPin), ако buttonState == Грешно: GPIO.output (ledPin, GPIO.HIGH) друго: GPIO.output (ledPin, GPIO.LOW)
Най- докато Вярно loop непрекъснато изпълнява кода вътре в него, докато прекратим програмата. Всеки път, когато се завърта, той актуализира buttonState като прочетете входа от buttonPin. Докато бутонът не се натиска, той остава ВИСОКО.
След като натиснете бутона, buttonState става LOW. Това задейства ако изявление, от фалшив е същото като LOW, и светодиодът се включва. Най- още оператор изключва светодиода винаги, когато buttonPin не е False.
Запазете и стартирайте скрипта си
Запазете скрипта си, като щракнете Файл> Запазване като и избор на име на файл. Можете да стартирате скицата, като щракнете върху зеленото Играй бутон в лентата с инструменти на Thonny.
Сега натиснете бутона и светодиодът ви трябва да светне! Натиснете червеното Спри се бутон по всяко време за спиране на програмата
Ако имате затруднения, проверете старателно кода и схемата си за грешки и опитайте отново.
Метод 2: библиотека на GPIO нула
RPI. GPIO библиотеката е фантастична, но има ново дете на блока. Библиотеката на GPIO Zero беше създаден от ръководителя на общността Raspberry Pi Бен Нуттал с намерение да се направи код по-прост и по-лесен за четене и запис.
За да изпробвате новата библиотека, отворете нов файл на Thonny и импортирайте библиотеката.
от gpiozero import LED, Button. от пауза за импортиране на сигнал.
Ще забележите, че не сте импортирали цялата библиотека. Тъй като използвате само светодиод и бутон, изисквате само тези модули в скрипта. Ние също внасяме пауза от библиотеката на сигналите, която е библиотека на Python за управление на събития.
Настройката на щифтовете е много по-лесно с GPIO Zero:
led = LED (18) бутон = Бутон (23)
Тъй като библиотеката на GPIO Zero има модули за светодиода и бутона, не е необходимо да настройвате входове и изходи, както преди. Ще забележите, че въпреки че щифтовете не са се променили, номерата тук са различни. Това е така, защото GPIO Zero използва само пиновите номера на GPIO (известни също като Broadcom или BCM номера).
Останалата част от скрипта е само три реда:
button.when_press = led.on. button.when_released = led.off пауза ()
Най- пауза () call тук просто спира скриптът да излезе, когато достигне дъното. Събитията с два бутона се задействат при всяко натискане и пускане на бутона. Запазете и стартирайте скрипта си и ще видите същия резултат като преди!
Два начина да добавите бутон към Raspberry Pi
От двата начина за настройка на бутона методът GPIO Zero изглежда най-лесният. Все още си струва да научите за RPi. GPIO библиотека като повечето начинаещи проекти Raspberry Pi използваи го. Колкото и лесен е този проект, знанията могат да бъдат използвани за редица неща.
Използването на пиновете за GPIO е чудесен начин да научите и изобретите собствените си устройства, но това е далеч от всичко, което можете да направите с Pi. наш неофициално ръководство за Raspberry Pi Raspberry Pi: Неофициалният урокНезависимо дали сте настоящ собственик на Pi, който иска да научи повече, или потенциален собственик на това устройство с размер на кредитна карта, това не е ръководство, което искате да пропуснете. Прочетете още е препълнен с креативни идеи и уроци, които можете да изпробвате сами! За друг урок като този, вижте как да направите бутон, свързан с Wi-Fi Как да направите своя собствена Wi-Fi връзка с ESP8266В този урок ще научите как да създадете бутон с активиран Wi-Fi с помощта на NodeMCU и IFTTT. Прочетете още .
Иън Бъкли е журналист на свободна практика, музикант, изпълнител и продуцент на видео, живеещ в Берлин, Германия. Когато не пише или е на сцената, той се занимава с „Направи си“ електроника или код с надеждата да стане луд учен.