Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Viileä OLED -näyttö, joka näyttää päivämäärän, kellonajan ja lämpötilan celsius- ja fahrenheit -asteina käyttäen ESP8266 -pohjaista Xinabox xChips -tekniikkaa.
Vaihe 1: Tässä projektissa käytetyt asiat
Laitteiston osat
- XinaBox IP01 x 1 xChip USB -ohjelmoija, joka perustuu FTDI Limitedin FT232R -järjestelmään
- XinaBox CW01 x 1 xChip Wi-Fi Core, joka perustuu ESP8266-Wi-Fi-moduuliin
- XinaBox SW01 x 1 xChip Boschin BME280 -pohjainen lämpötila-, kosteus- ja ilmanpaineanturi.
- XinaBox OD01 x 1 xChip 128x64 pikselin OLED -näyttö
- XinaBox PU01 x 1 xChip USB (tyyppi A) -virtalähde
- XinaBox XC10 x 1 xChip -väyläliittimet
- 5V USB -virtalähde x 1
Ohjelmistosovellukset ja verkkopalvelut
Arduino IDE
Vaihe 2: Tarina
Johdanto
Rakensin tämän projektin näyttämään päivämäärän, UCT -ajan ja lämpötilan käyttämällä XinaBox xChips, joka käyttää I2C -väyläprotokollaa. Aika haettiin Googlen NTP -palvelimelta. Ympäristön lämpötila mitattiin SW01 xChip -laitteella ja se näytettiin OD01 xChip OLED -näytöllä Celsius- ja Fahrenheit -asteina. Alla olevassa kuvassa näkyy OLED -näyttö.
OLED näyttää päivämäärän, kellonajan ja lämpötilan
Vaihe 3: Lataa tarvittavat tiedostot
Tätä projektia varten tarvitset seuraavat kirjastot ja ohjelmistot.
- Arduino IDE - Kehitysohjelmisto, jossa koodataan
- xSW01 - Lämpötila -anturikirjasto
- xCore - Ydinkirjasto XinaBox xChipsille
- xOD01 - OLED -näyttökirjasto.
- Aikavyöhyke - kirjasto aikavyöhykkeen valitsemiseksi
- Aika - Voit käyttää aikatoimintoja
- NTPClient - Voit saada aikaa palvelimelta
- Sinun on myös ladattava ESP8266 -kortti ja seurattava sen mukana toimitettuja ohjeita, jotta kortti voidaan asentaa
Kun olet ladannut, asennat IDE: n ja kirjastot. Se on melko suoraviivaista, jos noudatat ohjeita.
Vaihe 4: Kokoa
Tärkein xChip, joka suorittaa ja käsittelee ohjelman, on CW01. Se perustuu ESP8266 WiFi -moduuliin ja käyttää I2C -väyläprotokollaa. Ohjelmoidaksesi CW01: lle tarvitset xChip -ohjelmoinnin. IP01 antaa meille mahdollisuuden ohjelmoida CW01 tietokoneemme USB -portin kautta yksinkertaisesti napsauttamalla kaksi xChipiä yhteen XC10 -väyläliittimien avulla ja asettamalla se USB -porttiin. Johdotusta ja juottamista ei tarvita. Yksi asia, joka on otettava huomioon, on xChip -tunnistenimien suunta. Ne kaikki on suunnattava samaan suuntaan. Sinulla pitäisi nyt olla seuraava asetus.
Napsauta CW01 ja IP01 yhteen ja liitä ne tietokoneen USB -porttiin
Jos tunnet xChipit, voit liittää kaikki xChipit yhteen käyttämällä XC10 -väyläliittimiä, jota haluat käyttää projektissasi, ja liittää sen sitten USB -porttiin. Käytämme SW01 -lämpötila -anturia ja OD01 OLED -näyttöä.
Voit liittää kaikki sirut yhteen ja liittää sen sitten USB -porttiin
Vaihe 5: Ohjelmoi
Lataa tai kopioi ja liitä alla oleva koodi Arduino IDE -laitteeseesi. Jos et tee muutoksia koodiin, kirjoita WiFi -tiedot vastaaviin kenttiin alla kuvatulla tavalla. Anna myös luotettava NTP -aikapalvelin. Olen käyttänyt Googlen aikapalvelinta tähän projektiin.
WiFi -tiedot ja NTP -aikapalvelin
Kokoa ja lataa nyt. Varmista, että olet valinnut oikean COM -portin ja -levyn Arduino IDE: n työkaluvalikosta. Lataamisen jälkeen kellonajan, päivämäärän ja lämpötilan tulee näkyä alla.
Lataamisen jälkeen sinun pitäisi nähdä seuraava
Vaihe 6: Tee siitä kannettava
Voit nyt poistaa laitteen USB -portistasi ja erottaa jokainen xChip yksinkertaisesti vetämällä sen erilleen. Koska ohjelmointi on valmis, IP01 ei ole enää tarpeen. Voit nyt yhdistää projektisi haluamallasi tavalla, kunhan kaikki tunnistenimet on suunnattu samaan suuntaan. Käytämme yksikköämme virransyöttöön PU01: llä. Näin voimme käyttää sitä normaalista virtapankista tai mistä tahansa 5 V: n USB -virtalähteestä. Olen liittänyt omani alla olevan kuvan mukaisesti.
Lopullinen kokoonpano. xChips voidaan yhdistää haluamallasi tavalla.
Vaihe 7: Johtopäätös
Tämä projekti kestää 20 minuuttia. Jos haluat ajan sijainnissasi, katso esimerkkikoodia aikavyöhykekirjastosta tai suorita aritmeettinen UTC -aika. Johtoja ei käytetty eikä juotoksia tarvittu.
Vaihe 8: Koodi
Date_Time_Temp.ino Arduino Kirjoita vain WiFi -tiedot vastaaviin kenttiin ja lataa taulullesi.
#include // sisältää XinaBox xCHIPSin ydinkirjaston
#sisällytä // sisällytä OLED -näyttökirjasto #sisällytä // sisällytä lämpötila -anturikirjasto #sisällytä // sisällytä ESP8266WiFi -toiminto #sisällytä // sisällytä aikakirjastot #sisällytä #sisällytä #sisällytä #sisällytä #sisällytä xSW01 SW01; // määrittele NTP -ominaisuudet #define ntpOffset 60 * 60 // sekunneissa #define ntpInterval 60 * 1000 // millisekunneissa // lisää luotettava ntp -aikapalvelin lainausmerkkien väliin // tässä olen käyttänyt Googlen ntp -aikapalvelinta # define ntpAddress "time1.google.com" // määritä NTP UDP -asiakas WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // lämpötilan muuttuja float tempC; // celsius float tempF; // fahrenheit // wifi -tietosi const char* wifi_ssid = "XinaBox"; // wifi ssid const char* wifi_pass = "RapidIoT"; // wifi -salasanasi // päivämäärä- ja aikamuuttuja Merkkijonopäivä; String clktime; // muuttujat, jotka sisältävät päiviä ja kuukausia const char * päivää = {"sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"}; const char * months = {"tammi", "helmikuu", "maalis", "huhti", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu" "," Joulu "}; const char * ampm = {"AM", "PM"}; tyhjä asennus () {tempC = tempF = 0; // alustetaan lämpötila nollaan timeClient.begin (); // Käynnistä NTP UDP -asiakas // käynnistä sarjayhteys Serial.begin (115200); // Käynnistä i2c -tiedonsiirto ja aseta nastat Wire.begin (2, 14); // käynnistyslämpötila -anturi SW01.begin (); // käynnistä OLED -näyttö OLED.begin (); // tyhjennä OLED -näyttö OD01.clear (); // muodosta wifi -yhteys wifi_connect (); viive (1000); } void loop () {// suoritetaan, jos wifi -yhteys muodostetaan, jos (WiFi.status () == WL_CONNECTED) {SW01.poll (); // luku lämpötila tempC = SW01.getTempC (); // tallenna lämpötila celsius -asteina tempF = SW01.getTempF (); // tallenna lämpötila fahrenheit -päivämääränä = ""; // tyhjennä päivämäärän muuttuja clktime = ""; // tyhjennä aikamuuttuja // päivitä ntp -asiakas ja hanki unix -utc -aikaleima timeClient.update (); unsigned long epochTime = timeClient.getEpochTime (); // muuntaa vastaanotetun aikaleiman muotoon time_t object time_t utc; utc = epochTime; // utc aika TimeChangeRule utcRule = {"UTC", viime, su, maalis, 1, 0}; Aikavyöhyke UTC (utcRule, utcRule); // muotoa aikamuuttujat päivämäärä += päivät [viikonpäivä (utc) - 1]; päivämäärä += ","; päivämäärä += kuukaudet [kuukausi (utc) - 1]; päivämäärä += ""; päivämäärä += päivä (utc); päivämäärä += ","; päivämäärä += vuosi (utc); // muotoile aika 12 tunnin muotoon AM/PM ja ilman sekuntia clktime += hourFormat12 (utc); clktime += ":"; jos (minuutti (utc)