İçindekiler:

Raspberry Pi Akıllı Tartı: 10 Adım (Resimlerle)
Raspberry Pi Akıllı Tartı: 10 Adım (Resimlerle)

Video: Raspberry Pi Akıllı Tartı: 10 Adım (Resimlerle)

Video: Raspberry Pi Akıllı Tartı: 10 Adım (Resimlerle)
Video: Beni ALLAH Yargılar, SEN Değil..! 2024, Temmuz
Anonim
Image
Image

Her sabah o sıkıcı, eski, kötü haber banyo tartısına bakmaktan bıktınız mı? Her adımınızda olduğu gibi size sık sık "Senden nefret ediyorum" dediğin. Neden hiç kimse kullanımı gerçekten eğlenceli veya motive edici bir ölçek yapmadı? Sadece akıllı değil, aynı zamanda gününüzü aydınlatacak biraz daha fazla kişiliğe sahip bir ölçek yaratmanın zamanı geldi. Yerleşik bir mizah anlayışıyla gelen kendi hacklenebilir, ağırlık takibi, yazılı mesajlaşma banyo tartımızı oluşturacağız.

Bu, hackleyebileceğiniz bir Python betiği tarafından kontrol edilen web bağlantılı bir ölçek oluşturmak için bir Wii denge tahtası, bir Raspberry Pi ve bir çevrimiçi veri analizi platformunu birleştiren eğlenceli ve kolay bir projedir.

Proje seviyesi: Başlangıç Yaklaşık tamamlama süresi: 20 dakikaEğlence faktörü: Ölçülemez

Bu adım adım öğreticide şunları yapacaksınız:

  • Bluetooth aracılığıyla bir Wii denge tahtasını bir Raspberry Pi'ye bağlayın denge tahtasına bastığınızda ağırlığınızı ölçen bir Python betiği çalıştırın
  • ağırlığınızı bir bulut hizmetine aktarmak için bir Raspberry Pi kullanın (İlk Durum)
  • Kendinizi her tarttığınızda bir SMS bildirimi ayarlayın
  • web tarayıcınızdan erişebileceğiniz bir ağırlık takip panosu oluşturun

Adım 1: Ekipman

Wii Denge Tahtası Terazisi
Wii Denge Tahtası Terazisi

Bu eğitimde kullanacağımız tüm ekipmanların bir listesi ve her bir öğeyi nereden satın alabileceğinize ilişkin bağlantılar burada.

  • SD kart ve Güç Kaynağı ile Raspberry Pi 3 (https://init.st/psuufmj)
  • Wii Denge Kurulu (https://init.st/qg4ynjl)
  • Wii Fit Şarj Edilebilir Pil Paketi (https://init.st/iyypz2i)
  • 3/8" Keçe Pedler (https://init.st/8gywmjj)
  • Kalem (Size nereden kalem alacağınızın linkini vermiyorum… bunlardan birine sahip olmalısınız)

Not: Raspberry Pi 1 veya 2'niz varsa, bir bluetooth adaptörüne ihtiyacınız olacaktır (https://init.st/7y3bcoe)

Adım 2: Wii Balance Board Ölçeği

Neden Wii Denge Kurulu? Bluetooth bağlantısına sahip gerçekten güzel, dayanıklı bir ölçek olduğu ortaya çıkıyor. Bu, kilonuzu bir Python betiğinde okumak ve bu ölçümleri harika şeyler yapmak için çevrimiçi bir veri servisine göndermek için onu tek kartlı bir bilgisayara (Raspberry Pi) bağlamamıza izin verecektir. Ayrıca, sizin veya tanıdığınız birinin toz toplayan birine sahip olma ihtimali yüksektir.

Bu projeyi gerçekten pratik ve kullanışlı hale getirmek için Wii Balance Board'umuzda birkaç basit değişiklik yapmamız gerekecek.

3. Adım: Bluetooth Kurulumu

Raspberry Pi 3, dahili bluetooth ile birlikte gelir, Wii Balance Board ile iletişim kurmak için ihtiyacımız olan tek şey. Bir Raspberry Pi 1 veya 2'niz varsa, bir adaptör takmak için USB bağlantı noktalarımızdan birini kullanmamız gerekecek.

Pi'nizi açın (zaten Raspbian'ı kurduğunuzu ve açıldığını varsayıyorum) ve Raspberry Pi terminal pencerenize gidin. "hcitool dev" komutu ile bluetooth dongle'ınızın adresini görebilirsiniz:

$ hcitool devCihazlar:hci0 00:1A:7D:DA:71:13

Python scriptlerimizde kullanacağımız bluetooth modüllerini kurun:

$ sudo apt-get install python-bluetooth

Kurulum tamamlandıktan sonra Wii Balance Board ile bağlantı kurmaya ve iletişim kurmaya hazırız. Çoğu bluetooth cihazımızda yaptığımız gibi Panomuzu Pi ile kalıcı olarak eşleştirmeyeceğiz. Wii Balance Board, hiçbir zaman bir Wii'den başka bir şeyle eşleştirilmek üzere tasarlanmamıştı ve kalıcı eşleştirmenin oldukça kafa karıştırıcı bir zorluk olduğu ortaya çıktı. Python betiğimizi her çalıştırdığımızda eşleştirme gerçekleşecektir.

Adım 4: Ölçeği Okuma

Wii Balance Board'umuzu Raspberry Pi'mize bağlamanın zamanı geldi. Bunu, Stavros Korokithakis'in Gr8W8Upd8M8.py betiğinin (https://github.com/skorokithakis/gr8w8upd8m8) bir sürümünü değiştirerek yapacağız. Bu adım için kullanacağımız python betiği burada yer almaktadır. Bu dosyanın içeriğini Raspberry Pi'nizde oluşturduğunuz bir dosyaya kopyalayabilir veya bu proje için kullanacağımız tüm python dosyalarını klonlayabilirsiniz. İkincisini yapalım. Raspberry Pi'nizdeki bir terminale aşağıdaki komutları yazın:

$ cd ~$ git klon $ git klon https:github.com/initialstate/smart-scale.git 'akıllı-ölçeğe' klonlama… uzak: Nesneleri sayma: 14, tamamlandı. uzak: Nesneleri sıkıştırma: %100 (12/12), tamamlandı. uzak: Toplam 14 (delta 1), yeniden kullanılan 8 (delta 0), yeniden paketlenen 0 Nesneleri ambalajından çıkarma: %100 (14/14), tamamlandı. Bağlantı kontrol ediliyor… tamamlandı.

'akıllı ölçeğe' klonlama… uzak: Nesneleri sayma: 14, tamamlandı. uzak: Nesneleri sıkıştırma: %100 (12/12), tamamlandı. uzak: Toplam 14 (delta 1), yeniden kullanılan 8 (delta 0), yeniden paketlenen 0 Nesneleri ambalajından çıkarma: %100 (14/14), tamamlandı. Bağlantı kontrol ediliyor… tamamlandı.

Yeni akıllı ölçek dizininde iki python dosyası görmelisiniz - smartscale.py ve wiiboard_test.py.

$ cd akıllı ölçek$ lsREADME.md smartscale.py wiiboard_test.py

İletişimi test etmek ve Wii Balance Board'dan ağırlık okumaları almak için wiiboard_test.py komut dosyasını çalıştırın:

$ sudo python wiiboard_test.py

Aşağıdaki yanıtı göreceksiniz:

Tahtayı keşfetme… Şimdi tahtadaki kırmızı senkronizasyon düğmesine basın

Kırmızı eşitleme düğmesini bulmak için Kartın altındaki pil kapağını çıkarın. Komut dosyasını çalıştırdıktan sonra birkaç saniye içinde düğmeye bastığınızdan emin olun, aksi takdirde bir zaman aşımı meydana gelir. Başarılı olduktan sonra, aşağıdakine benzer bir şey göreceksiniz:

00:23:CC:2E:E1:44 adresinde Wiiboard bulundu…Bağlanmaya çalışılıyor… 00:23:CC:2E:E1:44 adresinde Wiiboard'a bağlı

wiiboard_test.py betiği, 10. satırda belirtilen ağırlık ölçümlerinin sayısını alıyor ve ortalamayı veriyor:

# --------- Kullanıcı Ayarları ---------WEIGHT_SAMPLES = 500# ------------------------- --------

Ölçülen ağırlıktaki değişimi ve her ölçüm için gereken süreyi görmek için değeri değiştirerek ve komut dosyasını yeniden çalıştırarak bu sayı ile oynayabilirsiniz. Kendinizi tartın, köpeğinizi tartın, ne olursa olsun tartın ve ölçümlerin anlamlı olup olmadığına bakın. Komut dosyasını durdurmak için CTRL+C tuşlarına basın.

Artık Wii Balance Board'unuzu Raspberry Pi bağlantılı bir teraziye başarıyla dönüştürdünüz. Şimdi, serin bir ölçek yapalım.

Adım 5: Donanım Tweaks

Donanım Tweaks
Donanım Tweaks

Nintendo, Wii Balance Board'unuzu her zaman dört adet AA pil ile çalıştıracağınızı ve AC güç adaptörü içermediğini varsayıyordu. Wii Board'umuzu Bluetooth aracılığıyla Pi'mizle kalıcı olarak eşleştiremediğimiz için yalnızca pil gücüne sahip olmak elverişsiz olacaktır. Senkronize etmemiz ve ardından pilleri boşaltmadan senkronize kalmasına izin vermemiz gerekiyor, böylece basitçe tartıya çıkıp tartabiliriz. Neyse ki, bir duvar prizinden sürekli güç sağlamak için kullanabileceğimiz Wii Balance Board için yapılmış birkaç üçüncü taraf adaptör var. Pilleri bir pil takımıyla değiştirin ve AC adaptörünü bir duvar prizine takın.

Python betiğimizi her çalıştırdığımızda Wii Balance Board ve Raspberry Pi'yi eşleştirmek zorunda kalmamız, senkronizasyon düğmesinin konumu nedeniyle başka bir rahatsızlık veriyor. Senkronizasyon düğmesi Wii Board'un altındadır, yani her senkronizasyon yapmamız gerektiğinde onu ters çevirmemiz gerekir. Bunu, yukarıda gösterildiği gibi bir kurşun kalem ve üç adet 3/8" keçe ped kullanarak küçük bir kol yaparak düzeltebiliriz. Şarj edilebilir pil takımı, senkron düğmesini Kart'ın alt yüzeyinde gösterir. Senkronizasyon düğmesinden Tahtanın dış önüne doğru. Sabit bir pivot oluşturmak için kalemin ortasına üç adet 3/8" keçe ped (veya benzeri bir şey) yerleştirin. Birinin yanlışlıkla kalemi dışarı atmasını istemediğiniz için, kalemin çok fazla kısmını Tahtadan dışarı çıkarmamaya dikkat edin. Tahtayı ters çevirin ve kola basitçe basarak senkronizasyon düğmesine basabilirsiniz. Biraz hileli ama etkili.

Wii Board'unuzu nasıl sakladığınıza bağlı olarak, Board'un ayaklarından kauçuk tutma pedlerini çıkarmak isteyebilirsiniz (pedler sadece kaldırabileceğiniz çıkartmalardır). 3/8 keçe pedler, kolay kayma için Board'un ayaklarına yerleştirilebilir.

Adım 6: İlk Durum

Başlangıç hali
Başlangıç hali

Ağırlık/verilerimizi bir bulut hizmetine aktarmak ve bu hizmetin verilerimizi dizüstü veya mobil cihazımızdan erişebileceğimiz güzel bir panoya dönüştürmesini istiyoruz. Verilerimizin bir hedefe ihtiyacı var. Bu hedef olarak İlk Durumu kullanacağız.

Adım 1: İlk Durum Hesabına Kaydolun https://iot.app.initialstate.com adresine gidin ve yeni bir hesap oluşturun.

Adım 2: ISStreamer'ı kurun İlk Durum Python modülünü Pi'nize yükleyin: Bir komut isteminde (önce Pi'nize SSH eklemeyi unutmayın), aşağıdaki komutu çalıştırın:

$ cd /home/pi/$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Adım 3: Biraz Automagic yapın Adım 2'den sonra ekranda aşağıdaki çıktıya benzer bir şey göreceksiniz:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: ISStreamer Python Kolay Kurulumu Başlıyor! Kurulumu birkaç dakika sürebilir, biraz kahve alın:) Ama tekrar gelmeyi unutmayın, daha sonra sorularım olacak!

easy_install bulundu: setuptools 1.1.6

Bulunan pip: /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg'den (python 2.7) pip 1.5.6 pip ana sürüm: 1 pip küçük sürüm: 5 ISStreamer bulundu, güncelleniyor… Gereksinim zaten güncel: /Library/Python/2.7/site-packages'de ISStreamer Temizleniyor… Otomatik olarak örnek bir komut dosyası almak ister misiniz? [e/H]

(İlk Durum Python akış modülünü daha önce hiç yüklemediyseniz çıktı farklı olabilir ve daha uzun sürebilir)

Otomatik olarak bir örnek komut dosyası almanız istendiğinde, y yazın. Bu, Pi'mizden İlk Duruma veri aktarabileceğimizden emin olmak için çalıştırabileceğimiz bir test komut dosyası oluşturacaktır. Sorulacak:

Örneği nereye kaydetmek istiyorsunuz? [varsayılan:./is_example.py]:

Varsayılanı kabul etmek için özel bir yerel yol yazabilir veya enter tuşuna basabilirsiniz. Initial State hesabınızı kaydettiğinizde yeni oluşturduğunuz kullanıcı adınız ve şifreniz istenecektir. Her ikisini de girin ve kurulum tamamlanacaktır.

4. Adım: Anahtarlara Erişim

Oluşturulan örnek scripte bir göz atalım.

$ nano is_example.py

15. satırda, streamer = Streamer(bucket_ … ile başlayan bir satır göreceksiniz. Bu satırlar, “Python Stream Example” adında yeni bir veri grubu oluşturur ve hesabınızla ilişkilendirilir. Bu ilişkilendirme, access_key=”…” nedeniyle gerçekleşir. aynı satırdaki parametre. Bu uzun harf ve rakamlar dizisi, Başlangıç Durumu hesap erişim anahtarınızdır. Web tarayıcınızda Başlangıç Durumu hesabınıza giderseniz, sağ üstteki kullanıcı adınıza tıklayın ve ardından “Ayarlarım”a gidin., aynı erişim anahtarını sayfanın alt kısmında "Akış Erişim Anahtarları" altında bulacaksınız.

Her veri akışı oluşturduğunuzda, bu erişim anahtarı bu veri akışını hesabınıza yönlendirecektir (bu nedenle anahtarınızı kimseyle paylaşmayın).

Adım 5: Örneği Çalıştırın

İlk Durum hesabınıza bir veri akışı oluşturabileceğimizden emin olmak için test komut dosyasını çalıştırın. Aşağıdakileri çalıştırın:

$ python is_example.py

6. Adım: Kar

Web tarayıcınızda İlk Durum hesabınıza geri dönün. Günlük rafınızın solunda “Python Akış Örneği” adlı yeni bir veri paketi görünmelidir (sayfayı yenilemeniz gerekebilir). Aynı verileri pano formunda görmek için Kutucuklardaki verileri görüntüleyebilirsiniz.

7. Adım: Son Komut Dosyası

Bölüm 2'de "git clone https://github.com/InitialState/smart-scale.git " komutunu çalıştırdığınızı varsayarsak, her şeyi bir araya getiren son komut dosyası ~/smart-scale dizininizde smartscale.py olarak adlandırılır. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Çalıştırmadan önce komut dosyasında birkaç ayarın yapılması gerekir. nano gibi favori metin düzenleyicinizde smartscale.py'yi açın.

$ cd ~$ cd akıllı ölçek$ nano akıllı ölçek.py

Bu dosyanın üst kısmına yakın bir yerde Kullanıcı Ayarları bölümü vardır.

# --------- Kullanıcı Ayarları ---------BUCKET_NAME = ":apple: Kilo Geçmişim"BUCKET_KEY = "weight11"ACCESS_KEY = "BAŞLANGIÇ DURUM ERİŞİM ANAHTARI BURAYA YERLEŞTİRİN"METRIC_UNITS = YanlışWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_GEÇMİŞ = 7# ---------------------------------

  • BUCKET_NAME, ağırlığınızın/verilerinizin akışının yapılacağı İlk Durum veri paketinin adını belirler. Bu, burada ayarlanabilir ve daha sonra kullanıcı arayüzünde değiştirilebilir.
  • BUCKET_KEY, verilerinizin nereye akacağını belirten benzersiz paket tanımlayıcısıdır. Farklı bir kova/pano oluşturmak istiyorsanız, burada farklı bir tanımlayıcı kullanın (*not, bir kovayı arşivlerseniz anahtarını yeni bir kovada yeniden kullanamazsınız).
  • ACCESS_KEY, İlk Durum hesap anahtarınızdır. ACCESS_KEY'inizi bu alana koymazsanız, verileriniz hesabınızda görünmeyecektir.
  • METRIC_UNITS, True olarak ayarlanmışsa ağırlığınızı kg veya False olarak ayarlanmışsa lb olarak belirtmenize olanak tanır.
  • WEIGHT_SAMPLES, gerçek ağırlığınızı elde etmek için birlikte kaç ölçümün alındığını ve ortalamasının alındığını belirtir. 500 ölçüm yaklaşık 4-5 saniye sürer ve oldukça doğru sonuçlar verir.
  • THROWAWAY_SAMPLES, tahtaya ilk adım attığınızda atılan numunelerin sayısını belirtir. Bu, ilk adımların ve kaymanın son ölçümü atmasını engeller. Bu her zaman WEIGHT_SAMPLES değerinden çok daha az olmalıdır.
  • WEIGHT_HISTORY, fazladan bir güncelleme gönderilmeden önce alınan ölçümlerin sayısını ayarlar. Yalnızca iki saat veya daha uzun aralıklarla alınan ölçümler geçmişe sayılır.

Bu bölümdeki her parametreyi belirledikten ve değişikliklerinizi kaydettikten sonra, son komut dosyasını çalıştırmaya hazırsınız. Senaryoyu çalıştırmadan önce, ne yapacağını gözden geçirelim.

  • Senaryonun başlangıcında, Wii Balance Board'unuzu Raspberry Pi'nizle eşleştirmeniz istenecektir. İstendiğinde eşitleme düğmesine basmak için Bölüm 2: Donanım Tweaks bölümünde birlikte hacklediğiniz kolu kullanın.
  • Komut dosyası çalıştığında, kilonuzu ölçmeye başlamak için Wii Board'a adım atın. 4-5 saniye sonra kilonuz otomatik olarak İlk Durum hesabınıza gönderilecektir.
  • SMS bildirimlerini ayarladıktan sonra (birkaç adımda), ölçümünüzün hemen ardından bir metin mesajı alacaksınız.

Sihri başlatmak için komut dosyasını çalıştırın.

$ sudo python smartscale.py

Adım 8: Gösterge Tablosu

Gösterge Paneli
Gösterge Paneli

İlk Durum hesabınıza gidin ve BUCKET_NAME parametresine (yani Kilo Geçmişim) karşılık gelen ada sahip yeni veri paketine tıklayın. Kilo geçmişi kontrol panelinizi görüntülemek için Fayanslara tıklayın. Döşemelerde verilerinizi ilk görüntülediğinizde üç kutucuk görmelisiniz - Güncelleme, Ağırlık Tarihi ve Ağırlık (lb). Kutucukları yeniden boyutlandırarak ve taşıyarak, görünüm türlerini değiştirerek ve hatta kutucuklar ekleyerek panonuzu özelleştirebilirsiniz. Bu gösterge panosu size bir bakışta kilo geçmişinizi görme olanağı verir. Mobil uyumludur ve hatta başkalarıyla paylaşabilirsiniz.

Verilerinize daha fazla kişilik ve bağlam kazandırmak için gösterge tablonuza bir arka plan resmi ekleyebilirsiniz.

9. Adım: SMS

SMS
SMS

Tartı her ağırlık ölçümü yaptığında SMS uyarısı oluşturalım. Ağırlık geçmişi veri paketinizin yüklendiğinden emin olun.

  1. Veri kovası penceresinde kovanın ayarlarına (adının altında) tıklayın.
  2. Tetikleyiciler sekmesine tıklayın.
  3. Tetiklenecek veri akışını seçin. Bir veri paketi yüklendikten sonra mevcut akışlar arasından seçim yapmak için açılır listeyi kullanabilir veya akış adını/anahtarını manuel olarak yazabilirsiniz. Yukarıdaki örnek ekran görüntüsünde "Güncelle" seçilmiştir.
  4. Koşullu operatörü seçin, bu durumda 'eşleşme'.
  5. Bir eylemi tetikleyecek Tetik değerini seçin (istenen değeri manuel olarak yazın). Metrik birimler kullanmıyorsanız lb, metrik birimler kullanıyorsanız kg olarak yazın. "Güncelleme" akışı "lb" (veya "kg") içerdiğinde, bir metin mesajı bildirimi alırsınız.
  6. Tetikleyici koşulunu eklemek için '+' düğmesini tıklayın.
  7. "Bildirilecek kişiler" alanına e-posta adresinizi veya telefon numaranızı girin.
  8. İletişim bilgilerini eklemek için '+' düğmesini tıklayın.
  9. Kurulumu tamamlamak için yeni bir telefon numarası ekliyorsanız doğrulama kodunu girin.
  10. Ana ekrana dönmek için alttaki Bitti düğmesini tıklayın. Tetikleyiciniz artık canlı ve koşul karşılandığında tetiklenecek.

Kurulum tamamlandıktan sonra, kendinizi her tarttığınızda, kilonuzu, son ölçümden bu yana kilonuzun ne kadar değiştiğini ve rastgele bir şaka / hakaret / iltifat içeren bir SMS alacaksınız.

Adım 10: Sonuç

Şimdi oluşturduklarınızın üzerine inşa edebileceğiniz sınırsız seçenek var. İşte bu proje için bazı fikirler:

  • Kendi kişisel sağlık panonuzu oluşturmak için diğer kaynaklardan gelen verileri aynı ağırlık geçmişi panosuna (bilgi) aktarabilirsiniz.
  • messageWeighFirst, messageWeighLess, messageWeighMore ve messageWeighSame işlevlerindeki şakaları kendi mizah anlayışınıza göre değiştirebilirsiniz.
  • Şakaları pratik mesajlara dönüştürebilir veya kaldırabilir ve kendi vücut ağırlığınızın yanı sıra daha önemli bir şeyin ağırlığını takip etmek için tartı kodunu kullanabilirsiniz.
  • Aynı yaklaşımı kullanarak kendi akıllı bira/şarap buzdolabınızı oluşturabilirsiniz. Burada bunun için yapılmış harika bir öğretici zaten var.

Bu eğitim size harika bir şey yaratmanız için ilham veriyorsa, benden haber verin.

Önerilen: