Домашняя » как » Создайте светодиодный индикатор с Raspberry Pi (для электронной почты, погоды или чего угодно)

    Создайте светодиодный индикатор с Raspberry Pi (для электронной почты, погоды или чего угодно)

    Raspberry Pi представляет собой прекрасную компактную платформу для прикрепления светового индикатора для всех видов проектов - уведомления о погоде, новые электронные письма и т. Д. Читайте далее, покажем, как подключить светодиодный модуль к вашему Pi и настроить некоторые базовые уведомления..

    Почему я хочу это сделать?

    Потому что это весело. В отличие от многих наших учебных пособий, в которых мы включаем небольшую рекламу в верхней части, в которой точно указывается, какую пользу вы получите от проекта, реклама в данном случае довольно короткая, потому что выгода - это просто удовольствие.

    Raspberry Pi - идеальное устройство для игр, экспериментов с электроникой и изучения программирования. Никто потребности например, индикатор дождя на их кухне, но его строительство - забавное упражнение и отличное напоминание, чтобы взять с собой зонтик в потенциально грозные дни.

    Что мне нужно?

    Чтобы следовать учебнику, вам понадобятся несколько вещей. Во-первых, мы предполагаем, что вы уже следовали нашему предыдущему руководству: HTG Guide по началу работы с Raspberry Pi (и, таким образом, ознакомились с основами установки Rasbian на нашем Raspberry Pi).

    Если вы хотите сделать этот проект с ограниченным бюджетом, мы можем с уверенностью сказать вам, что новейшая модель Raspberry Pi является значительным излишним для этой работы, и мы рекомендуем вам смахнуть пыль со старой Raspberry Pi, которую вы затолкали в шкафу или подобрать дешевый подержанный от eBay или тому подобное. Бюджетная модель Raspberry Pi 1 Model A или Model B с длинным зубом, выкупленная на eBay за 10–15 долларов, идеально подходит для этого проекта, поскольку она приобретает совершенно новую модель Pi нынешнего поколения за 35 долларов..

    Помимо наличия функционального блока Pi с установленным на нем Raspbian вам понадобятся следующие вещи:

    • 1 модуль LedBorg (~ $ 5,00 с доставкой $ 4 из Великобритании в США, работает со всеми моделями Raspberry Pi).
    • 1 прозрачный чехол Raspberry Pi совместим с вашей конкретной моделью Pi, такой как этот чехол Raspberry Pi 1 Model B.

    Замечания: Прозрачный / матовый корпус Pi не является обязательным, но если вы в настоящее время используете непрозрачный корпус, тогда ваш светодиодный индикатор будет скрыт внутри. Вам нужно будет либо проделать дыру в вашем чехле, чтобы пропустить свет, либо использовать удлинительный кабель GPIO с отводным комплектом, например, от Adafruit Industries, чтобы привязать LedBorg к вашему Raspberry Pi. Хотя использование соединительного кабеля добавляет около 8 долларов к стоимости проекта, он дает больше возможностей для настройки конечного продукта, так как вы можете легче разместить светодиод внутри или под тем, что вы хотите осветить..

    Установка ЛедБорг

    В то время как вы, конечно, могли бы создать собственный светодиодный индикатор с нуля (а запрос поисковой системы найдет множество людей, которые сделали это), организация Piborg производит такой компактный и недорогой светодиодный модуль, LedBorg, что мы не смогли бы не стоит использовать его в качестве основы для нашего проекта светодиодного индикатора Raspberry Pi.

    Установка модуля очень проста, так как он предназначен для установки непосредственно на контакты GPIO на Pi. Во-первых, выключите пи и откройте корпус.

    Самая важная часть процесса установки заключается в том, что вы ориентируете модуль так, чтобы значок LedBorg был ближе всего к модулю RCA на плате Raspberry Pi (и, таким образом, край LedBorg совпадает с краями платы Pi с нависающей надстройкой). часть LedBorg висит над доской Пи, а не с края). Смотрите фотографию выше.

    Пока у вас открыта плата Pi, сейчас самое время закрыть встроенные светодиодные индикаторы (рядом с портами USB), особенно если вы используете прозрачный корпус. Вы не хотите, чтобы это сбивало с толку чтение вашего индикатора LedBorg, потому что индикаторы питания и сети очень яркие.

    Мы покрыли наш слой белой изолентой. Это приглушило их настолько, что мы могли ссылаться на них, но они были настолько тусклее, чем LedBorg, и это больше не отвлекало.

    После того, как вы установили LedBorg и, при необходимости, покрыли светодиодные индикаторы Pi изолентой, пришло время закрыть корпус обратно. Загрузите свой Pi, прежде чем переходить к следующему этапу урока.

    Установка программного обеспечения LedBorg

    PiBorg предоставляет отличный программный пакет для LedBorg, который включает в себя как графический контроллер, так и драйверы для доступа к LedBorg из командной строки.

    Прежде чем мы начнем, вы должны убедиться, что вы выбираете правильный пакет для вашей версии Rasbian и номер редакции вашей платы Raspberry Pi.

    Если ваша плата Raspberry Pi не имеет монтажных отверстий, это Версия 1. Если ваша Raspberry Pi имеет монтажные отверстия (расположенные через порты USB и между питанием и портом HDMI), то это Версия 2. Вам также необходимо знать версию ядра вашей расбианской установки. Откройте терминал и введите следующую команду для проверки:

    uname -r

    Когда у вас есть номер ревизии и номер ядра, вы можете посетить раздел «Пакеты», чтобы получить ссылку на ваш пакет. В нашем случае мы используем плату Revision 1 с ядром 3.6.11, поэтому мы бы взяли файл raspbian-2013-02-09-rev1.zip.

    Чтобы установить все вкусности, нам нужно открыть терминал на Пи. и затем введите следующие команды для установки пакета 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
    распаковать setup.zip
    chmod + x install.sh
    ./install.sh

    Теперь у вас есть оболочка с графическим интерфейсом для драйверов LedBorg и сами драйверы. На рабочем столе Raspbian вы увидите значок для оболочки GUI:

    Идите дальше и нажмите на значок LedBorg, чтобы запустить оболочку GUI. Вы будете обращаться к интерфейсу выбора цвета следующим образом:

    Сейчас самое время убедиться, что ваш модуль работает. Выберите любой цвет, кроме черного, чтобы попробовать. Мы собираемся проверить это, выбрав несколько цветов:

    Выглядит хорошо! Он яркий, а матовый пластик корпуса, который мы заказали для проекта, обеспечивает умеренную диффузию. Если вы хотите поиграть со светодиодным модулем, прежде чем двигаться дальше, нажмите Демо-режим:

    В демонстрационном режиме вы можете переключаться между всеми цветами на разных скоростях, проверять высокий / низкий выход и, в противном случае, проходить через светодиодный модуль.

    Здесь, в разделе «Демо-режим», вы также можете превратить свой LedBorg в первый из многих индикаторов. При выборе ЦП в разделе «Цвета» светодиод начнет меняться с зеленого на желтый и красный, что указывает на загрузку процессора ARM Raspberry Pi. Мы предлагаем изменить скорость на медленную, пока вы в ней - быстрое обновление светодиода слишком быстро и делает индикатор ЦП отвлекающим вместо полезного.

    В дополнение к использованию интерфейса GUI для выбора цветов вы можете выбирать цвета из терминала, используя значения 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-адрес страницы прогноза Сан-Франциско:

    http://www.wunderground.com/US/CA/San_Francisco.html

    Важной частью для наших целей является последняя часть URL: /CA/San_Francisco.html. Мы собираемся использовать это, чтобы редактировать URL прогноза для инструмента API. Базовый URL:

    http://api.wunderground.com/api/YOUR 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/YOUR API-ключ / прогноз / q / STATE / CITY.json')
    parsed_json = json.load (req)
    pop = int (parsed_json ['прогноз'] ['txt_forecast'] ['прогноз дня'] [0] ['поп'])

    # Ниже приведено значение отладки.
    # Измените хеш и измените
    # целое число в 0-100 для проверки
    # светодиодный ответ.

    # pop = 0

    выведите 'Текущая вероятность осадков: .'. format (pop)

    # Настройка по умолчанию - включить светодиод
    # для любой вероятности дождя выше 20%. Вы можете настроить
    # значение в "if pop> 20:", как вы хотите.

    если pop> 20:
    LedBorg = open ('/ dev / ledborg', 'w')
    LedBorg.write ( '002')
    Del LedBorg
    печать («Дождь!»)
    еще:
    LedBorg = open ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    Del LedBorg
    печать («Нет дождя!»)

    Сохраните файл как 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, которую вы хотите проверить.

    импорт feedparser

    # Введите свое имя пользователя Gmail
    № и пароль. Не включать
    # часть @ gmail.com
    # ваш логин.

    username = "username"
    пароль = "пароль"

    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
    печать («Почта!»)
    еще:
    LedBorg = open ('/ dev / ledborg', 'w')
    LedBorg.write ( '000')
    Del LedBorg
    печать («Нет почты!»)

    Сохраните скрипт как 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. отличный способ понять основной синтаксис и структуру языка, который я никогда не использовал раньше.