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

Sensor de umidade e temperatura bem acabado

Componentes e suprimentos

Arduino UNO
× 1
Anel Adafruit NeoPixel:WS2812 5050 RGB LED
× 1
Sensor de temperatura DHT22
× 1
Adafruit 1,44 "Display LCD TFT colorido com quebra de cartão MicroSD - ST7735R
× 1
Breadboard (genérico)
× 1
porta-bateria 4xAA
× 1
Fios de jumpers (genérico)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Pistola de cola quente (genérica)

Sobre este projeto





A história por trás deste projeto


Saiba como construímos uma caixa com encaixe de nogueira e usamos componentes Arduino fáceis de encontrar para construir um monitor de umidade e temperatura elegante e útil para a marcenaria. Este projeto DIY mostra um pouco de carpintaria com encaixes de nogueira e eletrônicos iniciantes usando um Arduino Uno e algumas peças excelentes da Adafruit.

Vivemos na região central do Texas, onde temos grandes oscilações de umidade e temperatura na primavera, o que pode ser desastroso para certos projetos de marcenaria. Este projeto legal ajuda a nos alertar quando a umidade está mudando ou começa a ficar alta para que possamos tomar precauções como mover nossos projetos de madeira para dentro de casa, ou não fazer nenhuma fresagem durante o clima de alta umidade. Ele também parece incrível e tem nosso logotipo doce!

Somos novos no Arduino e na Eletrônica, por isso aprendemos à medida que íamos fazendo isso. Estamos muito animados para fazer mais projetos, agora que sabemos como é fácil fazer grandes coisas.





Assista ao vídeo detalhado de construção!



Código

  • Código do sensor da oficina do Arduino
Código do sensor de oficina do Arduino Arduino
 #include  #include  #include  #include  #include  #include  #include  // Há um monte de bibliotecas DHTXX que você pode encontrar online. Todos eles têm níveis variáveis ​​de recursos .// Definir Pins # define TFT_CS 10 # define TFT_RST 9 # define TFT_DC 8 # define DHT_PIN 2 # define PIXEL_PIN 6 # define PIXEL_NUM 24 # define SD_PIN 4 # define BMP_BUF 20 // Variáveis ​​globaisint currentColor =9999; // (Os números correspondem ao gráfico. Veja abaixo.) CRGB leds [PIXEL_NUM]; Adafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); DHT22 dht (DHT_PIN); int loopDelay =2000; // ms // SETUPvoid ​​setup () {Serial.begin (9600); Serial.println ("Inicializando."); // Comece DHT dht.begin (); // Inicializa a tela LCD tft.initR (INITR_144GREENTAB); // Inicializa o cartão SD Serial.print ("Inicializando o cartão SD."); if (! SD.begin (SD_PIN)) {Serial.println ("Falha!"); Retorna; } // Definir plano de fundo da tela para preto tft.fillScreen (ST7735_BLACK); // Inicializar LEDs FastLED.addLeds  (leds, PIXEL_NUM); // Deixar que tudo seja atualizado antes de iniciar o loop delay (500);} // LOOPvoid ​​loop () {// Obter dados do sensor dht.readTemperature (); dht.readHumidity (); int f =dht.temperature_F; // Graus em Fahrenheit int h =dht.humidity; // Porcentagem // Ícone de graus de desenho tft.fillCircle (102, 42, 6, ST7735_WHITE); tft.fillCircle (102, 42, 4, ST7735_BLACK); // Desenhar a temperatura na tela LCD drawTemperature (f); // Umidade setHumidityColors (h); // Imprimir dados no Serial Monitor Serial.print ("Temperatura:"); Serial.println (f); Serial.print ("Umidade:"); Serial.print (h); Serial.println ("%"); // Atraso de atraso (1000); } // Desenhar bitmap - Isto é para o LCD Screenvoid bmpDraw (char * filename, uint8_t x, uint8_t y) {File bmpFile; int bmpWidth, bmpHeight; // W + H em pixels uint8_t bmpDepth; // Profundidade de bits (atualmente deve ser 24) uint32_t bmpImageoffset; // Início dos dados da imagem no arquivo uint32_t rowSize; // Nem sempre =bmpWidth; pode ter preenchimento uint8_t sdbuffer [3 * BMP_BUF]; // buffer de pixel (R + G + B por pixel) uint8_t buffidx =sizeof (sdbuffer); // Posição atual no sdbuffer boolean goodBmp =false; // Definido como verdadeiro na análise de cabeçalho válido boolean flip =true; // BMP é armazenado de baixo para cima int w, h, row, col; uint8_t r, g, b; uint32_t pos =0, startTime =millis (); if ((x> =tft.width ()) || (y> =tft.height ())) return; // Serial.println (); // Serial.print ("Carregando imagem bitmap:'"); // Serial.print (nome do arquivo); // Serial.println ('\' '); // Abra o arquivo solicitado no cartão SD if ((bmpFile =SD.open (filename)) ==NULL) {Serial.print ("Arquivo de bitmap não encontrado!"); Retorna; } // Analisa o cabeçalho BMP if (read16 (bmpFile) ==0x4D42) {read32 (bmpFile); (void) read32 (bmpFile); bmpImageoffset =read32 (bmpFile); //Serial.println ()); read32 (bmpFile); bmpWidth =read32 (bmpFile); bmpHeight =read32 (bmpFile); if (read16 (bmpFile) ==1) {bmpDepth =read16 (bmpFile); //Serial.print("Bit Depth:"); if ((bmpDepth ==24) &&(read32 (bmpFile) ==0)) {goodBmp =true; // As linhas BMP são preenchidas (se necessário) para o limite de 4 bytes rowSize =(bmpWidth * 3 + 3) &~ 3; // Se bmpHeight for negativo, a imagem está na ordem de cima para baixo. // Isso não é canônico, mas foi observado na natureza. if (bmpHeight <0) {bmpHeight =-bmpHeight; flip =false; } // Área de recorte a ser carregada w =bmpWidth; h =bmpHeight; if ((x + w-1)> =tft.width ()) w =tft.width () - x; if ((y + h-1)> =tft.height ()) h =tft.height () - y; // Define a janela de endereço TFT para limites de imagem recortada tft.setAddrWindow (x, y, x + w-1, y + h-1); for (row =0; row  =sizeof (sdbuffer)) {bmpFile.read (sdbuffer, sizeof (sdbuffer)); buffidx =0; } // Converta o pixel do formato BMP para o TFT, pressione para exibir b =sdbuffer [buffidx ++]; g =sdbuffer [buffidx ++]; r =sdbuffer [buffidx ++]; tft.pushColor (tft.Color565 (r, g, b)); }}}}} bmpFile.close (); if (! goodBmp) Serial.println ("Formato BMP não reconhecido.");} // Isso é para Bitmap / LCD Screenuint16_t read16 (Arquivo f) {uint16_t result; ((uint8_t *) &resultado) [0] =f.read (); // LSB ((uint8_t *) &resultado) [1] =f.read (); // MSB return result;} // Isto é para Bitmap / LCD Screenuint32_t read32 (Arquivo f) {uint32_t result; ((uint8_t *) &resultado) [0] =f.read (); // LSB ((uint8_t *) &resultado) [1] =f.read (); ((uint8_t *) &resultado) [2] =f.read (); ((uint8_t *) &resultado) [3] =f.read (); // MSB return result;} // Desenhar temperatura na tela LCDvoid drawTemperature (int temp) {// Obter número de dígitos na temperatura int digits =numDigits (temp); // Definir as posições do cursor para desenhar bitmaps int x1_2 =62; int x2_2 =32; int x1_3 =1; int x2_3 =1; int x3_3 =1; int y =38; char digit1 [12]; char digit2 [12]; char digit3 [12]; char digitStr1 [24]; char digitStr2 [24]; char digitStr3 [24]; // Obter o primeiro dígito itoa (temp% 10, digit1,10); //Serial.println(temp% 10); strcpy (digitStr1, ""); strcat (digitStr1, digit1); strcat (digitStr1, ".bmp"); // Obter o segundo dígito if (dígitos ==2) {itoa ((temp / 10)% 10, dígito2,10); strcpy (digitStr2, ""); strcat (digitStr2, digit2); strcat (digitStr2, ".bmp"); } // Obtém o terceiro dígito if (dígitos ==3) {itoa ((temp / 100)% 10, dígito3,10); strcpy (digitStr3, ""); strcat (digitStr3, digit3); strcat (digitStr3, ".bmp"); } if (dígitos> 2) {bmpDraw (digitStr1, x1_3, y); bmpDraw (digitStr2, x2_3, y); bmpDraw (digitStr3, x3_3, y); } else {bmpDraw (digitStr1, x1_2, y); bmpDraw (digitStr2, x2_2, y); }} // Obtenha o número de dígitos na temperatura para determinar a colocação na telaint numDigits (int number) {int valLen =0; if (número> 99) valLen =3; senão valLen =2; return valLen;} // Definir cores do LED evita setColors (int r, int g, int b) {for (int i =0; i  

Peças personalizadas e gabinetes

Esquemas

Fritzing não tinha a maioria dos componentes reais, então fiz o meu melhor para representar o fluxo das coisas.

Processo de manufatura

  1. Sensor de umidade funcionando e suas aplicações
  2. Sensor DHT11 e seu funcionamento
  3. Sensirion:módulo multigás, umidade e temperatura para purificadores de ar e aplicações HVAC
  4. Sensor de temperatura Python e Raspberry Pi
  5. Temperatura e umidade fáceis no Raspberry Pi
  6. Temperatura do Raspberry Pi e sensor de luz
  7. Aeroponia com Raspberry Pi e sensor de umidade
  8. Sensor de temperatura Raspberry Pi
  9. Como verificar e calibrar um sensor de umidade
  10. Sensor de fluxo e temperatura Lab-On-Chip