Daftar Isi:

Skala Cerdas Raspberry Pi: 10 Langkah (dengan Gambar)
Skala Cerdas Raspberry Pi: 10 Langkah (dengan Gambar)

Video: Skala Cerdas Raspberry Pi: 10 Langkah (dengan Gambar)

Video: Skala Cerdas Raspberry Pi: 10 Langkah (dengan Gambar)
Video: Object Identification & Animal Recognition With Raspberry Pi + OpenCV + Python 2024, Juli
Anonim
Image
Image

Apakah Anda lelah menatap timbangan kamar mandi yang membosankan, lama, dan buruk itu setiap pagi? Yang sering kamu ucapkan "Aku benci kamu" sama kamu setiap kali kamu menginjaknya. Mengapa tidak ada yang membuat skala yang benar-benar menyenangkan atau memotivasi untuk digunakan? Saatnya membuat timbangan yang tidak hanya cerdas tetapi memiliki sedikit kepribadian untuk mencerahkan hari Anda. Kami akan membuat timbangan kamar mandi perpesanan teks yang dapat diretas, pelacakan berat, dan dilengkapi dengan selera humor bawaan.

Ini adalah proyek yang menyenangkan dan mudah yang menggabungkan papan keseimbangan Wii, Raspberry Pi, dan platform analitik data online untuk membuat skala yang terhubung ke web yang dikendalikan oleh skrip Python yang dapat Anda retas.

Level proyek: PemulaPerkiraan waktu untuk menyelesaikan: 20 menitFaktor menyenangkan: Tidak terukur

Dalam tutorial langkah demi langkah ini, Anda akan:

  • sambungkan papan keseimbangan Wii ke Raspberry Pi melalui bluetooth, jalankan skrip Python yang mengukur berat badan Anda saat Anda menginjak papan keseimbangan
  • gunakan Raspberry Pi untuk mengalirkan bobot Anda ke layanan cloud (Status Awal)
  • siapkan notifikasi SMS setiap kali Anda menimbang diri sendiri
  • buat dasbor pelacakan berat badan yang dapat Anda akses di browser web Anda

Langkah 1: Peralatan

Skala Papan Keseimbangan Wii
Skala Papan Keseimbangan Wii

Berikut adalah daftar semua peralatan yang akan kita gunakan dalam tutorial ini dengan tautan ke tempat Anda dapat membeli setiap item.

  • Raspberry Pi 3 dengan kartu SD dan Power Supply (https://init.st/psuufmj)
  • Papan Keseimbangan Wii (https://init.st/qg4ynjl)
  • Paket Baterai Isi Ulang Wii Fit (https://init.st/iyypz2i)
  • Bantalan Felt 3/8" (https://init.st/8gywmjj)
  • Pensil (Saya tidak memberi Anda tautan ke tempat untuk membeli pensil … Anda harus memilikinya)

Catatan: Jika Anda memiliki Raspberry Pi 1 atau 2, Anda memerlukan adaptor bluetooth (https://init.st/7y3bcoe)

Langkah 2: Skala Papan Keseimbangan Wii

Mengapa Papan Keseimbangan Wii? Ternyata ini adalah timbangan yang sangat bagus dan tahan lama yang memiliki konektivitas bluetooth. Ini akan memungkinkan kami untuk menghubungkannya ke komputer papan tunggal (Raspberry Pi) untuk membaca berat badan Anda dalam skrip Python dan mengirimkan pengukuran tersebut ke layanan data online untuk melakukan hal-hal keren. Plus, ada kemungkinan besar Anda atau seseorang yang Anda kenal sudah memilikinya yang hanya mengumpulkan debu.

Kita perlu membuat beberapa modifikasi sederhana pada Wii Balance Board kita untuk benar-benar membuat proyek ini praktis dan nyaman.

Langkah 3: Pengaturan Bluetooth

Raspberry Pi 3 hadir dengan bluetooth bawaan, semua yang kita butuhkan untuk berkomunikasi dengan Wii Balance Board. Jika Anda memiliki Raspberry Pi 1 atau 2, kami harus menggunakan salah satu port USB kami untuk menyambungkan adaptor.

Nyalakan Pi Anda (saya berasumsi Anda telah menginstal Raspbian dan boot) dan pergi ke jendela terminal Raspberry Pi Anda. Anda dapat melihat alamat dongle bluetooth Anda dengan perintah "hcitool dev":

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

Instal modul bluetooth yang akan kita gunakan dalam skrip Python kita:

$ sudo apt-get install python-bluetooth

Setelah instalasi selesai, kami siap untuk terhubung dan berkomunikasi dengan Wii Balance Board. Kami tidak akan secara permanen memasangkan Papan kami dengan Pi kami seperti yang kami lakukan dengan sebagian besar perangkat bluetooth kami. Papan Keseimbangan Wii tidak pernah dimaksudkan untuk dipasangkan dengan apa pun selain Wii, dan pemasangan permanen terbukti menjadi tantangan yang cukup membingungkan. Pairing akan terjadi setiap kali kita menjalankan script Python kita.

Langkah 4: Membaca Skala

Saatnya untuk menghubungkan Papan Saldo Wii kami ke Raspberry Pi kami. Kami akan melakukan ini dengan memodifikasi versi skrip Gr8W8Upd8M8.py Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). Skrip python yang akan kita gunakan untuk langkah ini terletak di sini. Anda dapat menyalin konten file ini ke file yang Anda buat di Raspberry Pi Anda atau Anda dapat mengkloning semua file python yang akan kami gunakan untuk keseluruhan proyek ini. Mari kita lakukan yang terakhir. Ketik perintah berikut ke terminal di Raspberry Pi Anda:

$ cd ~$ git clone $ git clone https:github.com/initialstate/smart-scale.git cloning ke 'smart-scale'… remote: Menghitung objek: 14, selesai. remote: Mengompresi objek: 100% (12/12), selesai. remote: Total 14 (delta 1), digunakan kembali 8 (delta 0), pack-reused 0 Membongkar objek: 100% (14/14), selesai. Memeriksa konektivitas… selesai.

kloning ke 'smart-scale'… jarak jauh: Menghitung objek: 14, selesai. remote: Mengompresi objek: 100% (12/12), selesai. remote: Total 14 (delta 1), digunakan kembali 8 (delta 0), pack-reused 0 Membongkar objek: 100% (14/14), selesai. Memeriksa konektivitas… selesai.

Anda akan melihat dua file python di direktori skala pintar baru - smartscale.py dan wiiboard_test.py.

$ cd smart-scale$ lsREADME.md smartscale.py wiiboard_test.py

Jalankan skrip wiiboard_test.py untuk menguji komunikasi dan mengambil pembacaan bobot dari Wii Balance Board:

$ sudo python wiiboard_test.py

Anda akan melihat respons berikut:

Menemukan papan…Tekan tombol sinkronisasi merah di papan sekarang

Lepaskan penutup baterai di bawah Papan untuk menemukan tombol sinkronisasi merah. Pastikan Anda menekan tombol dalam beberapa detik setelah menjalankan skrip atau batas waktu akan terjadi. Setelah berhasil, Anda akan melihat sesuatu yang mirip dengan yang berikut:

Menemukan Wiiboard di alamat 00:23:CC:2E:E1:44Mencoba terhubung…Tersambung ke Wiiboard di alamat 00:23:CC:2E:E1:44Wiiboard terhubungACK ke penulisan data yang diterima84.9185297 lbs84.8826412 lbs84.9275927 lbs

Skrip wiiboard_test.py mengambil jumlah pengukuran berat yang ditentukan pada baris 10 dan menghasilkan rata-rata:

# --------- Pengaturan Pengguna ---------WEIGHT_SAMPLES = 500# ------------------------- --------

Anda dapat bermain dengan angka ini dengan mengubah nilainya dan menjalankan kembali skrip untuk melihat variasi berat yang diukur dan waktu yang diperlukan untuk setiap pengukuran. Timbang diri Anda, timbang anjing Anda, timbang apa pun dan lihat apakah ukurannya masuk akal. Untuk menghentikan skrip, tekan CTRL+C.

Anda sekarang telah berhasil mengubah Papan Saldo Wii Anda menjadi skala terhubung Raspberry Pi. Sekarang, mari kita buat skala yang keren.

Langkah 5: Tweak Perangkat Keras

Tweak Perangkat Keras
Tweak Perangkat Keras

Nintendo berasumsi Anda akan selalu memberi daya pada Wii Balance Board Anda dengan empat baterai AA dan tidak menyertakan adaptor daya AC. Hanya memiliki daya baterai akan merepotkan karena kami tidak dapat memasangkan Papan Wii kami secara permanen ke Pi kami melalui bluetooth. Kita perlu menyinkronkannya, lalu membiarkannya tetap tersinkronisasi tanpa menguras baterai sehingga kita cukup menginjak timbangan dan menimbang. Untungnya, ada beberapa adaptor pihak ketiga yang dibuat untuk Wii Balance Board yang dapat kita gunakan untuk menyediakan daya konstan dari stopkontak. Ganti baterai dengan baterai dan colokkan adaptor ac ke stopkontak.

Harus memasangkan Wii Balance Board dan Raspberry Pi setiap kali kami menjalankan skrip Python kami menghadirkan ketidaknyamanan lain karena lokasi tombol sinkronisasi. Tombol sinkronisasi ada di bagian bawah Papan Wii, yang berarti kita harus membaliknya setiap kali kita perlu menyinkronkan. Kita dapat memperbaikinya dengan membuat tuas kecil menggunakan pensil dan tiga bantalan felt 3/8" seperti yang ditunjukkan di atas. Baterai isi ulang memperlihatkan tombol sinkronisasi ke permukaan bawah Papan. Rekatkan pensil (atau yang serupa) yang membentang dari tombol sinkronisasi ke bagian depan luar Papan. Tumpuk tiga bantalan felt 3/8" (atau yang serupa) di tengah pensil untuk membuat poros stasioner. Berhati-hatilah untuk tidak mengekspos terlalu banyak pensil dari Papan karena Anda tidak ingin seseorang secara tidak sengaja menendangnya keluar. Balikkan Papan dan Anda dapat menekan tombol sinkronisasi hanya dengan menekan tuas. Sedikit hack tapi efektif.

Bergantung pada cara Anda menyimpan Papan Wii Anda, Anda mungkin ingin melepas bantalan pegangan karet dari kaki Papan (bantalan hanyalah stiker yang dapat Anda copot). Bantalan felt 3/8 dapat diletakkan di kaki Papan agar mudah digeser.

Langkah 6: Status Awal

Keadaan Awal
Keadaan Awal

Kami ingin mengalirkan berat/data kami ke layanan cloud dan meminta layanan itu mengubah data kami menjadi dasbor bagus yang dapat kami akses dari laptop atau perangkat seluler kami. Data kami membutuhkan tujuan. Kami akan menggunakan Status Awal sebagai tujuan itu.

Langkah 1: Daftar untuk Akun Negara Awal Buka https://iot.app.initialstate.com dan buat akun baru.

Langkah 2: Instal ISStreamerInstall modul Initial State Python ke Pi Anda: Pada prompt perintah (jangan lupa untuk SSH ke Pi Anda terlebih dahulu), jalankan perintah berikut:

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

Langkah 3: Buat Automagic Setelah Langkah 2 Anda akan melihat sesuatu yang mirip dengan output berikut di layar:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Memulai Instalasi Mudah ISStreamer Python! Ini mungkin memerlukan beberapa menit untuk menginstal, ambil kopi:) Tapi jangan lupa untuk kembali, saya akan memiliki pertanyaan nanti!

Ditemukan easy_install: setuptools 1.1.6

Ditemukan pip: pip 1.5.6 dari /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip versi utama: 1 pip versi minor: 5 ISStreamer ditemukan, memperbarui… Persyaratan sudah up-to-date: ISStreamer di /Library/Python/2.7/site-packages Membersihkan… Apakah Anda ingin mendapatkan contoh skrip secara otomatis? [y/T]

(outputnya mungkin berbeda dan membutuhkan waktu lebih lama jika Anda belum pernah menginstal modul streaming Initial State Python sebelumnya)

Saat diminta untuk mendapatkan skrip contoh secara otomatis, ketik y. Ini akan membuat skrip pengujian yang dapat kita jalankan untuk memastikan bahwa kita dapat mengalirkan data ke Status Awal dari Pi kita. Anda akan diminta:

Di mana Anda ingin menyimpan contoh? [default:./is_example.py]:

Anda dapat mengetik jalur lokal khusus atau tekan enter untuk menerima default. Anda akan dimintai nama pengguna dan kata sandi yang baru saja Anda buat saat mendaftarkan akun Status Awal Anda. Masukkan keduanya dan instalasi akan selesai.

Langkah 4: Tombol Akses

Mari kita lihat contoh script yang telah dibuat.

$ nano is_example.py

Pada baris 15, Anda akan melihat baris yang dimulai dengan streamer = Streamer(bucket_ …. Baris ini membuat data bucket baru bernama “Python Stream Example” dan dikaitkan dengan akun Anda. Asosiasi ini terjadi karena access_key="…” parameter pada baris yang sama. Rangkaian huruf dan angka yang panjang itu adalah kunci akses akun Status Awal Anda. Jika Anda masuk ke akun Status Awal di browser web Anda, klik nama pengguna Anda di kanan atas, lalu buka "Pengaturan Saya", Anda akan menemukan kunci akses yang sama di bagian bawah halaman di bawah “Streaming Access Keys”.

Setiap kali Anda membuat aliran data, kunci akses itu akan mengarahkan aliran data itu ke akun Anda (jadi jangan bagikan kunci Anda dengan siapa pun).

Langkah 5: Jalankan Contoh

Jalankan skrip pengujian untuk memastikan kami dapat membuat aliran data ke akun Status Awal Anda. Jalankan yang berikut ini:

$ python is_example.py

Langkah 6: Untung

Kembali ke akun Status Awal Anda di browser web Anda. Keranjang data baru yang disebut "Contoh Aliran Python" seharusnya muncul di sebelah kiri di rak log Anda (Anda mungkin harus menyegarkan halaman). Anda dapat melihat data di Ubin untuk melihat data yang sama ini dalam bentuk dasbor.

Langkah 7: Skrip Akhir

Dengan asumsi Anda menjalankan perintah "git clone https://github.com/InitialState/smart-scale.git " di Bagian 2, skrip terakhir yang menyatukan semuanya disebut smartscale.py di direktori ~/smart-scale Anda. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Beberapa pengaturan perlu diatur dalam skrip sebelum Anda dapat menjalankannya. Buka smartscale.py di editor teks favorit Anda seperti nano.

$ cd ~$ cd smart-scale$ nano smartscale.py

Di dekat bagian atas file ini, ada bagian Pengaturan Pengguna.

# --------- Pengaturan Pengguna ---------BUCKET_NAME = ":apple: My Weight History"BUCKET_KEY = "weight11"ACCESS_KEY = "TEMPATKAN KUNCI AKSES NEGARA AWAL DI SINI"METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME menyetel nama keranjang data Status Awal tempat bobot/data Anda akan dialirkan. Ini dapat diatur di sini dan diubah nanti di UI.
  • BUCKET_KEY adalah pengidentifikasi bucket unik yang menentukan ke mana data Anda akan dialirkan. Jika Anda ingin membuat bucket/dasbor yang berbeda, gunakan pengenal yang berbeda di sini (*perhatikan, jika Anda mengarsipkan bucket, Anda tidak dapat menggunakan kembali kuncinya di bucket baru).
  • ACCESS_KEY adalah kunci akun Status Awal Anda. Jika Anda tidak memasukkan ACCESS_KEY Anda di bidang ini, data Anda tidak akan muncul di akun Anda.
  • METRIC_UNITS memungkinkan Anda untuk menentukan berat badan Anda dalam kg jika disetel ke True atau lb jika disetel ke False.
  • WEIGHT_SAMPLES menentukan berapa banyak pengukuran yang dilakukan dan dirata-ratakan bersama untuk mendapatkan berat Anda yang sebenarnya. 500 pengukuran membutuhkan waktu sekitar 4-5 detik dan memberikan hasil yang cukup akurat.
  • THROWAWAY_SAMPLES menentukan jumlah sampel yang dibuang saat Anda pertama kali menginjak papan. Ini mencegah langkah awal dan pergeseran dari membuang pengukuran akhir. Ini harus selalu jauh lebih kecil dari WEIGHT_SAMPLES.
  • WEIGHT_HISTORY menetapkan jumlah pengukuran yang dilakukan sebelum pembaruan tambahan dikirim. Hanya pengukuran yang dilakukan secara terpisah dua jam atau lebih yang diperhitungkan dalam sejarah.

Setelah Anda menentukan setiap parameter di bagian ini dan menyimpan perubahan Anda, Anda siap untuk menjalankan skrip terakhir. Sebelum kita menjalankan skrip, mari kita lihat apa yang akan dilakukan.

  • Di awal skrip, Anda akan diminta untuk memasangkan Papan Saldo Wii Anda dengan Raspberry Pi Anda. Gunakan tuas yang Anda retas bersama di bagian Bagian 2: Perbaikan Perangkat Keras untuk menekan tombol sinkronisasi saat diminta.
  • Setelah skrip berjalan, injak Wii Board untuk mulai mengukur berat badan Anda. Setelah 4-5 detik, berat badan Anda akan secara otomatis dikirim ke akun Status Awal Anda.
  • Setelah kami menyiapkan notifikasi SMS (dalam beberapa langkah), Anda akan menerima pesan teks segera setelah pengukuran.

Jalankan skrip untuk memulai keajaiban.

$ sudo python smartscale.py

Langkah 8: Dasbor

Dasbor
Dasbor

Buka akun Status Awal Anda dan klik keranjang data baru dengan nama yang sesuai dengan parameter BUCKET_NAME (yaitu, Riwayat Berat Badan Saya). Klik Tiles untuk melihat dasbor riwayat berat badan Anda. Anda akan melihat tiga ubin saat pertama kali melihat data Anda di Ubin - Pembaruan, Tanggal Berat, dan Berat (lb). Anda dapat menyesuaikan dasbor Anda dengan mengubah ukuran dan memindahkan ubin serta mengubah jenis tampilan dan bahkan menambahkan ubin. Dasbor ini memberi Anda kemampuan untuk melihat riwayat berat badan Anda secara sekilas. Ini ramah seluler dan Anda bahkan dapat membagikannya dengan orang lain.

Anda dapat menambahkan gambar latar belakang ke dasbor untuk memberikan lebih banyak kepribadian dan konteks pada data Anda.

Langkah 9: SMS

SMS
SMS

Mari buat peringatan SMS setiap kali timbangan melakukan pengukuran berat badan. Pastikan keranjang data riwayat berat badan Anda dimuat.

  1. Klik pengaturan bucket (di bawah namanya) di jendela data bucket.
  2. Klik pada tab Pemicu.
  3. Pilih aliran data yang akan dipicu. Anda dapat menggunakan daftar tarik-turun untuk memilih dari aliran yang ada setelah keranjang data dimuat atau Anda dapat mengetikkan nama/kunci aliran secara manual. Pada contoh tangkapan layar di atas, "Pembaruan" dipilih.
  4. Pilih operator kondisional, dalam hal ini 'cocok'.
  5. Pilih nilai Pemicu yang akan memicu tindakan (ketik secara manual nilai yang diinginkan). Ketik lb jika Anda tidak menggunakan satuan metrik atau ketik kg jika Anda menggunakan satuan metrik. Setiap kali aliran "Pembaruan" berisi "lb" (atau "kg"), Anda akan mendapatkan pemberitahuan pesan teks.
  6. Klik tombol '+' untuk menambahkan kondisi Pemicu.
  7. Masukkan alamat email atau nomor telepon Anda di bidang "Kontak untuk memberi tahu".
  8. Klik tombol '+' untuk menambahkan informasi kontak.
  9. Masukkan kode verifikasi apa pun jika menambahkan nomor telepon baru untuk menyelesaikan penyiapan.
  10. Klik tombol Selesai di bagian bawah untuk kembali ke layar utama. Pemicu Anda sekarang aktif dan akan menyala ketika kondisinya terpenuhi.

Setelah pengaturan selesai, Anda akan mendapatkan SMS setiap kali Anda menimbang berat badan Anda yang berisi berat badan Anda, berapa banyak berat badan Anda berubah sejak pengukuran terakhir, dan lelucon / penghinaan / pujian acak.

Langkah 10: Kesimpulan

Ada pilihan tak terbatas bagi Anda untuk membangun apa yang telah Anda buat sekarang. Berikut adalah beberapa ide untuk proyek ini:

  • Anda dapat mengalirkan data dari sumber lain ke dasbor (info) riwayat berat badan yang sama untuk membuat dasbor kesehatan pribadi Anda sendiri.
  • Anda dapat mengubah lelucon dalam fungsi messageWeighFirst, messageWeighLess, messageWeighMore, dan messageWeighSame ke selera humor Anda sendiri.
  • Anda dapat mengubah lelucon menjadi pesan praktis atau menghapusnya dan menggunakan kode skala untuk melacak berat sesuatu yang lebih penting selain berat badan Anda sendiri.
  • Anda dapat membuat lemari es bir/anggur pintar Anda sendiri menggunakan pendekatan yang sama. Sudah ada tutorial luar biasa yang dibuat untuk itu di sini.

Retas dan beri tahu saya jika tutorial ini menginspirasi Anda untuk membuat sesuatu yang luar biasa.

Direkomendasikan: