Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Sovuq OLED displeyi, ESP8266 asosidagi Xinabox xChips yordamida Selsiy va Farengeytda sana, vaqt va haroratni ko'rsatadi.
1 -qadam: Ushbu loyihada ishlatilgan narsalar
Uskuna komponentlari
- FTDI Limited -dan FT232R -ga asoslangan XinaBox IP01 x 1 xChip USB dasturchisi.
- ESP8266 Wi-Fi moduliga asoslangan XinaBox CW01 x 1 xChip Wi-Fi Core
- XinaBox SW01 x 1 xChip Bosch BME280 asosida harorat, namlik va atmosfera bosimi sensori.
- XinaBox OD01 x 1 xChip 128x64 pikselli OLED -displey
- XinaBox PU01 x 1 xChip USB (A turi) quvvat manbai
- XinaBox XC10 x 1 xChip avtobus ulagichlari
- 5V USB quvvat manbai x 1
Dasturiy ta'minot va onlayn xizmatlar
Arduino IDE
2 -qadam: hikoya
Kirish
Men ushbu loyihani I2C avtobus protokolidan foydalanadigan XinaBox xChips yordamida sana, UCT vaqti va haroratini ko'rsatish uchun qurdim. Vaqt Google NTP serveridan olingan. Atrof -muhit harorati SW01 xChip yordamida o'lchandi va Selsiy va Farengeytdagi OD01 xChip OLED displeyida ko'rsatildi. Quyidagi rasmda OLED displeyi ko'rsatilgan.
Sana, vaqt va haroratni ko'rsatadigan OLED
3 -qadam: kerakli fayllarni yuklab oling
Ushbu loyiha uchun sizga quyidagi kutubxonalar va dasturiy ta'minot kerak bo'ladi.
- Arduino IDE - Siz kodlaydigan dasturiy ta'minot
- xSW01 - harorat sensori kutubxonasi
- xCore - XinaBox xChips uchun asosiy kutubxona
- xOD01 - OLED displey kutubxonasi.
- Vaqt mintaqasi - kutubxona sizning vaqt mintaqangizni tanlash uchun
- Vaqt - Vaqt funktsiyalaridan foydalanish uchun
- NTPClient - serverdan vaqt olish imkonini beradi
- Shuningdek, taxtani o'rnatish uchun siz ESP8266 kartasini yuklab olishingiz va unga biriktirilgan ko'rsatmalarga amal qilishingiz kerak bo'ladi.
Yuklab olingandan so'ng siz IDE va kutubxonalarni o'rnatasiz. Agar siz ko'rsatmalarga amal qilsangiz, bu juda to'g'ri.
4 -qadam: yig'ish
Dasturni bajaradigan va qayta ishlaydigan sizning asosiy xChip - CW01. U ESP8266 WiFi moduliga asoslangan va I2C avtobus protokolidan foydalanadi. CW01 ga dasturlash uchun sizga xChip dasturlash kerak bo'ladi. IP01 bizga CW01 -ni kompyuterimizdagi USB -port orqali dasturlash imkonini beradi, faqat XC10 avtobus ulagichlari yordamida ikkita xChip -ni birlashtirib, uni USB -portga kiritish orqali. Hech qanday simi va lehim kerak emas. E'tibor qilish kerak bo'lgan narsa bu xChip identifikator nomlarining yo'nalishi. Ularning barchasi bir xil yo'nalishda bo'lishi kerak. Endi siz quyidagi sozlamalarga ega bo'lishingiz kerak.
CW01 va IP01 ni bosing va kompyuterning USB portiga joylashtiring
Agar siz xChips -ni yaxshi bilsangiz, har bir xChip -ni loyihangiz uchun ishlatmoqchi bo'lgan XC10 avtobus ulagichlari yordamida ulashingiz va keyin uni USB portiga joylashtirishingiz mumkin. Biz SW01 harorat sensori va OD01 OLED displeyidan foydalanamiz.
Siz barcha mikrosxemalarni bir -biriga ulashingiz va keyin USB portingizga kiritishingiz mumkin
5 -qadam: Dastur
Quyidagi kodni yuklab oling yoki nusxa ko'chiring va Arduino IDE -ga joylashtiring. Agar siz kodga hech qanday o'zgartirish kiritmasangiz, quyida ko'rsatilgandek, tegishli maydonlarga Wi -Fi ma'lumotlarini kiriting. Shuningdek, ishonchli NTP vaqt serverini kiriting. Men ushbu loyiha uchun Google vaqt serveridan foydalanganman.
WiFi tafsilotlari va NTP vaqt serveri
Endi kompilyatsiya qiling va yuklang. Arduino IDE asboblar menyusi ostidan to'g'ri COM port va kartani tanlaganingizga ishonch hosil qiling. Yuklanganidan so'ng, vaqt, sana va harorat quyida ko'rsatilishi kerak.
Yuklagandan so'ng siz quyidagilarni ko'rishingiz kerak
6 -qadam: Portativ qiling
Endi siz qurilmani USB portidan olib tashlashingiz va har bir xChip -ni ajratib olishingiz mumkin. Dasturlash tugagach, endi IP01 talab qilinmaydi. Agar siz identifikatsiya nomlari bir xil yo'nalishga yo'naltirilgan bo'lsa, endi siz o'zingiz xohlagan tarzda loyihangizni ulashingiz mumkin. Qurilmani quvvatlantirish uchun biz PU01dan foydalanamiz. Bu bizga uni oddiy quvvat bankidan yoki har qanday 5V USB quvvat manbaidan quvvatlantirish imkonini beradi. Men quyida ko'rsatilgandek o'zimni uladim.
Yakuniy yig'ilish. xChips siz xohlagan tarzda ulanishi mumkin.
7 -qadam: Xulosa
Ushbu loyihani amalga oshirish uchun 20 daqiqa vaqt ketadi. Agar siz o'z joyingizda vaqtni xohlasangiz, Timezone kutubxonasidagi misol kodini ko'rib chiqing yoki UTC vaqti bilan arifmetikani bajaring. Hech qanday sim ishlatilmadi va lehim talab qilinmadi.
8 -qadam: kod
Date_Time_Temp.ino Arduino Wi -Fi ma'lumotlarini tegishli maydonlarga kirgizib, taxtangizga yuklang.
#include // XinaBox xCHIPS uchun asosiy kutubxonani o'z ichiga oladi
#include // OLED displey kutubxonasini o'z ichiga oladi #include // harorat sensori kutubxonasini o'z ichiga oladi #include // ESP8266WiFi funksiyasini o'z ichiga oladi #include // vaqt kutubxonalarini o'z ichiga oladi #include #include #include #include #include xSW01 SW01; // NTP xususiyatlarini aniqlang #define ntpOffset 60 * 60 // soniyalarda #define ntpInterval 60 * 1000 // milisekundlarda // ishonchli tirnoqli vaqtli serverni ikki tirnoq orasiga joylashtiring // bu erda men Google ntp vaqt serveridan foydalanganman # ntpAddress "time1.google.com" ni aniqlang // NTP UDP mijozini sozlash WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // harorat o'zgaruvchan float tempC; // tselsiy bo'yicha float tempF; // fahrenheit // sizning wifi tafsilotlari const char* wifi_ssid = "XinaBox"; // sizning wifi ssid const char* wifi_pass = "RapidIoT"; // sizning wifi parolingiz // sana va vaqt o'zgaruvchisi String sanasi; String clxtime; // kunlar va oylarni o'z ichiga olgan o'zgaruvchilar const char * days = {"Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"}; const char * months = {"Yanvar", "Fevral", "Mar", "Apr", "May", "Iyun", "Iyul", "Avgust", "Sentyabr", "Okt", "Noyabr" "," Dekabr "}; const char * ampm = {"AM", "PM"}; void setup () {tempC = tempF = 0; // haroratni nolga qaytarish timeClient.begin (); // NTP UDP mijozini ishga tushirish // ketma -ket aloqani boshlash Serial.begin (115200); // i2c aloqasini boshlang va pinlarni o'rnating Wire.begin (2, 14); // boshlash harorati sensori SW01.begin (); // OLED displeyini ishga tushirish OLED.begin (); // OLED displeyini tozalash OD01.clear (); // wifi ulanishini o'rnatish wifi_connect (); kechikish (1000); } void loop () {// agar wifi aloqasi o'rnatilgan bo'lsa, agar (WiFi.status () == WL_CONNECTED) {SW01.poll (); // o'qish harorati tempC = SW01.getTempC (); // saqlash harorati celcius tempF = SW01.getTempF (); // saqlash harorati farenxayt sanasida = ""; // aniq sana o'zgaruvchisi clktime = ""; // aniq vaqt o'zgaruvchisi // ntp mijozini yangilang va unix utc vaqt tamg'asini oling timeClient.update (); imzosiz uzoq epochTime = timeClient.getEpochTime (); // qabul qilingan vaqt tamg'asini time_t ob'ektiga aylantirish time_t utc; utc = epochTime; // utc vaqti TimeChangeRule utcRule = {"UTC", Oxirgi, Quyosh, Mart, 1, 0}; UTC vaqt zonasi (utcRule, utcRule); // formatdagi vaqt o'zgaruvchilari sana += kunlar [hafta ichi (utc) - 1]; sana += ","; sana += oylar [oy (utc) - 1]; sana += ""; sana += kun (utc); sana += ","; sana += yil (utc); // vaqtni AM/PM bilan 12 soatlik formatga formatlash va soniyalarsiz clktime += hourFormat12 (utc); clktime += ":"; agar (daqiqa (utc)