Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Pantalla OLED fresca que muestra la fecha, la hora y la temperatura en grados Celsius y Fahrenheit usando Xinabox xChips basado en ESP8266.
Paso 1: Cosas utilizadas en este proyecto
Componentes de hardware
- Programador USB XinaBox IP01 x 1 xChip basado en FT232R de FTDI Limited
- XinaBox CW01 x 1 xChip Wi-Fi Core basado en el módulo Wi-Fi ESP8266
- XinaBox SW01 x 1 xChip Sensor de temperatura, humedad y presión atmosférica basado en el BME280 de Bosch.
- XinaBox OD01 x 1 xChip Pantalla OLED de 128x64 píxeles
- XinaBox PU01 x 1 xChip USB (Tipo A) Fuente de alimentación
- Conectores de bus XinaBox XC10 x 1 xChip
- Fuente de alimentación USB de 5 V x 1
Aplicaciones de software y servicios en línea
IDE de Arduino
Paso 2: historia
Introducción
Construí este proyecto para mostrar la fecha, la hora UCT y la temperatura usando XinaBox xChips que usa el protocolo de bus I2C. La hora se recuperó de un servidor NTP de Google. La temperatura ambiente se midió con el SW01 xChip y se mostró en la pantalla OLED OD01 xChip en grados Celsius y Fahrenheit. La siguiente imagen muestra la pantalla OLED.
OLED que muestra la fecha, la hora y la temperatura
Paso 3: descargue los archivos necesarios
Necesitará las siguientes bibliotecas y software para este proyecto.
- Arduino IDE - Software de desarrollo en el que codificará
- xSW01 - Biblioteca de sensores de temperatura
- xCore - Biblioteca principal para XinaBox xChips
- xOD01: biblioteca de pantallas OLED.
- Zona horaria: biblioteca para elegir su zona horaria
- Hora: para utilizar las funciones de hora
- NTPClient: le permite obtener tiempo de un servidor
- También deberá descargar la placa ESP8266 y seguir las instrucciones que la acompañan para instalar la placa.
Una vez descargado, instalará el IDE y las bibliotecas. Es bastante sencillo si sigue las instrucciones.
Paso 4: ensamblar
Su xChip principal que ejecutará y procesará el programa es el CW01. Se basa en el módulo WiFi ESP8266 y utiliza el protocolo de bus I2C. Para programar en el CW01, necesitará un xChip de programación. El IP01 nos permite programar el CW01 a través del puerto USB de nuestra computadora simplemente haciendo clic juntos en los dos xChips usando conectores de bus XC10 e insertándolo en el puerto USB. No requiere cableado ni soldadura. Una cosa a tener en cuenta es la orientación de los nombres de identificación de xChip. Todos deben estar orientados en la misma dirección. Ahora debería tener la siguiente configuración.
Haga clic juntos en CW01 e IP01 e insértelo en el puerto USB de su computadora
Si está familiarizado con las xChips, puede conectar todas las xChip mediante los conectores de bus XC10 que desee utilizar para su proyecto y luego insertarlo en el puerto USB. Usaremos el sensor de temperatura SW01 y la pantalla OLED OD01.
Puede conectar todos sus chips juntos y luego insertarlos en su puerto USB
Paso 5: Programa
Descargue o copie y pegue el código a continuación en su IDE de Arduino. Si no está realizando ningún cambio en el código, simplemente ingrese los detalles de su WiFi en sus respectivos campos como se muestra a continuación. También ingrese un servidor de hora NTP confiable. He utilizado un servidor de hora de Google para este proyecto.
Detalles de WiFi y servidor de tiempo NTP
Ahora compile y cargue. Asegúrese de haber seleccionado el puerto COM y la placa correctos en el menú de herramientas en el IDE de Arduino. Una vez cargado, la hora, la fecha y la temperatura deben mostrarse como se muestra a continuación.
Después de cargar, debería ver lo siguiente
Paso 6: hazlo portátil
Ahora puede quitar la unidad de su puerto USB y separar cada xChip simplemente separándolo. Dado que la programación está completa, ya no se requiere IP01. Ahora puede conectar su proyecto de la manera que desee siempre que los nombres de identificación estén todos orientados en la misma dirección. Para alimentar nuestra unidad usaremos el PU01. Esto nos permite alimentarlo desde un banco de energía normal o cualquier fuente de alimentación USB de 5V. He conectado el mío como se muestra a continuación.
Montaje final. Los xChips se pueden conectar de la forma que desee.
Paso 7: Conclusión
Este proyecto tardará 20 minutos en completarse. Si desea la hora en su ubicación, considere mirar el código de ejemplo en la biblioteca Timezone o haga algunos cálculos aritméticos con la hora UTC. No se utilizaron cables y no se requirió soldadura.
Paso 8: Código
Date_Time_Temp.ino Arduino Simplemente ingrese los detalles de su WiFi en sus respectivos campos y cárguelo en su tablero.
#include // incluye la biblioteca principal para XinaBox xCHIPS
#include // incluye la biblioteca de pantallas OLED #include // incluye la biblioteca del sensor de temperatura #include // incluye la funcionalidad ESP8266WiFi #include // incluye las bibliotecas de tiempo #include #include #include #include #include xSW01 SW01; // definir propiedades NTP #define ntpOffset 60 * 60 // en segundos #define ntpInterval 60 * 1000 // en milisegundos // inserte un servidor de tiempo ntp confiable entre las comillas dobles // aquí he usado un servidor de tiempo ntp de google # define ntpAddress "time1.google.com" // configura el cliente NTP UDP WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // temperatura variable float tempC; // Celsius float tempF; // fahrenheit // detalles de su wifi const char * wifi_ssid = "XinaBox"; // su wifi ssid const char * wifi_pass = "RapidIoT"; // su contraseña de wifi // variable de fecha y hora String date; String clktime; // variables que contienen días y meses const char * days = {"domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"}; const char * months = {"Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov ", "Dic"}; const char * ampm = {"AM", "PM"}; configuración vacía () {tempC = tempF = 0; // inicializar la temperatura a cero timeClient.begin (); // iniciar el cliente NTP UDP // iniciar la comunicación en serie Serial.begin (115200); // inicia la comunicación i2c y establece los pines Wire.begin (2, 14); // iniciar el sensor de temperatura SW01.begin (); // iniciar la pantalla OLED OLED.begin (); // borrar la pantalla OLED OD01.clear (); // establecer conexión wifi wifi_connect (); retraso (1000); } void loop () {// ejecutar si se establece la conexión wifi if (WiFi.status () == WL_CONNECTED) {SW01.poll (); // leer temperatura tempC = SW01.getTempC (); // almacena la temperatura en celcius tempF = SW01.getTempF (); // almacena la temperatura en fahrenheit date = ""; // borrar la variable de fecha clktime = ""; // borrar la variable de tiempo // actualizar el cliente ntp y obtener la marca de tiempo de utc unix timeClient.update (); largo sin firmar epochTime = timeClient.getEpochTime (); // convierte la marca de tiempo recibida en objeto time_t time_t utc; utc = epochTime; // hora utc TimeChangeRule utcRule = {"UTC", Último, Dom, Mar, 1, 0}; Zona horaria UTC (utcRule, utcRule); // formatear variables de tiempo fecha + = días [día de la semana (utc) - 1]; fecha + = ","; fecha + = meses [mes (utc) - 1]; fecha + = ""; fecha + = día (utc); fecha + = ","; fecha + = año (utc); // formatea la hora en formato de 12 horas con AM / PM y sin segundos clktime + = hourFormat12 (utc); clktime + = ":"; si (minuto (utc)