Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Hladen zaslon OLED, ki prikazuje datum, čas in temperaturo v stopinjah Celzija in Fahrenheita z uporabo Xinabox xChips na osnovi ESP8266.
1. korak: Stvari, uporabljene v tem projektu
Strojne komponente
- XinaBox IP01 x 1 xChip USB programator na osnovi FT232R iz FTDI Limited
- XinaBox CW01 x 1 xChip Wi-Fi jedro na osnovi modula Wi-Fi ESP8266
- XinaBox SW01 x 1 xChip Senzor za temperaturo, vlago in atmosferski tlak na podlagi BME280 iz Boscha.
- XinaBox OD01 x 1 xChip OLED zaslon s 128 x 64 piksli
- Napajanje XinaBox PU01 x 1 xChip USB (tip A)
- Priključki vodila XinaBox XC10 x 1 xChip
- 5V USB napajalnik x 1
Programske aplikacije in spletne storitve
Arduino IDE
2. korak: Zgodba
Uvod
Ta projekt sem zgradil za prikaz datuma, časa in temperature UCT z uporabo XinaBox xChips, ki uporablja protokol vodila I2C. Čas je bil pridobljen z google NTP strežnika. Temperatura okolice je bila izmerjena s pomočjo SW01 xChip in je bila prikazana na OLED zaslonu OD01 xChip v Celzijah in Fahrenheitu. Spodnja slika prikazuje zaslon OLED.
OLED prikazuje datum, čas in temperaturo
3. korak: Prenesite potrebne datoteke
Za ta projekt boste potrebovali naslednje knjižnice in programsko opremo.
- Arduino IDE - razvojna programska oprema, v katero boste kodirali
- xSW01 - Knjižnica temperaturnih senzorjev
- xCore - Knjižnica jedra za XinaBox xChips
- xOD01 - knjižnica OLED Display.
- Časovni pas - Knjižnica za izbiro časovnega pasu
- Čas - za uporabo časovnih funkcij
- NTPClient - Omogoča pridobivanje časa s strežnika
- Za namestitev plošče boste morali prenesti tudi ploščo ESP8266 in slediti navodilom, ki so priložena
Ko prenesete, boste namestili IDE in knjižnice. Če sledite navodilom, je precej naravnost.
4. korak: Sestavite
Vaš glavni xChip, ki bo izvajal in obdeloval program, je CW01. Temelji na WiFi modulu ESP8266 in uporablja protokol vodila I2C. Za programiranje na CW01 potrebujete programski xChip. IP01 nam omogoča programiranje CW01 prek vrat USB v računalniku, tako da skupaj kliknemo dva xChips -a s priključki vodila XC10 in ga vstavimo v vrata USB. Brez ožičenja in spajkanja ni potrebno. Upoštevati je treba orientacijo identifikacijskih imen xChip. Vsi morajo biti usmerjeni v isto smer. Zdaj bi morali imeti naslednjo nastavitev.
Skupaj kliknite CW01 in IP01 in jih vstavite v vrata USB na računalniku
Če poznate xChips, lahko povežete vsak xChip skupaj s priključki vodila XC10, ki jih želite uporabiti za svoj projekt, in ga nato vstavite v vrata USB. Uporabljali bomo temperaturni senzor SW01 in zaslon OL01 OD01.
Lahko povežete vse svoje čipe in jih nato vstavite v vrata USB
5. korak: Program
Prenesite ali kopirajte in prilepite spodnjo kodo v svoj Arduino IDE. Če kode ne spreminjate, preprosto vnesite svoje podatke o WiFi v ustrezna polja, kot je prikazano spodaj. Vnesite tudi zanesljiv časovni strežnik NTP. Za ta projekt sem uporabil Googlov časovni strežnik.
Podrobnosti o WiFi in časovnem strežniku NTP
Zdaj sestavite in naložite. Prepričajte se, da ste v meniju orodij v Arduino IDE izbrali pravilna vrata in ploščo COM. Ko so naloženi, morajo biti čas, datum in temperatura prikazani spodaj.
Po nalaganju bi morali videti naslednje
6. korak: Prenesite ga
Zdaj lahko enoto odstranite iz vrat USB in ločite vsak xChip tako, da ga preprosto povlečete. Ker je programiranje končano, IP01 ni več potreben. Svoj projekt lahko zdaj povežete na kakršen koli način, če so identifikacijska imena usmerjena v isto smer. Za napajanje naše enote bomo uporabili PU01. To nam omogoča napajanje iz običajnega napajalnika ali katerega koli 5V USB napajalnika. Jaz sem svojega povezal, kot je prikazano spodaj.
Končna montaža. xChips lahko povežete na kakršen koli način.
7. korak: Zaključek
Ta projekt bo trajal 20 minut. Če želite čas na svoji lokaciji, si oglejte primer kode v knjižnici časovnega pasu ali naredite aritmetiko s časom UTC. Žice niso bile uporabljene in spajkanje ni bilo potrebno.
8. korak: Koda
Date_Time_Temp.ino Arduino Preprosto vnesite svoje podatke o WiFi v ustrezna polja in jih naložite na svojo ploščo.
#include // vključuje osnovno knjižnico za XinaBox xCHIPS
#include // vključi knjižnico zaslonov OLED #include // vključi knjižnico temperaturnih senzorjev #include // vključi funkcijo ESP8266WiFi #include // vključi knjižnice časa #include #include #include #include #include xSW01 SW01; // določimo lastnosti NTP #define ntpOffset 60 * 60 // v sekundah #define ntpInterval 60 * 1000 // v milisekundah // vstavimo zanesljiv časovni strežnik ntp med dvojne narekovaje // tukaj sem uporabil Googlov časovni strežnik ntp # define ntpAddress "time1.google.com" // nastavite odjemalca NTP UDP WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // temperaturna spremenljivka plavajoča tempC; // Celzius float tempF; // fahrenheit // vaši podatki o wifi const char* wifi_ssid = "XinaBox"; // vaš wifi ssid const char* wifi_pass = "RapidIoT"; // vaše geslo za wifi // spremenljivka datuma in časa String date; Niz clktime; // spremenljivke, ki vsebujejo dneve in mesece const char * days = {"nedelja", "ponedeljek", "torek", "sreda", "četrtek", "petek", "sobota"}; const char * mesecev = {"Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov "," December "}; const char * ampm = {"AM", "PM"}; void setup () {tempC = tempF = 0; // inicializiramo temperaturo na nič timeClient.begin (); // zažene odjemalca NTP UDP // zažene serijsko komunikacijo Serial.begin (115200); // zaženemo komunikacijo i2c in nastavimo zatiče Wire.begin (2, 14); // senzor temperature zagona SW01.begin (); // zaženemo OLED zaslon OLED.begin (); // počisti zaslon OLED OD01.clear (); // vzpostavimo povezavo wifi wifi_connect (); zamuda (1000); } void loop () {// zaženi, če je vzpostavljena povezava wifi if (WiFi.status () == WL_CONNECTED) {SW01.poll (); // odčitavanje temperature tempC = SW01.getTempC (); // shranimo temp v celcius tempF = SW01.getTempF (); // shrani temp v fahrenheit date = ""; // počisti spremenljivko datuma clktime = ""; // počisti časovno spremenljivko // posodobimo odjemalca ntp in dobimo časovni žig unix utc timeClient.update (); brez podpisa dolga epochTime = timeClient.getEpochTime (); // pretvorimo prejeti časovni žig v time_t objekt time_t utc; utc = epochTime; // utc time TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Časovni pas UTC (utcRule, utcRule); // oblikovanje časovnih spremenljivk datum += dnevi [teden v tednu (utc) - 1]; datum += ","; datum += meseci [mesec (utc) - 1]; datum += ""; datum += dan (utc); datum += ","; datum += leto (utc); // oblikovanje časa v 12-urno obliko z AM/PM in brez sekund clktime += hourFormat12 (utc); clktime += ":"; če (minuta (utc)