Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capteur d'humidité et de température magnifiquement fini

Composants et fournitures

Arduino UNO
× 1
Anneau Adafruit NeoPixel :WS2812 5050 LED RVB
× 1
Capteur de température DHT22
× 1
Écran LCD TFT couleur 1,44" Adafruit avec sortie de carte MicroSD - ST7735R
× 1
Planche à pain (générique)
× 1
Support de 4 piles AA
× 1
Câbles de raccordement (générique)
× 1

Outils et machines nécessaires

Fer à souder (générique)
Pistolet à colle chaude (générique)

À propos de ce projet

L'histoire derrière ce projet

Découvrez comment nous avons construit un boîtier à queue d'aronde en noyer et utilisé des composants Arduino faciles à trouver pour créer un moniteur d'humidité et de température élégant et utile pour l'atelier de menuiserie. Ce projet de bricolage présente un peu de travail du bois avec des queues d'aronde en noyer et de l'électronique pour débutants à l'aide d'un Arduino Uno et d'excellentes pièces d'Adafruit.

Nous vivons dans le centre du Texas où nous obtenons des variations massives d'humidité et de température au printemps, ce qui peut être désastreux pour certains projets de menuiserie. Ce projet cool nous aide à nous alerter lorsque l'humidité change ou commence à devenir élevée afin que nous puissions prendre des précautions comme déplacer nos projets de bois dans la maison, ou ne pas faire de fraisage pendant le temps très humide. Il a également l'air génial et a notre doux logo !

Nous sommes nouveaux sur Arduino et l'électronique, nous avons donc appris au fur et à mesure de la création de cela. Nous sommes ravis de faire plus de projets maintenant que nous savons à quel point il est facile de faire de grandes choses.

Regardez la vidéo de construction détaillée !

Code

  • Code du capteur d'atelier Arduino
Code du capteur Arduino Work ShopArduino
#include #include #include #include #include #include #include  // Il existe un tas de bibliothèques DHTXX que vous pouvez trouver en ligne. Ils ont tous différents niveaux de fonctionnalités.// Define 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 // Variables globalesint currentColor =9999 ; //(Les nombres correspondent au graphique. Voir ci-dessous.)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("Démarrage."); // Commencer DHT dht.begin(); // Initialiser l'écran LCD tft.initR(INITR_144GREENTAB); // Initialiser la carte SD Serial.print("Initialisation de la carte SD."); if (!SD.begin(SD_PIN)) { Serial.println("Échec !"); retourner; } // Définir l'arrière-plan de l'écran sur noir tft.fillScreen(ST7735_BLACK); // Initialiser les LED FastLED.addLeds(leds, PIXEL_NUM); // Laisse tout se rattraper avant de démarrer la boucle delay(500);}// LOOPvoid ​​loop() { // Obtenir les données du capteur dht.readTemperature(); dht.readHumidity(); int f =dht.temperature_F; // Degrés en Fahrenheit int h =dht.humidité; // Pourcentage // Icône de dessin des degrés tft.fillCircle(102, 42, 6, ST7735_WHITE); tft.fillCircle(102, 42, 4, ST7735_BLACK); // Dessiner la température sur l'écran LCD drawTemperature(f); // Humidity setHumidityColors(h); //Imprimer les données sur Serial Monitor Serial.print("Temperature:"); Serial.println(f); Serial.print("Humidité:"); Serial.print(h); Serial.println("%"); // Delay delay(1000); }// Draw Bitmap - Ceci est pour l'écran LCD bmpDraw(char *filename, uint8_t x, uint8_t y) { File bmpFile; int largeur bmp, hauteur bmp ; // L+H en pixels uint8_t bmpDepth; // Profondeur de bits (doit actuellement être de 24) uint32_t bmpImageoffset; // Début des données d'image dans le fichier uint32_t rowSize; // Pas toujours =bmpWidth; peut avoir un remplissage uint8_t sdbuffer[3*BMP_BUF] ; // tampon de pixels (R+V+B par pixel) uint8_t buffidx =sizeof(sdbuffer); // Position actuelle dans sdbuffer booléen goodBmp =false; // Définie sur true lors de l'analyse d'en-tête valide boolean flip =true; // BMP est stocké de bas en haut 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("Chargement de l'image bitmap :'"); // Serial.print(filename);// Serial.println('\''); // Ouvrir le fichier demandé sur la carte SD if ((bmpFile =SD.open(filename)) ==NULL) { Serial.print("Bitmap file not found!"); retourner; } // Analyse l'en-tête BMP if(read16(bmpFile) ==0x4D42) { read32(bmpFile); (void)read32(bmpFile); bmpImageoffset =read32(bmpFile); //Série.println()); read32(fichierbmp); bmpWidth =read32(bmpFile); bmpHeight =read32(bmpFile); if(read16(bmpFile) ==1) { bmpDepth =read16(bmpFile); //Serial.print("Profondeur de bits :"); if((bmpDepth ==24) &&(read32(bmpFile) ==0)) { goodBmp =true; // Les lignes BMP sont remplies (si nécessaire) jusqu'à la limite de 4 octets rowSize =(bmpWidth * 3 + 3) &~3; // Si bmpHeight est négatif, l'image est dans l'ordre descendant. // Ce n'est pas canon mais a été observé dans la nature. if(bmpHeight <0) { bmpHeight =-bmpHeight; flip =faux; } // Zone de recadrage à charger w =bmpWidth; h =bmpHauteur ; if((x+w-1)>=tft.width()) w =tft.width() - x; if((y+h-1)>=tft.height()) h =tft.height() - y; // Définir la fenêtre d'adresse TFT sur les limites de l'image tronquée tft.setAddrWindow(x, y, x+w-1, y+h-1); for (row=0; row=sizeof(sdbuffer)) { bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffidx =0; } // Convertir le pixel du format BMP au format TFT, pousser pour afficher b =sdbuffer[buffidx++]; g =sdbuffer[buffidx++]; r =sdbuffer[buffidx++]; tft.pushColor(tft.Color565(r,g,b)); } } } } } fichierbmp.close(); if(!goodBmp) Serial.println("Format BMP non reconnu.");}// Ceci est pour le Bitmap/LCD Screenuint16_t read16(File f) { uint16_t result; ((uint8_t *)&result)[0] =f.read(); // LSB ((uint8_t *)&result)[1] =f.read(); // MSB renvoie le résultat;}// Ceci est pour le Bitmap/LCD Screenuint32_t read32(File f) { uint32_t result; ((uint8_t *)&result)[0] =f.read(); // LSB ((uint8_t *)&result)[1] =f.read(); ((uint8_t *)&result)[2] =f.read(); ((uint8_t *)&result)[3] =f.read(); // MSB renvoie le résultat;} // Dessiner la température sur l'écran LCD drawTemperature(int temp) { // Obtenir le nombre de chiffres dans la température int digits =numDigits(temp); // Définir les positions du curseur pour dessiner des bitmaps int x1_2 =62; entier x2_2 =32 ; entier x1_3 =1 ; entier x2_3 =1 ; entier x3_3 =1 ; entier y =38 ; caractère chiffre1[12] ; caractère chiffre2[12] ; caractère chiffre3[12] ; char digitStr1[24] ; char digitStr2[24] ; char digitStr3[24] ; // Obtenir le premier chiffre itoa(temp % 10, digit1,10) ; //Série.println(temp % 10); strcpy(chiffreStr1, ""); strcat(chiffreStr1, chiffre1) ; strcat(chiffreStr1, ".bmp"); // Obtenir le deuxième chiffre if(chiffres ==2){ itoa((temp / 10) % 10, chiffre2,10); strcpy(chiffreStr2, ""); strcat(chiffreStr2, chiffre2) ; strcat(chiffresStr2, ".bmp"); } // Obtenir le troisième chiffre if(chiffres ==3){ itoa((temp / 100) % 10, chiffre3,10); strcpy(chiffreStr3, ""); strcat(chiffreStr3, chiffre3) ; strcat(chiffreStr3, ".bmp"); } if(chiffres> 2){ bmpDraw(chiffreStr1,x1_3,y); bmpDraw(chiffreStr2,x2_3,y); bmpDraw(chiffreStr3,x3_3,y); } else { bmpDraw(digitStr1,x1_2,y); bmpDraw(chiffreStr2,x2_2,y); }}// Obtient le nombre de chiffres dans la température pour déterminer le placement sur screenint numDigits(int number){ int valLen =0; if(nombre> 99) valLen =3; sinon valLen =2; return valLen;}// Set LED Colorsvoid setColors(int r, int g, int b){ for(int i =0; i  

Pièces et boîtiers personnalisés

Schémas

Fritzing n'avait pas la plupart des composants réels, alors j'ai fait de mon mieux pour représenter le flux des choses.

Processus de fabrication

  1. Fonctionnement du capteur d'humidité et ses applications
  2. Sensirion :module multigaz, humidité et température pour purificateurs d'air et applications HVAC
  3. Capteur de température Python et Raspberry Pi
  4. Température et humidité faciles sur Raspberry Pi
  5. Capteur de température et de luminosité Raspberry Pi
  6. Aéroponie avec Raspberry Pi et capteur d'humidité
  7. Capteur de température Raspberry Pi
  8. Comment vérifier et étalonner un capteur d'humidité
  9. Capteur de débit et de température de laboratoire sur puce