Створіть індикатор LED з Raspberry Pi (для електронної пошти, погоди або будь-якого іншого)
Raspberry Pi робить приємну компактну платформу для підключення індикаторного світла для всіх видів проектів - повідомлення про погоду, нові повідомлення електронної пошти тощо. Прочитайте далі, як ми покажемо вам, як підключити світлодіодний модуль до вашого Pi і встановити деякі основні сповіщення.
Чому я хочу це робити?
Тому що це весело. На відміну від багатьох наших навчальних посібників, де ми включили невелику рекламу на вершині, яка висвітлює саме те, яку вигоду ви будете отримувати від проекту, в цьому випадку розмір реклами досить короткий, оскільки користь просто весело.
Raspberry Pi є ідеальним пристроєм, щоб пограти, експериментувати з електронікою і вивчити програмування. Ніхто потреб наприклад, індикатор атмосферного дощу в їхній кухні, але створення однієї це весела вправа і чудове нагадування, щоб принести з собою парасольку в потенційно штормові дні.
Що мені потрібно?
Для того, щоб слідувати разом з нашим підручником, вам знадобиться кілька речей. По-перше, ми припускаємо, що ви вже дотримувалися нашого попереднього підручника: Посібник з початку роботи з Raspberry Pi (і, таким чином, маємо основи, охоплені до встановлення Rasbian на нашому Raspberry Pi).
Якщо ви хочете зробити цей проект на бюджет, ми можемо з упевненістю сказати вам, що найновіша модель Raspberry Pi є значним перевищенням для роботи, і ми рекомендуємо вам підірвати пил зі старої Raspberry Pi, яку ви засунули в шафі або підібрати дешевий використаний один eBay або подібне. Бюджет мудрий довго-в-зуб Raspberry Pi 1 Модель A або Модель B зачепив eBay за $ 10-15 ідеально підходить для цього проекту над покупкою абсолютно нового $ 35 поточного покоління Pi \ t.
Крім того, що на ньому встановлено функціональний модуль Pi з Raspbian, вам знадобляться такі речі:
- 1 модуль LedBorg (~ $ 5.00 з доставкою в США від 4 доларів США, працює з усіма моделями Raspberry Pi).
- 1 Clear Raspberry Pi Case, сумісний з вашою моделлю Pi, подібною до цієї моделі Raspberry Pi 1 Model B.
Примітка: Чітке / матове Pi випадку є абсолютно необов'язковим, але якщо ви в даний час використовуєте непрозорий випадок, то ваш світлодіодний індикатор буде схований всередині. Ви повинні або вирізати отвір у вашому випадку, щоб випустити світло або використовувати розширювальний кабель GPIO з комплекту прориву, подібним до цього, від Adafruit Industries, щоб прив'язати LedBorg до вашого Raspberry Pi. При використанні кабелю проби додано близько 8 доларів за рахунок проекту, але він пропонує більше можливостей для налаштування кінцевого продукту, оскільки ви можете легше розмістити світлодіод всередині речей або під щось, що ви хочете підсвічувати..
Встановлення LedBorg
Хоча ви, безумовно, могли б створити індикатор повністю від нуля (і запит на пошукову систему викличе багато людей, які зробили це) організація Piborg виробляє такий компактний і недорогий світлодіодний модуль LedBorg, який ми не могли t протистояти використовувати його в якості основи для нашого проекту Raspberry Pi світлодіодний індикатор.
Встановлення модуля є оснащенням, оскільки воно призначене для розміщення безпосередньо над контактами GPIO на Pi. По-перше, вимкніть свій Pi і відкрийте корпус.
Найважливіша частина процесу встановлення полягає в тому, що ви орієнтуєте модуль так, щоб піктограма LedBorg була найближчою до модуля RCA на борту Raspberry Pi (і, таким чином, край LedBorg заповнений краями панелі Pi з нависанням частина LedBorg, що висить над бортом Pi, а не з краю). Див. Фотографію вище.
У той час як у вас є відкрита дошка Pi, зараз буде чудовий час, щоб покрити вбудовані світлодіодні індикатори (поруч з портами USB), особливо якщо ви використовуєте чіткий корпус. Ви не хочете, щоб це було заплутаним, щоб прочитати ваш індикатор LedBorg, тому що індикатори живлення та мережі настільки яскраві.
Ми накрили наш шар білою електричною стрічкою. Це достатньо послабило їх, щоб ми могли ще посилатися на них, але вони були набагато більш темними, ніж LedBorg..
Після встановлення LedBorg і, при необхідності, покриття світлодіодних індикаторів Pi електричною стрічкою, настав час закрити корпус назад. Завантажте ваш Pi перед тим, як перейти на наступну фазу підручника.
Встановлення програмного забезпечення LedBorg
PiBorg надає великий пакет програм для LedBorg, який включає в себе як контролер GUI, так і драйвери для доступу до LedBorg з командного рядка.
Перш ніж приступити до роботи, потрібно переконатися, що ви берете правильний пакет для вашої версії Rasbian і версії # дошки Raspberry Pi.
Якщо ваша плата Raspberry Pi не має отворів для монтажу, це перегляд 1. Якщо ваш Raspberry Pi має отвори для монтажу (розташовані за портами USB і між джерелом живлення і HDMI), то це версія 2. Вам також потрібно знати версію ядра. вашої інсталяції Rasbian. Відкрийте термінал і введіть наступну команду, щоб перевірити:
uname -r
Після того, як ви маєте номер редакції та номер ядра, ви можете відвідати розділ пакунків тут, щоб отримати посилання на ваш пакет. У нашому випадку ми використовуємо плату Revision 1 з ядром 3.6.11, щоб ми захопили файл raspbian-2013-02-09-rev1.zip.
Для того, щоб встановити всі смаколи, нам потрібно відкрити термінал на Pi. а потім введіть наступні команди для встановлення пакета LedBorg.
Примітка: Необхідно замінити URL-адресу третьої команди URL-адресою пакета для комбінації плати / ядра.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
unzip setup.zip
chmod + x install.sh
./install.sh
На даний момент ви маєте обгортку GUI для драйверів LedBorg та встановлені самі драйвери. На вашому робочому столі ви побачите іконку для обгортки графічного інтерфейсу:
Натисніть на піктограму LedBorg, щоб запустити обгортку графічного інтерфейсу. До інтерфейсу вибору кольору буде звернено так:
Зараз ідеальний час, щоб переконатися, що ваш модуль функціонує. Виберіть будь-який колір, за винятком чорного, щоб спробувати його. Ми перевіримо його, вибравши кілька кольорів:
Виглядає добре! Це яскравий, а матовий пластик корпусу, який ми замовили для проекту, пропонує помірну дифузію. Якщо ви хочете грати зі світлодіодним модулем ще до переходу, натисніть Демо-режим:
У демонстраційному режимі ви можете перемикати всі кольори з різною швидкістю, перевіряти високий / низький вихідний струм, інакше покласти світлодіодний модуль через кроки.
Тут, у розділі Демо-режим, ви також можете перетворити ваш LedBorg на перший з багатьох показників. Вибравши CPU в розділі Colors, світлодіодний індикатор почне змінюватися від зеленого до жовтого до червоного, щоб вказати навантаження на процесор ARM Raspberry Pi. Ми пропонуємо змінити швидкість уповільнення під час швидкого оновлення світлодіода занадто швидко і замінити корисний індикатор процесора замість корисного..
Окрім використання графічного інтерфейсу для вибору кольорів, можна вибрати кольори з терміналу за допомогою значень RGB. Відкрийте термінал і введіть наступну команду, щоб вимкнути світлодіод:
echo "000"> / dev / ledborg
Спосіб LedBorg обробляє значення RGB полягає в тому, що 0 означає, що канал вимкнений, 1 означає, що канал має половину потужності, а 2 означає, що канал є повною потужністю. Так, наприклад, 001 було б встановити червоний канал на 0%, зелений канал на 0% і синій канал на 50% потужності.
Змініть значення на 002 і світлодіодний висновок залишається синім, але стає яскравішим, оскільки синій канал тепер має 100% вихід. Змініть значення на 202, а червоний і синій на повну потужність об'єднаються, щоб зробити пурпуровий колір.
Тепер, коли ми знаємо, як маніпулювати світлодіодом вручну, давайте розглянемо використання сценаріїв, щоб перетворити наш світлодіод від простого світла до фактичного індикатора.
Налаштування LedBorg як індикатора дощу
Для цієї частини підручника ми будемо розчісувати кілька речей разом, щоб перетворити наш модуль LedBorg LED на індикатор дощу на основі прогнозу погоди для нашого розташування. Ми будемо використовувати скрипт Python для виклику метеорологічного API, який, у свою чергу, буде читати шанс дощу протягом дня, а потім перемикати світлодіодний індикатор зі світло-синього кольору для позначення прогнозованого дощу.
По-перше, нам потрібно отримати ключ доступу API для Weather Underground. Для особистого користування та невеликих проектів розробки API є вільним. Перейдіть на сторінку підпису API погоди тут і підпишіться на ключ API.
Після того, як ви отримали ключ API, перейдіть до метеорологічного метрополітену та знайдіть місто, яке потрібно відстежувати. У нашому випадку ми будемо стежити за Сан-Франциско, штат Каліфорнія. URL-адреса для сторінки прогнозу Сан-Франциско:
http://www.wunderground.com/US/CA/San_Francisco.html
Важливою частиною для наших цілей є остання частина URL: /CA/San_Francisco.html. Це буде використано для редагування URL-адреси прогнозу для інструмента API. Базова URL-адреса:
http://api.wunderground.com/api/YOUR KEY API / forecast / q / STATE / CITY.json
Ви можете генерувати прогноз для будь-якого міста США, ввівши ключ API, код держави з двома літерами та назву міста з URL-адреси, яку ви витягли з результатів пошуку підземного погоди.
Після того, як ви маєте URL-адресу API з вставленим ключем API та станом / містом, ви зможете відредагувати наступний скрипт Python, створивши новий текстовий документ на вашому Pi, використовуючи Leafpad і вставивши в нього наступний код:
з urllib2 імпорту urlopen
імпортувати json
req = urlopen ('http://api.wunderground.com/api/YOUR KEY API / forecast / q / STATE / CITY.json')
parsed_json = json.load (req)
pop = int (parsed_json ['forecast'] ['txt_forecast'] ['прогноз'] [0] ['pop'])# Нижче наведено значення налагодження.
# Відредагуйте хеш і зміни
# ціле до 0-100 для тестування
# світлодіодний відповідь.# pop = 0
print 'Поточний шанс опадів .'.
# За замовчуванням вмикається індикатор
# для будь-якого шансу дощу вище 20%. Можна налаштувати
# значення у "if pop> 20:" як ви бажаєте.
якщо поп> 20:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
print ("Дощ!")
інше:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Немає дощу!")
Збережіть файл як wunderground.py у каталозі / home / pi /. Відкрийте термінал і введіть наступну команду:
python wunderground.py
Якщо ви правильно ввели ключ API та код міста / штату, він має відхилити відповідь:
Якщо прогнозується кількість опадів у вашому регіоні, вивід LedBorg має виглядати так:
Тепер чекає дощового дня, щоб належним чином перевірити сценарій, буде нудно. Якщо у вашому районі немає шансів на дощ, і ви хочете, щоб світлодіод загорився, відредагуйте сценарій wunderground.py і заміните значення "pop = pop" на рядок 13 зі значенням більше 20, таким як 60 що наш прогноз повернувся. Просто не забудьте змінити рядок назад на "pop = pop", коли ви закінчите.
Останнім кроком є налаштування завдання cron для автоматичного запуску скрипту, який ми тільки що зберегли на регулярному інтервалі, щоб зберегти світлодіодний індикатор струмом. Оскільки це завдання потрібне як для цього сценарію, так і для наступного індикатора електронної пошти, ми розглянемо налаштування завдання cron після того, як ми покажемо вам, як налаштувати інший сценарій.
Налаштування LedBorg як індикатора Gmail
Кому не подобається виправлення допаміну, яке відбувається при перегляді нової електронної пошти в папці "Вхідні"? У цій частині підручника ми покажемо вам, як використовувати LedBorg як новий індикатор Gmail. Як і минулого разу, ми збираємося поєднувати зовнішній вхід (у даному випадку Atom-канал замість API) і простий скрипт для керування нашим світлодіодом.
Нам потрібно трохи розширити функціональність нашої установки Python, встановивши інструмент FeedParser, інструмент для читання каналів RSS / Atom з Python. Відкрийте термінал і введіть наступну команду:
sudo easy_install feedparser
Після завершення інсталяції можна налаштувати роботу з створення нашого скрипта перевірки Gmail. Знову ж таки, використовуючи Leafpad, вставте наступний текст у редактор. Змініть ім’я користувача та пароль, щоб вони збігалися з іменем користувача та паролем облікового запису Gmail, який потрібно перевірити.
імпортування
# Введіть своє ім'я користувача Gmail
# і пароль. Не включайте
# частина @ gmail.com з
# Ваше ім'я користувача.
username = "ім'я користувача"
password = "password"
mail = int (feedparser.parse ("https: //" + ім'я користувача + ":" + пароль + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])
# Нижче наведено значення налагодження.
# Відредагуйте хеш і зміни
# ціле число до 0 або 1 для тестування
# світлодіодний відповідь.# mail = 0
якщо пошта> 0:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
print ("Пошта!")
інше:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Немає пошти!")
Збережіть скрипт як gmailcheck.py. Відкрийте термінал і введіть таку команду:
python gmailcheck.py
Якщо у вашій скриньці Gmail є електронна пошта, світлодіод стане зеленим, і ви отримаєте відповідь на такий вигляд:
Якщо у вашій скриньці вхідних повідомлень Gmail є пошта, LedBorg виглядатиме так:
Так само, як і скрипт перевірки дощу, ми включили значення налагодження. Якщо у вас немає жодного нового електронного листа, ви могли б або відправити собі повідомлення електронної пошти, щоб підняти кількість вхідних повідомлень до 1, або ви могли б відредагувати хеш коментарів і змінити лінію налагодження на "mail = 1", щоб протестувати сценарій. Не забудьте повернути рядок після завершення тестування.
Перейдіть до наступного розділу підручника, щоб встановити сценарій Gmail для виконання за розкладом.
Налаштування завдання Cron для запуску сценарію
Тепер, коли у нас є два сценарії, з якими можна грати, нам потрібно налаштувати роботу cron для того, щоб запустити їх протягом дня, щоб зберегти світлодіодний індикатор.
Перше, що ми хочемо зробити, це вимкнути світлодіод, якщо він в даний час від наших попередніх експериментів. На тип терміналу:
echo "000"> / dev / ledborg
Поки ви все ще перебуваєте в командному рядку, ви можете відкрити редактор cron. Якщо ви ніколи раніше не створювали роботу cron, ми настійно рекомендуємо ознайомитися з нашим керівництвом для його використання тут. Тим не менш, ми проведемо вас через створення базового розкладу саме тут.
На тип терміналу:
sudo crontab -e
Це відкриє таблицю Raspbian cron у текстовому редакторі Nano. Використовуйте клавіші зі стрілками для прокручування вниз до самого нижнього. Тут ми збираємося налаштувати повторювану роботу cron для наших скриптів Python.
Якщо ви хочете налаштувати сценарій дощу, введіть наступний рядок у таблицю cron:
* / 5 * * * * python /home/pi/wunderground.py
Натисніть CTRL + X, щоб вийти; оберіть так, щоб зберегти та перезаписати існуючу таблицю cron. Значення, яке ми ввели в таблицю cron "* / 5 * * * *", задає сценарій для запуску кожні 5 хвилин, назавжди.
Кожні 5 хвилин - це прекрасний проміжок часу для сценарію, який перевіряє прогнозований дощ - ви навіть можете стверджувати, що це занадто агресивно - але якщо ви намагаєтеся тримати поверх своєї електронної пошти, це занадто довгий період для повідомлення . Якщо ви встановлюєте розклад сценарію сповіщень Gmail, у таблицю cron введіть наступний рядок:
* / 1 * * * * python /home/pi/wunderground.py
Ця запис запускає скрипт gmailcheck.py кожну хвилину для набагато швидшого повідомлення про оновлення.
Ось і все! Ви можете експериментувати зі своїми власними скриптами Python, піднявши виписки if / else з наших і спробувавши їх з новими змінними. Якщо ви можете знайти джерело вхідних даних для даних, ви можете перетворити його на змінну у ваших скриптах Python, фондовий ринок, кількість пилку, згадує Twitter, якщо є API, ви можете перетворити його на зовнішній світлодіодний індикатор.
Нарешті, я хочу подякувати всім великим ресурсам, які я використав для роботи над цим проектом. Це було трохи більше десяти років, оскільки я активно писав програми, і потрібно було кілька ударів, щоб отримати пил і іржа. Співробітники в / r / LearnPython допомагали мені розібратися у виході API для Weather Underground, вивчаючи, як Майкл у Mitch Tech займався каналом Gmail Atom, розбираючи його для LedBorg легко, а вивчення модулів Python в Code Academy було чудовий спосіб підібрати основний синтаксис і структуру мови, яку я раніше не використовував.