1Aug

Ahududu Pi ile bir LED Göstergesi Oluşturma( E-posta, Hava Durumu veya Başka Herhangi Bir Şey İçin)

click fraud protection

Raspberry Pi, hava durumu bildirimi, yeni e-postalar vb. Gibi her türlü proje için bir gösterge ışığı takmak için güzel ve kompakt bir platform oluşturur. Size, Pi'ye bir LED modülünün nasıl bağlanacağını ve bazı basitbildirimleri.

Neden Bunu Yapmak İster miyim?

Çünkü eğlencelidir.Öğreticilerimizin çoğunun üst kısmında, projeden elde edeceğiniz nimet ne kadar fayda sağladığını açıklayan küçük bir cetveli bulunduğumuzdan farklı olarak, bu durum cümleyi oldukça kısa buluyor, çünkü fayda sadece eğlence içindir.

Raspberry Pi, elektronik ortamda denemek ve bazı programlamayı öğrenmek için mükemmel bir cihazdır. kimsenin mutfağında bir yağmur indikatörü 'ye ihtiyacı yok, ancak bina birincisi şemsiyenizi potansiyel fırtınalı günlerde yanınıza almanız için eğlenceli bir egzersiz ve büyük bir hatırlatmadır.

Bana Neye ihtiyacım var?

Öğretici ile birlikte takip etmek için birkaç şey gerekir.Öncelikle, daha önce yaptığımız öğreticimizi takip etmiş olduğunuzu varsayıyoruz: HTG Rezalbe Pi'ye Başlarken Kılavuzu( ve böylece, temelleri Çilek Pi'sine Rasbiyen yüklemeyi kapsayan bir temel bilgilere sahip olabilirsiniz).

instagram viewer

Bu projeyi bir bütçeyle yapmayı düşünüyorsanız, en yeni model Raspberry Pi'nin iş için çok fazla aşırı olduğundan ve elinizdeki eski bir Ahududanı Pi üzerinde tozu üflemenizi öneririm. Dolabın içine sokulur ya da eBay'den ucuza alınmış bir tane alır ya da benzeri. Ahşap Çilek Pi 1 Model A veya Model B, eBay'den 10-15 $ 'a kadar kesilen dişin içinden uzun sürede yararlanarak, yeni bir 35 $' lık yeni nesil Pi satın alarak bu projeye mükemmel bir uyum sağlar.

Raspbian'ın kurulu olduğu fonksiyonel bir Pi birimine ek olarak aşağıdakilere de ihtiyacınız olacaktır:

  • 1 LedBorg modülü( ~ 5.00 ABD Doları'ndan ABD'ye 4 dolara gönderilir, tüm Ahududu Pi modelleriyle çalışır).
  • 1 Bu Ahududu Pi 1 Model B durumda gibi belirli Pi modelinizle uyumlu, net bir Ahududu Pi Kasa.

Not: Açık / buzlu Pi kutusu tamamen isteğe bağlıdır, ancak şu anda opak bir kutu kullanıyorsanız, LED göstergesi içinde gizlenecektir. Işık dışarı atmak için durumunuzda bir delik açmanız veya LedBorg'u Ahududanı Pi'ye bağlamak için Adafruit Industries'den bir koparma kiti olan bir GPIO uzatma kablosu kullanmanız gerekecek. Ara kabloyu kullanmanın, projenin gideri için yaklaşık 8 dolar eklediği halde, LED'i şeylere veya nesneleri aydınlatmak istediğiniz bir yere kolayca yerleştirebilmeniz için nihai ürünü özelleştirmek için daha fazla potansiyel sunuyor.

LedBorg

'yi kurma Kendinize tamamen sıfırdan başlayarak LED göstergesi( ve bir arama motoru sorgulaması, bunu yapmış birçok kişiye yönelecek olsa da) Piborg organizasyonu böyle küçük ve ucuz bir LED modülü olan LedBorg'u üretiyor olsa da, bunu Ahududu Pi LED göstergesi projemizin temeli olarak kullanmaya direnemedik.

Modülün takılması, Pi üzerindeki GPIO pimlerinin üzerine doğrudan sığacak şekilde tasarlandığından kolaylıkla yapılabilir.Önce, Pi'yi kapat ve davayı aç.

Kurulum işleminin en önemli parçası, LedBorg simgesinin Ahududu Pi tahtasındaki RCA modülüne en yakın olmasını sağlayacak modüle yönlendirmeniz( ve böylece LedBorg kenarının Pi tahtasının kenarlarıyla birlikteLedBorg'un Pi levhasına asılı ve kenardan çıkmayan kısmı).Yukarıdaki fotoğraftan bakın.

Pi kartını açtığınızda, özellikle net bir kutu kullanıyorsanız, dahili LED göstergelerini( USB bağlantı noktalarının yanında) kapsamak için mükemmel bir zaman olacaktır. Güç ve ağ gösterge ışıkları çok parlak olduğu için LedBorg göstergesini okumak için kafa karıştırıcı olmasını istemezsiniz.

Bizi beyaz bir elektrik bandı tabakasıyla kapladık. Bu onları yeterince kararttı, böylece hala onları referans alabildik, ancak LedBorg'tan çok daha karanlıktılar; artık rahatsız edici değildi.

LedBorg'u kurduktan ve isteğe bağlı olarak Pi'nin LED göstergelerini elektrikli bantla kapattıktan sonra, kasayı tekrar kapatmanın zamanı geldi.Öğreticinin sonraki aşamasına geçmeden önce Pi'nizi başlatın.

LedBorg Yazılımının Kurulması

PiBorg, hem bir GUI denetleyicisi hem de komut satırından LedBorg'a erişmek için sürücüler içeren LedBorg için mükemmel bir yazılım paketi sunar.

Başlamadan önce, Rasbian sürümünüz ve Raspberry Pi kurulunuzun revizyon numarası için doğru paketi kaptığınızdan emin olmanız gerekir.

Ahududanı Pi kartınızın montaj delikleri yoksa Revizyon 1 olur. Ahududanı Pi'nizin montaj delikleri( USB bağlantı noktaları ve güç ile HDMI bağlantı noktası arasında bulunur) varsa, Revizyon 2 olur. Ayrıca çekirdeği de bilmeniz gerekir. Rasbian kurulumunuzun versiyonu. Terminali açın ve kontrol etmek için aşağıdaki komutu girin:

uname -r

Revizyon numarasına ve çekirdek numarasına sahip olduğunuzda paketinizin bağlantısını almak için Paket bölümünü ziyaret edebilirsiniz. Durumumuzda, 3.6.11 çekirdeğiyle bir Revizyon 1 paneli kullanıyoruz, böylece raspbian-2013-02-09-rev1.zip dosyasını alacağız.

Tüm güzellikleri yüklemek için Pi üzerindeki terminali açmamız gerekiyor.ve sonra LedBorg paketini yüklemek için aşağıdaki komutları girin.

Not: Üçüncü komuttaki URL'yi, tahta / çekirdek kombinasyonunuzun paketinin URL'si ile değiştirmeniz gerekir.

mkdir ~ / ledborg kurulumu
cd ~ / ledborg kurulumu
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

Bu noktada artık LedBorg sürücüleri için GUI sarmalayıcı ve sürücülerin kendileri yüklüdür. Raspbian masaüstünüzde GUI sarmalayıcı için bir simge görürsünüz:

Devam edin ve GUI sarmalayıcıyı başlatmak için LedBorg simgesini tıklayın. Renk seçici arayüzüne şu şekilde davranılacaksınız:

Şimdi modülünüzün işlevsel olduğundan emin olmanız için mükemmel bir zaman. Denemek için herhangi bir rengi seçin, siyah renkte saklayın. Birkaç renk seçerek test edeceğiz:

İyi görünüyor! Parlak ve proje için sipariş verdiğimiz davanın buzlu plastikleri orta derecede difüzyon sunuyor. Devam etmeden önce LED modülüyle daha fazla oynamak isterseniz, Demo Modu'nu tıklatın:

Demo modunda çeşitli hızlarda tüm renkleri dolaşabilir, yüksek / düşük çıkışı kontrol edebilir ve LED modülünü adım adım geçirebilirsiniz.

Demo Modu bölümünde, LedBorg'unuzu bir çok göstergenin ilkine dönüştürebilirsiniz. Renkler bölümünde İşlemci seçildiğinde, Ahududu Pi'nin ARM işlemcisinde yükü belirtmek için LED yeşilden sarıya ve kırmızıya geçmeye başlayacaktır. Hızlıyken Slow konumunda iken değiştirmenizi öneririz - Hızlı LED'i çok hızlı bir şekilde günceller ve CPU göstergesini yararlı yerine dikkat dağıtıcı yapar.

GUI arayüzünü renkleri seçmek için kullanmanın yanında, terminalden RGB değerleri kullanarak renkler seçebilirsiniz. LED'i kapatmak için terminali açın ve aşağıdaki komutu girin:

yankı "000" & gt;/dev/ ledborg

LedBorg'un RGB değerlerini işleme biçimi 0 kanalın kapalı olduğu anlamına gelir, 1 kanalın yarım güç anlamına geldiğini ve 2'nin kanalın tam güç anlamına geldiğini gösterir.Örneğin 001, Kırmızı kanalı% 0, Yeşil kanalı% 0 ve Mavi kanalı% 50 oranında ayarlardı.

Değeri 002 olarak değiştirin ve LED çıkışı mavi kalır, ancak Mavi kanal% 100 çıktı olduğu için daha parlak hale gelir. Değeri 202 olarak değiştirin ve eflatun rengi oluşturmak için Kırmızı ve Mavi tam güçle birleştirin.

Artık LED'i elle nasıl değiştireceğimizi biliyoruz, basit ışıktan gerçek bir göstergeye LED dönüştürmek için komut dosyalarını kullanmaya bakalım.

Ledborunuzu Yağmur İndikatörü olarak yapılandırma

Öğreticimizin bu bölümü için LedBorg LED modülümüzü, bulunduğumuz yerin hava durumuna dayalı yağmur göstergesi haline getirmek için birkaç şeyi birlikte tarayacağız. Bir hava durumu API'sini çağırmak için bir Python komut dosyası kullanacağız ve bu da gün boyunca yağmur ihtimalini okumayı ve ardından tahmini yağmuru belirtmek için LED'i kapalı maviye çevirin.

İlk olarak, Weather Underground için bir API erişim anahtarı almalıyız. Kişisel kullanım ve küçük geliştirme projeleri için API ücretsizdir. Hava Durumu API'sı kayıt sayfasını buradan ziyaret edin ve bir API anahtarı için kaydolun.

API anahtarınızı aldıktan sonra Weather Underground'ı ziyaret edin ve izlemek istediğiniz şehri arayın. Durumumuza göre, San Fransisco, CA'yı izleyeceğiz. San Fransisco'nun tahmin sayfası için URL:

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

Amaçlarımızın önemli kısmı, URL'nin son kısmıdır: /CA/ San_Francisco.html. Bunu, API aracı için tahmini URL'yi düzenlemek için kullanacağız. Temel URL:

http: //api.wunderground.com/api/ API anahtarınız /forecast/q/STATE/ CITY.json

Hava durumunuzdan çektiğiniz URL'den API anahtarınızı, iki harfli durum kodunu ve şehir adını girerek herhangi bir ABD şehrinin tahmini durumunu oluşturabilirsiniz. Yeraltı arama sonuçları.

API anahtarınızı ve eyalet / şehrinizi ekleyerek API URL'sine sahip olduktan sonra Leafpad'i kullanarak Pi'nizde yeni bir metin belgesi oluşturup aşağıdaki kodu yapıştırarak aşağıdaki Python komut dosyasını düzenleyebilirsiniz:

from urllib2 import urlopen
import json

req = urlopen( 'http: //api.wunderground.com/api/ API anahtar /forecast/q/STATE/ CITY.json')
parsed_json = json.load( req)
pop = int( parsed_json ['tahmin'] ['txt_forecast'] ['forecastday'][0] ['pop'])

# Aşağıdakiler bir hata ayıklama değeridir.
# Karmayı düzenleyin ve
# değerini 0-100 değerine değiştirip
# LED yanıtını test edin.

# pop = 0

print 'Yağış şeması şu şekildedir{ }.' Format( pop)

# Varsayılan ayar,
# LED 'sini% 20'nin üzerindeki yağmur ihtimali için açacak şekildedir.
# değerini "if pop & gt; 20" değerinde istediğiniz gibi ayarlayabilirsiniz.

if pop & gt;20:
LedBorg = açık( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
yazdır
else:
LedBorg = açık( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
yazdırın( ' Yağmur yok! ')

Dosyayı wunderground.py olarak /home/pi/ dizinine kaydedin. Terminali açın ve aşağıdaki komutu yazın:

python wunderground.py

API anahtarınızı ve eyalet / şehir kodlarınızı doğru bir şekilde girdiyseniz, aşağıdaki gibi bir yanıtı geri çekmelisiniz:

Alanınız için yağış tahminleri varsaLedBorg çıktısı şöyle olmalıdır:

Şimdi, yağışlı bir günün senaryoyu düzgün şekilde test etmesini beklemek sıkıcı olacaktı.Bölgenizde bugün yağmur yağma şansı yoksa ve LED ışığını görmek istiyorsanız, wunderground.py komut dosyasını düzenleyin ve 13 satırındaki "pop = pop" geçiş değerini, 60'ıncı gibi 20'den büyük bir değere değiştirinTahminlerimiz döndü.İşiniz bittiğinde satırı "pop = pop" olarak değiştirmeyi unutmayın.

Son adım, LED göstergesini güncel tutmak için daha önce kaydettiğimiz komut dosyasını düzenli aralıklarla otomatik olarak çalıştırmak için bir cron işi oluşturmaktır. Bu görev hem bu komut dosyası hem de takip eden e-posta göstergesi için gerekli olduğundan, size diğer komut dosyalarını nasıl oluşturacağınızı gösterdikten sonra bir cron işi oluşturmayı ele alacağız.

LedBorg'unuzu Gmail Göstergesi Olarak Yapılandırma

Gelen kutunuzda yeni e-postalar görmenizle birlikte gelen dopamin düzeltmesini kim sevmez?Öğreticinin bu bölümünde LedBorg'u yeni bir Gmail göstergesi olarak nasıl kullanacağınızı göstereceğiz. Geçen saatlerde olduğu gibi, harici bir girdi( bu durumda bir API yerine Atom beslemesi) ve LED'imizi sürmek için basit bir komut dosyası birleştireceğiz.

Bir Python RSS / Atom besleme okuma aracı olan FeedParser'ı yükleyerek Python yüklememizin işlevselliğini biraz arttırmamız gerekiyor. Terminali açın ve aşağıdaki komutu girin:

sudo easy_install feedparser

Kurulum tamamlandıktan sonra Gmail denetim komut dosyamızı oluşturmaya çalışmak üzere ayarlayabiliriz. Yine Leafpad'i kullanarak aşağıdaki metni editöre yapıştırın. Kullanıcı adını ve şifresini, kontrol etmek istediğiniz Gmail hesabının kullanıcı adı ve şifresiyle eşleşecek şekilde değiştirin.

import feedparser

# Gmail kullanıcı adınızı
# ve şifresini girin.
# # gmail.com'un
# bölümüne kullanıcı adınızı eklemeyin.

kullanıcı adı = "kullanıcı adı"
şifresi = "şifre"

posta = int( feedparser.parse( "https: //" + kullanıcı adı + ":" + şifre "" @ mail.google.com /gmail/feed/ atomu ") [" feed"] [" fullcount "])

# Aşağıdaki hata ayıklama değeridir.
# Karmayı düzenleyin ve
# değerini 0 veya 1 olarak değiştirerek
# LED yanıtını test edin.

# posta = 0

mail & gt;0:
LedBorg = açık( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
yazdırma( 'Posta!')
else:
LedBorg = açık( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
yazdır( ' Posta yok! ')

Senaryoyu gmailcheck.py olarak kaydedin. Terminali açın ve aşağıdaki komutu yazın:

python gmailcheck.py

Gmail gelen kutunuzda e-postanız varsa, LED yeşile dönecek ve böyle bir yanıt alacaksınız:

Gmail gelen kutunuzda LedBorg'unuzda bir posta varsaşöyle görünecek:

Yağmur kontrol komut dosyası gibi, bir hata ayıklama değeri de ekledik. Yeni bir e-postanız yoksa, gelen kutunuzun sayısını 1'e yükseltmek için kendinize bir e-posta gönderebilir veya komut dosyasını test etmek için yorum karmasını düzenleyebilir ve hata ayıklama satırını "mail = 1" olarak değiştirebilirsiniz. Sınamayı tamamladığınızda hattınızı geri almayı unutmayın.

Gmail komut dosyanızı bir programda çalışacak şekilde ayarlamak için öğreticinin bir sonraki bölümüne geçin.

Komut Dosyanızı Çalıştırmak İçin Bir Cron İşini Ayarlama

Şimdi oynamak için iki komut dosyası bulunduğundan, LED göstergesini güncel tutmak için gün boyunca bunları çalıştırmak için bir cron işi oluşturmamız gerekiyor.

Yapmak istediğimiz ilk şey daha önceki deneyimlerimiz ışığında LED'i kapatmaktır. Terminal tipinde:

yankı "000" & gt;/dev/ ledborg

Hâlâ komut satırındayken, cron düzenleyicisini açabilirsiniz. Daha önce hiç bir cron işi yapmadıysanız, buradaki kullanım kılavuzumuza göz atmanızı öneririz. Bununla birlikte, burada basit bir program hazırlamak için size yol göstereceğiz.

Terminalde:

sudo crontab -e

Bu, Nano metin düzenleyicisinde Raspbian cron tablosunu açacaktır. En alta doğru ilerlemek için ok tuşlarını kullanın. Python komut dosyalarımız için tekrar eden cron işini kuracağımız yer burasıdır.

Yağmurluk komut dosyasını kurmak isterseniz, cron tablosuna aşağıdaki satırı girin:

* / 5 * * * * python /home/pi/ wunderground.py

Çıkmak için CTRL + X tuşlarına basın;mevcut cron tablosunu kaydetmek ve üzerine yazmak için evet'i seçin. Cron tablosuna girdiğimiz değer "* / 5 * * * *", komut dosyasını her 5 dakikada bir sonsuza kadar çalıştırmak için ayarlar.

Her 5 dakikada, tahmini yağmuru kontrol eden bir senaryo için ince bir zaman dilimi var - hatta biraz fazla agresif olduğunu iddia edebilirsin - ancak e-postanın üstünde durmaya çalışıyorsan, bunun için biraz fazla bir süre gerekiyor.bildirim. Gmail bildirim komut dosyası için zamanlamayı ayarlarsanız, cron tablosuna aşağıdaki satırı girin:

* / 1 * * * * python /home/pi/ wunderground.py

Bu girdi, dakikada bir gmailcheck.py komut dosyasını çok daha hızlı bir şekilde çalıştırırbildirimi güncelleyin.

Hepsi bu kadar! Kendi Python komut dosyalarımızla if / else ifadelerini kaldırıp bunları yeni değişkenlerle denemekle deneyebilirsiniz. Veriler için bir giriş kaynağı bulabiliyorsanız, Python komut dosyanızdaki bir değişkene dönüştürebilirsiniz - borsa ortalamaları, polen sayımı, Twitter sözcükleri, bunun için bir API varsa, bir ortam LED göstergesine dönüştürebilirsiniz.

Son olarak, bu proje üzerinde çalışmakta olduğum tüm büyük kaynaklara teşekkür etmek istiyorum. Aktif olarak program yazarken ve ondan sonra tozumu alıp pas yapmam birkaç on yılı aşkın bir süredir. /r/ LearnPython'a katkıda bulunan kişiler, Weather Underground için API çıktısında, Mitch Tech'teki Michael'ın LedBorg için kolay ayrıştırma yapmış olduğu Gmail Atom feed'iyle nasıl uğraştığını ve Code Academy'deki Python öğrenme modüllerini incelemek için çalıştıklarını öğrenmeme yardımcı oldu. Daha önce hiç kullanmadığım bir dilin temel sözdizimini ve yapısını almanın yolu.