Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Cool OLED-display met datum, tijd en temperatuur in Celsius en Fahrenheit met Xinabox xChips op basis van ESP8266.
Stap 1: Dingen die in dit project worden gebruikt
Hardware onderdelen
- XinaBox IP01 x 1 xChip USB Programmer gebaseerd op FT232R Van FTDI Limited
- XinaBox CW01 x 1 xChip Wi-Fi Core gebaseerd op ESP8266 Wi-Fi-module
- XinaBox SW01 x 1 xChip Temperatuur-, vochtigheids- en atmosferische druksensor op basis van de BME280 van Bosch.
- XinaBox OD01 x 1 xChip 128x64 Pixel OLED-scherm
- XinaBox PU01 x 1 xChip USB (Type A) Voeding
- XinaBox XC10 x 1 xChip-busconnectoren
- 5V USB-voeding x 1
Software-apps en online services
Arduino IDE
Stap 2: Verhaal
Invoering
Ik heb dit project gebouwd om de datum, UCT-tijd en temperatuur weer te geven met behulp van XinaBox xChips die het I2C-busprotocol gebruikt. De tijd is opgehaald van een google NTP-server. De omgevingstemperatuur werd gemeten met de SW01 xChip en werd weergegeven op het OD01 xChip OLED-display in Celsius en Fahrenheit. De afbeelding hieronder toont het OLED-scherm.
OLED met datum, tijd en temperatuur
Stap 3: Download benodigde bestanden
Voor dit project hebt u de volgende bibliotheken en software nodig.
- Arduino IDE - Ontwikkelingssoftware waarin je gaat coderen
- xSW01 - Bibliotheek temperatuursensor
- xCore - Kernbibliotheek voor XinaBox xChips
- xOD01 - OLED-displaybibliotheek.
- Tijdzone - Bibliotheek om uw tijdzone te kiezen
- Tijd - Tijdfuncties gebruiken
- NTPClient - Hiermee kunt u tijd krijgen van een server
- Je moet ook het ESP8266-bord downloaden en de bijbehorende instructies volgen om het bord te installeren
Na het downloaden installeer je de IDE en de bibliotheken. Het is vrij eenvoudig als je de instructies volgt.
Stap 4: Monteer
Uw belangrijkste xChip die het programma zal uitvoeren en verwerken, is de CW01. Het is gebaseerd op de ESP8266 WiFi-module en maakt gebruik van het I2C-busprotocol. Om op de CW01 te programmeren, heeft u een programmeer-xChip nodig. De IP01 stelt ons in staat om de CW01 via de USB-poort op onze computer te programmeren door simpelweg de twee xChips samen te klikken met behulp van XC10-busconnectoren en deze in de USB-poort te steken. Geen bedrading en geen solderen nodig. Een ding om op te letten is de oriëntatie van de xChip-identificatienamen. Ze moeten allemaal in dezelfde richting worden georiënteerd. U zou nu de volgende instellingen moeten hebben.
Klik CW01 en IP01 samen en steek deze in de USB-poort van uw computer
Als u bekend bent met xChips, kunt u elke xChip met elkaar verbinden met behulp van XC10-busconnectoren die u voor uw project wilt gebruiken en deze vervolgens in de USB-poort steken. We zullen de SW01-temperatuursensor en het OD01 OLED-display gebruiken.
U kunt al uw chips met elkaar verbinden en vervolgens in uw USB-poort steken
Stap 5: Programma
Download of kopieer en plak de onderstaande code in uw Arduino IDE. Als u geen wijzigingen aanbrengt in de code, voert u gewoon uw WiFi-gegevens in de respectievelijke velden in, zoals hieronder weergegeven. Voer ook een betrouwbare NTP-tijdserver in. Ik heb voor dit project een Google-tijdserver gebruikt.
WiFi-details en NTP-tijdserver
Nu compileren en uploaden. Zorg ervoor dat je de juiste COM-poort en -kaart hebt geselecteerd onder het menu Tools in de Arduino IDE. Na het uploaden moeten de tijd, datum en temperatuur worden weergegeven zoals hieronder.
Na het uploaden zou je het volgende moeten zien:
Stap 6: Maak het draagbaar
U kunt nu het apparaat uit uw USB-poort verwijderen en elke xChip scheiden door deze eenvoudig uit elkaar te trekken. Aangezien de programmering is voltooid, is IP01 niet langer vereist. U kunt uw project nu op elke gewenste manier verbinden, zolang de identificatienamen allemaal in dezelfde richting zijn georiënteerd. Om onze unit van stroom te voorzien, gebruiken we de PU01. Hierdoor kunnen we hem van stroom voorzien via een normale powerbank of een willekeurige 5V USB-voeding. Ik heb de mijne aangesloten zoals hieronder weergegeven.
Eindmontage. xChips kan op elke gewenste manier worden aangesloten.
Stap 7: Conclusie
Dit project duurt 20 minuten om te voltooien. Als u de tijd op uw locatie wilt, kunt u overwegen de voorbeeldcode in de Tijdzone-bibliotheek te bekijken of wat rekenwerk te doen met de UTC-tijd. Er werden geen draden gebruikt en solderen was niet nodig.
Stap 8: Coderen
Date_Time_Temp.ino Arduino Voer eenvoudig uw WiFi-gegevens in hun respectievelijke velden in en upload ze naar uw bord.
#include // include kernbibliotheek voor XinaBox xCHIPS
#include // include OLED-display library #include // include the temperature sensor library #include // include ESP8266WiFi-functionaliteit #include // include time libraries #include #include #include #include #include xSW01 SW01; // definieer NTP-eigenschappen #define ntpOffset 60 * 60 // in seconden #define ntpInterval 60 * 1000 // in milliseconden // voeg een betrouwbare ntp-tijdserver in tussen de dubbele aanhalingstekens // hier heb ik een google ntp-tijdserver gebruikt # definieer ntpAddress "time1.google.com" // stel de NTP UDP-client WiFiUDP ntpUDP in; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // temperatuurvariabele float tempC; // Celsius float tempF; // fahrenheit // uw wifi-gegevens const char* wifi_ssid = "XinaBox"; // uw wifi ssid const char* wifi_pass = "RapidIoT"; // uw wifi-wachtwoord // datum en tijd variabele String datum; String kloktijd; // variabelen die dagen en maanden bevatten const char * days = {"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"}; const char * months = {"Jan", "Feb", "Mar", "Apr", "Mei", "Juni", "Juli", "Aug", "Sep", "Oct", "Nov ", "december"}; const char * ampm = {"AM", "PM"}; void setup () { tempC = tempF = 0; // initialiseer de temperatuur naar nul timeClient.begin(); // start de NTP UDP-client // start seriële communicatie Serial.begin (115200); // start i2c-communicatie en stel pinnen in Wire.begin (2, 14); // start temperatuursensor SW01.begin(); // start OLED-weergave OLED.begin (); // clear OLED-display OD01.clear (); // maak wifi-verbinding wifi_connect(); vertraging (1000); } void loop () { // uitvoeren als wifi-verbinding tot stand is gebracht if (WiFi.status () == WL_CONNECTED) { SW01.poll (); // lees temperatuur tempC = SW01.getTempC(); // bewaar temp in celcius tempF = SW01.getTempF(); // bewaar temp in fahrenheit date = ""; // wis datumvariabele clktime = ""; // wis de tijdvariabele // werk de ntp-client bij en verkrijg de unix utc-tijdstempel timeClient.update(); unsigned long epochTime = timeClient.getEpochTime(); // converteer ontvangen tijdstempel naar time_t object time_t utc; utc = epochTime; // utc time TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Tijdzone UTC(utcRule, utcRule); // formatteer tijdvariabelen datum += dagen [weekdag (utc) - 1]; datum += ", "; datum += maanden[maand(utc) - 1]; datum += " "; datum += dag(utc); datum += ", "; datum += jaar (utc); // formatteer de tijd naar 12-uurs formaat met AM/PM en geen seconden clktime += hourFormat12(utc); clktime += ":"; als (minuut(utc)