Isi kandungan:

Cahaya Pernafasan Dikendalikan oleh Raspberry Pi: 5 Langkah
Cahaya Pernafasan Dikendalikan oleh Raspberry Pi: 5 Langkah

Video: Cahaya Pernafasan Dikendalikan oleh Raspberry Pi: 5 Langkah

Video: Cahaya Pernafasan Dikendalikan oleh Raspberry Pi: 5 Langkah
Video: Simulasi Lampu Otomatis Raspberry Pi dengan Sensor Cahaya (USM) 2024, Julai
Anonim
Cahaya Pernafasan yang Dikendalikan oleh Raspberry Pi
Cahaya Pernafasan yang Dikendalikan oleh Raspberry Pi

"Cahaya Latihan Pernafasan" yang dijelaskan di sini adalah cahaya berdenyut yang sederhana dan agak murah yang dapat menolong anda dalam pernafasan anda dan membantu anda mengekalkan irama pernafasan yang berterusan. Ia juga boleh digunakan mis. sebagai cahaya malam yang menenangkan untuk kanak-kanak. Pada peringkat sekarang ini lebih merupakan prototaip yang berfungsi.

Anda juga boleh menggunakannya sebagai contoh yang murah dan mudah dibina untuk "pengkomputeran fizikal" dengan Raspberry Pi, mis. untuk digunakan sebagai projek pendidikan pada peringkat pemula, Di sini anda mempunyai analog (potentiometer putar) dan input digital (butang tekan) serta output digital (LED) dan PWM (rantai LED), dan kesan perubahan dapat dilihat secara langsung.

Cahaya berjalan melalui bulatan berulang yang terdiri daripada empat fasa: peralihan hijau (atas) ke merah (bawah), fasa merah sahaja, peralihan merah ke hijau dan fasa hijau sahaja. Panjang fasa-fasa ini ditentukan oleh pemalar yang dapat diubah suai dengan potensiometer. Prosesnya dapat dimulakan, dijeda, dilanjutkan dan dihentikan dengan menekan butang tekan. LED menunjukkan fasa semasa. Ia berdasarkan contoh "Firefly Light" oleh Pimoroni (lihat di sini). Mirip dengan "Firefly Light" ia memerlukan Raspberry Pi (Zero), Pimoroni Explorer pHAT (atau HAT) dan dua rantai cahaya LED IKEA SÄRDAL. Yang kemudian disambungkan ke dua port PMW / motor pHAT. Daripada menggunakan balang, saya meletakkan LED di bingkai gambar IKEA. Saya telah berusaha untuk mengoptimumkan skrip python "firefly light" yang asli, menerapkan fungsi sinus pilihan untuk perubahan kecerahan / lebar nadi dan telah memperkenalkan dua fasa "tahan" antara fasa peredupan. Semasa mengubah parameter untuk mencari corak cahaya yang terasa lebih selesa, saya dapati peranti ini dapat menyokong corak pernafasan biasa yang jelas. Oleh itu, sebilangan dari anda mungkin menganggap "Breathing Light" ini berguna untuk tujuan meditasi atau latihan. Oleh kerana Explorer pHAT mempunyai empat input digital dan empat analog, sangat mudah mengatur hingga empat parameter yang berbeza menggunakan potensiometer slaid atau putar, dan memperkenalkan fungsi start / restart / stop untuk lampu menggunakan butang tekan. Ini akan membolehkan anda menggunakan peranti dan mengoptimumkan parameter sesuai dengan keperluan anda tanpa monitor harus dilekatkan pada 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 peranti serupa. Pastikan anda menggunakan perintang yang betul untuk mengurangkan voltan LED anda.

Perpustakaan pHat python Explorer Pimoroni menjadikannya sangat mudah untuk mengawal semua port I / O ini.

Dalam versi peranti ini yang diperintahkan dengan 0, 2 dan 4 potensiometer dan butang dijelaskan. Pilih yang sesuai dengan keperluan anda.

Untuk menjalankan peranti secara autonomi, seseorang dapat menggunakan power pack, atau kombinasi shim Pimoroni LiPo dan bateri LiPo, seperti yang dijelaskan untuk "Firefly Light".

Versi yang dikemas kini 28 Disember 2018: versi 'empat potensiometer dan empat butang tolak' ditambahkan. 30: kod untuk versi 4-poti dan gambar fritzing ditambah.

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 kad micro SD (> = 8 GB) tanpa Raspian

- Pimoroni Explorer pHAT (10 GBP di Pimoroni, UK). Pilihan: pengepala satu baris, kabel pelompat

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

- Sekeping busa PU (2 x 18 x 13.5 cm), untuk menahan LED. Sebagai alternatif busa styro mungkin digunakan.

- Sekeping plastik legap (18 x 13.5 cm), bertindak sebagai penyebar.

- Dua helai kertas lutsinar berwarna (masing-masing 9 x 13.5 cm). Saya menggunakan warna merah dan hijau.

- Sekeping kepingan plastik nipis dan sangat legap (18 x 13.5 cm), bertindak sebagai skrin luar. Saya menggunakan kepingan polikarbonat putih nipis. Pilihan, untuk versi yang boleh disesuaikan:

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

Sebagai butang start / stop / pause / resume: - Butang tekan (hingga empat, saya menggunakan empat atau dua)

Sebagai petunjuk untuk fasa bulatan: - LED berwarna dan perintang yang diperlukan (akan bergantung pada ciri-ciri LED yang akan anda gunakan).

  1. kira-kira 140 Ohm untuk 5.2 -> 2, 2 V (kuning, oren, merah; beberapa LED hijau),
  2. kira-kira 100 Ohm untuk 5.3 -> 3.3 V (beberapa LED hijau; biru, putih)

- Kabel pelompat dan papan roti

Pilihan, untuk versi menggunakan bateri:

  • Pek kuasa 5V Mikro-USB, atau
  • Pimoroni Zero LiPo shim dan bateri LiPo

Langkah 2: Lazout dan Perhimpunan

Lazat dan Perhimpunan
Lazat dan Perhimpunan
Lazat dan Perhimpunan
Lazat dan Perhimpunan
Lazat dan Perhimpunan
Lazat dan Perhimpunan

Pasang pHAT Penjelajah seperti yang dijelaskan oleh pengeluar. Saya telah menambahkan header wanita baris tunggal untuk sambungan kabel jumper yang dipermudahkan ke port I / O pHATs. Siapkan Pi anda dan pasang perpustakaan Pimoroni untuk Explorer HAT / pHAT, seperti yang dijelaskan oleh Pimoroni. Matikan Pi dan pasangkan pHAT ke Pi. Tanggalkan pek bateri dari rantai LED dengan memotong wayar dan timah hujung wayar. Potong dua kabel pelompat lelaki 2x di tengah, pasangkan hujung wayar. Memateri kabel pelompat ke rantai LED, dan mengasingkan titik pematerian menggunakan pita pelekat atau tiub pengecutan. Sebelum menyolder, periksa wayar mana yang harus disambungkan ke port plus atau ground, dan tandakan dengan betul. Saya menggunakan wayar pelompat dengan warna yang berbeza. Potong busa untuk menahan LED, peresap dan kepingan skrin dengan ukuran yang sesuai. Pada plat penahan LED tandakan kedudukan di mana LED harus diletakkan dan tumbukan lubang 3-5 mm ke dalam busa. Kemudian masukkan 24 LED pada kedudukan yang diberikan. Letakkan kertas berwarna dan plat diffusor pada plat LED (lihat gambar), letakkan bingkai di atas bungkusan. Betulkan lapisan busa di bingkai, mis. menggunakan pita pelekat. Pasang kabel jalur LED ke port "motor" pHAT Explorer. Untuk versi yang dapat ditala letakkan potensiometer, butang tekan, LED kawalan (dan / atau buzzer) dan perintang pada papan roti dan sambungkannya dengan port yang sesuai pada pHAT Explorer.

Mulakan Pi anda dan pasang perpustakaan yang diperlukan, seperti yang dijelaskan di laman web Pimoroni, kemudian jalankan skrip Python 3 yang disediakan. Sekiranya salah satu rantai LED tidak berfungsi, ia mungkin disambungkan ke arah yang salah. Kemudian anda boleh mengubah sambungan tambah / tolak pada pHAT atau membuat perubahan dalam program, mis. ubah "eh.motor.one.backwards ()" menjadi "… forward ()".

Dilampirkan anda menemukan skrip dengan tetapan tetap yang dapat Anda ubah dalam program dan contoh di mana anda dapat mengubah beberapa tetapan dengan potensiometer, dan memulakan dan menghentikan kitaran cahaya menggunakan butang tekan. Tidak boleh terlalu sukar untuk menyesuaikan skrip sesuai dengan susun atur "cahaya pernafasan" anda sendiri.

Langkah 3: Skrip Python

Perpustakaan Pimoroni Python untuk Explorer HAT / pHAT menjadikannya sangat mudah untuk menguraikan komponen yang terpasang pada port HATs I / O. Dua contoh: "eh.two.motor.backwards (80)" menggerakkan peranti yang dipasang pada port PWM / motor 2 dengan intensiti maksimum 80% ke arah belakang, "eh.output.three.flash ()" menjadikan LED disambungkan untuk mengeluarkan port nombor tiga kilat sehingga ia dihentikan. Saya telah menghasilkan beberapa variasi cahaya, pada dasarnya menambahkan peningkatan tahap kawalan dengan menambahkan hingga empat butang tekan dan potensiometer. Dilampirkan anda menemui program Python yang disebut "Breathing light fixed lin cosin.py "di mana keempat tetapan parameter harus diubah suai dalam program. Sebagai tambahan versi yang disebut "Breathing light var lin cosin.py" di mana panjang dua fasa peredupan dapat disesuaikan menggunakan dua potensiometer dan versi yang paling terperinci "Breathing light var lin cosin3.py" untuk versi empat potensiometer & tekan butang. Program ditulis dalam Python 3.

Dalam semua kes, proses berbasikal dapat dibangkitkan dan dihentikan menggunakan dua butang tekan, dalam versi empat butang, Anda juga dapat mengganggu dan memulakan semula proses tersebut. Selain itu empat (berwarna) LED dapat dihubungkan ke port output digital, yang menunjukkan fasa-fasa tertentu. Kitaran peranti terdiri daripada empat fasa:

- fasa "menyedut", di mana LED atas redup rendah dan LED bawah meningkatkan intensiti

- fasa "tahan nafas", di mana LED atas dimatikan dan LED bawah ditetapkan maksimum

- fasa "menghembuskan nafas", di mana LED yang lebih rendah redup rendah dan LED atas meningkatkan intensiti

- fasa "tetap dihembuskan", di mana LED bawah dimatikan dan LED atas menyala maksimum.

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

Parameter kelima menentukan intensiti maksimum. Ini memungkinkan anda untuk mengatur kecerahan maksimum LED, yang mungkin berguna jika anda ingin menggunakannya sebagai cahaya malam. Sebagai tambahan, ini memungkinkan anda memperbaiki proses peredupan, kerana saya mempunyai kesan bahawa sukar untuk melihat perbezaan antara intensiti 80 dan 100%.

Saya menambahkan fungsi sinus opsional (co-) untuk kenaikan / penurunan kecerahan, kerana ia memberikan hubungan yang lebih lancar antara fasa. Jangan ragu untuk mencuba fungsi lain. Cth. anda mungkin menghilangkan jeda dan menggunakan dua fungsi (kompleks) sinus yang berbeza untuk kedua-dua rantai LED dan menyesuaikan frekuensi dan amplitud oleh potensiometer.

# Lampu "bernafas": dua butang & dua versi potensiometer

# pengubahsuaian contoh kunang-kunang untuk Pimoroni Explorer pHAT # di sini: peningkatan / penurunan sinoid nilai motor / PWM # untuk fungsi linear nyahaktifkan fungsi kosin linier dan bisu # Versi "var" ini membaca input analog, mengatasi tetapan yang telah ditentukan # membaca input digital, butang untuk memulakan dan menghentikan "" "untuk memulai setelah menghidupkan Pi yang mungkin anda gunakan Cron: Cron adalah program Unix yang digunakan untuk menjadwalkan pekerjaan, dan ia mempunyai fungsi @reboot yang mudah yang memungkinkan anda menjalankan skrip setiap kali Pi anda boot. Buka terminal, dan ketik crontab -e untuk mengedit crontab anda. Tatal hingga ke bahagian bawah fail, melewati semua baris yang bermula #, dan tambahkan baris berikut (dengan asumsi kod anda berada di /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Tutup dan simpan crontab anda (jika anda menggunakan nano kemudian tekan control-x, y dan enter untuk keluar dan simpan). "" "import import import explorerhat as eh import math const bernilai #sinus xmax = 316 step = 5 # lebar langkah, mis. 315/5 memberikan 63 langkah / kitaran start_button = 0 # ini menentukan keadaan butang tekan yang disambungkan ke port input no 1 stop_button = 0 # ini menentukan keadaan butang tekan yang disambungkan ke input port no 3 pause_1 = 0.02 # set panjang rehat dalam beberapa langkah dalam fasa "menghirup", dengan itu kadar ramping dan durasi jeda_2 = 0,04 # set "kadar nafas" berhenti sementara jeda_3 = 1,5 # jeda antara fasa menghirup dan menghembuskan nafas (terus dihirup) jeda_4 = 1.2 # rehat pada akhir nafas fasa (terus dihembuskan) max_intens = 0.9 # intensiti / kecerahan maksimum max_intens_100 = 100 * max_intens # sama pada% # Boleh memungkinkan untuk mengoptimumkan kesan "bernafas" LED dan mengurangkan kerlipan. l_cosin = # senarai dengan nilai turunan cosinus (100> = x> = 0) l_lin = # senarai dengan nilai linear (100> = x> = 0) # buat senarai fungsi cosinus untuk i dalam julat (0, 316, 3): # 315 hampir dengan Pi * 100, 105 langkah # cetak (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] #jana nilai # cetak (n_cosin) l_cosin = l_cosin + n_cosin # nilai tambah untuk menyenaraikan # cetak (l_cosin) # menghasilkan senarai linear untuk i dalam julat (100, -1, -1): # hitung mundur dari 100 hingga sifar n_lin = l_lin = l_lin + n_lin # print (l_lin) # menunjukkan senarai membosankan cetak () cetak ("" "Untuk memulakan kitaran cahaya, tekan butang" Mula "(Input Satu)" "") cetak () cetak ("" "Untuk berhenti lampu, tekan dan tahan butang "Stop" (Input Three) "" ") print () # tunggu sehingga Butang Mula ditekan semasa (start_button == 0): start_button = eh.input.one.read () # baca butang nombor satu eh.output.one.blink () # berkedip LED nombor sekali. tidur (0.5) # baca dua kali sesaat #run menyala sambil (stop_button == 0): # baca input analog SATU dan DUA, tentukan tetapan 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 saat / cetakan langkah ("set_1:", set_1, "-> jeda _1:", jeda_1) set_2 = eh.analog.two.read () # mentakrifkan hijau -> kadar ramping merah jeda_2 = set_2 * 0.02 # nilai akan berkisar antara 0 dan 0.13 saat / cetakan langkah ("set_2:", set_2, "-> jeda _2: ", pause_2) #" penyedutan "fasa eh.output.one.on () # boleh menggerakkan LED atau bip '' 'untuk x dalam jarak (len (l_lin)): fx = max_intens * l_lin [x] # lengkung linear eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' for x in range (len (l_cosin)): fx = max_intens * l_cosin [x] # lengkung linear eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # periksa sama ada Butang Berhenti ditekan stop_button = eh.input.three.read () # "Terus nafas" jeda pada akhir fasa penyedutan eh.output.two.on () # hidupkan LED dua eh.motor.one.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () #cek apakah Butang Berhenti ditekan stop_button = eh.input.three.read () # fasa "hembuskan" eh.output.three.on () # hidupkan LED tiga "" untuk x dalam jarak (len (l_lin)): fx = max_intens * l_lin [x] # lengkung linear eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) "" for x in range (len (l_cosin)): fx = max_intens * l_cosin [x] # lengkung linear eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. mundur (fx) time.sleep (pause_2) eh.output.three.off () #check jika Butang Berhenti ditekan stop_button = eh.input.three.read () # jeda antara fasa "menghembuskan nafas" dan "menyedut" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #cek apakah Butang Berhenti ditekan butang berhenti = eh.input.three.read () # shutdown, giliran 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 () cetak () cetak ("Bye bye")

Sekiranya anda ingin menggunakan cahaya sebagai peranti yang berdiri sendiri, mis. sebagai lampu tidur atau bangun tidur, anda boleh menambahkan sumber kuasa mudah alih ke Pi dan program ini dimulakan selepas boot dan menggunakan "Cron" untuk menghidupkan atau mematikannya pada waktu tertentu. Cara menggunakan "Cron" telah dijelaskan dengan terperinci di tempat lain.

Langkah 4: Contoh Video

Dalam langkah ini, anda akan menemui sejumlah video yang menunjukkan cahaya di bawah normal (iaitu semua nilai> 0, # 1) dan keadaan yang melampau, kerana semua nilai ditetapkan ke sifar (# 2), hanya ramping (# 3 ), dan tiada ramping (# 5 ).;

Langkah 5: Beberapa Catatan

Mohon maaf atas istilah, kesalahan ketik dan kesalahan yang salah. Saya bukan penutur asli bahasa Inggeris, dan saya juga tidak mempunyai pengetahuan yang terperinci mengenai elektrik, elektronik atau pengaturcaraan. Yang sebenarnya bermaksud bahawa saya berusaha menulis bahasa Inggeris yang boleh dipelajari mengenai perkara-perkara di mana saya hampir tidak mengetahui istilah yang betul dalam bahasa saya sendiri. Oleh itu, sebarang petunjuk, pembetulan atau idea untuk penambahbaikan dialu-alukan. H

Disyorkan: