Daftar Isi:

Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: 5 Langkah
Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: 5 Langkah

Video: Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: 5 Langkah

Video: Cahaya Pernapasan yang Dikendalikan oleh Raspberry Pi: 5 Langkah
Video: Kondisi Penyimpanan Termodifikasi pada Buah dan Sayur 2024, November
Anonim
Cahaya Pernapasan Dikendalikan oleh Raspberry Pi
Cahaya Pernapasan Dikendalikan oleh Raspberry Pi

"Lampu Latihan Pernapasan" yang dijelaskan di sini adalah lampu berdenyut sederhana dan relatif murah yang dapat mendukung Anda dalam latihan pernapasan dan membantu Anda mempertahankan ritme pernapasan yang konstan. Mungkin juga digunakan mis. sebagai lampu malam yang menenangkan bagi anak-anak. Pada tahap saat ini lebih merupakan prototipe kerja.

Anda juga dapat menggunakannya sebagai contoh pembuatan yang murah dan sederhana untuk "komputasi fisik" dengan Raspberry Pi, mis. untuk digunakan sebagai proyek pendidikan di tingkat pemula, Di sini Anda memiliki input analog (potensiometer putar) dan digital (tombol tekan) serta output digital (LED) dan PWM (rantai LED), dan efek perubahannya terlihat langsung.

Cahaya berjalan melalui lingkaran berulang yang terdiri dari empat fase: transisi hijau (atas) ke merah (bawah), fase merah saja, transisi merah ke hijau, dan fase hijau saja. Panjang fase ini ditentukan oleh konstanta yang dapat dimodifikasi oleh potensiometer. Proses dapat dimulai, dijeda, dilanjutkan, dan dihentikan dengan menekan tombol tekan. LED menunjukkan fase saat ini. Ini didasarkan pada contoh "Firefly Light" oleh Pimoroni (lihat di sini). Mirip dengan “Firefly Light”, lampu ini membutuhkan Raspberry Pi (Nol), Pimoroni Explorer pHAT (atau HAT) dan dua rantai lampu LED IKEA SÄRDAL. Kemudian terhubung ke dua port PMW/motor dari pHAT. Alih-alih menggunakan toples, saya telah menempatkan LED di bingkai foto IKEA. Saya telah mencoba untuk sedikit mengoptimalkan skrip python "kunang-kunang" asli, menerapkan fungsi sinus opsional untuk perubahan kecerahan/lebar pulsa dan telah memperkenalkan dua fase "tahan" di antara fase peredupan. Saat memodifikasi parameter untuk menemukan pola cahaya yang terasa lebih nyaman, saya menemukan bahwa perangkat ini dapat membantu mendukung pola pernapasan teratur yang terdefinisi dengan sangat jelas. Jadi, beberapa dari Anda mungkin menemukan "Cahaya Pernapasan" ini berguna untuk tujuan meditasi atau pelatihan. Karena pHAT Explorer memiliki empat input digital dan empat input analog, sangat mudah untuk mengatur hingga empat parameter berbeda menggunakan potensiometer geser atau putar, dan untuk memperkenalkan fungsi start/restart/stop untuk lampu menggunakan tombol tekan. Ini akan memungkinkan Anda untuk menggunakan perangkat dan mengoptimalkan parameter sesuai kebutuhan Anda tanpa monitor harus dilampirkan ke Pi.

Selain itu, Explorer pHAT dilengkapi dengan empat port keluar digital, yang memungkinkan untuk menambahkan LED atau buzzer, ditambah dua port 5V dan dua Ground dan dua port keluar PWM untuk motor atau perangkat serupa. Pastikan Anda menggunakan resistor yang benar untuk mengurangi tegangan LED Anda.

Pustaka python pHAT Explorer Pimoroni membuatnya sangat mudah untuk mengontrol semua port I/O ini.

Dalam versi perangkat yang dapat diinstruksikan ini dengan potensiometer dan tombol 0, 2 dan 4 dijelaskan. Pilih salah satu yang sesuai dengan kebutuhan Anda.

Untuk menjalankan perangkat secara mandiri, seseorang dapat menggunakan power pack, atau kombinasi dari Pimoroni LiPo shim dan baterai LiPo, seperti yang dijelaskan untuk "Firefly Light".

Versi yang diperbarui 28 Desember 2018: versi 'empat potensiometer dan empat tombol tekan' ditambahkan. 30: kode untuk versi 4-poti dan gambar fritzing ditambahkan.

Langkah 1: Bahan yang Digunakan / Diperlukan

Bahan yang Digunakan / Diperlukan
Bahan yang Digunakan / Diperlukan
Bahan yang Digunakan / Diperlukan
Bahan yang Digunakan / Diperlukan
Bahan yang Digunakan / Diperlukan
Bahan yang Digunakan / Diperlukan

- Raspberry Pi Zero (4,80 GBP di Pimoroni, UK), dan kartu micro SD (>= 8 GB) dengan Raspian

- Pimoroni Explorer pHAT (10 GBP di Pimoroni, Inggris). Opsional: header baris tunggal, kabel jumper

- Lampu rantai LED IKEA SÄRDAL dg 12 LED (masing-masing 2 x, 3,99 € di IKEA Jerman), atau rantai LED 3-5V serupa lainnya.- Bingkai foto IKEA RIBBA (13 x 18 cm, € 2,49 di IKEA Jerman).

- Sepotong busa PU (2 x 18 x 13,5 cm), untuk menahan LED. Atau busa styro dapat digunakan.

- Sepotong plastik buram (18 x 13,5 cm), berfungsi sebagai diffuser.

- Dua lembar kertas transparan berwarna (masing-masing 9 x 13,5 cm). Saya menggunakan warna merah dan hijau.

- Sepotong lembaran plastik tipis yang sangat buram (18 x 13,5 cm), berfungsi sebagai layar luar. Saya menggunakan lembaran polikarbonat putih tipis. Opsional, untuk versi merdu:

Untuk menyesuaikan waktu ramping dan durasi dataran tinggi, atau sebagai alternatif parameter lain seperti kecerahan.- Potensiometer 10, 20 atau 50 kOhm (hingga empat, saya menggunakan dua 10 kOhm masing-masing empat 50 Ohm).

Sebagai tombol mulai/berhenti/jeda/lanjutkan: - Tombol tekan (hingga empat, saya menggunakan empat atau dua)

Sebagai indikator untuk fase lingkaran:- LED berwarna dan resistor yang diperlukan (tergantung pada karakteristik LED yang akan Anda gunakan).

  1. sekitar 140 Ohm untuk 5.2 -> 2, 2 V (kuning, oranye, merah; beberapa LED hijau),
  2. sekitar 100 Ohm untuk 5,3 -> 3,3 V (beberapa LED hijau; biru, putih)

- Kabel jumper dan papan tempat memotong roti

Opsional, untuk versi yang digerakkan oleh baterai:

  • Paket daya Micro-USB 5V, atau
  • Pimoroni Zero LiPo shim dan baterai LiPo

Langkah 2: Lazout dan Perakitan

Lazout dan Majelis
Lazout dan Majelis
Lazout dan Majelis
Lazout dan Majelis
Lazout dan Majelis
Lazout dan Majelis

Rakit pHAT Explorer seperti yang dijelaskan oleh pabrikan. Saya telah menambahkan satu baris female header untuk koneksi sederhana kabel jumper ke port I/O pHATs. Siapkan Pi Anda dan instal pustaka Pimoroni untuk Explorer HAT/pHAT, seperti yang dijelaskan oleh Pimoroni. Matikan Pi dan pasang pHAT ke Pi. Lepaskan paket baterai dari rantai LED dengan memotong kabel dan timah ujung kabel. Potong dua kabel jumper jantan 2x di bagian tengah, rekatkan ujung kabel. Solder kabel jumper ke rantai LED, dan isolasi titik solder menggunakan pita perekat atau tabung menyusut. Sebelum menyolder, periksa kabel mana yang harus dihubungkan ke port plus atau ground, dan tandai sesuai. Saya menggunakan kabel jumper dengan warna berbeda. Potong busa untuk menahan LED, diffusor, dan lembaran layar dengan ukuran yang sesuai. Pada pelat penahan LED, tandai posisi di mana LED harus ditempatkan dan buat lubang 3-5 mm ke dalam busa. Kemudian masukkan 24 LED pada posisi yang diberikan. Tempatkan kertas berwarna dan pelat diffusor pada pelat LED (lihat gambar), letakkan bingkai di atas kemasan. Perbaiki lapisan busa dalam bingkai, mis. menggunakan pita perekat. Pasang kabel strip LED ke port "motor" pada Explorer pHAT. Untuk versi merdu, tempatkan potensiometer, tombol tekan, LED kontrol (dan/atau buzzer) dan resistor pada papan tempat memotong roti dan hubungkan dengan port yang sesuai di Explorer pHAT.

Mulai Pi Anda dan instal pustaka yang diperlukan, seperti yang dijelaskan di situs web Pimoroni, lalu jalankan skrip Python 3 yang disediakan. Jika salah satu rantai LED tidak berfungsi, mungkin terhubung ke arah yang salah. Kemudian Anda dapat mengubah koneksi plus/minus pada pHAT atau membuat perubahan dalam program, mis. ubah “eh.motor.one.backwards()” menjadi “…forward()”.

Terlampir Anda menemukan skrip dengan pengaturan tetap yang dapat Anda ubah dalam program dan contoh di mana Anda dapat memodifikasi beberapa pengaturan dengan potensiometer, dan memulai dan menghentikan siklus cahaya menggunakan tombol tekan. Seharusnya tidak terlalu sulit untuk menyesuaikan skrip yang sesuai dengan tata letak "lampu pernapasan" Anda sendiri.

Langkah 3: Skrip Python

Pustaka Python Pimoroni untuk Explorer HAT/pHAT membuatnya sangat mudah untuk menangani komponen yang terpasang pada port I/O HAT. Dua contoh: "eh.two.motor.backwards(80)" menggerakkan perangkat yang terpasang ke port PWM/motor 2 dengan intensitas maksimum 80% dalam arah mundur, "eh.output.three.flash()" membuat LED terhubung untuk output port nomor tiga flash sampai berhenti. Saya telah menghasilkan beberapa variasi cahaya, pada dasarnya menambahkan peningkatan tingkat kontrol dengan menambahkan hingga empat tombol dan potensiometer. Terlampir Anda menemukan program Python yang disebut "Breathing light fixed lin cosin.py" di mana keempat pengaturan parameter harus dimodifikasi dalam program. Selain versi yang disebut "Breathing light var lin cosin.py" di mana panjang dari dua fase peredupan dapat disesuaikan menggunakan dua potensiometer dan versi yang paling rumit "Breathing light var lin cosin3.py" untuk empat potensiometer & versi tombol tekan. Program ditulis dengan Python 3.

Dalam semua kasus, proses siklus dapat dibangkitkan dan dihentikan menggunakan dua tombol tekan, dalam versi empat tombol Anda juga dapat menghentikan dan memulai kembali proses. Selain itu, empat LED (berwarna) dapat dihubungkan ke port keluaran digital, yang menunjukkan fase tertentu. Siklus perangkat terdiri dari empat fase:

- fase "tarik napas", di mana LED atas redup rendah dan LED bawah meningkatkan intensitas

- fase "tahan napas", di mana LED atas dimatikan dan LED bawah diatur ke maksimum

- fase "hembuskan napas", di mana LED bawah redup rendah dan LED atas meningkatkan intensitas

- fase "tetap dihembuskan", di mana LED bawah dimatikan dan LED atas menyala maksimal.

Panjang keempat fase ditentukan oleh parameter numerik individu, yang mungkin tetap dalam program dan/atau mungkin disesuaikan menggunakan potensiometer.

Parameter kelima mendefinisikan intensitas maksimum. Ini memungkinkan Anda untuk mengatur kecerahan maksimum LED, yang mungkin berguna jika Anda ingin menggunakannya sebagai lampu malam. Selain itu, ini memungkinkan Anda meningkatkan proses peredupan, karena menurut saya sulit untuk melihat perbedaan antara intensitas 80 dan 100%.

Saya menambahkan fungsi (co-)sinus opsional untuk menambah/mengurangi kecerahan, karena memberikan koneksi yang lebih mulus antar fase. Jangan ragu untuk mencoba fungsi lainnya. Misalnya. Anda dapat menghilangkan jeda dan menggunakan dua fungsi sinus (kompleks) yang berbeda untuk kedua rantai LED dan menyesuaikan frekuensi dan amplitudo dengan potensiometer.

# Lampu "pernapasan": dua tombol & dua versi potensiometer

# modifikasi contoh kunang-kunang untuk Pimoroni Explorer pHAT # di sini: peningkatan/penurunan nilai sinoid motor/PWM # untuk fungsi linier aktifkan fungsi linear dan bisu cosin # Versi "var" ini membaca input analog, mengesampingkan pengaturan yang telah ditentukan # membaca input digital, tombol untuk memulai dan menghentikan """ untuk memulai saat mengaktifkan Pi Anda dapat menggunakan Cron: Cron adalah program Unix yang digunakan untuk menjadwalkan pekerjaan, dan memiliki fungsi @reboot yang memungkinkan Anda menjalankan skrip setiap kali Pi Anda boot. Buka terminal, dan ketik crontab -e untuk mengedit crontab Anda. Gulir ke bawah file, melewati semua baris yang dimulai #, dan tambahkan baris berikut (dengan asumsi kode Anda berada di /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Tutup dan simpan crontab Anda (jika Anda menggunakan nano lalu tekan control-x, y dan enter untuk keluar dan simpan). """ impor waktu impor explorerhat sebagai eh impor nilai konstanta matematika #sinus xmax = 316 langkah = 5 # lebar langkah, mis. 315/5 memberikan 63 langkah/siklus start_button = 0 # ini mendefinisikan status tombol tekan yang terhubung ke port input no 1 stop_button = 0 # ini mendefinisikan status tombol push yang terhubung ke port input no 3 jeda_1 = 0,02 # panjang set jeda dalam langkah-langkah dalam fase "tarik napas", dengan demikian kecepatan ramping dan durasi jeda_2 = 0,04 # set "hembuskan napas" kecepatan jeda jeda_3 = 1,5 # jeda antara fase menghirup dan menghembuskan napas (terus menghirup) jeda_4 = 1,2 # istirahat di akhir napas fase (terus hembuskan) max_intens = 0,9 # intensitas/kecerahan maksimum max_intens_100= 100*max_intens # sama dalam % # Memungkinkan untuk mengoptimalkan kesan "bernapas" LED dan mengurangi kedipan. l_cosin= # daftar dengan nilai turunan cosinus (100 >= x >=0) l_lin= # daftar dengan nilai linier (100 >= x >=0) # menghasilkan daftar fungsi cosinus untuk i dalam rentang (0, 316, 3): # 315 mendekati Pi*100, 105 langkah # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin #menambah nilai ke daftar # print (l_cosin) # menghasilkan daftar linier untuk i dalam rentang (100, -1, -1): # hitung mundur dari 100 ke nol n_lin= l_lin=l_lin + n_lin # print (l_lin) # menunjukkan daftar yang membosankan print () print ("""Untuk memulai siklus cahaya, tekan Tombol "Start" (Input One)""") print() print ("""Untuk berhenti lampu, tekan dan tahan Tombol "Stop" (Input Tiga)""") print() # tunggu sampai Tombol Start ditekan while (start_button==0): start_button=eh.input.one.read() # read tombol nomor satu eh.output.one.blink() # nomor LED berkedip satu kali.sleep(0.5) # membaca dua kali setiap detik #menjalankan lampu sementara (stop_button==0): # membaca input analog SATU dan DUA, tentukan pengaturan set_1 =eh.an alog.one.read() # mendefinisikan red-> green ramping rate pause_1=set_1*0.02 # nilai akan berkisar antara 0 dan 0,13 detik/langkah cetak ("set_1:", set_1, " -> pause _1:", jeda_1) set_2=eh.analog.two.read() # mendefinisikan hijau -> merah kecepatan ramping pause_2=set_2*0.02 # nilai akan berkisar antara 0 dan 0,13 detik/langkah cetak ("set_2:", set_2, " -> jeda _2: ", pause_2) # fase "inhalasi" eh.output.one.on() # dapat menggerakkan LED atau pager ''' untuk x dalam jangkauan (len(l_lin)): fx=max_intens*l_lin [x] # kurva linier eh.motor.one.backwards(fx) eh.motor.two.backwards(max_intens_100-fx) time.sleep(pause_1) eh.output.one.off() ''' untuk x dalam jangkauan (len(l_cosin)): fx=max_intens*l_cosin [x] # kurva linier eh.motor.one.backwards(fx) eh.motor.two.backwards(max_intens_100-fx) time.sleep(pause_1) eh.output.one.off() # periksa apakah Tombol Berhenti ditekan stop_button=eh.input.three.read() # "Jaga napas" jeda di akhir fase inhalasi eh.output.two.on() # nyalakan LED dua eh.motor.one.backwards(0) eh.motor.two.backwards(max_intens_100) time.sleep(pause_3) eh.output.two.off() #periksa apakah Stop Button ditekan stop_button=eh.input.three.read() # fase "buang napas" eh.output.three.on() # nyalakan LED tiga ''' untuk x dalam jangkauan (len(l_lin)): fx=max_intens*l_lin [x] # kurva linier eh.motor.one.backwards(max_intens_100-fx) eh.motor.two.backwards(fx) waktu.tidur(jeda_2) ''' untuk x dalam rentang (len(l_cosin)): fx=max_intens*l_cosin [x] # kurva linier eh.motor.one.backwards(max_intens_100-fx) eh.motor.two. mundur(fx) waktu.tidur(jeda_2) eh.output.three.off() #periksa apakah Tombol Berhenti ditekan stop_button=eh.input.three.read() # jeda antara fase "buang napas" dan "tarik napas" eh. output.four.on() eh.motor.one.backwards(max_intens_100) eh.motor.two.backwards(0) time.sleep(pause_4) eh.output.four.off() #periksa apakah Stop Button ditekan stop_button =eh.input.three.read() # shutdown, matikan semua port output eh.motor.one.stop() eh.motor.two.stop() eh.output.one.off() eh.output.two.off() eh.output.three.off() eh.output.four.off() print () cetak ("Sampai jumpa")

Jika Anda ingin menggunakan lampu sebagai perangkat yang berdiri sendiri, mis. sebagai lampu tidur atau bangun, Anda dapat menambahkan sumber daya seluler ke Pi dan memulai program setelah boot dan menggunakan "Cron" untuk mengaktifkan atau menonaktifkannya pada waktu tertentu. Cara menggunakan "Cron" telah dijelaskan dengan sangat rinci di tempat lain.

Langkah 4: Contoh Video

Pada langkah ini Anda akan menemukan sejumlah video yang menunjukkan cahaya di bawah normal (yaitu semua nilai > 0, #1) dan kondisi ekstrem, karena semua nilai disetel ke nol (#2), hanya ramping (#3 ), dan tidak ada ramping (#5 ).;

Langkah 5: Beberapa Komentar

Mohon maaf jika ada salah kata, typo dan kesalahan. Saya bukan penutur asli bahasa Inggris, saya juga tidak memiliki pengetahuan mendalam tentang listrik, elektronik, atau pemrograman. Yang sebenarnya berarti bahwa saya mencoba menulis bahasa Inggris yang dapat diinstruksikan tentang hal-hal di mana saya hampir tidak tahu istilah yang benar dalam bahasa saya sendiri. Dengan demikian, setiap petunjuk, koreksi, atau ide untuk perbaikan dipersilakan. H

Direkomendasikan: