
Semua orang tahu perasaan ini ketika ada keinginan obsesif untuk melakukan sesuatu: untuk membeli sesuatu, membuat sesuatu, menulis sesuatu, memanggil seseorang ... Jadi saya memiliki keinginan untuk melakukan sesuatu dengan tangan saya sendiri. Dalam mencari proyek yang sesuai pada instructables.com, saya menemukan
ini dan menyadari - inilah yang Anda butuhkan!
Pertama-tama, saya mengadaptasi desain lampu ini untuk diri saya sendiri:
- alih-alih suasana seluruh dunia, saya memutuskan untuk mengambil suasana kota saya
- alih-alih raspberry pi, saya memutuskan untuk menggunakan arduino (karena sudah tersedia)
- desain kotak plexiglass saya juga berubah sedikit atas kebijaksanaan saya
- kemampuan untuk mengkonfigurasi lampu tanpa berkedip, melalui kartu sd.
Langkah pertama saya memutuskan untuk menulis program di bawah Arduino. Masalahnya adalah bahwa Arduino tidak memiliki wifi, tetapi solusinya ditemukan cukup cepat - esp8266. ESP8266 adalah mikrokontroler dengan antarmuka Wi-Fi. Selain Wi-Fi, mikrokontroler dibedakan oleh kemampuan untuk menjalankan program dari memori flash eksternal dengan antarmuka SPI. Pemrograman ESP8266 dilakukan melalui adaptor serial, yang dapat digunakan sebagai arduino. Selain itu, menulis dan menginstal program juga dapat dilakukan melalui arduino IDE.

Saat bekerja dengan papan ESP-01, saya segera menyadari bahwa menggunakan arduino uno + ESP-01 bundle bukanlah solusi terbaik. Faktanya adalah bahwa untuk memprogram board, perlu untuk merakit sirkuit programmer kecil. Ini, tentu saja, tidak sulit, tetapi sangat merepotkan: untuk firmware modul, Anda harus menghubungkan ESP-01 melalui programmer ke arduino uno, yang bekerja dalam mode serial adapter, dan untuk memeriksa pengoperasian program, Anda harus menghubungkan kembali ESP-01 langsung ke arduino uno dalam mode celana sehingga kedua papan dapat bertukar informasi melalui port serial.

Oleh karena itu, saya memutuskan untuk menggunakan papan NodeMCU sebagai mikrokontroler, yang merupakan sesuatu seperti esp8266 dan arduino mini pada satu papan. Selain itu, ia memiliki input micro usb, yang sangat menyederhanakan prosedur untuk bekerja dengannya.

Program itu sendiri ternyata sangat sederhana. Pertama, terhubung ke jaringan wifi, login dan kata sandi yang disimpan di kartu sd. Setelah itu, json diunduh dari
ip-api.com/json untuk menentukan lokasi lampu (hanya nama kota dan koordinat geografis yang diambil dari paket). Ketika lokasi lampu diketahui, program mulai menghasilkan permintaan untuk twitter, menggunakan kata kunci yang menggambarkan setiap "suasana hati" yang diprogram. Setelah memproses permintaan, program menghitung jumlah total tweet dan menentukan persentase setiap mood dalam siklus saat ini. Untuk membuat perhitungan mood saat ini lebih “hidup” - program membandingkan mood saat ini dengan yang sebelumnya dan menghitung perubahan persentase. Misalnya, jika dalam siklus pertama pekerjaan, distribusi suasana hati adalah 0,4 untuk kebahagiaan dan 0,05 untuk romansa, dan pada siklus kedua, 0,5 dan 0,1, masing-masing, program akan memilih "romance" sebagai suasana hati saat ini (karena peningkatan kebahagiaan adalah 25%, dan romansa adalah 100). %). Pendekatan ini memungkinkan Anda untuk dengan cepat merespons perubahan suasana hati yang tiba-tiba di kota, serta melacak suasana hati yang campur aduk (jika fraksi massa kedua suasana tersebut kira-kira sama, program akan beralih di antara mereka secara bergantian).
Tahap kedua adalah perakitan perumahan lampu. Saya segera menentukan bahan - kaca plexiglass (transmisi cahaya 44%) setebal 2 mm. Pada saat yang sama, menurut ide tersebut, rak bawah - tempat semua barang elektronik berada, terbuat dari kaca plexiglass transparan. Pada saat yang sama, ada perasaan bahwa ketika lampu bekerja, cahaya tampak keluar dari bawah dan menciptakan ilusi pengangkatan lampu itu sendiri.
Saya ingin merekatkan dinding yang dipotong dari plexiglass satu sama lain menggunakan lem panas. Tetapi desain seperti itu ternyata tidak stabil (mungkin karena lebar dinding yang kecil) dan terus-menerus berantakan. Lalu saya memutuskan untuk mengencangkan dinding dengan bantuan sudut dan sekrup. Pilihan ini ternyata lebih dapat diandalkan (meskipun tidak begitu lucu), jadi saya berhenti menggunakannya.
Setelah merakit case, saya melanjutkan ke tahap ketiga dan terakhir - memasang elektronik di rak bawah. Semuanya cukup sederhana di sini, kecuali bahwa bukannya 4 LED yang direncanakan, saya menggunakan 8 - 4 tambahan diarahkan ke bawah untuk membuat efek levitasi. Faktanya adalah bahwa saya melewatkan ukuran lampu dan 30% dari rak memakan kompartemen untuk 4 baterai AA, menghalangi cahaya LED.

Dan juga ditemukan bahwa LED yang saya beli memiliki pekerjaan yang buruk dalam menampilkan warna yang kompleks. Karena itu, saya harus membatasi diri pada 7 yang sederhana: merah, hijau, biru, pink (merah + biru), kuning (merah + hijau), pirus (hijau + biru) dan putih.
Hasil akhir karya dapat dilihat di
video .
Dalam video ini, lampu dalam mode demonstrasi - dengan cepat mengubah semua kombinasi warna kabel dalam urutan acak. Dalam mode operasi "normal", lampu melakukan polling setiap sepuluh menit untuk menghitung suasana hati saat ini dan berubah warna sesuai dengan hasil perhitungan.
Anggaran proyek berjumlah sedikit lebih dari 2 ribu rubel. Selain itu, bagian paling mahal: baterai 4x AA 700r, selembar kaca plexiglass 600r buram, 500r nodemcu Cina.
Apa yang bisa ditingkatkan:
- Saat merakit case, Anda bisa menggunakan sudut transparan sehingga tidak terlalu menonjol.
- Biaya kotak Plexiglas dapat dikurangi secara signifikan jika Anda membeli selembar Plexiglas yang besar dan memotongnya sendiri.
- Anda dapat menggunakan LED yang lebih mahal, yang biasanya akan menampilkan warna antara seperti oranye, ungu, dll.
- Anda dapat menggunakan sumber daya lain, seperti mahkota. Hal ini terutama disebabkan oleh kenyataan bahwa kompartemen baterai untuk 4 baterai AA terlalu besar dan menghalangi sejumlah besar cahaya dari bagian bawah lampu. Benar, tidak diketahui berapa lama lampu bisa bekerja dari satu mahkota.
- Anda dapat membuat antarmuka web sederhana untuk mengatur lampu. Karena perpustakaan untuk bekerja dengan kartu sd tidak mendukung bahasa Rusia, mustahil untuk menetapkan kata kunci untuk pencarian dengan cara ini.
Kode program dapat ditemukan di
github . Jika itu akan menarik - saya dapat memberi tahu Anda lebih banyak tentang program ini di artikel terpisah.