Idea ini dipinjam dari projek. Paparan cuaca ESP8266.
Saya mengambil keputusan untuk memikirkannya.
Tugas-tugas berikut telah ditetapkan:
- Kemas kini kod berkaitan penggunaan versi baru perpustakaan ArduinoJson.h.
- Tulis semula kod menggunakan fungsi millis () dan bukannya fungsi kelewatan (). Sudah jelas bahawa menggunakan kelewatan untuk menetapkan jeda antara menukar maklumat pada paparan, adalah mustahil untuk melaksanakan kawalan butang;
- Buat muat turun lakaran melalui Wifi;
- Minggir dari Wemos D1 R2 yang besar di mini Wemos D1;
- Bila boleh Russify paparan;
- Gunakan kes siap dengan lubang butang untuk peranti berdasarkan LCD1602;
- Gunakan butang 6x6 standard yang disolder ke papan roti. Tambahkan butang kawalan lampu latar, butang karusel untuk menukar data yang dipaparkan dan butang untuk memaksa kemas kini data dari pelayan.
Komponen-komponen berikut digunakan:
- Kes itu diperbuat daripada plastik ABS dengan set penutup untuk butang;
- Nylon struts 6 + 5 mm lelaki M3 hitam, 4 pcs;
- M3 nilon kacang hitam, 4 pcs;
- Nylon jawatan 6 + 5 mm lelaki M2 putih, 3 pcs;
- Nylon berdiri 6 mm ibu putih, 1 pc;
- Nylon berdiri 8 mm ibu putih, 1 pc;
- Rak nilon 10mm ibu putih, 2 pcs;
- LCD 1602 (I2C), kuning;
- Wemos d1 mini;
- Wemos d1 DC-Power shield;
- Lembaga roti papan 3x7;
- Butang 6x6, ketinggian 7 mm, 3pcs;
- Dupont wayar 10cm ibu-ibu, 4 pcs;
- 24 Wayar AWG hitam dan merah;
- Wayar silikon 20 AWG biru dan putih;
- Resistors 5 kOhm - 2 pcs, 10 kOhm - 1 pc (yang datang ke tangan);
- Penyesuai kuasa 9V 1A;
- Pelekat epoksi dua komponen.
Kes yang digunakan mempunyai beberapa kelebihan. Pertama, sebagai tambahan kepada paparan, standard 3x7 standard decoupling board, dengan komponen dipasang di atasnya di kedua sisi, sesuai dengan ketinggian. Kedua, pada dua hujung ia mempunyai bukaan segi empat tepat untuk penyejukan. Ternyata jumper di antara lubang-lubang ini dipotong dengan sempurna oleh mini-fail 3 dan 4 mm. Jika anda memotong beberapa pelompat dan memotong lubang segi empat tepat kecil dalam kes itu, maka penyambung kuasa DC-005 berjalan sempurna ke lubang geometri kompleks. Juga, belakang kes ini mempunyai lubang persegi yang besar, yang, nampaknya, sepatutnya memasang bateri.Melaluinya, ia adalah mudah untuk menyambung sesuatu di dalam tanpa membongkar kes itu. Selanjutnya, ia hanya boleh ditutup dengan kaca atau plastik.
Bina kemajuan:
Pertama, prototaip dibuat pada papan roti.
Kemudian kes itu dimuktamadkan dengan fail.
Selepas itu, komponen utama dipateri dan pemasangan dilakukan. Kaki dibengkokkan khas supaya sendi yang boleh dilepaskan sesuai dengan ketinggian. Beberapa rak nilon terpaksa difailkan supaya semua butang berada pada ketinggian yang sama.
Akibatnya, bahagian depan papan dengan butang, perintang dan wayar adalah seperti berikut:
Akibatnya, bahagian dalam peranti kelihatan seperti ini:
Apabila dipasang, peranti kelihatan seperti ini:
Mengatasi masalah:
- Untuk masa yang lama saya tidak dapat memahami mengapa butang tidak berfungsi, walaupun multimeter menunjukkan dengan jelas 0 apabila butang ditekan dan 4.6 - 5.0 V apabila ditekan (bergantung kepada bekalan kuasa). Ternyata dalam peranti Wemos / Lolin adalah perlu untuk menunjukkan nombor GPIO sebagai nombor pin dalam lakaran. Sebagai contoh, D5 adalah GPIO14. Jadi ini adalah pin ke-14.
const int buttonPin = 14;
- Untuk menunjukkan cuaca, keadaan diperlukan:
currentMillis - previousMillis == weatherTime
Surat-menyurat yang ketat, kerana ia mesti dilakukan sekali sahaja.
Untuk membuat permintaan kepada pelayan, keadaan diperlukan:currentMillis - previousMillis> = getDataTime
Pematuhan yang longgar, kerana ia dilaksanakan sehingga bendera "data diterima" ditetapkan.
Malah, ini tidak jelas, dan untuk memahami ini, ia mengambil masa yang lama. - Saya juga harus menyeksa diri saya dengan tindak balas pelayan:
String weather = root ["weather"] [0] ["main"]; Penerangan rentetan = root ["cuaca"] [0] ["description"];
Zero adalah benar-benar unobvious. Ternyata terdapat dua stesen cuaca di Moscow, dan yang kedua tidak selalu berfungsi (untuk menerima data daripadanya, anda mesti menentukan [1] jika ia aktif).
Repositori dengan kod dan perpustakaan terletak di sini.