Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

eDOT - Relógio de precisão baseado em Arduino e estação meteorológica

Componentes e suprimentos

Tecnologia Microchip ATMEGA 328P-PU
× 1
MAXIM MAX7219
× 6
BOSCH BME280 - placa de breakout GY-BMEP
× 1
Tela LED de matriz de pontos Adafruit Luckylight 8x8 - M1603095
× 6
DS3231
RELÓGIO RTC
× 1
Arduino Nano R3
× 1
Arduino UNO
× 1
eDOTcore
× 1

Ferramentas e máquinas necessárias

Flashforge Dreamer

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





eDOT


é um relógio de precisão baseado em Arduino e estação meteorológica com receptor remoto IR integrado e ajuste automático de brilho.

O dispositivo foi projetado para ser facilmente expandido com hardware adicional, como módulo WIFI ou outro.

Graças ao seu display LED de matriz de seis pontos 8x8 pode ser usado para mostrar muitos tipos de informações provenientes do sensor interno, mensagens de rolagem personalizadas ou sem fio da internet (RSS, etc)

Possui baixíssimo consumo de energia, um design simples e elegante que combina frente em vidro e peças impressas em 3D para o corpo.

O projeto está em desenvolvimento e serei atualizado.

Baixe peças 3D no Thingiverse









E veja também meu canal no Youtube para mais projetos:

https://www.youtube.com/channel/UCbIomyFKzBiLHqEb2xv9GHQ





B.O.M.

  • N.1 x meio corpo esquerdo impresso em 3D
  • Meio corpo direito N.1 x 3D impresso
  • N.1 x capa esquerda impressa em 3D
  • N.1 x capa direita impressa em 3D
  • Pé impresso N.2 x 3D
  • Suporte para exibição impressa em 3D N.12 x
  • N.1 x vidro polido 240x75x5 (mm)
  • N.1 x filtro laranja
  • Display de matriz de pontos N.6 x Adafruit 8x8 Luckylight M1603095 (branco)
  • placa controladora N.6 x MAX7219
  • placa de breakout N.1 x USB
  • Prancha de breakout N.1 x BME280
  • chip N.1 x DS3231
  • N.1 x receptor IR tipo IRM-56384
  • fotoresistor N.1 x tipo LDR-07
  • N.1 x ATMEGA328PU (placa personalizada Arduino)
  • Botão tátil N.6 x OMRON 12 mm





eDOTcore PCB


Finalmente, tenho os primeiros protótipos da placa de controle para eDOT.

ACESSE a página do projeto eDOTcore


Código

  • eDOT:estação meteorológica e relógio de precisão versátil
eDOT:Estação meteorológica de precisão versátil e relógio Arduino
 // eDOT:Estação meteorológica e relógio de precisão versátil // HISTÓRICO // 12/11/2105 Coeficientes de calibração de medição adicionados // 06/09/2016 Brilho automático da tela adicionado // 06/09/2016 Agendador de tarefas adicionado // 07/08/2016 Adicionado tela inicial do eDOT # include  #include  #include  #include  #include  #include  #include  #include "RTClib.h" #include  Adafruit_BME280 bme; // I2CRTC_DS3231 rtc; int pinCS =10; // Anexe CS a este pino, DIN a MOSI e CLK a SCK (cf http://arduino.cc/en/Reference/SPI) int numberOfHorizontalDisplays =7; int numberOfVerticalDisplays =1; Max72xxPanel matrix =Max72xxPanel (pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); # define TEMPERATURA 0 # define UMIDADE 1 # define PRESSÃO 2 # define HORA 3 # define DIA 4 # define DATA 5float temp; float tempavg; char tempf [8]; float hum; float humavg; char humf [8]; float press; float pressavg; char pressf [8]; int tela =0; // tela inicial longa anteriorLEDMillis =0; // para display LED updatelong LEDInterval =5000; // atraso entre as telas int screenMax =5; // número máximo de screenbool screenChanged =true; // tela statusfloat lightsens; float screenBrt =0; float lightsensavg; Average  avetemp (60); // Média para temperatura (80 amostras) Média  avehum (60); // Média para umidade (80 amostras) Média  avepress (60); // Média para pressão (80 amostras) Média  avelightsens (40); // Média para a pressão (80 amostras) // Coeficientes de calibraçãofloat temp_o =-1,70; float temp_s =1,0; float temp_lin; float hum_o =2,45; float hum_s =1,0; float hum_lin; float press_o =0,0; float press_s =1,0; float press_lin; // Correção do sensor de brilhofloat brt_o =-4; float brt_s =1.35; Tarefa agendada1; Tarefa agendada2; void setup () {Task1.start (); Task2.start (); Wire.begin (); // Iniciar I2C bme.begin (0x76); matrix.setIntensity (screenBrt); // Use um valor entre 0 e 15 para o brilho // Ajuste às suas próprias necessidades // matrix.setPosition (0, 0, 0); // A primeira exibição está em <0, 0> // matrix.setPosition (1, 1, 0); // O segundo display está em <1, 0> matrix.setRotation (0, 1); // Ajusta a orientação do display matrix.setRotation (1, 1); // Ajusta a orientação do display matrix.setRotation (2, 1); // Ajusta a orientação do display matrix.setRotation (3, 1); // Ajusta a orientação do display matrix.setRotation (4, 1); // Ajusta a orientação do display matrix.setRotation (5, 1); // Ajusta a orientação do display matrix.setRotation (6, 1); // Ajusta a orientação do display matrix.setRotation (7, 1); // Ajustar a orientação do display / * matrix.setRotation (8, 1); // Ajusta a orientação do display matrix.setRotation (9, 1); // Ajustar orientação de exibição * / rtc.begin (); // matrix.setRotation (3, 2); // A mesma retenção para a última exibição // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME __))); // rtc.adjust (DateTime (2016, 02, 28, 16, 44, 0)); //Serial.begin(9600);//eDOT SPLASHSCREEN matrix.fillScreen (0); matrix.write (); matrix.setCursor (12,0); matrix.print ("eDOT"); para (screenBrt =0; screenBrt <=15; screenBrt ++) {atraso (25); matrix.setIntensity (screenBrt); // Use um valor entre 0 e 15 para o brilho matrix.write (); } atraso (250); para (screenBrt =15; screenBrt> =0; screenBrt -) {atraso (50); matrix.setIntensity (screenBrt); // Use um valor entre 0 e 15 para o brilho matrix.write (); } atraso (500); matrix.fillScreen (0); matrix.write (); delay (1000);} void loop () {Task1.check (acq1.500); Task2.check (acq2,20);} void acq1 () {// AQUISIÇÃO E MÉDIA DE DADOS temp =bme.readTemperature (); avetemp.push (temp); tempavg =avetemp.mean (); hum =bme.readHumidity (); avehum.push (hum); humavg =avehum.mean (); press =bme.readPressure (); avepress.push (pressione); pressavg =avepress.mean (); DateTime now =rtc.now (); outSec =now.second (); outMin =agora.minuto (); outHour =now.hour (); outday =now.dia (); outmonth =now.month (); outyear =now.year () - 2000; dow =now.dayOfTheWeek (); } void acq2 () {lightsens =analogRead (A3); avelightsens.push (lightsens); lightsensavg =avelightsens.mean (); screenBrt =constrain (((lightsensavg / 1023 * 15) * brt_s + brt_o), 0, 15); matrix.setIntensity (screenBrt); // LINEARISAÇÃO DE DADOS temp_lin =tempavg * temp_s + temp_o; hum_lin =humavg * hum_s + hum_o; press_lin =pressavg * press_s + press_o; currentLEDMillis longo sem sinal =millis (); //Serial.println(screenBrt); if (currentLEDMillis - previousLEDMillis> LEDInterval) // salvar a última vez que você alterou o display {previousLEDMillis =currentLEDMillis; screen ++; if (screen> screenMax) screen =0; // redefinir para a tela inicial assim que o ciclo for concluído screenChanged =true; } // if (screenChanged) // atualizar a medição na alteração da tela // {// screenChanged =false; // zera para a próxima iteraçãowitch (tela) {case TEMPERATURE:dtostrf (temp_lin, 4, 2, tempf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (6,0); matrix.setTextSize (1); matrix.setTextColor (255); matrix.print (tempf); // imprime a temperatura atual matrix.drawRect (37,0,2,2,255); // desenha o símbolo da nota matrix.setCursor (40,0); matrix.print ("C"); matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // limpar displaybreak; case HUMIDADE:dtostrf (hum_lin, 4, 2, humf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (6,0); matrix.setTextSize (1); matrix.setTextColor (255); matrix.print (humf); // imprime a temperatura atual matrix.setCursor (37,0); matrix.print ("%"); matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // limpar displaybreak; case PRESSURE:dtostrf (press_lin, 6, 0, pressf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (0,0); matrix.setTextSize (1); matrix.setTextColor (255); matrix.print (pressf); // imprime a temperatura atual matrix.setCursor (37,0); matrix.print ("Pa"); matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // limpar displaybreak; case TIME:// dtostrf (press_lin, 6, 0, pressf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (0,0); matrix.setTextSize (1); matrix.setTextColor (255); if (outHour <10) {matrix.print ("0"); } matrix.print (outHour, 0); // imprime o horário atual matrix.print (":"); if (outMin <10) {matrix.print ("0"); } matrix.print (outMin, 0); // imprime os minutos atuais matrix.print (":"); if (outSec <10) {matrix.print ("0"); } matrix.print (outSec, 0); // imprime os segundos atuais matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // limpar displaybreak; case DATE:// dtostrf (press_lin, 6, 0, pressf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (0,0); matrix.setTextSize (1); matrix.setTextColor (255); if (outday <10) {matrix.print ("0"); } matrix.print (outday, 0); // imprime as horas atuais matrix.print ("/"); if (outmonth <10) {matrix.print ("0"); } matrix.print (outmonth, 0); // imprime os minutos atuais matrix.print ("/"); matrix.print (outyear, 0); // imprime os segundos atuais matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // limpar displaybreak; case DAY:// dtostrf (press_lin, 6, 0, pressf); // formatar para cinco dígitos com duas casas decimais matrix.setCursor (15,0); matrix.setTextSize (1); matrix.setTextColor (255); matrix.print (daysOfTheWeek [dow]); matrix.write (); // escreve os dados atuais para exibir matrix.fillScreen (0); // clear displaybreak; }} 

Processo de manufatura

  1. Estação meteorológica baseada no Raspberry Pi
  2. Estação meteorológica Raspberry Pi 2
  3. Estação meteorológica V 2.0
  4. Relógio de visão pov do Arduino
  5. Relógio mestre
  6. Arduino Temp. Monitor e relógio em tempo real com tela 3.2
  7. $ 10 Estação meteorológica portátil Arduino (AWS)
  8. Arduino e autômatos celulares baseados em OLED
  9. Estação meteorológica ThingSpeak Arduino
  10. Sistema de atendimento baseado em Arduino e planilha do Google