İçindekiler:

Akıllı Duvar Takvimi: 5 Adım
Akıllı Duvar Takvimi: 5 Adım

Video: Akıllı Duvar Takvimi: 5 Adım

Video: Akıllı Duvar Takvimi: 5 Adım
Video: Adım at para kazan hîlesi ( Arapların taktiği 😅 ) 2024, Temmuz
Anonim
Akıllı Duvar Takvimi
Akıllı Duvar Takvimi

Eşimle benim için önemli tarihleri işaretlediğimiz klasik kağıt duvar takvimimiz vardı. Etkinlikleri işaretlemek için akıllı telefonlarımızda da Google takvimi kullanıyoruz, bu da çifte iş anlamına geliyordu. Bu yüzden hatırlatıcılarımızı, etkinlikleri ve diğer bazı verileri gösterecek bir tür akıllı duvar takvimi oluşturmaya karar verdim. Etrafta çeşitli eski elektronik parçalar olduğu için amacım onları olabildiğince çok yeniden kullanmak ve takvimi olabildiğince az maliyetle oluşturmaktı.

Bu eğitimde size, birkaç Google hesabındaki etkinlikleri görüntüleyerek akıllı duvar takviminin nasıl oluşturulacağını göstereceğim. Ayrıca saat, tarih, hava durumu, sıcaklık ve bazı ek bilgileri de gösterecektir. Pasif Kızılötesi Sensör (PIR) hareket sensörü takılı bir Raspberry Pi bilgisayar tarafından çalıştırılacaktır, böylece odada hareket algılandığında ekran açılır, ancak birkaç dakika hareketsizlikten sonra kapanır. Bu eğitim, internette bulduğum diğer birkaç öğreticiye dayanmaktadır ve daha iyi anlaşılması için onlara bağlantılar vereceğim. Bazı temel programlama bilgisine ihtiyaç vardır (HTML, Python, …).

Adım 1: Donanım

Daha önce de belirtildiği gibi, maliyetleri düşürmek için eski elektronik parçaları tekrar kullanmaya çalıştım. Ancak satın almam gereken bazı ürünler var, bu yüzden inşaat için gerekli olan her şeyi listeleyeceğim.

- Ahududu Pi kiti. Başlangıçta eski model 2'mi başka bir projeden kullandım. İşe yaradı, ancak web sayfasını düzenleme ve yeniden yükleme çok zamanımı aldı, bu yüzden sonunda daha akıcı çalışan model 3'e geçtim https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=ahududu+pi+kit&_sacat=0

- LCD ekran. Ekranı eski dizüstü bilgisayarımdan kullandım, bu yüzden sadece bunun için LVDS sürücü kartı ve güç kaynağı almam gerekiyordu https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ sürücü+LVDS+board&_sacat=0

- Elektronik cihazlar için plastik saklama kutusu

- Pasif kızılötesi hareket sensörü

- AM2302 sıcaklık/nem sensörü

- LCD çerçeve için siyah plastik sürgülü bağlayıcı

- Çeşitli kablolar (HDMI, DC güç için 5.5mm, lehimsiz devre tahtası atlama kabloları,…)

Adım 2: LCD Ekranı Oluşturma

LCD Ekranı Oluşturma
LCD Ekranı Oluşturma
LCD Ekranı Oluşturma
LCD Ekranı Oluşturma
LCD Ekranı Oluşturma
LCD Ekranı Oluşturma

Eski, eski dizüstü bilgisayarımın LCD ekranını kullandım. Bunun nasıl yapılacağına dair birkaç ders var, bunu takip ettim:

www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/

Eski dizüstü bilgisayarımın kapağını söktüm, LCD ekranını çıkardım ve ardından doğru LVDS sürücü kartını sipariş ettim. Satıcıya LCD'nin arka tarafında bulunabilecek ürün kodunu verdim, benim durumumda bu LP171WE3 (TL)(A2) - son resimdeki sağ alt etikete bakın ve sonra bana uygun LVDS'yi gönderdi. Lütfen dikkat, ekran için güç kaynağına da ihtiyacınız olacak, bu nedenle satıcıdan onu da göndermesini isteyin. Ayrıca sürücü panosuna güzel bir şekilde oturması ve LCD'nin arka tarafına takması için 14.5×7.5×2cm'lik güzel bir plastik kutu satın aldım.

Artık LCD ekran, hoş görünmeyen metalik bir çerçeveye sahip. İlk başta spreyle siyaha boyadım ama boya soyulmaya başladı. Bu yüzden, tipik olarak kağıt yapraklarını ciltlemek için kullanılan dört adet siyah plastik sürgülü bağlayıcıyı aldım, uygun şekilde kestim ve çerçeveyi kaplayacak şekilde yapıştırdım. Bu iyi görünüyordu, bu yüzden HDMI'ya takılı tüm kabloları eski Raspberry Pi'me ve Voila'ya bağladım - işe yaradı! Ekranda bir resim gösteriliyordu, bu yüzden bir sonraki adıma geçmeye hazırdım - ekranda hangi bilgilerin gösterileceği ve nasıl gösterileceği.

Adım 3: Yazılımı Kurma

Takvim nasıl oluşturulur diye internette bazı ipuçları ararken bu sayfadan ilham aldım https://dakboard.com/site. Bitmiş ürünü (ekran, bilgisayar ve çalışan yazılım) sağlarlar, ancak aynı zamanda DIY çözümü için mükemmel bir öğreticileri vardır (https://blog.dakboard.com/diy-wall-display/). Tarayıcının açılışta istenen web sayfasını otomatik olarak yüklemesi için bu öğreticiyi, en azından Raspberry'de sistemi hazırlama ve kurma talimatlarını içeren ilk bölüm için izlemenizi tavsiye ederim.

Bu iyi çalıştı, ancak isteklerime göre daha özelleştirilebilecek bir çözüm arıyordum. Kendi web sunucumu kurmaya ve takvimin yanı sıra ek bilgiler gösterecek bir web sayfası oluşturmaya karar verdim. Wordpress.org'u seçtim, çünkü iyi bir şekilde belgelenmiş ve size yardımcı olacak iyi bir desteğe ve geniş bir topluluğa sahip. İşte Raspberry Pi'ye Wordpress'in nasıl kurulacağına dair öğretici: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Wordpress yüklendiğinde, ana sayfamı tasarlamanın zamanı gelmişti. Sağlanan birçok temadan birini kullanabilir veya sıfırdan tasarlayabilirsiniz. Her neyse, bunun için biraz HTML programlama bilgisi gerekiyor.

Sayfamı, sol tarafta takvim gösterilecek şekilde (https://sl.wordpress.org/plugins/google-calendar-events/), sağ tarafta ise saat ve tarih gösterilecek şekilde tasarladım (https://sl.wordpress.org/plugins/google-calendar-events/).://www.timeanddate.com/clocks/free.html ve https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Hava durumu tahmini, Sloven şehirleri için tahmin widget'ı sağlayan bu sayfadan (https://www.1a-vreme.si/vremensko-okno/), ancak sanırım diğer ülkeler için widget'lar da internette bulunabilir. Sıcaklık, bu bölümün sonunda açıklandığı gibi, AM2302 sensörü (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0) kullanılarak toplanır. Altta, bir olaya kaç gün kaldığını gösteren basit bir günlük geri sayım sayacı var (çocuklarımın bir şey için kaç gün beklemeleri gerektiğini bilmeleri ilginç). Sağ üst kenarda, ailemin seçilen resimlerine rastgele kayan MetaSlider eklentisi (https://wordpress.org/plugins/ml-slider/) var. Ek olarak, daha güzel bir arka plan için rastgele bir resim göstermek için Background Slider eklentisini (https://sl.wordpress.org/plugins/background-slider-master/) kullandım.

Daha önce de belirtildiği gibi, iç ortam sıcaklığı AM2302 sensörü kullanılarak toplanır. Sıcaklığın nasıl elde edileceğine dair birçok ders var, bunu takip ettim: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Daha sonra bu sensörü, üzerinde Home Assistant çalışan başka bir Raspberry Pi'ye taşıdım çünkü DHT Sensör bileşenini kullanarak değerleri okumak ve yayınlamak daha kolay (https://www.home-assistant.io/components/sensor.dht/). Home Assistant ayrıca çeşitli hava durumu bileşenlerini kullanarak dış sıcaklığı da toplayabilir, ben YR.no bileşenini kullandım (https://www.home-assistant.io/components/sensor.yr/). Bununla birlikte, bu bileşenlerden iç/dış sıcaklık toplamak ve daha sonra duvar takvimimde görüntülenen bir metin dosyasına yazmak için bir otomasyon scripti yazdım. Home Assistant hakkında daha fazla bilgi için ana sayfaya bakın (https://www.home-assistant.io/).

Adım 4: İsteğe Bağlı - Ekranı Kapatma

Artık takvimimizi tam istediğimiz gibi kurduk ve işlettik. Ancak ekranın 7/24 açık olmasını istemiyoruz. Sadece evde biri varken açılmasını istiyoruz. Ayrıca gecenin bir yarısında açılmasını istemiyoruz, tuvalete gittiğimizde çok parlak! Bu nedenle, birinin önünde durduğunu fark etmek için bir kızılötesi sensör ekleyeceğiz ve ne zaman açılması gerektiği konusunda bazı zaman sınırları ekleyeceğiz.

Lütfen programlama becerilerimin oldukça sınırlı olduğunu unutmayın, bu nedenle çeşitli çevrimiçi forumlardan ve öğreticilerden seçtiğim için aşağıdakiler en uygun olamaz, ancak aslında işe yarıyor. Yine de, herhangi bir öneri hala memnuniyetle karşılanmaktadır. İlk önce monitörü manuel olarak açıp kapatmak için test ile başlayacağız. Bunun için iki dosya oluşturacağız (örneğin monitor_on.sh ve monitor_off.sh) ve içine bazı kodlar yazacağız. Bunu yapmanın en kolay yolu, Raspberry'nize SSH kullanarak giriş yapmak ve

sudo nano monitör_on.sh

ve aşağıdaki kodu yazın

tvservice --tercih edilen;

startx /usr/bin/graphical_launcher "fgconsole"

Kaydetmek ve çıkmak için CTRL+X tuşlarına basın, ardından ikinci dosyayı oluşturun

sudo nano monitör_off.sh

ve aşağıdaki kodu yazın

tvservice --off;

Kaydetmek ve çıkmak için tekrar CTRL+X tuşlarına basın. Bu yeni oluşturulan dosyaları yürütülebilir yapın:

sudo chmod +x monitör_on.sh

sudo chmod +x monitor_off.sh

Şimdi bu komutların çalışıp çalışmadığını denemek için şunu yazın

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitör şimdi buna göre kapanmalı ve açılmalıdır. Raspberry Pi 2'de monitörün açılmasının neredeyse 10 saniye sürdüğünü fark ettim. Raspberry Pi 3'te 1-2 saniye sürüyor. Ardından, bu komut dosyalarını tetikleyecek bir kızılötesi sensör bağlayacağız. Yine, Raspberry Pi ve PIR'nin nasıl kurulacağına dair birçok öğretici var, bunu takip ettim: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Temel olarak, nano düzenleyiciyi (örneğin, motion_sensor.py) kullanarak bir dosya oluşturun ve içine uygun Python kodunu yazın. Dosyamın örneği aşağıdadır:

RPi. GPIO'yu GPIOimport timeimport sysimport subprocessimport as dtimport osGPIO.setwarnings(False)# GPIO.setmode(GPIO. BOARD)GPIO.setmode(GPIO. BCM)GPIO.setup(17, GPIO.motion) #PIRturned_off_time =Falselast_off olarak içe aktar time.time()SHUTOFF_DELAY = 180 # saniyewhile True:i=GPIO.input(17)eğer i==0: #Hareket sensöründen çıkış DÜŞÜK ise, kapalı değilse monitörü KAPATIN ve time.time() > (last_motion_time + SHUTOFF_DELAY):"Hiçbir davetsiz misafir" yazdır, iturned_off = Truetime.sleep(1)subprocess.call(['/home/pi/monitor_off.sh'], shell=True)elif i==1: #Hareket sensöründen çıktı alındığında YÜKSEK ise, monitörü ONprint "Intruder tespit edildi", itime.sleep(1)last_motion_time = time.time()sys.stdout.flush() kapalıysa ve dt.datetime.now().hour > 5 ve dt.datetime konumuna getirin. now().hour < 23:turned_off = Falsesubprocess.call(['/home/pi/monitor_on.sh'], shell=True)if _name_ == '_main_':try:main() KeyboardInterrupt:GPIO.cleanup hariç ()

“GPIO.setup(17, GPIO. IN)” PIR'den gelen çıkış pininin Raspberry Pi üzerindeki pin 17'ye bağlı olduğunu gösterir. Hangi pin, GPIO.setmode(GPIO. BOARD) veya GPIO.setmode(GPIO. BCM) tanımlamanıza bağlıdır. Fark burada açıklanmıştır: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. GPIO. BOARD'un önünde # var, bu yüzden yok sayılır ve GPIO. BCM kullanılır.

çizgiye dikkat et

SHUTOFF_DELAY = 180 #saniye

Burada, son hareketin algılanmasından bu yana, kapatılmadan önce monitörün ne kadar süre açık kaldığı belirtilir. Bu kullanışlı çünkü yanından geçerken monitörün sürekli kapanmasını/açılmasını istemiyorum ama kapanmadan önce bir süre açık kalmasını istiyorum. 180 saniye aralığını seçtim, böylece son hareket algılandıktan yaklaşık 3 dakika sonra monitör kapanıyor.

Son olarak, bu çizgi

open_off ve dt.datetime.now().hour > 6 ve dt.datetime.now().hour < 23 ise:

monitörün yalnızca 6:00 ile 23:00 arasında açıldığını, bu nedenle gece boyunca beni rahatsız etmediğini belirtiyor. çizgiler

"Davetsiz misafir yok" yazdırın, ben

ve

"Davetsiz misafir algılandı" yazdırın, i

yalnızca komut dosyasını test etmek içindir, daha sonra çalıştıracağınız zaman bunları silebilirsiniz. Şimdi komut dosyasını test edin:

sudo python motion_sensor.py

Sensörün üzerinde el sallarsanız, "Hırsız kişi algılandı" mesajlarını görmelisiniz, aksi takdirde "Hiçbir davetsiz misafir" olacaktır. Bu komut dosyası test edildiğinde ve çalıştığında, önyüklemede başlayacak şekilde ayarlayın:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

ve aşağıdaki satırı ekleyin

@sudo /usr/bin/python /home/pi/motion_sensor.py

Elbette oluşturduğunuz Python betiğinin doğru dosya adını belirtmelisiniz.

Adım 5: Takvimi Asın

Her şey hazır, takvimi duvara asmanın zamanı geldi!

Başlangıçta Raspberry Pi'yi LCD ekranın arkasına saklamayı düşünüyordum, böylece sadece bir kabloya (DC gücü) ihtiyaç duyulacaktı. Ancak Raspberry 5V ile çalıştığı ve LCD ekran 12V ile çalıştığı için ek transformatöre ihtiyacım olacak. Ayrıca Raspberry kasası oldukça kalın, bu da LCD'nin duvardan yaklaşık 3 santimetre uzakta olacağı anlamına geliyor. Bu yüzden bundan vazgeçtim ve sadece LCD elektroniklerini LCD'nin arkasında bıraktım, böylece artık duvardan 1 santimetreden daha az uzaklıkta. DC güç kaynağı için bir HDMI ve bir 5, 5 mm olmak üzere iki adet 5 metre uzunluğunda kablo aldım. Her iki kablo da duvar gibi beyaz, yani fazla öne çıkmıyorlar. LCD'yi duvara yerleştirdim ve Raspberry'yi karşı duvardaki buzdolabının üstüne koydum, böylece temelde gizli ama yine de kolayca erişilebilir.

Önerilen: