İçindekiler:

1984 WeatherMan Pi: 7 Adım (Resimlerle)
1984 WeatherMan Pi: 7 Adım (Resimlerle)

Video: 1984 WeatherMan Pi: 7 Adım (Resimlerle)

Video: 1984 WeatherMan Pi: 7 Adım (Resimlerle)
Video: The Giant Wave - The Perfect Storm (3/5) Movie CLIP (2000) HD 2024, Kasım
Anonim
Image
Image
1984 Hava Adamı Pi
1984 Hava Adamı Pi
1984 Hava Adamı Pi
1984 Hava Adamı Pi

Bu taşınabilir kaset çalar, artık 80'lerin başı stiline sahip bir ortam IoT hava durumu ekranıdır ve bant penceresinden "mevcut koşullar" animasyonu, kaydırma sıcaklığı ve yağmur olasılığı grafiği görüntüler. Hava durumu değiştiğinde, üstteki servo kontrollü kulaklıklar, ince bir uyarı olarak ileri geri sallanır.

İşlevsel bant kapağını açtığımızda, tozlu orijinal bileşenlerin bir Raspberry Pi Zero W, bir Pimoroni Unicorn Hat HD (LED Matrix) ve küçük bir servo ile değiştirildiğini görebiliriz. Hava durumu verileri, özel konumuma göre uyarlanmış ultra hassas Dark Sky Hava Durumu API'sini sorgulayan bir Python betiği kullanılarak elde edilir.

YouTube tezgahımın karşısındaki masa hoparlöründe oturan ve beni sessizce hava durumundan haberdar eden basit ama hoş görünümlü ve işlevsel bir IoT yapısı.

Gereçler

Ahududu Pi Sıfır

Pimoroni Unicorn HAT HD

Küçük Servo

1984 Hitachi SP-1 Kişisel Stereo ve Kulaklıklar

USB WiFi Adaptörü

2mm Dişli Çubuk

Sugru (Siyah & Gri)

GeoMag mıknatısı

1. Adım: Bant Yırtma

Bant Yırtma
Bant Yırtma
Bant Yırtma
Bant Yırtma
Bant Yırtma
Bant Yırtma

Eylül ayında kayınvalidem tarafından bana bu sevimli eski kasetçalar verildi ve ikonik görünümüne ve tıknaz düğmelerine anında aşık oldum. Asıl önemli olan, o büyük bant penceresiydi - yaklaşık 15 saniye sahip olduktan sonra bir cetvel çıkardım ve mm'ye kadar standart bir Raspberry Pi HAT (Donanım Üste Takılı) ile aynı boyutta olduğunu bulmak beni şaşırttı.

Tek başına bu keşif, guguklu saat projemi "yapılacaklar" listesinin daha da aşağılarına indirmem için yeterliydi ve hemen oynatıcıyı sökerek çalışmaya başladım.

Sökme işlemi oldukça iyi gitti ve üzerinde çalışabileceğim üç farklı parça buldum - birkaç plastik parçayı kırmayı başardım ama hiçbir şey tekrar yapıştırılamadı.

2. Adım: Karanlık Gökyüzü Pi

Karanlık Gökyüzü Pi
Karanlık Gökyüzü Pi
Karanlık Gökyüzü Pi
Karanlık Gökyüzü Pi
Karanlık Gökyüzü Pi
Karanlık Gökyüzü Pi

Telefonumda bir süredir Dark Sky kullanıyorum ve tahminlerin doğruluğundan gerçekten etkilendim, bu yüzden bu projede kullanabileceğim kapsamlı bir API sunduklarını görmek beni çok mutlu etti. Ayarlaması güzel ve basit yukarı da!

Öncelikle https://darksky.net/dev adresine gidin ve ücretsiz bir hesap için kaydolun - "deneme" hesabı, günde 1000 API isteğinde bulunmanıza izin verir; bu, her 1,5 dakikada bir yenileme için yeterlidir - sık sık benim için bile yeterli. İngiliz hava durumu takıntısı seviyesi.

Kaydolduktan sonra bir "Gizli Anahtar" alacaksınız - verilere erişmek için ihtiyacınız olan şey budur ve Python betiğinde kullanılır, bu yüzden elinizin altında bulundurun (ve bilirsiniz, gizli).

API verilerini almak için Python'daki İstekler modülünü kullanan YouTube Abone Sayacı derlemesinde kullandığım bir komut dosyasını uyarlayarak başladım. Kullandığım komut dosyası GitHub'da, sadece Dark Sky API anahtarınızı eklemeniz ve elbette kendi Enlem ve Boylam değerlerinizi değiştirmeniz gerekecek.

Mevcut hava koşullarına ilişkin verileri almak oldukça kolaydı ve "Simge", "Yağış Olasılığı" ve "Sıcaklık" öğelerini kullanmaya karar verdim.

Adım 3: Kod

kod
kod

Kullandığım kodu yeniden kullanmak veya sıçramak istiyorsanız, GitHub'daki WeatherMan deposunda - "hava durumu" klasörünü Raspberry Pi'nizdeki "pi" klasörüne kopyalayın veya indirin.

Ana komut dosyası işlevleri aşağıdaki gibidir:

hava durumu.py

Bu, Dark Sky'dan hava durumu verilerini çıkaran ana komut dosyasıdır. https://darksky.net/dev adresinde bir Dark Sky hesabı oluşturmanız ve Gizli Anahtarınızı belirtilen yere komut dosyasına koymanız gerekir. Ayrıca ilgilendiğiniz hava durumu konumunun enlem ve boylamını da girmeniz gerekir - bu, Google Haritalar'da bulunabilir, sağ tıklayın ve "Burada Ne Var?" öğesini seçin. ve konumun enlem/boylamını gösteren bir açılır pencere göreceksiniz.

API verilerini aldıktan sonra weatherman.py, animasyonları ve kulaklık dalgalanmalarını başlatmak için parametreleri birkaç küçük komut dosyasına iletir.

Komut dosyası, başlangıç dosyasını düzenleyerek başlangıçta çalışacak şekilde ayarlandı…

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

…ve ekliyorum:

@python3 /home/pi/weather/weatherman.py &

dosyanın sonunda.

simge.py

Bu komut dosyası, weatherman.py komut dosyasından bir "geçerli koşullar" parametresi alır ve bunu 16x16 hava durumu animasyonunu görüntülemek için kullanır - bunların tümü "simgeler" klasöründe depolanır ve standart Unicorn HAT HD belgelerinin bir parçasıdır.-p.webp

telefonlar.py

Son API isteğinden sonra hava koşulları değiştiyse (veya yeni bir önyüklemeyse ve kar yağmıyorsa), bu komut dosyası weatherman.py'den çağrılır ve servoya, koşulların gerçekleştiği konusunda sizi uyarmak için ileri geri "titreme" talimatını verir. değişti.

precip.py

Bu komut dosyası, weatherman.py'den bir "yağış olasılığı" parametresini kabul eder ve Unicorn HAT'ta % olasılık ile ilgili mavi satırları görüntüler. %100 ise 16 satırın tümü mavi yanar, %50 ise yalnızca 8 satır vb.

temp.py

Başka bir standart Pimoroni betiği, bu, weatherman.py'den bir "temp" parametresi alır ve onu kayan metinle görüntüler. Herkules truetype yazı tipini ("fontlar" klasöründe) kullanacak şekilde ayarlanmıştır, ancak isterseniz standart bir yazı tipi de kullanabilir. Hatta bunu geliştirerek görüntülenen metnin sıcaklık değerine bağlı olarak renk değiştirmesini sağlayabilirsiniz!

Adım 4: Unicorn HAT & Servo

Unicorn ŞAPKA & Servo
Unicorn ŞAPKA & Servo
Unicorn ŞAPKA & Servo
Unicorn ŞAPKA & Servo
Unicorn ŞAPKA & Servo
Unicorn ŞAPKA & Servo

Hava durumu verilerini elde edebilmek harikaydı ama şimdi onu Unicorn HAT'ta göstermem gerekiyordu. İnternetteki çeşitli hava durumu simgelerine baktım ve Pimoroni belgelerinde bir hava durumu örneği olduğunu fark ettiğimde bunları uyarlamanın yarısındaydım - ve buna hava durumu animasyonları da dahildi!

Bu, büyük miktarda iş kurtardı ve mevcut koşullar için animasyonlu bir simge, sıcaklık için bazı kayan metinler ve yağış yüzdesi için bir grafik (biraz hafif matematik dahil) ile hemen çalışmaya başladım. Komut dosyalarını ayrı tuttum ve parametreleri ileri geri iletmek için Python'un Alt İşlem modülünü kullandım.

Servo eklemek bu uyarılar için ideal bir araçtı çünkü biraz ses çıkaracak ve fazla rahatsız etmeden göz alıcı olacaktı. HAT zaten Pi'nin birçok pinini kaplıyorken, Pulse Width Modulation kullanarak servonun hareketini kontrol etmek için Pin 17'yi kullanarak servo kablolarını kartın alt tarafına lehimledim.

Servoyu Pi'den çalıştırmak ideal değildi, ancak yalnızca anlık bir sallanma için kullanılacaktı, bu nedenle hassasiyet burada çok önemli değildi. Kahverengi kablo ile GND'ye, Kırmızı'dan 5v'ye ve Turuncu (kontrol kablosu) GPIO17'ye şemada gösterildiği gibi bağlandı.

Son olarak, aydaki yarasalar ve güneşte gülen yüz gibi kendi kişisel dokunuşlarımı eklemek için GIMP'deki bazı hava durumu animasyon dosyalarını düzenledim. Ayrıca, yalnızca eğlence için başlangıçta oynatılacak özel bir "Old Tech New Spec" kaset tekerleği animasyonu ekledim.

Adım 5: Kulaklık Sarsıntısı

kulaklık sallama
kulaklık sallama
kulaklık sallama
kulaklık sallama
kulaklık sallama
kulaklık sallama
kulaklık sallama
kulaklık sallama

WeatherMan'in fikri, pasif bir şekilde masamın hoparlörüne oturması ve ara sıra hava durumunu göstermesiydi, ama ben onun biraz daha fazlasını yapmasını istedim! Yanında gelen kulaklıklar klasik 80'lerden kalmaydı, bu yüzden onlarla bir şeyler yapmaya karar verdim. Tüm kabloları çıkardıktan ve kırılanı sıcak yapıştırdıktan sonra, üç parça, 3,5 mm fiş, elmas şeklindeki düğme ve esnek metal bantlarında telefonların kendileri kaldı.

Telefonları ünitenin üstüne monte etmenin bir yolunu bulabilirsem, onları bir servo ile ileri geri döndürebileceğim ve bunu ek bir bildirim olarak kullanabileceğim fikri beni etkiledi.

Önce 3,5 mm'lik tapayı deldim ve elmas anahtarı söktüm, sonra bunları bir parça dişli çubuğa yerleştirdim. Daha sonra, çubuğun servonun üzerine güvenli bir şekilde (ve düz bir şekilde) oturabilmesi için plastik bir konektöre bir somun yapıştırdım. Çubuğun diğer ucuna başka bir somun ekledim. Son olarak, çubuğun üst kısmını kulaklık bandına yapıştırmak ve ayrıca tertibatın altındaki somunu kapatmak için gri Sugru kullandım. Sugru'yu duymadıysanız, küçük renkli poşetlerde gelen kalıplanabilir bir yapıştırıcıdır - Play-Doh gibi kalıplanır, ancak süper yapıştırıcı gibi yapışır ve plastik gibi sertleşir!

Son zamanlardaki soğuk hava ile Sugru'nun tamamen sertleşmesi birkaç gün sürdü, ancak kulaklıklar ve standları kısa sürede son montaj için hazırdı.

Adım 6: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Pi, HAT ve Servo yedek kulübesinde gayet iyi çalışıyordu, bu yüzden sıradaki iş onları kasaya almaktı. Büyük bileşenlere başlamadan önce, ses seviyesi kadranı, kulaklık soketi ve "metal bant" anahtarına sabitlemek için biraz arta kalan gri Sugru kullandım ve kozmetikleri ayırdım. Ayrıca orijinal Oynat, Durdur, FF ve Geri düğmelerini bir parça plastik boruya yapıştırdım, böylece tam olarak doğru yerde kalacaklardı. Bu sefer düğmelerin hiçbirini tekrar kullanmamak utanç vericiydi ama kontrol edebilecekleri hiçbir şey yoktu!

Servoyu yerinde tutmak için gri Sugru'nun sonunu, şaftı genişletilmiş kulaklık soketinden içeri sokarken kullandım. Kasanın diğer yarısına geçerken, HAT ve Pi düzeneğini bant kapısına sabitlemek için siyah Sugru kullandım, böylece açılacaklar. Son küçük dokunuştan gerçekten keyif aldım - kapı sıkıca kapalı tutulacak şekilde bir GeoMag mıknatısına sabitlemek.

Pi & Servo'nun birbiriyle çatışacağından korktuğum için iki yarıyı bir araya getirmek gergin bir işti, ancak sonunda kitabımda bol miktarda yedek bir milimetre vardı. Korkunç açılan kapı, gelecekteki servisler için iç kısma tam erişim sağlayacağından, iki yarıyı birbirine sıcak yapıştırdım ve yağlı parmak izlerimi sildikten sonra kulaklık tertibatını üste yerleştirdim - bitti!

7. Adım: Sessiz Takıntı

sessiz takıntı
sessiz takıntı
sessiz takıntı
sessiz takıntı

Yeniden Kullanım Yarışmasında İkincilik Ödülü

Önerilen: