Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bunday JAWSni yaratish juda oddiy.
Siz datchiklarni olasiz, ularni taxtalarga birlashtirasiz va sensorlar bilan birga kelgan kutubxonalardan foydalana boshlaysiz.
Dasturni sozlashdan boshlaylik.
Men Golland tilida gapirganim uchun (ona tili) men foydalanadigan barcha ma'lumotlar va ko'p o'zgaruvchilar Golland tilida. Endi sizda boshqa tilni o'rganish imkoniyati bor …
JAWSdan nimani xohlaymiz?
Oson: biz haqiqiy vaqtni, sanani, efemeridlarni (quyosh chiqishi, quyosh botishi, kunning uzunligi va astronomik peshin) ko'rsatadigan ekranni ko'rishni xohlaymiz.
Uning yonida ichki va tashqi harorat, nisbiy namlik va shudring nuqtasi hamda havo bosimini ko'rish yaxshi bo'lardi.
Ishni osonlashtirish uchun men harorat uchun santigratlardan va bosim uchun hPa (= mBar) dan foydalanaman. Shunday qilib, hech kim Farengeytdan yoki har kvadrat metr uchun funtni hisoblashi shart emas …
Hozirgi vaqtda faqat bu ma'lumotlar mavjud …
Kelgusida men havo tezligini, shamol yo'nalishini va yog'ingarchilikni qo'shaman.
Gap shundaki, menda tashqi ob -havo kulbasi bo'ladi va barcha ma'lumotlar 2.4 gigagertsli ichki blokga yuboriladi.
3 -qadam: JAWS: dasturiy ta'minot
Bizning dasturiy ta'minotimizga kirish uchun ko'pini mavjud kutubxonalardan topish mumkin.
JAWSda men quyidagilardan foydalanaman:
- SPI.h: 4 simli protokol uchun Arduino -dan asl kutubxona. U TFT qalqoni uchun ishlatiladi
- Adafruit_GFX.h va MCUfriend_kbv.h: ikkalasi ham grafik va ekran uchun ishlatiladi. Bu TFT ekranida matn yozishni, chiziqlar va qutilarni chizishni juda osonlashtiradi.
- dht.h: bizning DHT uchun: bu kutubxona DHT11 (ko'k) va DHT22 uchun ishlatilishi mumkin.
- Wire.h: ketma -ket muloqotni osonlashtirish uchun Arduino kutubxonasi. Bu soat va SD -karta uchun ishlatiladi.
- SD.h: SD kartadan yozish va o'qish uchun yana Arduino asl nusxasi.
- TimeLord.h: bu vaqtni saqlash, quyosh botishini yoki har qanday geografik pozitsiyadan quyosh chiqishini hisoblash uchun ishlatiladi. Shuningdek, u DST (yoz yoki qish) vaqtini o'rnatdi.
Soatdan boshlaylik.
Soatni o'qiyotganda, sizga soat moduli ichidagi turli registrlardan olingan o'zgaruvchilar kerak bo'ladi. Agar biz ularni raqamlardan ko'ra ko'proq qilsak, biz quyidagi satrlardan foydalanishimiz mumkin:
const int DS1307 = 0x68; const char* days = {"Zo.", "Ma.", "Di.", "Voy.", "Do.", "Vr.", "Za."};
const char* oy = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11" "," 12 "};
n
TimeLord yordamida biz bu ma'lumotni o'z joyim uchun olamiz: (Lokeren, Belgiya)
TimeLord Lokeren; uni sozlash Lokeren. Position (51.096, 3.99); uzunlik va kenglik
Lokeren. TimeZone (+1*60); GMT +1 = +1 x 60 daqiqa
Lokeren. DstRules (3, 4, 10, 4, 60); DST 3 -oydan, 4 -haftadan 10 -oygacha, 4 -haftadan, +60 daqiqadan
int jaar = yil +2000;
bayt sunRise = {0, 0, 12, oy kuni, oy, yil}; har kuni 00 soatdan boshlab hisoblashni boshlang
bayt sunSet = {0, 0, 12, oy kuni, oy, yil}; yuqoridagi kabi
bayt maan = {0, 0, 12, oy kuni, oy, yil}; yuqoridagi kabi
suzuvchi faza;
Bu erda hisob -kitoblar amalga oshiriladi.
bosqich = Lokeren. MoonPhase (maan);
Quyosh chiqishi (quyosh chiqishi);
Quyosh botishi (quyosh botishi);
Lokeren. DST (quyosh chiqishi);
Lokeren. DST (quyosh botishi);
int ZonOpUur = sunRise [tl_hour];
int ZonOpMin = sunRise [tl_minute];
int ZonOnUur = sunSet [tl_hour];
int ZonOnMin = sunSet [tl_minute];
Bu TimeLord -da narsalar qanday hisoblanganiga misol. Ushbu kutubxona yordamida siz quyosh botishi va chiqishining aniq vaqtlarini olasiz.
Oxir -oqibat, men butun dasturni ushbu ko'rsatma bilan joylashtiraman. Bu juda to'g'ri.
4 -qadam: Qo'shimcha dasturiy ta'minot …
Dastur haqida batafsil …
Bizda dasturiy ta'minotning uchta katta qismi bor.
1) Biz har xil sensorlardan ba'zi ma'lumotlarni olamiz: bizning soatdan, DHT va BMP180. Bu bizning kirishimiz.
2) Ma'lumotni (1 va 0) mantiqiy narsaga tarjima qilishimiz kerak. Buning uchun biz kutubxonalarimiz va o'zgaruvchilarimizdan foydalanamiz.
3) Biz ma'lumotlarni o'qishni va saqlamoqchimiz. Bu bizning chiqishimiz. Favqulodda foydalanish uchun bizda LCD-TFT bor, keyinroq foydalanish uchun bizda SD-kartada saqlangan ma'lumotlar bor.
Bizning loopimizda) "GOTO" lar ko'p bo'ladi: biz turli kutubxonalarga o'tamiz. Biz ma'lumotlarni bir datchikdan olamiz, ma'lumotlarni olamiz va ularni (asosan) suzuvchi ma'lumotlar o'zgaruvchisida saqlaymiz. Biz o'zgaruvchan ismlarimizni oqilona tanlaymiz, x yoki y bilan emas, balki "tempOutside" yoki "bosim" yoki shunga o'xshash ismlar bilan. Ularni o'qish uchun. OK, bu o'zgaruvchilarni ishlatishni biroz og'irlashtiradi va xotira sarfini oshiradi.
Bu erda hiyla -nayrang keladi: o'zgaruvchilarni ekranda ko'rinadigan qilib qo'yish, ularni to'g'ri joyga qo'yishdir.
Bu erda ishlatiladigan ikkita kutubxona, Adafruit_GFX.h va MCUfriend_kbv.h, ranglar, shriftlar va chiziqlar chizish qobiliyatidan foydalanish uchun yaxshi ish to'plamiga ega. Birinchidan, men ushbu kutubxonalar bilan 12864 ekranli ekranni ishlatardim, keyinchalik uni tft ekranida o'zgartirdim. Men qilishim kerak bo'lgan yagona narsa - qutilar, to'rtburchaklar va chiziqlarni joylashtirish va ma'lumotlar to'g'ri joyida chiqqanligiga ishonch hosil qilish. Buning uchun buyruq sifatida setCursor va tft. Write dan foydalanishingiz mumkin. Oson qiladi. Ranglarni ham o'zgaruvchilar sifatida belgilash mumkin, ularni kutubxonalarda qanday tanlash mumkinligi haqida ko'plab misollar mavjud.
SD-kartaga yozish uchun bizga oddiy fokuslar ham kerak.
Masalan, biz o'z ma'lumotlarimizni soatdan alohida soat, daqiqa va soniya sifatida o'qiymiz. Ichki yoki tashqi makonni farqlash uchun haroratlar DHT.temperaturasi va DHTT.temperaturasi.
Biz ularni SD -kartaga joylashtirmoqchi bo'lsak, biz mag'lubiyatdan foydalanamiz: biz har bir tsiklni bo'sh satr sifatida boshlaymiz:
o'zgaruvchan yozuv = ""; Keyin biz barcha ma'lumotlarni to'ldirishimiz mumkin:
variablestring = variablestring + soat + ":" + daqiqa + ":" + soniya. Bu mag'lubiyatni 12:00:00 kabi beradi.
Biz uni TXT fayli sifatida yozganimiz uchun (Arduino.cc dagi SD.h ga qarang), keyingi o'zgaruvchilar uchun biz tab qo'shamiz, shuning uchun uni Excelga import qilish osonroq bo'ladi.
Shunday qilib, biz kelamiz: variablestring = variablestring + "\ t" + DHT.temperature + "\ t" + DHTT. Temperature.
Va hokazo.
5 -qadam: Ba'zi ekran tasvirlari …
Ma'lumotlar to'plamini "ortiqcha yuklamasligimizga" ishonch hosil qilish uchun men ma'lumotlarni har 10 daqiqada bir marta yozganman. Bizga kuniga 144 ta yozuv beriladi, menimcha yomon emas.
Va, albatta, siz bu ma'lumotlarni qayta ishlashni davom ettirishingiz mumkin: siz o'rtacha ko'rsatkichlarni topishingiz, maksimal va minimalarni qidirishingiz, o'tgan yillar bilan solishtirishingiz mumkin …
Met ofislar odatda kunduzi va kechasi uchun o'rtacha haroratni belgilaydilar: kunduzi ertalab soat 8 da boshlanadi va kechki 8gacha ishlaydi.
Shamol, bosim va yog'ingarchiliklar uchun o'rtacha ko'rsatkichlar yarim tundan yarim tunga qadar olinadi.
6 -qadam: tugadimi?
Aslida emas … Aytganimdek, nihoyat, JAWSning qolgan qismi bilan shamol tezligi va shamol yo'nalishi sensori bilan ishlashni xohlayman.
Men qilgan kichik qurilish balandligi taxminan 4 m. Meteorolog shamol tezligini 10 m balandlikdan oladi. Men uchun biroz balandroq …
Umid qilamanki, sizga bu o'qish yoqdi!
Adafruit-GFX bu erda tushuntiriladi:
MCUFRIEND_kbv.h ni bu erda topish mumkin:
BMP 120 haqida ko'proq (BMP085 bilan bir xil):
DHT22 haqida: