Почему я хочу это делать?
Потому что это весело. В отличие от многих наших обучающих программ, в которых мы включаем небольшую рекламу, в которой мы четко указываем, какую выгоду вы получите от проекта, в этом случае рекламный ролик довольно короткий, потому что это просто весело.
Малина Pi - идеальное устройство для игры, экспериментирования с электроникой и изучения некоторых программ. Никто потребности например, индикатор окружающего дождя на их кухне, но построение одного - это забавное упражнение и отличное напоминание о том, чтобы принести с собой зонтик в потенциально штормовые дни.
Что мне нужно?
Чтобы следовать вместе с учебником, вам понадобятся несколько вещей. Во-первых, мы предполагаем, что вы уже следовали нашему предыдущему руководству: Руководство по HTG для начала работы с малиной Pi (и, таким образом, основывались на установке Rasbian на нашей малине Pi).
Если вы хотите сделать этот проект по бюджету, мы можем с уверенностью сказать вам, что новейшая модель Raspberry Pi является значительным излишеством для работы, и мы будем поощрять вас взорвать пыль от старой малины Pi, которую вы толкнули в шкафу или забрать дешевый подержанный eBay или тому подобное. Бюджет мудрый длинный зубец малина Pi 1 модель A или модель B, зацепившая eBay за 10-15 долларов США, идеально подходит для этого проекта над приобретением нового Pi текущего поколения стоимостью 35 долларов.
В дополнение к наличию на нем функционального блока Pi с установленным на нем Raspbian вам понадобятся следующие вещи:
- 1 модуль LedBorg (~ $ 5,00 с доставкой 4 доллара США из Великобритании в США, работает со всеми моделями малины Pi).
- 1 Clear Raspberry Pi Case, совместимый с вашей конкретной моделью Pi, как этот случай с малиной Pi 1 Model B.
Замечания: Ясный / замороженный случай Pi полностью необязателен, но если вы в настоящее время используете непрозрачный корпус, ваш светодиодный индикатор будет скрыт внутри. Вам нужно либо вырезать отверстие в вашем корпусе, чтобы выпустить свет, либо использовать удлинительный кабель GPIO с комплектом прорыва, как этот, от Adafruit Industries, чтобы привязать LedBorg к вашей малиновой пи. В то время как использование прорывного кабеля добавляет около 8 долларов США за счет проекта, он предлагает больше возможностей для настройки конечного продукта, поскольку вы можете легче разместить светодиод внутри вещей или под то, что вы хотите осветить.
Установка LedBorg
Несмотря на то, что вы, несомненно, могли бы создать себе светодиодный индикатор полностью с нуля (и запрос на поисковую систему увеличит количество людей, которые это сделали), организация Piborg выпускает такой компактный и недорогой светодиодный модуль LedBorg, т сопротивляться использованию его в качестве основы для нашего проекта индикатора Raspberry Pi LED.
Установка модуля является быстрой, поскольку она предназначена для установки непосредственно на контакты GPIO на Pi. Сначала выключите свой Pi и откройте корпус.
Самая важная часть процесса установки заключается в том, что вы ориентируете модуль так, чтобы значок LedBorg был ближе всего к модулю RCA на плате Raspberry Pi (и, таким образом, край LedBorg заподлицо с краями платы Pi с нависающим часть LedBorg, висящая над доской Pi, а не с края). См. Фотографию выше.
Пока вы открываете плату Pi, теперь было бы прекрасным временем для покрытия встроенных светодиодных индикаторов (рядом с портами USB), особенно если вы используете ясный футляр. Вы не хотите, чтобы это путано читать ваш индикатор LedBorg, потому что индикатор питания и сети настолько яркий.
Мы накрыли наш слой белой электрической лентой. Это затуманило их настолько, что мы все еще могли ссылаться на них, но они были намного тусклее, чем LedBorg, это уже не отвлекало.
Как только у вас установлен LedBorg и у вас есть опционально покрытые светодиодные индикаторы Pi электрической ленточкой, пришло время закрыть корпус. Загрузите свой Pi, прежде чем перейти к следующему этапу учебника.
Установка программного обеспечения LedBorg
Прежде чем мы начнем, вам нужно убедиться, что вы захватываете правильный пакет для своей версии Rasbian и ревизии # вашей доски Raspberry Pi.
Если на вашей доске Raspberry Pi нет монтажных отверстий, то это вариант 1. Если у вашей малины 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 https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip setup.zip chmod +x install.sh./install.sh
На данный момент у вас теперь есть GUI-обертка для драйверов LedBorg и самих драйверов. На рабочем столе Raspbian вы увидите значок для оболочки GUI:
Здесь, в разделе «Демо-режим», вы также можете превратить ваш LedBorg в первый из многих индикаторов. Выбрав CPU в разделе «Цвета», светодиод начнет меняться с зеленого на желтый на красный, чтобы указать нагрузку на ARM-процессор Raspberry Pi. Мы предлагаем изменить скорость на медленную, пока вы на ней - быстро обновляет светодиод слишком быстро и делает индикатор процессора отвлекающим, а не полезным.
В дополнение к использованию интерфейса GUI для выбора цветов вы можете выбирать цвета с терминала с использованием значений RGB. Откройте терминал и введите следующую команду, чтобы выключить светодиод:
echo '000' > /dev/ledborg
Способ, которым LedBorg обрабатывает значения RGB, состоит в том, что 0 означает, что канал выключен, 1 означает, что канал имеет половинную мощность, а 2 означает, что канал имеет полную мощность. Так, например, 001 установит красный канал на 0%, зеленый - на 0%, а синий - на 50%.
Измените значение на 002, и светодиодный выход остается синим, но становится ярче, потому что синий канал теперь имеет выход 100%. Измените значение на 202, а красный и синий на полной мощности объединены, чтобы сделать пурпурный цвет.
Теперь, когда мы знаем, как управлять светодиодом вручную, давайте посмотрим на использование скриптов, чтобы превратить наш светодиод из простого света в фактический индикатор.
Настройка LedBorg как индикатора дождя
Во-первых, нам нужно получить ключ доступа к API для Weather Underground. Для личного использования и небольших проектов разработки API бесплатный. Посетите страницу API Weather API и зарегистрируйтесь для ключа API.
После того, как у вас есть ключ API, посетите Weather Underground и найдите город, который вы хотите контролировать. В нашем случае мы будем следить за Сан-Франциско, Калифорния. URL-адрес страницы прогноза Сан-Франциско:
https://www.wunderground.com/US/CA/San_Francisco.html
Важной частью наших целей является последняя часть URL-адреса: /CA/San_Francisco.html. Мы будем использовать это для редактирования URL прогноза для инструмента API. Основной URL:
https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json
Вы можете генерировать прогноз для любого города США, введя свой ключ API, код состояния двух букв и название города из URL-адреса, который вы вытащили из результатов поиска под землей.
После того, как у вас есть URL-адрес API с вашим ключом API и добавленным государством / городом, вы можете отредактировать следующий скрипт Python, создав новый текстовый документ на вашем Pi с помощью Leafpad и вставив в него следующий код:
from urllib2 import urlopen import json
req = urlopen('https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json') parsed_json = json.load(req) pop = int(parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])
# Ниже приведено значение отладки. # Измените хэш и измените # целое число до 0-100 для тестирования # светодиодный ответ.
# pop = 0
print 'Current chance of precipitation is {}.'.format(pop)
# The default setting is to turn on the LED # for any chance of rain above 20%. You can adjust # the value in 'if pop > 20:' as you wish.
if pop > 20: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('002') del LedBorg print ('Rain!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No rain!')
Сохраните файл как wunderground.py в каталоге / home / pi /. Откройте терминал и введите следующую команду:
python wunderground.py
Если вы правильно ввели свой ключ API и коды штата / города, он должен отбросить ответ, который выглядит так:
Заключительный шаг - настроить задание cron для автоматического запуска скрипта, который мы только что сохранили, на регулярном интервале, чтобы сохранить индикатор LED. Поскольку эта задача необходима как для этого сценария, так и для указателя электронной почты, который мы рассмотрим, мы рассмотрим настройку задания cron после того, как мы покажем вам, как настроить другой скрипт.
Настройка LedBorg в качестве индикатора Gmail
Нам нужно немного расширить функциональность нашей установки Python, установив FeedParser, инструмент чтения фидов Python RSS / Atom. Откройте терминал и введите следующую команду:
sudo easy_install feedparser
По завершении установки мы можем работать над созданием нашего скрипта проверки Gmail. Опять же, используя Leafpad, вставьте следующий текст в редактор. Измените имя пользователя и пароль для соответствия имени пользователя и паролю учетной записи Gmail, которую вы хотите проверить.
import feedparser
# Enter your Gmail username # and password. Don't include # the @gmail.com portion of # your username.
username = 'username' password = 'password'
mail = int(feedparser.parse('https://' + username + ':' + password +'@mail.google.com/gmail/feed/atom')['feed']['fullcount'])
# Ниже приведено значение отладки. # Измените хэш и измените # целое число в 0 или 1 для тестирования # светодиодный ответ.
# mail = 0
if mail > 0: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('020') del LedBorg print ('Mail!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No mail!')
Сохраните скрипт как gmailcheck.py. Откройте терминал и введите следующую команду:
python gmailcheck.py
Если у вас есть электронная почта, сидящая в папке входящих сообщений Gmail, светодиод загорится зеленым цветом, и вы получите ответ вроде такого:
Перейдите в следующий раздел учебника, чтобы настроить сценарий Gmail на выполнение по расписанию.
Настройка задания 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 было отличный способ подобрать базовый синтаксис и структуру языка, который я никогда раньше не использовал.