İçindekiler:

Daha İyi Bir Raspberry Pi Güç Düğmesi Oluşturun: 4 Adım
Daha İyi Bir Raspberry Pi Güç Düğmesi Oluşturun: 4 Adım

Video: Daha İyi Bir Raspberry Pi Güç Düğmesi Oluşturun: 4 Adım

Video: Daha İyi Bir Raspberry Pi Güç Düğmesi Oluşturun: 4 Adım
Video: AKILLI CİHAZLARINIZI TEK YERDEN YÖNETİN | Home Assistant (Hassio) kurulumu 2024, Kasım
Anonim
Image
Image

Ahududu kapatma veya kapatma düğmesi yapmak çok kolaydır. Web'de bu tür çok sayıda proje var ve birkaçı burada Instructables'ta, ancak hiçbiri (görebildiğim kadarıyla) Pi'nizin gerçekten kapanmayı ne zaman bitirdiğini size söylemiyor ve bu nedenle gücü çekmek güvenli. Aslında, düğmeye basmanın görüldüğünü bile kabul etmiyorlar.

Kapatılan bir Pi'yi yeniden başlatmak için projeler de var, ancak bunlar size herhangi bir görsel geri bildirim de vermiyor.

Ama kimin böyle bir düğmeye ihtiyacı var? Benim gibi biraz inekseniz, hatta sadece hevesli bir inekseniz, Pi'nize her zaman yerel olarak veya ağ üzerinden giriş yapabilir ve sudo kapatma -h şimdi yazabilirsiniz. Ancak teknik bilgisi olmayan kullanıcılar için bir proje oluşturuyorsanız, bu yeterli olmayacaktır. Doğru, sadece güç kablosunu çekerek neredeyse her zaman kurtulabilirsiniz, ancak dikkat edin, neredeyse her zaman dedim! Herkesin şansı er ya da geç tükenir. Sadece geçen hafta üzerimde bir SD kart öldü, ancak bunun gerçekten ani bir güç kaybından kaynaklanıp kaynaklanmadığını asla bilemeyeceğim.

Benim durumumda, canlı bir piyanistimiz olmadığında kilisede ilahileri ve şarkıları kaydetmek ve çalmak için midi sıralayıcı olarak kullandığımız bir Pi'ye bir güç düğmesi eklemem gerekiyordu. Her zaman kapatma komutunu yazabilirim ama orada olmadığım zamanlar için yeteneğimi kaldırmam gerekiyor.

Buradaki amacım, diğer pek çok Eğitilebilir Kitap gibi size güzel 3D baskılı kılıfla tamamlanmış bitmiş bir ürün vermek değil. Herkes bunun için farklı bir kullanıma sahip olacak veya kendi projesine dahil etmek isteyecektir. Bunun yerine, ister medya merkezi, ister IoT cihazı veya başka bir şey olsun, projenize ekleyebileceğiniz teknolojiyi ayarlayacağım.

(Videoda bir Pi Zero v1.2 ve yeniden tasarlanmış bir dizüstü bilgisayar ekranından yaptığım bir monitör ve Uzak Doğu'dan bir kontrol cihazı ile gösteriyorum.)

Adım 1: Tasarım

Nasıl çalışır
Nasıl çalışır

Güç düğmemin sizin için yapacağı şey bu:

  • Pi çalışırken, bir LED sürekli yanar. Manuel olarak kapatılırsa, LED yalnızca gücün fişini çekmek güvenli olduğunda söner.
  • Çalışırken, düğmeye en az bir saniye basarsanız, bir kapatma başlatılır ve LED, gücün fişini çekmek güvenli olana kadar saniyede çeyrek saniye boyunca yanıp söner.
  • Kapatma durumundan (güç kesilmemişse), düğmeye basmak önyüklemeyi başlatır ve açılana kadar LED'i her saniye çeyrek saniye boyunca yanıp söner. (Ssh ve vnc gibi tüm servislerin çalışması biraz daha uzun sürebilir.)

Bileşenler çok ucuz. Tum ihtiyacin olan sey:

  • ATTiny85 (Arduino uyumlu çip)
  • 3 direnç: 2 x 330Ω ve 1 x 10kΩ
  • 1 LED - Yeşil veya mavi öneririm, ancak bu sizin seçiminiz
  • breadboard ve jumper kabloları veya stripboard veya nasıl inşa etmek istiyorsanız.

Adım 2: Nasıl Çalışır?

Tüm Pi güç düğmelerinde olduğu gibi, bu, Pi üzerinde çalışan bir yardımcı programa kapatma isteğini bildirmek için bir GPIO pinini düşük bir duruma çeker. GPIO4 (pin 7) kullandım ama başka bir pin kullanabilirsiniz.

Bir Pi'nin kapanmayı tamamladığını söylemenin tek yolu, daha sonra azalan TxD pin 8'i izlemektir. Bu, varsayılan olarak etkinleştirilen seri konsola bağlıdır. Aslında, seri konsol olarak kullanıldığında TxD düzenli olarak yukarı ve aşağı gidecektir, ancak en düşük genel baud hızında bile bir seferde 30mS'den fazla asla düşmeyecektir. Sadece pasif olarak izlediğimiz için seri konsol için hala kullanılabilir.

Yeniden başlatmak için kısaca SCL1'i (pin 5) aşağı çekmemiz gerekiyor. Bu pin herhangi bir I2C cihazı tarafından kullanılır (midi arayüzüm dahil), ancak önyüklemeyi başlattıktan sonra onu kendi haline bırakıyoruz.

Karmaşıklığın çoğu, ATTiny85'e yüklediğimiz Arduino çiziminde. Bu, bir "durum makinesi" uygular - bir dizi "durum" tarafından temsil edilebilecek herhangi bir sorunu kodlamanın çok kullanışlı ve güçlü bir yolu. Bir çamaşır makinesi de aynı şekilde çalışır. Durumlar, yıkama döngüsündeki aşamaları temsil eder ve her biri, makinenin o noktada ne yapması gerektiğini (çalışacak motorlar veya pompalar, açılacak veya kapatılacak vanalar) ve hangi sensör girişlerini (sıcaklık, su seviyesi, zamanlayıcılar) tanımlar. bir sonraki duruma ne zaman geçileceğini ve hangi sonraki durumun seçileceğini belirleyin.

El çizimi, tüm durum geçişlerini gösteren bir durum diyagramının ilk taslağıdır. Bu sadece durumlarınızı ve durum geçişlerinizi başlangıçta nasıl planlayabileceğinizi göstermek içindir - hata ayıklamaya başlamadan önceki kadar tam olarak doğru olmayabilir.

Bizim durumumuzda KAPALI, AÇMA TALEP, BAŞLATMA, ÇALIŞIYOR, KAPATMA İSTEĞİ ve KAPATMA olarak adlandırdığım 6 durumumuz var. (KAPATMA işleminden sonra tekrar KAPALI konuma geçer.) Bunlar taslaktaki yorumlarla tanımlanır ve her biri için daha fazla yorum, ne yapması gerektiğini ve hangi olayların onu başka bir duruma taşıyacağını söyler.

Pi üzerinde çalışan yardımcı program, çoğu kapatma düğmesinden biraz daha karmaşıktır. Bir kapatma başlatarak GPIO pinindeki uzun bir düşük darbeye yanıt verir, ancak aynı zamanda kısa bir darbeye de GPIO pimini kısaca aşağı çekerek yanıt verir. ATTiny85'in çalıştığını bu şekilde anlayabilir ve böylece BAŞLATMA durumundan ÇALIŞIYOR durumuna geçebilir.

3. Adım: Bir Demo Prototip Oluşturma

Demo Prototip Oluşturma
Demo Prototip Oluşturma
Demo Prototip Oluşturma
Demo Prototip Oluşturma
Demo Prototip Oluşturma
Demo Prototip Oluşturma

Gösteri amacıyla, gösterildiği gibi lehimsiz bir devre tahtası üzerinde prototipini oluşturabilirsiniz, ancak şemayı da verdim, böylece şerit tahtası veya özel bir PCB kullanarak, belki daha geniş bir projenin parçası olarak kendi düzeninizi oluşturabilirsiniz.

Adım 4: ATTiny85'in Programlanması

Arduino taslağı ve yardımcı program bu adıma eklenmiştir. Arduino eskiz klasörünüzde PiPwr adlı bir klasör oluşturun ve PiPwr.ino dosyasını içine kopyalayın. Arduino IDE'yi başlattığınızda, onu artık eskiz defterinizde bulacaksınız.

Bir ATTiny85'i programlamanın birkaç yolu vardır. Sizinkinde bir önyükleyici kuruluysa, yalnızca birkaç sterline mal olan bir ATTiny85 geliştirme kartı kullanabilirsiniz. Bu, bir USB bağlantı noktası aracılığıyla PC'nize bağlanır. Temelde aynı olan ancak prototipleme alanı olan bir Hidiot kullandım.

Arduino IDE'de Dosya - Tercihler altında, ekleyin

digistump.com/package_digistump_index.json

Ek pano yöneticisi URL'lerine.

Araçlar - Pano altında şimdi bir dizi Digispark seçeneği görmelisiniz. Digispark'ı seçin (Varsayılan - 16.5MHz).

ATTiny85'inizin bir önyükleyicisi yoksa (veya bilmiyorsanız), birkaç pound için bir AVR ISP programcısı alabilirsiniz. Veya programlayıcı olarak Arduino Uno veya daha ucuz Pro Mini veya Nano kullanabilirsiniz. Talimatlar için "arduino as isp attiny85" (tırnak işaretleri olmadan) için Google.

Krokiyi değiştirmek isterseniz, tamamen yorumlandığını ve takip edilmesinin kolay olduğunu umarsınız. Hata ayıklama için Arduino Pro Mini veya Nano kullanmak çok daha kolaydır. Seri monitörü kullanarak geçtiği adımları görmek için Setup'ta serial.begin() öğesini ve loop() içindeki print deyimlerini kaldırın. Kaynakta bir Uno, Pro Mini veya Nano için yorumlanmış alternatif pin tanımları vardır.

Raspberry Pi'nizde, shutdown_helper.py dosyasını /etc/local/bin klasörüne kopyalayın ve komutla yürütülebilir olarak ayarlayın

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

Şimdi /etc/rc.local dosyasını favori düzenleyicinizle düzenleyin. (Bunu root olarak yapmanız gerekecektir.) Son satırdan (0'dan çıkış) önce satırı ekleyin

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

Yeniden başlatın ve yardımcı program otomatik olarak başlayacaktır.

Önerilen: