Daftar Isi:

Buat Tombol Daya Raspberry Pi yang Lebih Baik: 4 Langkah
Buat Tombol Daya Raspberry Pi yang Lebih Baik: 4 Langkah

Video: Buat Tombol Daya Raspberry Pi yang Lebih Baik: 4 Langkah

Video: Buat Tombol Daya Raspberry Pi yang Lebih Baik: 4 Langkah
Video: Apa itu Raspberry Pi? Kelebihan dan Kegunaannya 2024, Juli
Anonim
Image
Image

Sangat mudah untuk membuat tombol power-off atau shutdown Raspberry. Ada banyak proyek semacam itu di web dan beberapa di sini di Instructables, tetapi tidak satu pun dari mereka (yang dapat saya lihat) memberi tahu Anda kapan Pi Anda benar-benar selesai dimatikan dan karenanya aman untuk menarik daya. Bahkan mereka tidak mengakui bahwa tombol-tekan telah terlihat.

Ada juga proyek untuk memulai ulang Pi yang telah dimatikan, tetapi ini juga tidak memberi Anda umpan balik visual.

Tapi siapa yang butuh tombol seperti itu? Jika Anda sedikit nerd seperti saya, atau bahkan hanya seorang nerd yang bercita-cita tinggi, Anda selalu dapat masuk ke Pi Anda secara lokal atau melalui jaringan dan ketik sudo shutdown -h now. Tetapi jika Anda sedang membangun proyek untuk pengguna non-teknis, itu tidak akan berhasil. Benar, Anda hampir selalu dapat lolos hanya dengan menarik kabel daya, tetapi perhatikan, saya katakan hampir selalu! Keberuntungan semua orang cepat atau lambat akan habis. Saya memiliki kartu SD yang mati hanya minggu lalu, meskipun saya tidak akan pernah tahu apakah itu benar-benar karena kehilangan daya secara tiba-tiba.

Dalam kasus saya, saya perlu menambahkan tombol daya ke Pi yang kami gunakan sebagai sequencer midi untuk merekam dan memutar ulang himne dan lagu di gereja, karena ketika kami tidak memiliki pianis live. Saya selalu dapat mengetikkan perintah shutdown tetapi saya harus menghilangkan keterampilannya ketika saya tidak ada di sana.

Maksud saya di sini bukan untuk memberi Anda produk jadi, lengkap dengan kasing cetak 3D yang indah, seperti banyak Instruksi lainnya. Setiap orang akan memiliki kegunaan yang berbeda untuk itu atau ingin memasukkannya ke dalam proyek mereka sendiri. Sebaliknya, saya akan menyiapkan Anda dengan teknologi yang dapat Anda tambahkan ke proyek Anda, apakah itu pusat media, perangkat IoT, atau apa pun.

(Dalam video saya mendemonstrasikannya dengan Pi Zero v1.2 dan monitor yang saya buat dari layar laptop bekas dan pengontrol dari Timur Jauh.)

Langkah 1: Desain

Bagaimana itu bekerja
Bagaimana itu bekerja

Inilah yang akan dilakukan tombol daya saya untuk Anda:

  • Saat Pi berjalan, LED menyala terus menerus. Jika dimatikan secara manual, LED hanya akan mati jika sudah aman untuk mencabut kabel daya.
  • Saat berjalan, jika Anda menekan tombol setidaknya selama satu detik, shutdown dimulai dan LED berkedip selama seperempat detik setiap detik hingga aman untuk mencabut daya.
  • Dari keadaan mati (jika daya belum dicabut), menekan tombol akan memulai booting dan menyalakan LED selama seperempat detik setiap detik hingga booting. (Mungkin perlu sedikit lebih lama hingga semua layanan seperti ssh dan vnc berjalan.)

Komponennya sangat murah. Yang kamu butuhkan adalah:

  • ATTiny85 (chip yang kompatibel dengan Arduino)
  • 3 resistor: 2 x 330Ω dan 1 x 10kΩ
  • 1 LED - Saya sarankan hijau atau biru, tapi itu pilihan Anda
  • papan tempat memotong roti dan kabel jumper, atau papan strip, atau apa pun yang Anda inginkan untuk membuatnya.

Langkah 2: Cara Kerjanya

Seperti semua tombol daya Pi, tombol ini menarik pin GPIO ke status rendah untuk memberi sinyal permintaan shutdown ke program pembantu yang berjalan di Pi. Saya menggunakan GPIO4 (pin 7) tetapi Anda dapat menggunakan pin lain.

Satu-satunya cara untuk mengetahui bahwa Pi telah menyelesaikan shutdown adalah dengan menonton TxD pin 8, yang kemudian menjadi rendah. Ini tergantung pada konsol serial yang diaktifkan, yang secara default. Sebenarnya TxD akan naik dan turun secara teratur saat digunakan sebagai konsol serial, tetapi tidak akan pernah turun lebih dari sekitar 30mS pada satu waktu, bahkan pada baud rate paling lambat. Itu masih dapat digunakan untuk konsol serial karena kami hanya menontonnya secara pasif.

Untuk mem-boot ulang, kita perlu menarik SCL1 (pin 5) secara singkat. Pin ini digunakan oleh semua perangkat I2C (termasuk antarmuka midi saya), tetapi setelah memulai boot, kami membiarkannya.

Sebagian besar kerumitan ada di sketsa Arduino yang kami muat ke dalam ATTiny85. Ini mengimplementasikan "mesin negara" - cara yang sangat berguna dan kuat untuk mengkodekan masalah apa pun yang dapat diwakili oleh sejumlah "status". Mesin cuci bekerja dengan cara yang sama. Status mewakili tahapan dalam siklus pencucian, dan masing-masing menentukan apa yang harus dilakukan mesin pada saat itu (motor atau pompa yang akan dijalankan, katup yang akan dibuka atau ditutup) dan input sensor apa (suhu, ketinggian air, timer) menentukan kapan harus pindah ke state berikutnya dan state mana yang harus dipilih.

Sketsa tangan adalah draf pertama diagram keadaan, yang menunjukkan semua transisi keadaan. Ini hanya untuk menunjukkan kepada Anda bagaimana awalnya Anda dapat merencanakan status dan transisi status Anda - ini mungkin tidak sepenuhnya akurat seperti sebelum saya mulai men-debug.

Dalam kasus kami, kami memiliki 6 status yang saya sebut OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST, dan SHUTTING DOWN. (Setelah MATI itu bergerak kembali ke OFF.) Ini diidentifikasi oleh komentar dalam sketsa, dan untuk masing-masing, komentar lebih lanjut mengatakan apa yang harus dilakukan dan peristiwa apa yang akan memindahkannya ke keadaan lain.

Program pembantu yang berjalan di Pi hanya sedikit lebih rumit daripada kebanyakan tombol shutdown. Ini merespons pulsa panjang rendah pada pin GPIO dengan memulai shutdown, tetapi juga merespons pulsa pendek dengan sendirinya menarik pin GPIO rendah. Ini adalah bagaimana ATTiny85 dapat mengetahui bahwa itu sedang berjalan dan dengan demikian dapat berpindah dari status BOOTING ke status RUNNING.

Langkah 3: Membangun Prototipe Demo

Membangun Prototipe Demo
Membangun Prototipe Demo
Membangun Prototipe Demo
Membangun Prototipe Demo
Membangun Prototipe Demo
Membangun Prototipe Demo

Untuk tujuan demonstrasi, Anda dapat membuat prototipe pada papan tempat memotong roti tanpa solder seperti yang ditunjukkan tetapi saya juga telah memberi Anda skema sehingga Anda dapat menyusun tata letak Anda sendiri menggunakan stripboard atau PCB khusus, mungkin bagian dari proyek 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 file PiPwr.ino ke dalamnya. Meluncurkan Arduino IDE Anda sekarang akan menemukannya di buku sketsa Anda.

Ada beberapa cara memprogram ATTiny85. Jika bootloader Anda telah terinstal, Anda dapat menggunakan papan pengembangan ATTiny85 dengan biaya hanya beberapa pound. Ini terhubung ke PC Anda melalui port USB. Saya menggunakan Hidiot yang pada dasarnya sama tetapi dengan area prototyping.

Di Arduino IDE di bawah File - Preferences, tambahkan

digistump.com/package_digistump_index.json

ke URL pengelola papan tambahan.

Di bawah Alat - Papan Anda sekarang akan melihat sejumlah opsi Digispark. Pilih Digispark (Default - 16.5MHz).

Jika ATTiny85 Anda tidak memiliki bootloader (atau Anda tidak tahu) maka Anda bisa mendapatkan programmer AVR ISP dengan beberapa pound. Atau Anda bisa menggunakan Arduino Uno atau Pro Mini atau Nano yang lebih murah sebagai programmer. Google untuk "arduino as ISP attiny85" (tanpa tanda kutip) untuk petunjuk.

Jika Anda ingin memodifikasi sketsa, Anda akan menemukannya sepenuhnya dikomentari dan mudah-mudahan mudah diikuti. Untuk debugging jauh lebih mudah menggunakan Arduino Pro Mini atau Nano. Batalkan komentar serial.begin() di Setup dan pernyataan cetak di loop() untuk melihat langkah-langkah yang dilaluinya menggunakan monitor serial. Ada definisi pin alternatif di sumber, berkomentar, untuk Uno, Pro Mini atau Nano.

Di Raspberry Pi Anda, salin file shutdown_helper.py ke folder /etc/local/bin dan atur sebagai executable dengan perintah

sudo chmod +x /usr/local/bin/shutdown_helper.py

Sekarang edit file /etc/rc.local dengan editor favorit Anda. (Anda harus melakukannya sebagai root.) Sebelum baris terakhir (keluar 0) masukkan baris

nohup /usr/local/bin/shutdown_helper.py &

Reboot, dan program pembantu akan dimulai secara otomatis.

Direkomendasikan: