Raspberry Pi представляет собой прекрасную компактную платформу для подключения светового индикатора для всех видов проектов - уведомление о погоде, новые электронные письма и т. Д. Читайте дальше, когда мы покажем вам, как подключить светодиодный модуль к вашему Pi и настроить некоторые базовые уведомления. .
Почему я хочу это сделать?
Потому что это весело. В отличие от многих наших руководств, где мы включаем небольшую аннотацию вверху, в которой четко указывается, какую выгоду вы получите от проекта, реклама в данном случае довольно короткая, потому что вы просто развлекаетесь.
Raspberry Pi - идеальное устройство, с которым можно поиграть, поэкспериментировать с электроникой и научиться программировать. Никто потребности например, индикатор дождя на их кухне, но его создание - забавное упражнение и отличное напоминание, чтобы взять с собой зонтик в потенциально грозовые дни.
Что мне нужно?
Чтобы следовать нашему руководству, вам понадобится несколько вещей. Во-первых, мы предполагаем, что вы уже следовали нашему предыдущему руководству: Руководство HTG по началу работы с Raspberry Pi (и, таким образом, у вас есть основы для установки Raspbian на Raspberry Pi).
Если вы хотите выполнить этот проект с ограниченным бюджетом, мы можем с уверенностью сказать вам, что новейшая модель Raspberry Pi является значительным излишеством для работы, и мы рекомендуем вам сдувать пыль со старого Raspberry Pi, который вы засунули. в шкафу или купите дешевую бывшую в употреблении вещь на eBay и т.п. С точки зрения бюджета, длинная Raspberry Pi 1 Model A или Model B, купленная на eBay за 10-15 долларов, идеально подходит для этого проекта по сравнению с покупкой нового Pi текущего поколения за 35 долларов.
Помимо функционального блока Pi с установленным на нем Raspbian, вам понадобятся следующие вещи:
- 1 Модуль LedBorg (~ 5 долларов США с доставкой 4 доллара США из Великобритании в США, работает со всеми моделями Raspberry Pi).
- 1 прозрачный чехол для Raspberry Pi, совместимый с вашей конкретной моделью Pi как этот чехол Raspberry Pi 1 Model B .
Примечание: Прозрачный / матовый корпус Pi не является обязательным, но если вы в настоящее время используете непрозрачный корпус, ваш светодиодный индикатор будет скрыт внутри. Вам нужно будет либо вырезать отверстие в корпусе, чтобы пропустить свет, либо использовать удлинительный кабель GPIO с комплектом для коммутации, например это от Adafruit Industries - привязать LedBorg к Raspberry Pi. Хотя использование соединительного кабеля добавляет около 8 долларов к затратам на проект, он предлагает больше возможностей для настройки конечного продукта, поскольку вы можете легко разместить светодиод внутри предметов или под тем, что вы хотите осветить.
Установка LedBorg
В то время как вы, безусловно, можете создать себе полностью с нуля светодиодный индикатор (и поисковая система найдет много людей, которые это сделали), организация Piborg производит такой компактный и недорогой светодиодный модуль, LedBorg, что мы не смогли ' Я воздерживаюсь от использования его в качестве основы для нашего проекта светодиодных индикаторов Raspberry Pi.
Установить модуль совсем несложно, так как он предназначен для установки непосредственно на контакты GPIO на Pi. Сначала выключите Pi и откройте корпус.
Наиболее важной частью процесса установки является ориентация модуля так, чтобы значок LedBorg был ближе всего к модулю RCA на плате Raspberry Pi (и, таким образом, край LedBorg был на одном уровне с краями платы Pi с выступом часть LedBorg, свисающая над платой Pi, а не за край). Смотрите фотографию выше.
Пока у вас открыта плата Pi, сейчас самое время прикрыть встроенные светодиодные индикаторы (рядом с портами USB), особенно если вы используете прозрачный футляр. Вы не хотите, чтобы показание индикатора LedBorg сбивало с толку, потому что индикаторы питания и сети такие яркие.
Мы покрыли наш слой белой изоленты. Это затемняло их достаточно, чтобы мы могли по-прежнему ссылаться на них, но они были настолько тусклее, чем LedBorg, что больше не отвлекали.
После того, как вы установили LedBorg и при желании заклеили светодиодные индикаторы Pi изолентой, пора снова закрыть корпус. Загрузите свой Pi, прежде чем переходить к следующему этапу обучения.
Установка программного обеспечения LedBorg
PiBorg предоставляет отличный программный пакет для LedBorg, который включает в себя как контроллер графического интерфейса, так и драйверы для доступа к LedBorg из командной строки.
Прежде чем мы начнем, вам необходимо убедиться, что вы выбираете правильный пакет для вашей версии Rasbian и номер версии вашей платы Raspberry Pi.
Если на вашей плате Raspberry Pi нет монтажных отверстий, это Revision 1. Если у вашего Raspberry Pi есть монтажные отверстия (расположенные рядом с портами USB и между портом питания и HDMI), то это Revision 2. Вам также необходимо знать версию ядра. вашей установки Rasbian. Откройте терминал и введите следующую команду, чтобы проверить:
uname -r
Когда у вас есть номер версии и номер ядра, вы можете посетите раздел Пакеты здесь чтобы получить ссылку на ваш пакет. В нашем случае мы используем плату Revision 1 с ядром 3.6.11, поэтому мы должны взять файл raspbian-2013-02-09-rev1.zip.
Чтобы установить все полезности, нам нужно открыть терминал на Pi. а затем введите следующие команды, чтобы установить пакет LedBorg.
Примечание: Вы должны заменить URL-адрес в третьей команде на URL-адрес пакета для вашей комбинации платы / ядра.
mkdir ~ / ledborg-настройка
cd ~ / ledborg-настройка
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
разархивировать setup.zip
chmod + x install.sh
./инсталл.ш
На этом этапе у вас есть оболочка графического интерфейса для драйверов LedBorg и самих драйверов. На рабочем столе Raspbian вы увидите значок оболочки графического интерфейса:
Идите вперед и щелкните значок LedBorg, чтобы запустить оболочку графического интерфейса. Интерфейс выбора цвета будет выглядеть так:
Сейчас самое время убедиться, что ваш модуль работает. Выберите любой цвет, кроме черного, чтобы попробовать. Мы собираемся протестировать это, выбрав несколько цветов:
Выглядит неплохо! Он яркий и матовый пластик корпуса, который мы заказали для этого проекта, обеспечивает умеренную диффузию. Если вы хотите еще поиграть со светодиодным модулем, прежде чем двигаться дальше, нажмите Demo Mode:
В демонстрационном режиме вы можете циклически перебирать все цвета с разной скоростью, проверять высокий / низкий выходной сигнал и, в противном случае, проверять светодиодный модуль.
Именно здесь, в разделе демонстрационного режима, вы также можете превратить свой LedBorg в первый из многих индикаторов. При выборе ЦП в разделе «Цвета» цвет светодиода начинает меняться с зеленого на желтый и на красный, указывая на нагрузку на процессор ARM Raspberry Pi. Мы предлагаем изменить скорость на медленную, пока вы работаете: «Быстрая» слишком быстро обновляет индикатор и делает индикатор ЦП отвлекающим, а не полезным.
Помимо использования графического интерфейса пользователя для выбора цветов, вы можете выбирать цвета с терминала, используя значения RGB. Откройте терминал и введите следующую команду, чтобы выключить светодиод:
echo "000"> / dev / ledborg
LedBorg обрабатывает значения RGB: 0 означает, что канал выключен, 1 означает, что канал имеет половинную мощность, а 2 означает, что канал имеет полную мощность. Так, например, 001 установит красный канал на 0%, зеленый канал на 0% и синий канал на 50% мощности.
Измените значение на 002, и светодиодный индикатор останется синим, но станет ярче, потому что синий канал теперь имеет 100% выход. Измените значение на 202, и красный и синий на полной мощности объединятся, чтобы получить пурпурный цвет.
Теперь, когда мы знаем, как управлять светодиодом вручную, давайте посмотрим на использование скриптов для превращения нашего светодиода из простого источника света в настоящий индикатор.
Настройка вашего LedBorg в качестве индикатора дождя
В этой части урока мы объединим несколько вещей, чтобы превратить наш светодиодный модуль LedBorg в индикатор дождя на основе прогноза погоды для нашего местоположения. Мы будем использовать скрипт Python для вызова API погоды, который, в свою очередь, считывает вероятность дождя в течение дня, а затем переключает светодиодный индикатор на ярко-синий, чтобы указать прогнозируемый дождь.
Во-первых, нам нужно получить ключ доступа к API для Weather Underground. Для личного использования и небольших проектов разработки API предоставляется бесплатно. Посетите страницу регистрации Weather API здесь и зарегистрируйтесь для получения ключа API.
Получив ключ API, посетите Weather Underground и найдите город, за которым хотите следить. В нашем случае мы собираемся отслеживать Сан-Франциско, Калифорния. URL-адрес страницы прогнозов в Сан-Франциско:
хттп://ввв.вундергроунд.ком/УС/КА/Сан_Франциско.хтмл
Важной частью для наших целей является последняя часть URL-адреса: /CA/San_Francisco.html. Мы собираемся использовать это, чтобы изменить URL прогноза для инструмента API. Базовый URL-адрес:
http://api.wunderground.com/api/ ВАШ КЛЮЧ API / прогноз / q / STATE / CITY.json
Вы можете сгенерировать прогноз для любого города США, введя свой ключ API, двухбуквенный код штата и название города из URL-адреса, полученного из результатов поиска Weather Underground.
После того, как у вас есть URL-адрес API с вашим ключом API и вставленным государством / городом, вы можете отредактировать следующий скрипт Python, создав новый текстовый документ на своем Pi с помощью Leafpad и вставив в него следующий код:
из urllib2 импортировать urlopen
импортировать json
req = urlopen ('http://api.wunderground.com/api/ ВАШ КЛЮЧ API / прогноз / q / ГОСУДАРСТВО / CITY.json ь)
parsed_json = json.load (требуется)
pop = int (parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])# Следующее - значение отладки.
# Отредактируйте хеш и измените
# целое число от 0 до 100 для проверки
# ответ светодиода.# pop = 0
print 'Текущая вероятность осадков: {}.'. format (pop)
# По умолчанию светодиодный индикатор включен.
# при любой вероятности дождя выше 20%. Вы можете настроить
# значение в "if pop> 20:" по желанию.
если pop> 20:
LedBorg = открытый ('/ dev / ledborg', 'w')
LedBorg.write ('002')
автор: LedBorg
print ('Дождь!')
еще:
LedBorg = открытый ('/ dev / ledborg', 'w')
LedBorg.write ('000')
автор: 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, которую вы хотите проверить.
import feedparser
# Введите свое имя пользователя Gmail
# и пароль. Не включать
# @ gmail.com часть
# ваш логин.
username = "имя пользователя"
пароль = "пароль"
mail = int (feedparser.parse ("https: //" + имя пользователя + ":" + пароль + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])# Следующее - значение отладки.
# Отредактируйте хеш и измените
# целое число от 0 до 1 для проверки
# ответ светодиода.# mail = 0
если почта> 0:
LedBorg = открытый ('/ dev / ledborg', 'w')
LedBorg.write ('020')
автор: LedBorg
print ('Почта!')
еще:
LedBorg = открытый ('/ dev / ledborg', 'w')
LedBorg.write ('000')
автор: LedBorg
print ('Нет почты!')
Сохраните скрипт как gmailcheck.py. Откройте терминал и введите следующую команду:
python gmailcheck.py
Если в вашем почтовом ящике Gmail есть электронное письмо, индикатор загорится зеленым, и вы получите такой ответ:
Если в вашем почтовом ящике Gmail есть почта, ваш LedBorg будет выглядеть так:
Как и в сценарии проверки дождя, мы включили значение отладки. Если у вас нет нового электронного письма, вы можете либо отправить себе электронное письмо, чтобы увеличить количество входящих до 1, либо отредактировать хэш комментария и изменить строку отладки на «mail = 1», чтобы протестировать скрипт. Не забудьте перевернуть линию, когда закончите тестирование.
Перейдите к следующему разделу руководства, чтобы настроить сценарий Gmail для работы по расписанию.
Настройка задания Cron для запуска вашего скрипта
Теперь, когда у нас есть два сценария, с которыми можно поиграть, нам нужно настроить задание cron, чтобы запускать их в течение дня, чтобы светодиодный индикатор оставался актуальным.
Первое, что мы хотим сделать, это выключить светодиод, если он в настоящее время горит из наших предыдущих экспериментов. На терминале типа:
эхо «000»> / dev / ledborg
Пока вы все еще находитесь в командной строке, вы можете открыть редактор cron. Если вы никогда раньше не настраивали cron, мы настоятельно рекомендуем ознакомьтесь с нашим руководством по его использованию здесь . Тем не менее, мы поможем вам настроить базовое расписание прямо здесь.
На терминале типа:
sudo crontab –e
Это откроет таблицу cron Raspbian в текстовом редакторе Nano. Используйте клавиши со стрелками для прокрутки вниз до самого низа. Здесь мы собираемся настроить повторяющееся задание cron для наших скриптов Python.
Если вы хотите настроить сценарий дождя, введите следующую строку в таблицу cron:
* / 5 * * * * питон /home/pi/wunderground.py
Нажмите CTRL + X для выхода; выберите «Да», чтобы сохранить и перезаписать существующую таблицу cron. Значение, которое мы ввели в таблицу cron «* / 5 * * * *», заставляет скрипт запускаться каждые 5 минут без ограничений.
Каждые 5 минут - прекрасный промежуток времени для сценария, который проверяет прогнозируемый дождь - можно даже возразить, что это слишком агрессивно, - но если вы пытаетесь следить за своей электронной почтой, это слишком большой промежуток для уведомления . Если вы настраиваете расписание для сценария уведомлений Gmail, введите следующую строку в таблице cron:
* / 1 * * * * питон /home/pi/wunderground.py
Эта запись запускает скрипт gmailcheck.py каждую минуту для более быстрого уведомления об обновлении.
Вот и все! Вы можете поэкспериментировать со своими собственными скриптами Python, взяв операторы if / else из наших и опробовав их с новыми переменными. Если вы можете найти входной источник данных, вы можете превратить его в переменную в своем скрипте Python - средние показатели фондового рынка, количество пыльцы, упоминается в Твиттере, если для этого есть API, вы можете превратить его в световой индикатор.
Наконец, я хочу поблагодарить все замечательные ресурсы, которые я использовал для работы над этим проектом. Прошло чуть больше десяти лет с тех пор, как я активно писал программы, и потребовалось несколько ударов, чтобы удалить пыль и ржавчину. Авторы на / r / LearnPython помог мне разобраться с выводом API для Weather Underground, изучая, как Майкл из Mitch Tech разобрался с фидом Gmail Atom упростил его синтаксический анализ для LedBorg и изучение модулей обучения Python в Code Academy был отличным способом понять базовый синтаксис и структуру языка, которым я никогда раньше не пользовался.