Isi kandungan:
- Langkah 1: Reka Bentuknya
- Langkah 2: Bagaimana Ia Berfungsi
- Langkah 3: Membina Prototaip Demo
- Langkah 4: Memprogram ATTiny85
Video: Bina Butang Kuasa Raspberry Pi yang Lebih Baik: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Sangat mudah untuk membuat butang mematikan atau mematikan Raspberry. Terdapat banyak projek seperti itu di web dan beberapa di sini di Instructables, tetapi tidak satu pun dari mereka (yang dapat saya lihat) memberitahu anda apabila Pi anda benar-benar selesai dimatikan dan oleh itu selamat untuk menarik kuasa. Malah mereka bahkan tidak mengakui bahawa penekanan butang telah dilihat.
Terdapat juga projek untuk memulakan semula Pi yang telah ditutup, tetapi kedua-duanya tidak memberi anda maklum balas visual.
Tetapi siapa yang memerlukan butang seperti itu? Sekiranya anda agak kutu buku seperti saya, atau hanya kutu buku yang bercita-cita tinggi, anda selalu boleh log masuk ke Pi anda secara tempatan atau melalui rangkaian dan ketik sudo shutdown -h sekarang. Tetapi jika anda membina projek untuk pengguna bukan teknikal, itu tidak akan berjaya. Benar, anda hampir selalu dapat melepaskan diri dengan hanya menarik kabel kuasa, tetapi perhatikan, saya katakan hampir selalu! Nasib semua orang cepat atau lambat. Saya mempunyai kad SD yang mati pada minggu lepas, walaupun saya tidak akan tahu sama ada ia benar-benar disebabkan oleh kehilangan kuasa yang tiba-tiba.
Dalam kes saya, saya perlu menambahkan butang power ke Pi yang kami gunakan sebagai sequencer midi untuk merakam dan memutar lagu-lagu pujian dan lagu di gereja, kerana ketika kami tidak mempunyai pemain piano langsung. Saya selalu dapat menaip perintah shutdown tetapi saya perlu mengurangkan kemahirannya ketika saya tidak berada di sana.
Tujuan saya di sini bukanlah untuk memberi anda produk siap, lengkap dengan cetakan 3D yang indah, seperti banyak Instruksional lain. Setiap orang akan mempunyai penggunaan yang berbeza atau ingin memasukkannya ke dalam projek mereka sendiri. Sebaliknya, saya akan menyediakan anda dengan teknologi yang boleh anda tambahkan ke projek anda, sama ada pusat media, peranti IoT, atau apa sahaja.
(Dalam video itu saya menunjukkannya dengan Pi Zero v1.2 dan monitor yang saya buat dari skrin komputer riba yang dipakai semula dan alat kawalan dari Timur Jauh.)
Langkah 1: Reka Bentuknya
Inilah yang akan dilakukan oleh butang kuasa saya untuk anda:
- Semasa Pi sedang berjalan, LED menyala berterusan. Sekiranya ia dimatikan secara manual, LED akan padam hanya apabila selamat mencabut kuasa.
- Semasa berjalan, jika anda menekan butang sekurang-kurangnya satu saat, pemadaman dimulakan dan LED mati selama seperempat saat setiap saat sehingga selamat untuk mencabut bekalan elektrik.
- Dari keadaan mati (jika daya belum dilepaskan), menekan butang akan memulakan boot dan menyalakan LED selama seperempat saat setiap saat sehingga ia dimulakan. (Mungkin memerlukan sedikit masa lagi sehingga semua perkhidmatan seperti ssh dan vnc berjalan.)
Komponennya sangat murah. Yang anda perlukan adalah:
- ATTiny85 (cip serasi Arduino)
- 3 perintang: 2 x 330Ω dan 1 x 10kΩ
- 1 LED - Saya mencadangkan warna hijau atau biru, tetapi ia adalah pilihan anda
- papan roti dan wayar pelompat, atau papan jalur, atau bagaimanapun anda mahu membinanya.
Langkah 2: Bagaimana Ia Berfungsi
Seperti semua butang kuasa Pi, yang satu ini menarik pin GPIO ke keadaan rendah untuk menandakan permintaan penutupan ke program pembantu yang berjalan pada Pi. Saya menggunakan GPIO4 (pin 7) tetapi anda boleh menggunakan pin lain.
Satu-satunya cara untuk memberitahu bahawa Pi telah selesai ditutup adalah dengan menonton pin TxD 8, yang kemudian menjadi rendah. Ini bergantung pada konsol siri yang diaktifkan, yang secara lalai. Sebenarnya TxD akan naik dan turun secara berkala semasa ia digunakan sebagai konsol bersiri, tetapi tidak akan pernah turun lebih rendah daripada lebih kurang 30mS pada satu masa, walaupun pada tahap baud biasa paling lambat. Itu masih boleh digunakan untuk konsol bersiri kerana kita menontonnya secara pasif.
Untuk menghidupkan semula, kita perlu menarik SCL1 (pin 5) ke bawah secara ringkas. Pin ini digunakan oleh mana-mana peranti I2C (termasuk antara muka midi saya), tetapi setelah memulakan boot, kami membiarkannya.
Sebilangan besar kerumitan terdapat dalam lakaran Arduino yang kami muatkan ke ATTiny85. Ini menerapkan "mesin keadaan" - cara yang sangat berguna dan kuat untuk mengekod masalah apa pun yang dapat diwakili oleh sejumlah "keadaan". Mesin basuh berfungsi dengan cara yang sama. Keadaan mewakili tahap-tahap dalam kitaran pencucian, dan masing-masing menentukan apa yang harus dilakukan mesin pada ketika itu (motor atau pam yang hendak dijalankan, injap dibuka atau ditutup) dan input sensor apa (suhu, paras air, pemasa) tentukan bila hendak berpindah ke keadaan seterusnya dan negeri mana yang akan dipilih.
Lakaran tangan adalah draf pertama rajah keadaan saya, menunjukkan semua peralihan keadaan. Ini hanya untuk menunjukkan kepada anda bagaimana anda boleh merancang peralihan keadaan dan keadaan anda pada mulanya - mungkin tidak tepat seperti yang saya lakukan sebelum saya memulakan debug.
Dalam kes kami, kami mempunyai 6 keadaan yang telah saya namakan OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST, dan SHUTTING DOWN. (Setelah MENUTUP DOWN, ia bergerak kembali ke MATI.) Ini dikenal pasti oleh komen dalam lakaran, dan untuk masing-masing, komen selanjutnya mengatakan apa yang harus dilakukan dan peristiwa apa yang akan memindahkannya ke keadaan lain.
Program pembantu yang berjalan di Pi sedikit lebih rumit daripada kebanyakan butang tutup. Ia bertindak balas terhadap nadi rendah yang panjang pada pin GPIO dengan memulakan penutupan, tetapi ia juga bertindak balas terhadap nadi pendek dengan sendirinya menarik pin GPIO rendah. Ini adalah bagaimana ATTiny85 dapat mengetahui bahawa ia sedang berjalan dan boleh bergerak dari keadaan BOOTING ke keadaan MENJALANKAN.
Langkah 3: Membina Prototaip Demo
Untuk tujuan demonstrasi, anda boleh membuat prototaip pada papan roti tanpa solder seperti yang ditunjukkan tetapi saya juga telah memberikan skema kepada anda supaya anda dapat menyusun susun atur anda sendiri menggunakan papan jalur atau PCB khusus, mungkin merupakan sebahagian daripada projek yang lebih luas.
Langkah 4: Memprogram ATTiny85
Sketsa Arduino dan program pembantu dilampirkan pada langkah ini. Di folder sketsa Arduino anda, buat folder bernama PiPwr dan salin fail PiPwr.ino ke dalamnya. Melancarkan Arduino IDE, anda sekarang akan menemuinya di buku lakaran anda.
Terdapat beberapa cara pengaturcaraan ATTiny85. Sekiranya pemuat boot anda dipasang, anda boleh menggunakan papan pengembangan ATTiny85 yang berharga hanya beberapa paun. Ini menyambung ke PC anda melalui port USB. Saya menggunakan Hidiot yang pada dasarnya sama tetapi dengan kawasan prototaip.
Di Arduino IDE di bawah Fail - Keutamaan, tambahkan
digistump.com/package_digistump_index.json
ke URL pengurus papan Tambahan.
Di bawah Alat - Papan sekarang anda akan melihat sejumlah pilihan Digispark. Pilih Digispark (Lalai - 16.5MHz).
Sekiranya ATTiny85 anda tidak mempunyai bootloader (atau anda tidak tahu) maka anda boleh mendapatkan programmer AVR ISP dengan harga beberapa paun. Atau anda boleh menggunakan Arduino Uno atau Pro Mini atau Nano yang lebih murah sebagai pengaturcara. Google untuk "arduino as isp attiny85" (tanpa tanda petik) untuk arahan.
Sekiranya anda ingin mengubah lakaran, anda akan mendapat komen sepenuhnya dan mudah diikuti. Untuk melakukan debug, lebih mudah menggunakan Arduino Pro Mini atau Nano. Tanggalkan siri.begin () dalam Penyediaan dan pernyataan cetak dalam gelung () untuk melihat langkah-langkah yang dilaluinya menggunakan monitor bersiri. Terdapat definisi pin alternatif dalam sumber, yang dikomentari, untuk Uno, Pro Mini atau Nano.
Pada Raspberry Pi anda, salin file shutdown_helper.py ke folder / etc / local / bin dan tetapkan sebagai boleh dilaksanakan dengan arahan
sudo chmod + x /usr/local/bin/shutdown_helper.py
Sekarang edit fail /etc/rc.local dengan editor kegemaran anda. (Anda perlu melakukannya sebagai root.) Sebelum baris terakhir (keluar 0) masukkan baris
nohup /usr/local/bin/shutdown_helper.py &
Reboot, dan program pembantu akan dimulakan secara automatik.
Disyorkan:
Lebih Selamat Lebih Baik: Menjadikan Stesen Keretapi Lebih Selamat: 7 Langkah
Lebih Selamat Lebih Baik: Menjadikan Stesen Kereta Api Lebih Selamat: Banyak stesen kereta api hari ini tidak selamat kerana kekurangan keselamatan, halangan, dan amaran kereta api masuk. Kami melihat perlunya diperbaiki. Untuk menyelesaikan masalah ini, kami membuat Safer Better. Kami menggunakan sensor getaran, sensor gerakan, dan
Bina Vista yang Lebih Baik Secara Percuma: 3 Langkah
Bina Vista yang Lebih Baik secara percuma: Bagaimana untuk membina Vista yang lebih baik secara percuma. Ramai orang melaporkan masalah serius dengan mengemas kini mesin Windows XP (TM) yang ada ke Vista (TM). Malah pada mesin baru. Lihat sebagai contoh: http://www.youtube.com/watch?v=FVbf9tOGwnoJadi banyak orang merancang
Penggantian Jack Headphone Sony - Lebih Baik dan Lebih Kuat: 10 Langkah (dengan Gambar)
Penggantian Jack Headphone Sony - Lebih Baik dan Kuat: Sebilangan besar fon kepala dibuat ringan, terdengar baik dan direka untuk pecah pada steker. Langkah-langkah ini boleh digunakan untuk hampir semua model fon kepala. Untuk fon kepala yang sangat murah, wayar akan terlalu halus (kecil) untuk digunakan dengan Untuk Instruktif ini, saya
Kabel Kuasa Laptop Yang Lebih Baik: 14 Langkah
Kabel Kuasa Laptop Yang Lebih Baik: Bosan menggunakan komputer riba anda di dewan kuliah dengan 300+ tempat duduk dan satu cawangan … atau apabila semua tempat duduk di sebelah kedai penuh? (dan anda terlalu malas untuk mengecas komputer riba terlebih dahulu) Anda boleh memanjangkan kabel kuasa anda dengan mudah sehingga 25 kaki dan menambah
Jadikan Shock Kereta RC Anda Lebih pendek untuk Pengendalian yang Lebih Baik pada Kelajuan Tinggi: 5 Langkah
Jadikan Shock Kereta RC Anda Lebih pendek untuk Pengendalian yang Lebih Baik pada Kelajuan Tinggi: Dalam Instruksional ini, saya akan menunjukkan kepada anda cara memendekkan kejutan anda sehingga anda dapat membawa kereta anda lebih dekat ke tanah sehingga anda dapat mengambil putaran kelajuan yang lebih tinggi tanpa mengepakkan. Saya akan menggunakan Instruksional lain mengenai cara melakukan penyelenggaraan kejutan pada kereta anda sehingga