Índice:

Exibição de data, hora e temperatura usando o XinaBox: 8 etapas
Exibição de data, hora e temperatura usando o XinaBox: 8 etapas

Vídeo: Exibição de data, hora e temperatura usando o XinaBox: 8 etapas

Vídeo: Exibição de data, hora e temperatura usando o XinaBox: 8 etapas
Vídeo: Painel Led para exibição de Vídeos, Textos, Data, Hora e Temperatura 2024, Novembro
Anonim
Exibição de data, hora e temperatura usando o XinaBox
Exibição de data, hora e temperatura usando o XinaBox

Tela OLED legal mostrando a data, hora e temperatura em Celsius e Fahrenheit usando Xinabox xChips baseado em ESP8266.

Etapa 1: Coisas usadas neste projeto

Componentes de hardware

  • Programador XinaBox IP01 x 1 xChip USB baseado em FT232R da FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi Core baseado em ESP8266 Módulo Wi-Fi
  • XinaBox SW01 x 1 xChip Sensor de temperatura, umidade e pressão atmosférica baseado no BME280 da Bosch.
  • Display OLED XinaBox OD01 x 1 xChip 128x64 Pixel
  • Fonte de alimentação XinaBox PU01 x 1 xChip USB (Tipo A)
  • Conectores de barramento XinaBox XC10 x 1 xChip
  • Fonte de alimentação USB 5V x 1

Aplicativos de software e serviços online

IDE Arduino

Etapa 2: História

Introdução

Construí este projeto para exibir a data, hora UCT e temperatura usando XinaBox xChips que usa o protocolo de barramento I2C. A hora foi recuperada de um servidor NTP do Google. A temperatura ambiente foi medida usando o SW01 xChip e foi exibida no display OLED OD01 xChip em Celsius e Fahrenheit. A imagem abaixo mostra o display OLED.

Imagem
Imagem

OLED exibindo data, hora e temperatura

Etapa 3: Baixe os arquivos necessários

Você precisará das seguintes bibliotecas e software para este projeto.

  • Arduino IDE - Software de desenvolvimento no qual você irá codificar
  • xSW01 - Biblioteca de sensores de temperatura
  • xCore - Biblioteca principal para XinaBox xChips
  • xOD01 - Biblioteca de exibição OLED.
  • Fuso horário - Biblioteca para escolher seu fuso horário
  • Tempo - Para usar funções de tempo
  • NTPClient - permite que você obtenha o tempo de um servidor
  • Você também precisará baixar a placa ESP8266 e seguir as instruções que a acompanham para que a placa seja instalada

Depois de fazer o download, você instalará o IDE e as bibliotecas. É bastante simples se você seguir as instruções.

Etapa 4: montar

Seu xChip principal que executará e processará o programa é o CW01. É baseado no módulo WiFi ESP8266 e usa o protocolo de barramento I2C. Para programar no CW01, você precisará de um xChip de programação. O IP01 nos permite programar o CW01 através da porta USB do nosso computador, simplesmente clicando nos dois xChips usando os conectores de barramento XC10 e inserindo-o na porta USB. Sem fiação e sem solda necessária. Uma coisa a ser observada é a orientação dos nomes de identificação do xChip. Eles devem ser todos orientados na mesma direção. Agora você deve ter a seguinte configuração.

Imagem
Imagem

Clique CW01 e IP01 juntos e insira-o na porta USB do seu computador

Se você estiver familiarizado com o xChips, poderá conectar todos os xChip usando os conectores de barramento XC10 que deseja usar para o seu projeto e, em seguida, inseri-los na porta USB. Usaremos o sensor de temperatura SW01 e o display OD01 OLED.

Imagem
Imagem

Você pode conectar todos os seus chips juntos e, em seguida, inseri-lo em sua porta USB

Etapa 5: Programa

Baixe ou copie e cole o código abaixo em seu IDE Arduino. Se você não estiver fazendo nenhuma alteração no código, basta inserir os detalhes do seu WiFi em seus respectivos campos, conforme mostrado abaixo. Insira também um servidor de horário NTP confiável. Usei um servidor de horário do Google para este projeto.

Imagem
Imagem

Detalhes de WiFi e servidor de horário NTP

Agora compile e faça upload. Certifique-se de ter selecionado a porta COM e a placa corretas no menu de ferramentas no IDE do Arduino. Depois de carregado, a hora, data e temperatura devem ser exibidos como abaixo.

Imagem
Imagem

Depois de fazer o upload, você deve ver o seguinte

Etapa 6: torne-o portátil

Agora você pode remover a unidade de sua porta USB e separar cada xChip simplesmente separando-os. Uma vez que a programação está completa, o IP01 não é mais necessário. Agora você pode conectar seu projeto da maneira que desejar, desde que os nomes de identificação estejam todos orientados na mesma direção. Para alimentar nossa unidade, usaremos o PU01. Isso nos permite alimentá-lo a partir de um banco de energia normal ou qualquer fonte de alimentação USB 5V. Eu conectei o meu como mostrado abaixo.

Imagem
Imagem

Assembléia final. Os xChips podem ser conectados da maneira que você desejar.

Etapa 7: Conclusão

Este projeto levará 20 minutos para ser concluído. Se você quiser a hora em sua localização, considere examinar o código de exemplo na biblioteca de fuso horário ou faça algumas operações aritméticas com a hora UTC. Nenhum fio foi usado e nenhuma solda foi necessária.

Etapa 8: Código

Date_Time_Temp.ino Arduino Simplesmente insira seus dados WiFi em seus respectivos campos e carregue para sua placa.

#include // inclui biblioteca central para XinaBox xCHIPS

#include // inclui a biblioteca de exibição OLED #include // inclui a biblioteca do sensor de temperatura #include // inclui a funcionalidade ESP8266WiFi #include // inclui as bibliotecas de tempo #include #include #include #include #include xSW01 SW01; // define as propriedades NTP #define ntpOffset 60 * 60 // em segundos #define ntpInterval 60 * 1000 // em milissegundos // insira um servidor de tempo ntp confiável entre as aspas // aqui, usei um servidor de tempo ntp do google # definir ntpAddress "time1.google.com" // configurar o cliente NTP UDP WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // variável de temperatura float tempC; // celsius float tempF; // fahrenheit // seus detalhes de wifi const char * wifi_ssid = "XinaBox"; // seu wi-fi ssid const char * wifi_pass = "RapidIoT"; // sua senha wifi // variável de data e hora String date; String clktime; // variáveis contendo dias e meses const char * days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; const char * months = {"Jan", "Feb", "Mar", "Abr", "May", "June", "July", "Ago", "Set", "Out", "Nov "," Dez "}; const char * ampm = {"AM", "PM"}; configuração vazia () {tempC = tempF = 0; // inicializa a temperatura para zero timeClient.begin (); // inicia o cliente NTP UDP // inicia a comunicação serial Serial.begin (115200); // inicia a comunicação i2c e define os pinos Wire.begin (2, 14); // inicia o sensor de temperatura SW01.begin (); // inicia o display OLED OLED.begin (); // limpa o display OLED OD01.clear (); // estabelece conexão wi-fi wifi_connect (); atraso (1000); } void loop () {// executa se a conexão wi-fi for estabelecida if (WiFi.status () == WL_CONNECTED) {SW01.poll (); // lê a temperatura tempC = SW01.getTempC (); // armazena a temperatura em celcius tempF = SW01.getTempF (); // armazena temp em fahrenheit date = ""; // limpar a variável de data clktime = ""; // limpar a variável de tempo // atualizar o cliente ntp e obter o timestamp utc unix timeClient.update (); epochTime longo sem sinal = timeClient.getEpochTime (); // converte o carimbo de data / hora recebido para o objeto time_t time_t utc; utc = epochTime; // hora utc TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Fuso horário UTC (utcRule, utcRule); // formatar variáveis de tempo data + = dias [dia da semana (utc) - 1]; data + = ","; data + = meses [mês (utc) - 1]; data + = ""; data + = dia (utc); data + = ","; data + = ano (utc); // formatar a hora para o formato de 12 horas com AM / PM e sem segundos clktime + = hourFormat12 (utc); clktime + = ":"; if (minuto (utc)

Recomendado: