Raspberry Pi로 LED 표시기 구축(이메일, 날씨 또는 무엇이든)



Raspberry Pi는 날씨 알림, 새 이메일 등 모든 종류의 프로젝트에 표시등을 부착할 수 있는 멋진 소형 플랫폼입니다. LED 모듈을 Pi에 연결하고 몇 가지 기본 알림을 설정하는 방법을 보여 주는 동안 계속 읽으십시오. .

내가 왜 이것을 하고 싶은가?

재미있으니까. 프로젝트에서 얻을 수 있는 이점을 정확히 설명하는 약간의 안내문을 맨 위에 포함하는 많은 자습서와 달리 이 경우 안내문은 매우 짧습니다. 그 이유는 이점이 단순히 재미 있기 때문입니다.





Raspberry Pi는 가지고 놀고, 전자 제품을 실험하고, 프로그래밍을 배우기에 완벽한 장치입니다. 아무도 필요 예를 들어 주방에 주변 비 표시기를 설치하는 것이 좋습니다. 하지만 이를 만드는 것은 재미있는 운동이며 폭풍우가 치는 날 우산을 가져갈 것을 상기시켜줍니다.

내가 무엇이 필요 하나?

튜토리얼을 따라 하려면 몇 가지가 필요합니다. 먼저 이전 튜토리얼을 이미 따라했다고 가정합니다. Raspberry Pi 시작하기 HTG 가이드 (따라서 우리의 Raspberry Pi에 Rasbian을 설치하기 위한 기본 사항을 다룹니다).



예산으로 이 프로젝트를 수행하려는 경우 최신 모델인 Raspberry Pi가 작업에 대해 상당히 과도하다고 자신 있게 말할 수 있습니다. 옷장에 넣거나 eBay 등에서 저렴한 중고 제품을 찾으십시오. 예산이 현명하게 오래 지속되는 라즈베리 파이 1 모델 A 또는 모델 B가 eBay에서 -15에 구입하는 것이 새로운 현세대 Pi를 구입하는 것보다 이 프로젝트에 가장 적합합니다.

광고

Raspbian이 설치된 기능적인 Pi 장치 외에도 다음이 필요합니다.

메모: 투명/프로스트 Pi 케이스는 완전히 선택 사항이지만 현재 불투명 케이스를 사용하는 경우 LED 표시기가 내부에 숨겨집니다. 케이스에 구멍을 뚫어 빛을 차단하거나 다음과 같은 브레이크아웃 키트가 있는 GPIO 확장 케이블을 사용해야 합니다. 이것은 Adafruit Industries의 제품입니다. —LedBorg를 Raspberry Pi에 연결합니다. 브레이크아웃 케이블을 사용하면 프로젝트 비용에 약 8달러가 추가되지만 조명하려는 사물 내부나 아래에 LED를 더 쉽게 배치할 수 있다는 점에서 최종 제품을 사용자 정의할 수 있는 더 많은 잠재력을 제공합니다.

레드보그 설치하기

완전히 처음부터 LED 표시등을 직접 구축할 수는 있지만(검색 엔진에 문의하면 그렇게 한 사람들이 많이 나타납니다) Piborg 조직은 작고 저렴한 LED 모듈인 LedBorg를 생산하므로 우리가 할 수 없습니다. Raspberry Pi LED 표시기 프로젝트의 기초로 사용하는 것을 거부합니다.

모듈을 설치하는 것은 Pi의 GPIO 핀에 직접 맞도록 설계되었기 때문에 간단합니다. 먼저 Pi의 전원을 끄고 케이스를 엽니다.

설치 프로세스의 가장 중요한 부분은 모듈의 방향을 지정하여 LedBorg 아이콘이 Raspberry Pi 보드의 RCA 모듈에 가장 가깝도록 하는 것입니다. 가장자리에서 벗어나지 않고 Pi 보드 위에 매달려 있는 LedBorg 부분). 위의 사진을 참조하십시오.

Pi 보드가 열려 있는 동안 특히 투명 케이스를 사용하는 경우 온보드 LED 표시등(USB 포트 옆)을 덮기에 좋은 시간입니다. 전원 및 네트워크 표시등이 너무 밝기 때문에 LedBorg 표시를 읽는 데 혼란을 주고 싶지 않습니다.

광고

우리는 흰색 전기 테이프 층으로 우리를 덮었습니다. 이것은 우리가 여전히 참조할 수 있을 만큼 충분히 어두워졌지만 더 이상 주의를 산만하게 만들지 않을 정도로 LedBorg보다 훨씬 더 흐릿했습니다.

LEDBorg를 설치하고 선택적으로 전기 테이프로 Pi의 LED 표시등을 덮었다면 케이스 백업을 닫아야 합니다. 튜토리얼의 다음 단계로 넘어가기 전에 파이를 부팅하세요.

LedBorg 소프트웨어 설치

PiBorg는 GUI 컨트롤러와 명령줄에서 LedBorg에 액세스할 수 있는 드라이버를 모두 포함하는 LedBorg용 훌륭한 소프트웨어 패키지를 제공합니다.

시작하기 전에 Rasbian 버전과 Raspberry Pi 보드의 개정 번호에 맞는 패키지를 선택하고 있는지 확인해야 합니다.

Raspberry Pi 보드에 장착 구멍이 없으면 버전 1입니다. Raspberry Pi에 장착 구멍(USB 포트 옆에 있고 전원과 HDMI 포트 사이에 있음)이 있으면 버전 2입니다. 커널 버전도 알아야 합니다. Rasbian 설치의. 터미널을 열고 다음 명령을 입력하여 확인하십시오.

우나메 -r

개정 번호와 커널 번호가 있으면 다음을 수행할 수 있습니다. 여기에서 패키지 섹션을 방문하십시오. 패키지에 대한 링크를 가져옵니다. 우리의 경우 3.6.11 커널과 함께 Revision 1 보드를 사용하고 있으므로 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
setup.zip 압축 풀기
chmod +x install.sh
./install.sh

이 시점에서 이제 LEDBorg 드라이버 및 드라이버 자체에 대한 GUI 래퍼가 설치되었습니다. Raspbian 데스크탑에 GUI 래퍼 아이콘이 표시됩니다.

계속해서 LedBorg 아이콘을 클릭하여 GUI 래퍼를 시작합니다. 다음과 같이 색상 선택기 인터페이스가 처리됩니다.

지금이 모듈이 제대로 작동하는지 확인하는 완벽한 시간입니다. 색상을 선택하고 검정색을 제외하고 시도해 보십시오. 몇 가지 색상을 선택하여 테스트할 것입니다.

좋아 보인다! 밝고 프로젝트를 위해 주문한 케이스의 젖빛 플라스틱은 적당한 확산을 제공합니다. 계속 진행하기 전에 LED 모듈을 더 사용하려면 데모 모드를 클릭하십시오.

광고

데모 모드에서는 다양한 속도로 모든 색상을 순환하고, 고/저 출력을 확인하고, 그렇지 않으면 LED 모듈을 속도에 따라 배치할 수 있습니다.

여기 데모 모드 섹션에서 LEDBorg를 많은 표시기 중 첫 번째 표시기로 전환할 수도 있습니다. 색상 섹션에서 CPU를 선택하면 LED가 녹색에서 노란색, 빨간색으로 바뀌기 시작하여 Raspberry Pi의 ARM 프로세서에 대한 부하를 나타냅니다. 속도를 느림으로 변경하는 것이 좋습니다. 빠름은 LED를 너무 빨리 업데이트하고 CPU 표시기를 유용하지 않고 산만하게 만듭니다.

GUI 인터페이스를 사용하여 색상을 선택하는 것 외에도 RGB 값을 사용하여 터미널에서 색상을 선택할 수 있습니다. 터미널을 열고 다음 명령을 입력하여 LED를 끕니다.

echo '000' > /dev/ledborg

LedBorg가 RGB 값을 처리하는 방식은 0은 채널이 꺼져 있음을 의미하고, 1은 채널이 절반 전력이고, 2는 채널이 최대 전력임을 의미합니다. 예를 들어 001은 빨간색 채널을 0%로, 녹색 채널을 0%로, 파란색 채널을 50% 전력으로 설정합니다.

값을 002로 변경하면 LED 출력이 파란색으로 유지되지만 이제 파란색 채널이 100% 출력이기 때문에 더 밝아집니다. 값을 202로 변경하고 최대 전력에서 빨간색과 파란색을 결합하여 자홍색을 만듭니다.

이제 LED를 수동으로 조작하는 방법을 알았으므로 스크립트를 사용하여 LED를 간단한 조명에서 실제 표시기로 바꾸는 방법을 살펴보겠습니다.

LedBorg를 강우 표시기로 구성하기

튜토리얼의 이 부분에서 우리는 우리 위치의 일기 예보를 기반으로 LedBorg LED 모듈을 강우 표시기로 바꾸기 위해 몇 가지를 함께 결합할 것입니다. 우리는 Python 스크립트를 사용하여 날씨 API를 호출하여 차례로 비가 올 확률을 읽은 다음 LED를 꺼짐에서 밝은 파란색으로 토글하여 예측된 비를 나타낼 것입니다.

광고

먼저 Weather Underground에 대한 API 액세스 키를 가져와야 합니다. 개인 사용 및 소규모 개발 프로젝트의 경우 API는 무료입니다. 여기에서 Weather API 가입 페이지를 방문하세요. API 키를 등록하십시오.

API 키가 있으면 Weather Underground를 방문하여 모니터링하려는 도시를 검색하십시오. 우리의 경우 캘리포니아 샌프란시스코를 모니터링할 것입니다. San Fransisco의 예측 페이지 URL은 다음과 같습니다.

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

우리 목적에서 중요한 부분은 URL의 마지막 부분인 /CA/San_Francisco.html입니다. 이를 사용하여 API 도구의 예측 URL을 편집할 것입니다. 기본 URL은 다음과 같습니다.

http://api.wunderground.com/api/귀하의 API 키/forecast/q/STATE/CITY.json

Weather Underground 검색 결과에서 가져온 URL에서 API 키, 2자리 주 코드 및 도시 이름을 입력하여 미국 도시에 대한 예보를 생성할 수 있습니다.

API 키와 시/도가 삽입된 API URL이 있으면 Leafpad를 사용하여 Pi에서 새 텍스트 문서를 만들고 다음 코드를 붙여넣어 다음 Python 스크립트를 편집할 수 있습니다.

from urllib2 import urlopen
import json

req = urlopen('http://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까지의 정수
# LED 응답.

# 팝 = 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!')

광고

파일을 /home/pi/ 디렉토리에 wunderground.py로 저장합니다. 터미널을 열고 다음 명령을 입력하십시오.

파이썬 wunderground.py

API 키와 시/도 코드를 올바르게 입력했다면 다음과 같은 응답을 반환해야 합니다.

해당 지역의 강수량이 예측되면 LedBorg 출력은 다음과 같아야 합니다.

이제 스크립트를 제대로 테스트하기 위해 비오는 날을 기다리는 것은 지루할 것입니다. 오늘 귀하의 지역에 비가 올 가능성이 없고 LED 조명을 보고 싶다면 wunderground.py 스크립트를 편집하고 13행의 pop = pop 통과 값을 20보다 큰 값(예: 60)으로 바꾸십시오. 예측이 반환되었습니다. 완료되면 줄을 다시 pop = pop으로 변경하는 것을 잊지 마십시오.

마지막 단계는 LED 표시기를 최신 상태로 유지하기 위해 정기적으로 방금 저장한 스크립트를 자동으로 실행하도록 cron 작업을 설정하는 것입니다. 이 작업은 이 스크립트와 뒤따르는 이메일 표시기 모두에 필요하므로 다른 스크립트를 설정하는 방법을 설명한 후 cron 작업 설정을 다룰 것입니다.

LedBorg를 Gmail 표시기로 구성

받은 편지함에서 새 이메일을 볼 때 제공되는 도파민 수정이 마음에 들지 않는 사람은 누구입니까? 튜토리얼의 이 부분에서는 LedBorg를 새로운 Gmail 표시기로 사용하는 방법을 보여드릴 것입니다. 지난 시간과 마찬가지로 외부 입력(이 경우 API 대신 Atom 피드)과 간단한 스크립트를 결합하여 LED를 구동할 것입니다.

광고

다음을 설치하여 Python 설치의 기능을 약간 확장해야 합니다. FeedParser , Python RSS/Atom 피드 읽기 도구. 터미널을 열고 다음 명령을 입력하십시오.

sudo easy_install 피드 파서

설치가 완료되면 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의 정수
# LED 응답.

# 메일 = 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로 저장합니다. 터미널을 열고 다음 명령을 입력합니다.

파이썬 gmailcheck.py

Gmail 받은 편지함에 이메일이 있는 경우 LED가 녹색으로 바뀌고 다음과 같은 응답을 받게 됩니다.

Gmail 받은 편지함에 메일이 있는 경우 LedBorg는 다음과 같이 표시됩니다.

비 확인 스크립트와 마찬가지로 디버깅 값을 포함했습니다. 새 이메일이 없는 경우 받은 편지함 수를 1로 늘리기 위해 이메일을 보내거나 주석 해시를 편집하고 디버깅 라인을 mail = 1로 변경하여 스크립트를 테스트할 수 있습니다. 테스트가 끝나면 줄을 되돌리는 것을 잊지 마십시오.

광고

자습서의 다음 섹션으로 이동하여 일정에 따라 실행되도록 Gmail 스크립트를 설정합니다.

스크립트를 실행하기 위한 Cron 작업 설정

이제 사용할 스크립트가 두 개 있으므로 LED 표시기를 최신 상태로 유지하기 위해 하루 종일 스크립트를 실행하기 위해 cron 작업을 설정해야 합니다.

가장 먼저 할 일은 이전 실험에서 LED가 현재 켜져 있는 경우 끄는 것입니다. 터미널 유형:

에코 000 > /dev/ledborg

명령줄에 있는 동안 cron 편집기를 열 수 있습니다. 이전에 cron 작업을 설정한 적이 없다면 강력히 제안합니다. 여기에서 사용 가이드를 확인하세요. . 즉, 여기에서 기본 일정을 설정하는 과정을 안내해 드리겠습니다.

터미널 유형:

sudo crontab -e

그러면 Nano 텍스트 편집기에서 Raspbian cron 테이블이 열립니다. 화살표 키를 사용하여 맨 아래로 스크롤합니다. 여기에서 Python 스크립트에 대한 반복적인 cron 작업을 설정할 것입니다.

비 스크립트를 설정하려면 cron 테이블에 다음 줄을 입력하십시오.

*/5 * * * * 파이썬 /home/pi/wunderground.py

광고

Ctrl+X를 눌러 종료합니다. 예를 선택하여 기존 cron 테이블을 저장하고 덮어씁니다. cron 테이블 */5 * * * *에 입력한 값은 스크립트가 5분마다 영원히 실행되도록 설정합니다.

매 5분마다 예상되는 비를 확인하는 스크립트의 좋은 시간입니다. 너무 공격적이라고 주장할 수도 있습니다. 그러나 이메일을 계속 확인하려고 한다면 알림을 받기에는 너무 긴 시간입니다 . Gmail 알림 스크립트의 일정을 설정하는 경우 cron 테이블에 다음 줄을 입력합니다.

*/1 * * * * 파이썬 /home/pi/wunderground.py

이 항목은 훨씬 빠른 업데이트 알림을 위해 1분마다 gmailcheck.py 스크립트를 실행합니다.


그게 다야! if/else 문을 우리에서 꺼내고 새로운 변수로 시도함으로써 자신의 Python 스크립트로 실험할 수 있습니다. 데이터에 대한 입력 소스를 찾을 수 있으면 이를 Python 스크립트의 변수로 바꿀 수 있습니다. 주식 시장 평균, 꽃가루 수, Twitter 언급, 이에 대한 API가 있으면 주변 LED 표시기로 전환할 수 있습니다.

마지막으로 이 프로젝트를 진행하는 데 사용한 모든 훌륭한 리소스에 감사드립니다. 내가 적극적으로 프로그램을 작성한 지 10년이 조금 넘었고 먼지와 녹을 제거하는 데 몇 번의 노크가 필요했습니다. 기여자 /r/파이썬 배우기 Mitch Tech에서 Michael이 어떻게 작업했는지 연구하면서 Weather Underground에 대한 API 출력에 대해 설명하는 데 도움이 되었습니다. Gmail Atom 피드 처리 LedBorg에 대한 구문 분석을 쉽게 만들었습니다. 코드 아카데미에서 파이썬 학습 모듈 공부하기 한 번도 사용하지 않은 언어의 기본 구문과 구조를 배울 수 있는 좋은 방법이었습니다.

다음 읽기 Jason Fitzpatrick의 프로필 사진 제이슨 피츠패트릭
Jason Fitzpatrick은 How-To Geek의 자매 사이트인 LifeSavvy의 편집장입니다. 그는 출판 분야에서 10년 이상의 경험을 가지고 있으며 Review Geek, How-To Geek 및 Lifehacker에서 수천 편의 기사를 저술했습니다. Jason은 How-To Geek에 합류하기 전에 Lifehacker의 주말 편집자로 일했습니다.
전체 약력 읽기

재미있는 기사