Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šaunus OLED ekranas, rodantis datą, laiką ir temperatūrą Celsijaus ir Farenheito laipsniais, naudojant „Xinabox xChips“pagal ESP8266.
1 žingsnis: šiame projekte naudojami dalykai
Techninės įrangos komponentai
- XinaBox IP01 x 1 xChip USB programuotojas, pagrįstas FTDI Limited FT232R
- „XinaBox CW01 x 1 xChip Wi-Fi Core“, pagrįstas ESP8266 „Wi-Fi“moduliu
- XinaBox SW01 x 1 xChip Temperatūros, drėgmės ir atmosferos slėgio jutiklis, pagrįstas „Bosch“BME280.
- XinaBox OD01 x 1 xChip 128x64 pikselių OLED ekranas
- XinaBox PU01 x 1 xChip USB (A tipo) maitinimo šaltinis
- XinaBox XC10 x 1 xChip magistralės jungtys
- 5 V USB maitinimo šaltinis x 1
Programinės įrangos programos ir internetinės paslaugos
„Arduino IDE“
2 žingsnis: istorija
Įvadas
Sukūriau šį projektą, norėdamas parodyti datą, UCT laiką ir temperatūrą, naudodamas „XinaBox xChips“, kuris naudoja I2C magistralės protokolą. Laikas buvo nuskaitytas iš „Google“NTP serverio. Aplinkos temperatūra buvo matuojama naudojant SW01 xChip ir buvo rodoma OD01 xChip OLED ekrane Celsijaus ir Farenheito laipsniais. Žemiau esančiame paveikslėlyje rodomas OLED ekranas.
OLED rodo datą, laiką ir temperatūrą
3 veiksmas: atsisiųskite būtinus failus
Šiam projektui jums reikės šių bibliotekų ir programinės įrangos.
- „Arduino IDE“- kūrimo programinė įranga, kurioje koduojate
- xSW01 - Temperatūros jutiklių biblioteka
- „xCore“- pagrindinė „XinaBox xChips“biblioteka
- xOD01 - OLED ekrano biblioteka.
- Laiko juosta - biblioteka, kurioje galite pasirinkti savo laiko juostą
- Laikas - naudoti laiko funkcijas
- NTPClient - leidžia gauti laiko iš serverio
- Norėdami įdiegti plokštę, taip pat turėsite atsisiųsti ESP8266 plokštę ir sekti prie jos pridedamas instrukcijas
Atsisiuntę įdiegsite IDE ir bibliotekas. Tai gana paprasta, jei laikotės instrukcijų.
4 žingsnis: Surinkite
Jūsų pagrindinis xChip, kuris vykdys ir apdoros programą, yra CW01. Jis pagrįstas ESP8266 „WiFi“moduliu ir naudoja I2C magistralės protokolą. Norėdami programuoti į CW01, jums reikės programavimo xChip. IP01 leidžia mums užprogramuoti CW01 per kompiuterio USB prievadą tiesiog spustelėjus abu „xChip“, naudojant „XC10“magistralės jungtis, ir įkišant jį į USB prievadą. Nereikia jokių laidų ir litavimo. Vienas dalykas, į kurį reikia atkreipti dėmesį, yra „xChip“identifikavimo pavadinimų orientacija. Visi jie turėtų būti nukreipti ta pačia kryptimi. Dabar turėtumėte turėti šią sąranką.
Spustelėkite CW01 ir IP01 ir įkiškite juos į kompiuterio USB prievadą
Jei esate susipažinę su „xChips“, galite sujungti kiekvieną „xChip“naudodami XC10 magistralines jungtis, kurias norite naudoti savo projektui, ir įkišti į USB prievadą. Mes naudosime SW01 temperatūros jutiklį ir OD01 OLED ekraną.
Galite sujungti visus lustus ir įkišti į USB prievadą
5 žingsnis: programa
Atsisiųskite arba nukopijuokite ir įklijuokite žemiau esantį kodą į „Arduino IDE“. Jei nekeičiate kodo, tiesiog įveskite savo „WiFi“informaciją atitinkamuose laukuose, kaip parodyta žemiau. Taip pat įveskite patikimą NTP laiko serverį. Šiam projektui naudojau „Google“laiko serverį.
„WiFi“informacija ir NTP laiko serveris
Dabar surinkite ir įkelkite. Įsitikinkite, kad „Arduino IDE“įrankių meniu pasirinkote tinkamą COM prievadą ir plokštę. Įkėlus, laikas, data ir temperatūra turėtų būti rodomi taip, kaip nurodyta toliau.
Įkėlę turėtumėte pamatyti šiuos dalykus
6 žingsnis: padarykite jį nešiojamą
Dabar galite išimti įrenginį iš USB prievado ir atskirti kiekvieną „xChip“tiesiog ištraukdami. Kadangi programavimas baigtas, IP01 nebereikia. Dabar galite bet kokiu būdu sujungti savo projektą, jei visi identifikavimo pavadinimai yra nukreipti ta pačia kryptimi. Norėdami maitinti savo įrenginį, naudosime PU01. Tai leidžia mums maitinti jį iš įprasto maitinimo banko arba bet kurio 5 V USB maitinimo šaltinio. Aš prijungiau savo, kaip parodyta žemiau.
Galutinis surinkimas. „xChips“galima prijungti bet kokiu norimu būdu.
7 žingsnis: Išvada
Šis projektas užtruks 20 minučių. Jei norite, kad laikas būtų jūsų vietovėje, apsvarstykite pavyzdinį kodą laiko juostos bibliotekoje arba atlikite aritmetiką pagal UTC laiką. Jokie laidai nebuvo naudojami ir litavimo nereikėjo.
8 žingsnis: kodas
Date_Time_Temp.ino Arduino Tiesiog įveskite savo „WiFi“informaciją atitinkamuose laukuose ir įkelkite į savo lentą.
#include // apima pagrindinę „XinaBox xCHIPS“biblioteką
#įtraukti // įtraukti OLED ekranų biblioteką #įtraukti // įtraukti temperatūros jutiklių biblioteką #įtraukti // įtraukti ESP8266WiFi funkcionalumą #įtraukti // įtraukti laiko bibliotekas #įtraukti #įtraukti #įtraukti #įtraukti #įtraukti xSW01 SW01; // apibrėžti NTP ypatybes #define ntpOffset 60 * 60 // per kelias sekundes #define ntpIntervalas 60 * 1000 // milisekundėmis // tarp dvigubų kabučių įterpkite patikimą ntp laiko serverį // čia aš naudojau google ntp laiko serverį # apibrėžti ntpAddress "time1.google.com" // nustatyti NTP UDP klientą WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // kintamos temperatūros plūdės tempC; // Celsijaus plūdės tempF; // fahrenheit // jūsų „wifi“informacija const char* wifi_ssid = "XinaBox"; // jūsų wifi ssid const char* wifi_pass = "RapidIoT"; // jūsų „wifi“slaptažodis // datos ir laiko kintamasis String date; Styginių laikas; // kintamieji, kuriuose yra dienos ir mėnesiai const char * days = {"sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis"}; const char * months = {"sausis", "vasaris", "kovas", "balandis", "gegužė", "birželis", "liepa", "rugpjūtis", "rugsėjis", "spalis", "lapkritis" "," Gruodis "}; const char * ampm = {"AM", "PM"}; void setup () {tempC = tempF = 0; // inicijuoti temperatūrą iki nulio timeClient.begin (); // paleisti NTP UDP klientą // pradėti nuoseklųjį ryšį Serial.begin (115200); // paleisti i2c ryšį ir nustatyti smeigtukus Wire.begin (2, 14); // paleidimo temperatūros jutiklis SW01.begin (); // pradėti OLED ekraną OLED.begin (); // išvalyti OLED ekraną OD01.clear (); // užmegzti wifi ryšį wifi_connect (); vėlavimas (1000); } void loop () {// paleisti, jei užmegztas „Wi -Fi“ryšys, jei („WiFi.status () == WL_CONNECTED“{SW01.poll (); // skaityti temperatūrą tempC = SW01.getTempC (); // saugoti temperatūrą Celsijaus tempF = SW01.getTempF (); // parduotuvės temperatūra farenheito data = ""; // išvalyti datos kintamąjį clktime = ""; // išvalyti laiko kintamąjį // atnaujinti ntp klientą ir gauti unix utc timestamp timeClient.update (); unsigned long epochTime = timeClient.getEpochTime (); // konvertuoti gautą laiko žymę į time_t objektą time_t utc; utc = epochTime; // gatvės laikas TimeChangeRule utcRule = {"UTC", paskutinis, sekmadienis, kovas, 1, 0}; Laiko juosta UTC (utcRule, utcRule); // formatuoti laiko kintamuosius data += dienos [savaitės diena (utc) - 1]; data += ","; data += mėnesiai [mėnuo (utc) - 1]; data += ""; data += diena (utc); data += ","; data += metai (utc); // formatuoti laiką iki 12 valandų formato naudojant AM/PM ir be sekundžių clktime += hourFormat12 (utc); clktime += ":"; jei (minutė (utc)