Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sensor de temperatura y humedad con un hermoso acabado

Componentes y suministros

Arduino UNO
× 1
Anillo Adafruit NeoPixel:WS2812 5050 RGB LED
× 1
Sensor de temperatura DHT22
× 1
Pantalla LCD TFT a color Adafruit de 1,44 "con rotura de tarjeta MicroSD - ST7735R
× 1
Breadboard (genérico)
× 1
portapilas 4xAA
× 1
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Pistola de pegamento caliente (genérica)

Acerca de este proyecto

La historia detrás de este proyecto

Descubra cómo construimos una caja de nogal con cola de milano y cómo usamos componentes Arduino fáciles de encontrar para construir un monitor de humedad y temperatura elegante y útil para la carpintería. Este proyecto de bricolaje muestra un poco de carpintería con colas de milano de nogal y electrónica para principiantes utilizando un Arduino Uno y algunas piezas excelentes de Adafruit.

Vivimos en el centro de Texas, donde experimentamos cambios masivos en la humedad y la temperatura en la primavera, lo que puede ser desastroso para ciertos proyectos de carpintería. Este proyecto genial ayuda a alertarnos cuando la humedad está cambiando o comienza a aumentar para que podamos tomar precauciones como mover nuestros proyectos de madera a la casa o no hacer ningún fresado durante el clima de alta humedad. ¡También se ve increíble y tiene nuestro dulce logo!

Somos nuevos en Arduino y Electrónica, así que aprendimos sobre la marcha al hacer esto. Estamos muy emocionados de hacer más proyectos ahora que sabemos lo fácil que es hacer grandes cosas.

¡Vea el video de compilación detallado!

Código

  • Código del sensor Arduino Work Shop
Código del sensor de taller de Arduino Arduino
 #include  #include  #include  #include  #include  #include  #include  // Hay un montón de bibliotecas DHTXX que puedes encontrar en línea. Todos tienen diferentes niveles de características. // Definir Pines # definir TFT_CS 10 # definir TFT_RST 9 # definir TFT_DC 8 # definir DHT_PIN 2 # definir PIXEL_PIN 6 # definir PIXEL_NUM 24 # definir SD_PIN 4 # definir BMP_BUF 20 // Global Variablesint currentColor =9999; // (Los números corresponden a la tabla. Ver más abajo.) LED CRGB [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 ("Iniciando"); // Comenzar DHT dht.begin (); // Inicializar la pantalla LCD tft.initR (INITR_144GREENTAB); // Inicializar la tarjeta SD Serial.print ("Inicializando la tarjeta SD"); if (! SD.begin (SD_PIN)) {Serial.println ("¡Falló!"); regreso; } // Establecer el fondo de la pantalla en negro tft.fillScreen (ST7735_BLACK); // Inicializar LEDs FastLED.addLeds  (leds, PIXEL_NUM); // Deje que todo se ponga al día antes de iniciar el ciclo delay (500);} // LOOPvoid ​​loop () {// Obtener los datos del sensor dht.readTemperature (); dht.readHumidity (); int f =dht.temperature_F; // Grados en Fahrenheit int h =dht.humidity; // Porcentaje // Dibujar icono de grados tft.fillCircle (102, 42, 6, ST7735_WHITE); tft.fillCircle (102, 42, 4, ST7735_BLACK); // Dibujar temperatura en la pantalla LCD drawTemperature (f); // Humedad setHumidityColors (h); // Imprimir datos en el monitor serial Serial.print ("Temperatura:"); Serial.println (f); Serial.print ("Humedad:"); Serial.print (h); Serial.println ("%"); // Retraso de retardo (1000); } // Dibujar mapa de bits - Esto es para la pantalla LCD bmpDraw (char * nombre de archivo, uint8_t x, uint8_t y) {Archivo bmpFile; int bmpWidth, bmpHeight; // W + H en píxeles uint8_t bmpDepth; // Profundidad de bits (actualmente debe ser 24) uint32_t bmpImageoffset; // Inicio de los datos de la imagen en el archivo uint32_t rowSize; // No siempre =bmpWidth; puede tener relleno uint8_t sdbuffer [3 * BMP_BUF]; // búfer de píxeles (R + G + B por píxel) uint8_t buffidx =sizeof (sdbuffer); // Posición actual en sdbuffer boolean goodBmp =false; // Establecer en verdadero en un encabezado válido parse boolean flip =true; // BMP se almacena de abajo hacia arriba int w, h, row, col; uint8_t r, g, b; uint32_t pos =0, hora de inicio =milis (); if ((x> =tft.width ()) || (y> =tft.height ())) return; // Serial.println (); // Serial.print ("Cargando imagen de mapa de bits:'"); // Serial.print (nombre de archivo); // Serial.println ('\' '); // Abrir el archivo solicitado en la tarjeta SD if ((bmpFile =SD.open (nombre de archivo)) ==NULL) {Serial.print ("¡Archivo de mapa de bits no encontrado!"); regreso; } // Analizar el encabezado BMP if (read16 (bmpFile) ==0x4D42) {read32 (bmpFile); (vacío) 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; // Las filas BMP se rellenan (si es necesario) hasta un límite de 4 bytes. RowSize =(bmpWidth * 3 + 3) &~ 3; // Si bmpHeight es negativo, la imagen está en orden de arriba hacia abajo. // Esto no es canon pero se ha observado en la naturaleza. if (bmpHeight <0) {bmpHeight =-bmpHeight; flip =falso; } // Área de cultivo a cargar w =bmpWidth; h =bmpHeight; si ((x + w-1)> =tft.width ()) w =tft.width () - x; if ((y + h-1)> =tft.height ()) h =tft.height () - y; // Establecer la ventana de dirección TFT a los límites de la imagen recortada tft.setAddrWindow (x, y, x + w-1, y + h-1); for (fila =0; fila  =sizeof (sdbuffer)) {bmpFile.read (sdbuffer, sizeof (sdbuffer)); buffidx =0; } // Convierta el píxel de formato BMP a TFT, presione para mostrar b =sdbuffer [buffidx ++]; g =sdbuffer [buffidx ++]; r =sdbuffer [buffidx ++]; tft.pushColor (tft.Color565 (r, g, b)); }}}}} bmpFile.close (); if (! goodBmp) Serial.println ("No se reconoce el formato BMP.");} // Esto es para el mapa de bits / LCD Screenuint16_t read16 (File f) {uint16_t result; ((uint8_t *) &resultado) [0] =f.read (); // LSB ((uint8_t *) &resultado) [1] =f.read (); // MSB devuelve resultado;} // Esto es para el mapa de bits / LCD Screenuint32_t read32 (Archivo 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 devuelve el resultado;} // Dibuja la temperatura en la pantalla LCDvoid drawTemperature (int temp) {// Obtiene el número de dígitos en la temperatura int digits =numDigits (temp); // Definir posiciones de cursor para dibujar mapas de bits 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]; // Obtener el primer dígito itoa (temp% 10, digit1,10); //Serial.println(temp% 10); strcpy (digitStr1, ""); strcat (digitStr1, digit1); strcat (digitStr1, ".bmp"); // Obtener el segundo dígito if (dígitos ==2) {itoa ((temp / 10)% 10, digit2,10); strcpy (digitStr2, ""); strcat (digitStr2, digit2); strcat (digitStr2, ".bmp"); } // Obtener el tercer dígito if (dígitos ==3) {itoa ((temp / 100)% 10, digit3,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); }} // Obtener el número de dígitos de la temperatura para determinar la ubicación en screenint numDigits (int número) {int valLen =0; si (número> 99) valLen =3; else valLen =2; return valLen;} // Establecer LED Colorsvoid setColors (int r, int g, int b) {for (int i =0; i   

Piezas y carcasas personalizadas

Esquemas

Fritzing no tenía la mayoría de los componentes reales, así que hice todo lo posible para representar el flujo de las cosas.

Proceso de manufactura

  1. Funcionamiento del sensor de humedad y sus aplicaciones
  2. Sensor DHT11 y su funcionamiento
  3. Sensirion:módulo multigás, de humedad y temperatura para purificadores de aire y aplicaciones HVAC
  4. El sensor de temperatura / humedad ofrece una respuesta lineal estricta
  5. Sensor de temperatura Python y Raspberry Pi
  6. Temperatura y humedad sencillas en Raspberry Pi
  7. Sensor de temperatura y luz Raspberry Pi
  8. Aeroponía con Raspberry Pi y sensor de humedad
  9. Sensor de temperatura Raspberry Pi
  10. Cómo comprobar y calibrar un sensor de humedad
  11. Sensor de temperatura y flujo de laboratorio en chip