Daftar Isi:

Kalender Dinding Cerdas: 5 Langkah
Kalender Dinding Cerdas: 5 Langkah

Video: Kalender Dinding Cerdas: 5 Langkah

Video: Kalender Dinding Cerdas: 5 Langkah
Video: DETAIL - Tutorial Membuat 2 BUAH Desain Kalender Dinding 2023 - PART 1 -CorelDRAW #EdukasiGrafis 2024, Juli
Anonim
Kalender Dinding Cerdas
Kalender Dinding Cerdas

Saya dan istri saya dulu memiliki kalender dinding kertas klasik, di mana kami menandai tanggal-tanggal penting. Kami juga menggunakan kalender Google di ponsel pintar kami untuk menandai acara, jadi ini berarti pekerjaan ganda. Jadi saya memutuskan untuk membuat semacam kalender dinding pintar, yang akan menampilkan pengingat, acara, dan beberapa data lainnya. Karena saya memiliki berbagai komponen elektronik lama yang tergeletak di sekitar, tujuan saya adalah menggunakannya kembali sebanyak mungkin dan membuat kalender dengan biaya sesedikit mungkin.

Dalam tutorial ini saya akan menunjukkan kepada Anda, cara membuat kalender dinding pintar, menampilkan acara dari beberapa akun Google. Ini juga akan menampilkan waktu, tanggal, cuaca, suhu dan beberapa informasi tambahan. Ini akan didukung oleh komputer Raspberry Pi dengan sensor gerak Passive Infrared Sensor (PIR) yang terpasang padanya, sehingga layar menyala, ketika gerakan terdeteksi di dalam ruangan, tetapi mati setelah beberapa menit tidak aktif. Tutorial ini didasarkan pada beberapa tutorial lain yang saya temukan di internet dan saya akan memberikan tautannya untuk pemahaman yang lebih baik. Beberapa pengetahuan pemrograman dasar diperlukan (HTML, Python, …).

Langkah 1: Perangkat Keras

Seperti disebutkan sebelumnya, saya mencoba menggunakan kembali sebanyak mungkin komponen elektronik lama untuk menekan biaya. Namun beberapa item saya harus membeli, jadi saya akan membuat daftar semua yang diperlukan untuk konstruksi.

- Paket Raspberry Pi. Awalnya saya menggunakan model lama saya 2 dari beberapa proyek lain. Itu berhasil, tetapi mengedit dan memuat ulang halaman web membutuhkan banyak waktu, jadi saya akhirnya beralih ke model 3, yang bekerja lebih lancar

- Layar LCD. Saya menggunakan layar dari laptop lama saya, jadi saya hanya perlu membeli papan driver LVDS untuk itu dan catu daya https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570,l1313&_nkw=hdmi+ driver+LVDS+papan&_sacat=0

- Kotak penyimpanan plastik untuk barang elektronik

- Sensor gerak inframerah pasif

- Sensor suhu/kelembaban AM2302

- Pengikat geser plastik hitam untuk bingkai LCD

- Berbagai kabel (HDMI, 5.5mm untuk daya DC, kabel jumper papan tempat memotong roti tanpa solder, …)

Langkah 2: Membuat Layar LCD

Membuat Layar LCD
Membuat Layar LCD
Membuat Layar LCD
Membuat Layar LCD
Membuat Layar LCD
Membuat Layar LCD

Saya menggunakan layar LCD dari laptop lama saya yang sudah usang. Ada beberapa tutorial tentang cara melakukan ini, saya mengikuti yang ini:

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

Saya membongkar penutup laptop lama saya, mengeluarkan layar LCD dan kemudian memesan papan driver LVDS yang benar. Saya memberikan kode produk kepada penjual, yang dapat ditemukan di sisi belakang LCD, dalam kasus saya ini adalah LP171WE3 (TL)(A2) - lihat label kanan bawah pada gambar terakhir, dan kemudian dia mengirimi saya LVDS yang sesuai. Harap diperhatikan, Anda juga memerlukan catu daya untuk tampilan, jadi mintalah penjual untuk mengirimkannya juga. Saya juga membeli kotak plastik 14.5x7.5x2cm yang bagus agar sesuai dengan papan driver dengan baik dan menempelkannya ke sisi belakang LCD.

Sekarang layar LCD memiliki bingkai logam, yang tidak terlihat cantik. Awalnya saya cat semprot jadi hitam, tapi catnya mulai mengelupas. Jadi saya mengambil empat pengikat slide-on plastik hitam, yang biasanya digunakan untuk mengikat lembaran kertas, memotongnya sesuai dan menempelkannya untuk menutupi bingkai. Ini terlihat baik, jadi saya menghubungkan semua kabel, menyambungkan HDMI ke Raspberry Pi dan Voila lama saya – berhasil! Ada gambar yang ditampilkan di layar, jadi saya siap untuk melanjutkan ke langkah berikutnya – informasi apa yang ditampilkan di layar dan bagaimana cara menampilkannya.

Langkah 3: Menyiapkan Perangkat Lunak

Ketika saya mencari di internet untuk beberapa petunjuk, bagaimana membuat kalender, saya terinspirasi oleh halaman ini https://dakboard.com/site. Mereka menyediakan produk jadi (layar, komputer, dan perangkat lunak yang berfungsi), tetapi mereka juga memiliki tutorial yang sangat baik untuk solusi DIY (https://blog.dakboard.com/diy-wall-display/). Saya menyarankan Anda untuk mengikuti tutorial ini, setidaknya untuk bagian pertama dengan instruksi tentang persiapan dan pengaturan sistem pada Raspberry, sehingga browser memuat halaman web yang diinginkan secara otomatis saat boot.

Ini bekerja dengan baik, namun saya mencari beberapa solusi, yang dapat lebih disesuaikan sesuai keinginan saya. Saya telah memutuskan untuk menyiapkan server web saya sendiri dan membuat halaman web, yang akan menampilkan informasi tambahan selain kalender. Saya telah memilih Wordpress.org, karena didokumentasikan dengan baik dan memiliki dukungan yang baik dan komunitas besar untuk membantu Anda. Berikut tutorial cara install Wordpress di Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Dengan Wordpress terinstal, sudah waktunya untuk mendesain beranda saya. Anda dapat menggunakan salah satu dari banyak tema yang disediakan, atau mendesain dari awal. Bagaimanapun, beberapa pengetahuan pemrograman HTML diperlukan untuk ini.

Saya telah mendesain halaman saya, sehingga di sisi kiri kalender ditampilkan (https://sl.wordpress.org/plugins/google-calendar-events/), sedangkan di sisi kanan waktu dan tanggal ditampilkan (https://www.timeanddate.com/clocks/free.html dan https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Prakiraan cuaca berasal dari halaman ini (https://www.1a-vreme.si/vremensko-okno/), yang menyediakan widget prakiraan untuk kota-kota di Slovenia, tetapi saya kira widget untuk negara lain juga dapat ditemukan di internet. Suhu dikumpulkan menggunakan sensor AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570,l1313&_nkw=AM2302+&_sacat=0), seperti yang dijelaskan di akhir bab ini. Di bagian bawah adalah penghitung waktu mundur harian sederhana, yang menampilkan berapa hari tersisa untuk beberapa acara (menarik untuk diketahui anak-anak saya, berapa hari mereka harus menunggu sesuatu). Di tepi kanan atas adalah plugin MetaSlider (https://wordpress.org/plugins/ml-slider/), yang secara acak meluncur ke gambar keluarga saya yang dipilih. Selain itu saya telah menggunakan plugin Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) untuk menunjukkan kepada saya beberapa gambar acak untuk latar belakang yang lebih bagus.

Seperti disebutkan sebelumnya, suhu dalam ruangan dikumpulkan menggunakan sensor AM2302. Ada banyak tutorial tentang cara mendapatkan suhu, saya mengikuti yang ini: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Kemudian saya memindahkan sensor ini ke Raspberry Pi lain dengan Home Assistant yang menjalankannya, karena lebih mudah untuk membaca dan mempublikasikan nilai menggunakan komponen Sensor DHT-nya (https://www.home-assistant.io/components/sensor.dht/). Asisten Rumah juga dapat mengumpulkan suhu luar menggunakan berbagai komponen cuaca, saya menggunakan komponen YR.no (https://www.home-assistant.io/components/sensor.yr/). Dengan itu, saya menulis skrip otomatisasi untuk mengumpulkan suhu dalam/luar dari komponen ini dan menulisnya ke file teks, yang kemudian ditampilkan di kalender dinding saya. Untuk informasi lebih lanjut tentang Asisten Rumah, lihat beranda (https://www.home-assistant.io/).

Langkah 4: Opsional - Mematikan Layar

Sekarang kami telah mengatur dan menjalankan kalender kami, seperti yang kami suka. Tetapi kami tidak ingin tampilan dihidupkan 24/7. Kami hanya ingin menyalakannya, ketika seseorang ada di rumah. Kami juga tidak ingin menyalakannya di tengah malam, ketika kami pergi ke toilet, itu terlalu terang! Jadi kami akan memasang sensor inframerah untuk melihat, ketika seseorang berdiri di depannya, dan menambahkan beberapa batas waktu, kapan harus menyala.

Harap dicatat bahwa keterampilan pemrograman saya agak terbatas, jadi yang berikut ini tidak dapat optimal, karena saya telah mengambilnya dari berbagai forum dan tutorial online, tetapi pada dasarnya berfungsi. Namun, rekomendasi apa pun masih disambut. Pertama kita akan mulai dengan tes untuk menghidupkan/mematikan monitor secara manual. Untuk itu, kita akan membuat dua file (misalnya monitor_on.sh dan monitor_off.sh) dan menulis beberapa kode di dalamnya. Cara termudah untuk melakukannya adalah dengan masuk ke Raspberry Anda menggunakan SSH dan ketik

sudo nano monitor_on.sh

dan ketik kode berikut

layanan tv --lebih disukai;

startx /usr/bin/graphical_launcher `fgconsole`

Tekan CTRL+X untuk menyimpan dan keluar, lalu buat file kedua

sudo nano monitor_off.sh

dan ketik kode berikut

layanan tv --mati;

Sekali lagi, tekan CTRL + X untuk menyimpan dan keluar. Jadikan file yang baru dibuat ini dapat dieksekusi:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Sekarang untuk mencoba apakah perintah ini berfungsi, ketik

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor sekarang harus mati dan hidup sesuai dengan itu. Saya perhatikan bahwa pada Raspberry Pi 2 butuh hampir 10 detik untuk menyalakan monitor. Pada Raspberry Pi 3 dibutuhkan 1-2 detik. Selanjutnya kita akan menghubungkan sensor inframerah, yang akan memicu skrip ini. Sekali lagi, ada banyak tutorial cara mengatur Raspberry Pi dan PIR, saya mengikuti yang ini: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Pada dasarnya, buat file dengan menggunakan editor nano (misalnya motion_sensor.py) dan ketik kode Python yang sesuai di dalamnya. Di bawah ini adalah contoh file saya:

import RPi. GPIO sebagai GPIOimport timeimport sysimport subprocessimport datetime as dtimport osGPIO.setwarnings(False)# GPIO.setmode(GPIO. BOARD)GPIO.setmode(GPIO. BCM)GPIO.setup(17, GPIO. IN) #PIRturned_off = Falselast_motion_time time.time()SHUTOFF_DELAY = 180 # detik while True:i=GPIO.input(17)jika i==0: #Saat output dari sensor gerak RENDAH, matikan monitor jika tidak dimatikan dan time.time() > (last_motion_time + SHUTOFF_DELAY): print "No intruders", iturned_off = Truetime.sleep(1)subprocess.call(['/home/pi/monitor_off.sh'], shell=True)elif i==1: #When output dari sensor gerak TINGGI, hidupkan monitor ONprint "Penyusup terdeteksi", itime.sleep(1)last_motion_time = time.time()sys.stdout.flush()jika turn_off dan dt.datetime.now().hour > 5 dan dt.datetime. now().hour < 23:turned_off = Falsesubprocess.call(['/home/pi/monitor_on.sh'], shell=True)if _name_ == '_main_':try:main()kecuali KeyboardInterrupt:GPIO.cleanup ()

Perhatikan bahwa “GPIO.setup(17, GPIO. IN)” menunjukkan bahwa pin output dari PIR terhubung ke pin 17 pada Raspberry Pi. Pin mana yang tergantung apakah Anda mendefinisikan GPIO.setmode(GPIO. BOARD) atau GPIO.setmode(GPIO. BCM). Perbedaannya dijelaskan di sini: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Saya memiliki # di depan GPIO. BOARD, jadi diabaikan dan digunakan GPIO. BCM.

Perhatikan garisnya

SHUTOFF_DELAY = 180 #detik

Di sini disebutkan, berapa lama monitor dihidupkan sejak gerakan terakhir terdeteksi, sebelum dimatikan. Ini berguna karena saya tidak ingin monitor mati/hidup terus-menerus ketika saya berjalan melewatinya, tetapi ingin tetap menyala selama beberapa waktu, sebelum mati. Saya telah memilih interval 180 detik, sehingga monitor mati sekitar 3 menit setelah gerakan terakhir terdeteksi.

Akhirnya, baris ini

jika turn_off dan dt.datetime.now().hour > 6 dan dt.datetime.now().hour < 23:

menyatakan bahwa monitor hanya menyala antara 6:00 dan 23:00, sehingga tidak mengganggu saya pada malam hari. Garis

print "Tidak ada penyusup", i

dan

print "Penyusup terdeteksi", i

adalah untuk menguji skrip saja, Anda dapat menghapusnya nanti, saat Anda membuatnya berfungsi. Sekarang uji skrip:

sudo python motion_sensor.py

Anda akan melihat pesan "Penyusup terdeteksi", jika Anda melambai di atas sensor, jika tidak maka akan menjadi "Tidak ada penyusup". Ketika skrip ini diuji dan berfungsi, setel untuk memulai saat boot:

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

dan tambahkan baris berikut

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

Tentu saja Anda harus menentukan nama file yang benar dari skrip Python yang Anda buat.

Langkah 5: Gantung Kalender

Dengan semua persiapan, saatnya untuk menggantung kalender di dinding!

Awalnya saya berpikir untuk menyembunyikan Raspberry Pi di balik layar LCD, sehingga hanya diperlukan satu kabel (daya DC). Tetapi karena Raspberry berjalan pada 5V dan layar LCD berjalan pada 12V, saya membutuhkan trafo tambahan. Juga, casing Raspberry agak tebal, yang berarti LCD akan berjarak sekitar 3 sentimeter dari dinding. Jadi saya meninggalkan ini dan hanya meninggalkan elektronik LCD di belakang LCD, sehingga sekarang jaraknya kurang dari 1 sentimeter dari dinding. Saya memperoleh dua kabel sepanjang 5 meter, satu HDMI dan satu 5, 5mm untuk catu daya DC. Kedua kabel berwarna putih, seperti dinding, yang berarti tidak terlalu menonjol. Saya telah memasang LCD di dinding dan meletakkan Raspberry di atas lemari es di dinding yang berlawanan, jadi pada dasarnya tersembunyi, namun tetap mudah diakses.

Direkomendasikan: