Spisu treści:

Wyświetlanie daty, godziny i temperatury za pomocą XinaBox: 8 kroków
Wyświetlanie daty, godziny i temperatury za pomocą XinaBox: 8 kroków

Wideo: Wyświetlanie daty, godziny i temperatury za pomocą XinaBox: 8 kroków

Wideo: Wyświetlanie daty, godziny i temperatury za pomocą XinaBox: 8 kroków
Wideo: Ustawienie godziny i daty w samochodzie marki PEUGEOT #2 2024, Grudzień
Anonim
Wyświetlanie daty, godziny i temperatury za pomocą XinaBox
Wyświetlanie daty, godziny i temperatury za pomocą XinaBox

Fajny wyświetlacz OLED pokazujący datę, godzinę i temperaturę w stopniach Celsjusza i Fahrenheita za pomocą Xinabox xChips opartego na ESP8266.

Krok 1: Rzeczy użyte w tym projekcie

Komponenty sprzętowe

  • XinaBox IP01 x 1 xChip Programator USB oparty na FT232R firmy FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi Core oparty na module Wi-Fi ESP8266
  • XinaBox SW01 x 1 xChip Czujnik temperatury, wilgotności i ciśnienia atmosferycznego na bazie BME280 firmy Bosch.
  • Wyświetlacz OLED XinaBox OD01 x 1 xChip 128x64 pikseli
  • Zasilacz XinaBox PU01 x 1 xChip USB (Typ A)
  • Złącza magistrali XinaBox XC10 x 1 xChip
  • Zasilanie USB 5 V x 1

Aplikacje i usługi online

IDE Arduino

Krok 2: Historia

Wstęp

Zbudowałem ten projekt do wyświetlania daty, czasu UCT i temperatury za pomocą XinaBox xChips, który wykorzystuje protokół magistrali I2C. Czas został pobrany z serwera Google NTP. Temperaturę otoczenia mierzono za pomocą SW01 xChip i wyświetlano na wyświetlaczu OLED OD01 xChip w stopniach Celsjusza i Fahrenheita. Poniższy obrazek przedstawia wyświetlacz OLED.

Obraz
Obraz

OLED wyświetlający datę, godzinę i temperaturę

Krok 3: Pobierz niezbędne pliki

Do tego projektu potrzebne będą następujące biblioteki i oprogramowanie.

  • Arduino IDE - oprogramowanie programistyczne, w którym będziesz kodować
  • xSW01 - Biblioteka czujników temperatury
  • xCore - Podstawowa biblioteka dla XinaBox xChips
  • xOD01 - biblioteka wyświetlaczy OLED.
  • Strefa czasowa - Biblioteka do wyboru strefy czasowej
  • Czas - aby korzystać z funkcji czasu
  • NTPClient - Pozwala uzyskać czas z serwera
  • Będziesz także musiał pobrać płytę ESP8266 i postępować zgodnie z dołączonymi do niej instrukcjami, aby zainstalować płytę

Po pobraniu zainstalujesz IDE i biblioteki. Jest to dość proste, jeśli postępujesz zgodnie z instrukcjami.

Krok 4: Montaż

Twoim głównym procesorem xChip, który będzie wykonywał i przetwarzał program, jest CW01. Opiera się na module WiFi ESP8266 i wykorzystuje protokół magistrali I2C. Aby zaprogramować CW01, będziesz potrzebował programującego xChip. IP01 pozwala nam zaprogramować CW01 przez port USB w naszym komputerze, po prostu łącząc dwa xChips za pomocą złączy magistrali XC10 i wkładając go do portu USB. Bez okablowania i bez lutowania. Należy zwrócić uwagę na orientację nazw identyfikacyjnych xChip. Wszyscy powinni być zorientowani w tym samym kierunku. Powinieneś teraz mieć następującą konfigurację.

Obraz
Obraz

Kliknij razem CW01 i IP01 i włóż je do portu USB w komputerze

Jeśli znasz xChips, możesz połączyć każdy xChip razem za pomocą złączy magistrali XC10, których chcesz użyć w swoim projekcie, a następnie włożyć go do portu USB. Będziemy używać czujnika temperatury SW01 oraz wyświetlacza OLED OD01.

Obraz
Obraz

Możesz połączyć wszystkie układy razem, a następnie włożyć je do portu USB

Krok 5: Program

Pobierz lub skopiuj i wklej poniższy kod do swojego Arduino IDE. Jeśli nie wprowadzasz żadnych zmian w kodzie, po prostu wprowadź dane Wi-Fi w odpowiednich polach, jak pokazano poniżej. Wprowadź również niezawodny serwer czasu NTP. Do tego projektu używałem serwera czasu Google.

Obraz
Obraz

Szczegóły Wi-Fi i serwer czasu NTP

Teraz skompiluj i prześlij. Upewnij się, że wybrałeś właściwy port COM i płytkę w menu narzędzi w Arduino IDE. Po załadowaniu czas, data i temperatura powinny być wyświetlane jak poniżej.

Obraz
Obraz

Po przesłaniu powinieneś zobaczyć następujące

Krok 6: Spraw, aby był przenośny

Możesz teraz wyjąć urządzenie z portu USB i oddzielić każdy xChip, po prostu go rozsuwając. Ponieważ programowanie jest zakończone, IP01 nie jest już wymagane. Możesz teraz połączyć swój projekt w dowolny sposób, o ile wszystkie nazwy identyfikacyjne są zorientowane w tym samym kierunku. Do zasilania naszej jednostki użyjemy PU01. Dzięki temu możemy go zasilać ze zwykłego powerbanku lub dowolnego zasilacza USB 5V. Mój połączyłem jak pokazano poniżej.

Obraz
Obraz

Montaż końcowy. xChips można podłączyć w dowolny sposób.

Krok 7: Wniosek

Ten projekt zajmie 20 minut. Jeśli chcesz mieć czas w swojej lokalizacji, rozważ przyjrzenie się przykładowemu kodowi w bibliotece stref czasowych lub wykonaj arytmetykę z czasem UTC. Nie użyto przewodów i nie było wymagane lutowanie.

Krok 8: Kod

Date_Time_Temp.ino Arduino Wystarczy wpisać dane Wi-Fi w odpowiednich polach i przesłać na swoją tablicę.

#include // dołącz podstawową bibliotekę dla XinaBox xCHIPS

#include // include bibliotekę wyświetlaczy OLED #include // zawiera bibliotekę czujników temperatury #include // include funkcjonalność ESP8266WiFi #include // zawiera biblioteki czasu #include #include #include #include #include xSW01 SW01; // zdefiniuj właściwości NTP #define ntpOffset 60 * 60 // w sekundach #define ntpInterval 60 * 1000 // w milisekundach // wstaw niezawodny serwer czasu ntp między podwójnymi cudzysłowami // tutaj użyłem serwera czasu ntp Google # zdefiniuj adres ntp "time1.google.com" // skonfiguruj klienta NTP UDP WiFiUDP ntpUDP; Klient czasu NTPClient (ntpUDP, adres ntp, przesunięcie ntp, interwał ntp); // zmienna temperatura float tempC; // stopnie Celsjusza tempF; // fahrenheit // szczegóły twojej sieci Wi-Fi const char* wifi_ssid = "XinaBox"; // twój ssid wifi const char* wifi_pass = "RapidIoT"; // twoje hasło do Wi-Fi // zmienna daty i godziny String date; Czas zegara; // zmienne zawierające dni i miesiące const char * days = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"}; const char * months = {"sty", "lut", "mar", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad" ", "Gru"}; const char * ampm = {"AM", "PM"}; pusta konfiguracja () { tempC = tempF = 0; // inicjalizacja temperatury na zero timeClient.begin(); // uruchom klienta NTP UDP // uruchom komunikację szeregową Serial.begin(115200); // uruchom komunikację i2c i ustaw piny Wire.begin(2, 14); // uruchom czujnik temperatury SW01.begin(); // uruchom wyświetlacz OLED OLED.begin(); // wyczyść wyświetlacz OLED OD01.clear(); // nawiąż połączenie Wi-Fi wifi_connect(); opóźnienie (1000); } void loop() { // uruchom jeśli połączenie Wi-Fi jest nawiązane if (WiFi.status() == WL_CONNECTED) { SW01.poll(); // odczyt temperatury tempC = SW01.getTempC(); // zapisz temp w celsjuszu tempF = SW01.getTempF(); // przechowuj temperaturę w skali Fahrenheita date = ""; // wyczyść zmienną daty clktime = ""; // wyczyść zmienną czasu // zaktualizuj klienta ntp i pobierz znacznik czasu unix utc timeClient.update(); unsigned long epochTime = timeClient.getEpochTime(); // konwertuj odebrany znacznik czasu na obiekt time_t time_t utc; utc = czasepoki; // czas utc TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Strefa czasowa UTC (utcRule, utcRule); // formatowanie zmiennych czasu data += dni[dzień tygodnia(utc) - 1]; data += ", "; data += miesiące[miesiąc(utc) - 1]; data += " "; data += dzień(utc); data += ", "; data += rok(utc); // sformatuj czas do formatu 12-godzinnego z AM/PM i bez sekund clktime += hourFormat12(utc); clktime += ":"; jeśli (minuta (UTC)

Zalecana: