Isi kandungan:

Kalendar Dinding Pintar: 5 Langkah
Kalendar Dinding Pintar: 5 Langkah

Video: Kalendar Dinding Pintar: 5 Langkah

Video: Kalendar Dinding Pintar: 5 Langkah
Video: PROSES CETAK KALENDER DINDING 6 LEMBAR | KALENDER CUSTOM 2024, Julai
Anonim
Kalendar Dinding Pintar
Kalendar Dinding Pintar

Saya dan isteri mempunyai kalendar dinding kertas klasik, yang menandakan tarikh penting. Kami juga menggunakan kalendar Google pada telefon pintar kami untuk menandakan acara, jadi ini bermaksud kerja berganda. Oleh itu, saya memutuskan untuk membina semacam kalendar dinding pintar, yang akan memaparkan peringatan, acara dan beberapa data lain. Oleh kerana saya mempunyai pelbagai komponen elektronik lama, tujuan saya adalah menggunakannya semula sebanyak mungkin dan membina kalendar dengan kos sesedikit mungkin.

Dalam tutorial ini saya akan menunjukkan kepada anda, bagaimana membina kalendar dinding pintar, memaparkan peristiwa dari beberapa akaun Google. Ia juga akan memaparkan waktu, tarikh, cuaca, suhu dan beberapa maklumat tambahan. Ia akan dikuasakan oleh komputer Raspberry Pi dengan sensor gerakan Pasif Infrared Sensor (PIR) yang terpasang padanya, sehingga paparan menyala, ketika gerakan dikesan di dalam ruangan, tetapi mati setelah beberapa minit tidak aktif. Tutorial ini berdasarkan beberapa tutorial lain yang saya dapati di internet dan saya akan memberikan pautan kepada mereka untuk pemahaman yang lebih baik. Beberapa pengetahuan asas pengaturcaraan diperlukan (HTML, Python,…).

Langkah 1: Perkakasan

Seperti yang telah disebutkan sebelumnya, saya cuba menggunakan semula sebilangan komponen elektronik lama untuk mengurangkan kos. Walau bagaimanapun, ada beberapa barang yang harus saya beli, jadi saya akan senaraikan semua yang diperlukan untuk pembinaannya.

- Kit Raspberry Pi. Pada mulanya saya menggunakan model 2 lama saya dari beberapa projek lain. Ia berjaya, tetapi penyuntingan dan muat semula halaman web memerlukan banyak masa, jadi saya akhirnya menukar ke model 3, yang berfungsi dengan lebih lancar https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = raspberry + pi + kit & _sacat = 0

- Skrin LCD. Saya menggunakan skrin dari komputer riba lama saya, jadi saya hanya perlu membeli papan pemacu LVDS untuknya dan bekalan kuasa https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ pemacu + papan LVDS + & _sacat = 0

- Kotak simpanan plastik untuk elektronik

- Sensor gerakan inframerah pasif

- Sensor suhu / kelembapan AM2302

- Pengikat slaid plastik hitam untuk bingkai LCD

- Pelbagai kabel (HDMI, 5.5mm untuk kuasa DC, kabel jumper papan roti tanpa pateri,…)

Langkah 2: Membuat Paparan LCD

Membuat Paparan LCD
Membuat Paparan LCD
Membuat Paparan LCD
Membuat Paparan LCD
Membuat Paparan LCD
Membuat Paparan LCD

Saya menggunakan skrin LCD dari komputer riba lama saya yang sudah usang. Terdapat beberapa tutorial mengenai cara melakukannya, saya mengikuti yang berikut:

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

Saya membongkar penutup komputer riba lama saya, mengeluarkan paparan LCD dan kemudian memesan papan pemacu LVDS yang betul. Saya memberikan kod produk kepada penjual, yang boleh didapati di bahagian belakang LCD, sekiranya saya adalah LP171WE3 (TL) (A2) - lihat label kanan bawah pada gambar terakhir, dan kemudian dia mengirimi saya LVDS yang sesuai. Harap maklum, anda juga memerlukan bekalan kuasa untuk paparan, jadi minta penjual menghantarnya juga. Saya juga membeli kotak plastik 14.5 × 7.5 × 2cm yang bagus agar sesuai dengan papan pemacu dan pasangkannya ke bahagian belakang LCD.

Kini paparan LCD mempunyai bingkai logam, yang tidak kelihatan cantik. Pada mulanya saya menyemburkan cat itu menjadi hitam, tetapi cat itu mula terkelupas. Oleh itu, saya mengambil empat pengikat slaid plastik hitam, yang biasanya digunakan untuk mengikat helaian kertas, memangkasnya dengan betul dan melekatkannya ke penutup bingkai. Ini kelihatan baik, jadi saya menyambungkan semua kabel, yang dipasang di HDMI ke Raspberry Pi dan Voila lama saya - ia berjaya! Terdapat gambar yang ditunjukkan di paparan, jadi saya sudah siap untuk melangkah ke langkah seterusnya - maklumat apa yang harus ditunjukkan pada paparan dan cara menunjukkannya.

Langkah 3: Menyiapkan Perisian

Semasa saya mencari di internet untuk mengetahui beberapa petunjuk, bagaimana membina kalendar, saya mendapat inspirasi dari laman ini https://dakboard.com/site. Mereka menyediakan produk jadi (paparan, komputer dan perisian yang berfungsi), tetapi mereka juga mempunyai tutorial yang sangat baik untuk penyelesaian DIY (https://blog.dakboard.com/diy-wall-display/). Saya mengesyorkan anda mengikuti tutorial ini, sekurang-kurangnya untuk bahagian pertama dengan petunjuk mengenai penyediaan dan penyediaan sistem pada Raspberry, supaya penyemak imbas memuatkan halaman web yang diinginkan secara automatik semasa boot.

Ini berfungsi dengan baik, namun saya mencari jalan keluar, yang boleh disesuaikan mengikut kehendak saya. Saya telah memutuskan untuk menyediakan pelayan web saya sendiri dan membuat laman web, yang akan menunjukkan maklumat tambahan selain kalendar. Saya telah memilih Wordpress.org, kerana didokumentasikan dengan baik dan mempunyai sokongan yang baik dan komuniti yang besar untuk membantu anda. Inilah tutorial cara memasang Wordpress pada Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Dengan Wordpress terpasang, sudah tiba masanya untuk merancang laman utama saya. Anda boleh menggunakan salah satu daripada banyak tema yang disediakan, atau reka bentuk dari awal. Bagaimanapun, beberapa pengetahuan pengaturcaraan HTML diperlukan untuk ini.

Saya telah merancang halaman saya, supaya di sebelah kiri kalendar ditunjukkan (https://sl.wordpress.org/plugins/google-calendar-events/), sementara di sebelah kanan waktu dan tarikh ditunjukkan (https://www.timeanddate.com/clocks/free.html dan https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Ramalan cuaca berasal dari halaman ini (https://www.1a-vreme.si/vremensko-okno/), yang menyediakan widget ramalan untuk bandar-bandar Slovenia, tetapi saya rasa widget untuk negara lain juga terdapat 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 pada akhir bab ini. Di bahagian bawah terdapat pemasa undur harian yang ringkas, yang menunjukkan berapa hari yang tersisa untuk sesuatu acara (menarik untuk diketahui oleh anak-anak saya, berapa hari mereka perlu menunggu sesuatu). Di tepi kanan atas terdapat pemalam MetaSlider (https://wordpress.org/plugins/ml-slider/), yang secara rawak meluncurkan gambar terpilih keluarga saya. Selain itu saya telah menggunakan plugin Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) untuk menunjukkan kepada saya beberapa gambar rawak untuk latar belakang yang lebih baik.

Seperti yang telah disebutkan sebelumnya, suhu dalam ruangan dikumpulkan menggunakan sensor AM2302. Terdapat banyak tutorial mengenai cara mendapatkan suhu, saya mengikuti yang ini: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Kemudian saya memindahkan sensor ini ke Raspberry Pi yang lain dengan Home Assistant yang menggunakannya, kerana lebih mudah membaca dan menerbitkan nilai menggunakan komponen Sensor DHT (https://www.home-assistant.io/components/sensor.dht/). Pembantu Rumah juga dapat mengumpulkan suhu luar menggunakan pelbagai komponen cuaca, saya menggunakan komponen YR.no (https://www.home-assistant.io/components/sensor.yr/). Dengan itu, saya menulis skrip automasi untuk mengumpulkan suhu dalaman / luaran dari komponen ini dan menulisnya ke fail teks, yang kemudian dipaparkan di kalendar dinding saya. Untuk maklumat lebih lanjut mengenai Pembantu Rumah, lihat laman utama (https://www.home-assistant.io/).

Langkah 4: Pilihan - Mematikan Paparan

Kini kalendar kami disiapkan dan berjalan, seperti yang kami suka. Tetapi kami tidak mahu paparan dihidupkan 24/7. Kami hanya menginginkannya semasa seseorang berada di rumah. Kami juga tidak mahu alat ini dihidupkan pada tengah malam, ketika kami pergi ke tandas, terlalu terang! Oleh itu, kami akan memasang sensor inframerah untuk diperhatikan, ketika seseorang berdiri di depannya, dan menambahkan had masa, ketika ia harus dihidupkan.

Harap maklum bahawa kemahiran pengaturcaraan saya agak terhad, jadi yang berikut tidak mungkin optimum, kerana saya memilihnya dari pelbagai forum dan tutorial dalam talian, tetapi pada dasarnya ia berfungsi. Namun, sebarang cadangan tetap diterima. Mula-mula kita mulakan dengan ujian untuk menghidupkan / mematikan monitor secara manual. Untuk itu, kami akan membuat dua fail (contohnya monitor_on.sh dan monitor_off.sh) dan menulis beberapa kod di dalamnya. Cara termudah untuk melakukannya adalah dengan log masuk ke Raspberry anda menggunakan SSH dan taip

sudo nano monitor_on.sh

dan taipkan kod berikut

perkhidmatan tv --diutamakan;

startx / usr / bin / graphic_launcher `fgconsole`

Tekan CTRL + X untuk menyimpan dan keluar, kemudian buat fail kedua

sudo nano monitor_off.sh

dan taipkan kod berikut

perkhidmatan tv - off;

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

sudo chmod + x monitor_on.sh

sudo chmod + x monitor_off.sh

Sekarang untuk mencuba jika arahan ini berfungsi, ketik

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor sekarang harus dimatikan dan dihidupkan dengan sewajarnya. Saya perhatikan bahawa pada Raspberry Pi 2 memerlukan hampir 10 saat untuk menghidupkan monitor. Pada Raspberry Pi 3 memerlukan 1-2 saat. Selanjutnya kita akan menyambungkan sensor inframerah, yang akan mencetuskan skrip ini. Sekali lagi, terdapat 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 fail dengan menggunakan penyunting nano (contohnya motion_sensor.py) dan taipkan kod Python yang sesuai di dalamnya. Berikut adalah contoh fail saya:

import RPi. GPIO sebagai GPIOimport timeimport sysimport subprocessimport datetime sebagai dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = FIRturned_off = Fir time.time () SHUTOFF_DELAY = 180 # saat sementara Benar: i = GPIO.input (17) jika i == 0: #Ketika output dari sensor gerakan RENDAH, putar monitor OFF jika tidak dihidupkan dan diaktifkan waktu.time ()> (last_motion_time + SHUTOFF_DELAY): cetak "Tanpa penyusup", iturned_off = Truetime.sleep (1) subprocess.call (['/ home / pi / monitor_off.sh'], shell = True) elif i == 1: #Apabila output dari sensor gerakan adalah TINGGI, putar monitor ONprint "Penceroboh dikesan", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () if turn_off dan dt.datetime.now (). hour> 5 dan dt.datetime. sekarang (). jam <23: Turn_off = Falsesubprocess.call (['/ home / pi / monitor_on.sh'], shell = True) jika _name_ == '_main _': cuba: utama () kecuali Papan Kekunci Terganggu: GPIO.cleanup ()

Perhatikan bahawa "GPIO.setup (17, GPIO. IN)" menunjukkan bahawa pin output dari PIR disambungkan ke pin 17 pada Raspberry Pi. Pin mana yang bergantung sama ada anda menentukan GPIO.setmode (GPIO. BOARD) atau GPIO.setmode (GPIO. BCM). Perbezaannya dijelaskan di sini: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Saya mempunyai # di hadapan GPIO. BOARD, jadi ia diabaikan dan GPIO. BCM digunakan.

Perhatikan garis

SHUTOFF_DELAY = 180 # saat

Di sini dinyatakan, berapa lama monitor dihidupkan sejak gerakan terakhir dikesan, sebelum dimatikan. Ini berguna kerana saya tidak mahu monitor sentiasa dimatikan / dinyalakan semasa saya berjalan di situ, tetapi mahu menyalakannya untuk beberapa lama, sebelum dimatikan. Saya telah memilih selang 180 saat, sehingga monitor mati kira-kira 3 minit setelah gerakan terakhir dikesan.

Akhirnya, garis ini

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

menyatakan bahawa monitor hanya hidup antara pukul 06:00 dan 23:00, jadi tidak mengganggu saya pada waktu malam. Garisan

cetak "Tiada penceroboh", i

dan

cetak "Penceroboh dikesan", i

hanya untuk menguji skrip, anda boleh menghapusnya kemudian, apabila anda akan berjaya. Sekarang uji skripnya:

sudo python motion_sensor.py

Anda akan melihat mesej "Penceroboh dikesan", jika anda melambai di atas sensor, jika tidak, ia akan menjadi "Tidak ada penceroboh". Apabila skrip ini diuji dan berfungsi, tetapkannya untuk memulakan semasa boot:

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

dan tambahkan baris berikut

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

Sudah tentu anda mesti menentukan nama fail yang betul dari skrip Python yang anda buat.

Langkah 5: Gantung Kalendar

Dengan semua persediaan, sudah tiba masanya untuk menggantung kalendar di dinding!

Pada mulanya saya berfikir untuk menyembunyikan Raspberry Pi di belakang paparan LCD, sehingga hanya satu kabel (kuasa DC) yang diperlukan. Tetapi kerana Raspberry berjalan pada 5V dan paparan LCD berjalan pada 12V, saya memerlukan pengubah tambahan. Juga, casing Raspberry agak tebal, yang bermaksud LCD akan berjarak sekitar 3 sentimeter dari dinding. Oleh itu, saya meninggalkan ini dan hanya meninggalkan elektronik LCD di belakang LCD, sehingga jaraknya kurang dari 1 sentimeter dari dinding. Saya memperoleh dua kabel sepanjang 5 meter, satu HDMI dan satu 5, 5mm untuk bekalan kuasa DC. Kedua-dua kabel berwarna putih, seperti dinding, yang bermaksud tidak terlalu menonjol. Saya telah memasang LCD di dinding dan meletakkan Raspberry di atas peti sejuk di dinding yang bertentangan, jadi pada dasarnya tersembunyi, namun masih mudah diakses.

Disyorkan: