Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Prachtig afgewerkte vochtigheids- en temperatuursensor

Componenten en benodigdheden

Arduino UNO
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
DHT22-temperatuursensor
× 1
Adafruit 1,44" kleuren TFT LCD-scherm met MicroSD-kaart breakout - ST7735R
× 1
Broodplank (algemeen)
× 1
4xAA-batterijhouder
× 1
Jumperdraden (algemeen)
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Hot lijmpistool (algemeen)

Over dit project

Het verhaal achter dit project

Leer hoe we een walnoothouten zwaluwstaartkast hebben gebouwd en eenvoudig te vinden Arduino-componenten hebben gebruikt om een ​​stijlvolle en nuttige vochtigheids- en temperatuurmonitor voor de houtwinkel te bouwen. Dit doe-het-zelf-project toont een beetje houtbewerking met walnootzwaluwstaarten en beginnerselektronica met behulp van een Arduino Uno en enkele uitstekende onderdelen van Adafruit.

We wonen in Centraal-Texas, waar we in de lente enorme schommelingen in vochtigheid en temperatuur krijgen, wat rampzalig kan zijn voor bepaalde houtbewerkingsprojecten. Dit coole project helpt ons te waarschuwen wanneer de luchtvochtigheid verandert of hoog begint te worden, zodat we voorzorgsmaatregelen kunnen nemen, zoals het verplaatsen van onze houtprojecten naar huis, of niet frezen tijdens het hoge luchtvochtigheidsweer. Het ziet er ook geweldig uit en heeft ons lieve logo!

Arduino en elektronica zijn nieuw voor ons, dus we leerden gaandeweg bij het maken hiervan. We zijn erg enthousiast om meer projecten te maken nu we weten hoe gemakkelijk het is om geweldige dingen te maken.

Bekijk de gedetailleerde bouwvideo!

Code

  • Arduino werkplaatssensorcode
Arduino-werkplaatssensorcodeArduino
#include #include #include #include #include #include #include  // Er zijn een heleboel DHTXX-bibliotheken die je online kunt vinden. Ze hebben allemaal verschillende niveaus van functies.// 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 // Global Variablesint currentColor =9999; //(Cijfers komen overeen met grafiek. Zie hieronder.)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("Bezig met opstarten."); // Begin DHT dht.begin(); // Initialiseer LCD-scherm tft.initR (INITR_144GREENTAB); // Initialiseer SD-kaart Serial.print ("Initialiseren SD-kaart."); if (!SD.begin(SD_PIN)) { Serial.println("Mislukt!"); opbrengst; } // Schermachtergrond instellen op zwart tft.fillScreen (ST7735_BLACK); // Initialiseer LED's FastLED.addLeds(leds, PIXEL_NUM); // Laat alles inhalen voordat de lusvertraging (500) wordt gestart;}// LOOPvoid ​​loop() { // Get Sensor Data dht.readTemperature(); dht.readVochtigheid(); int f =dht.temperatuur_F; // Graden in Fahrenheit int h =dht.vochtigheid; // Percentage // Teken gradenpictogram tft.fillCircle(102, 42, 6, ST7735_WHITE); tft.fillCircle(102, 42, 4, ST7735_BLACK); // Teken temperatuur op LCD-scherm drawTemperature(f); // VochtigheidssetHumidityColors(h); //Gegevens afdrukken naar seriële monitor Serial.print ("Temperatuur:"); Serieel.println(f); Serial.print("Vochtigheid:"); Seriële.print(h); Serieel.println("%"); // Vertragingsvertraging (1000); }// Draw Bitmap - Dit is voor het LCD-schermvoid bmpDraw(char *bestandsnaam, uint8_t x, uint8_t y) { Bestand bmpFile; int bmpBreedte, bmpHoogte; // B+H in pixels uint8_t bmpDepth; // Bitdiepte (moet momenteel 24 zijn) uint32_t bmpImageoffset; // Begin van afbeeldingsgegevens in bestand uint32_t rowSize; // Niet altijd =bmpWidth; heeft mogelijk opvulling uint8_t sdbuffer [3*BMP_BUF]; // pixelbuffer (R+G+B per pixel) uint8_t buffidx =sizeof(sdbuffer); // Huidige positie in sdbuffer boolean goodBmp =false; // Ingesteld op true op geldige header parse boolean flip =true; // BMP wordt van onder naar boven opgeslagen int w, h, rij, col; uint8_t r, g, b; uint32_t pos =0, startTime =millis(); if((x>=tft.width()) || (y>=tft.height())) return;// Serial.println();// Serial.print("Laden van bitmapafbeelding:'"); // Serial.print(bestandsnaam);// Serial.println('\''); // Open het gevraagde bestand op SD-kaart if ((bmpFile =SD.open(bestandsnaam)) ==NULL) { Serial.print ("Bitmap-bestand niet gevonden!"); opbrengst; } // BMP-header ontleden if(read16(bmpFile) ==0x4D42) { read32(bmpFile); (void)read32(bmpFile); bmpImageoffset =read32(bmpFile); //Seriële.println()); read32(bmpFile); bmpWidth =read32(bmpFile); bmpHeight =read32(bmpFile); if(read16(bmpFile) ==1) { bmpDepth =read16(bmpFile); //Serial.print ("Bitdiepte:"); if((bmpDepth ==24) &&(read32(bmpFile) ==0)) { goodBmp =true; // BMP-rijen worden opgevuld (indien nodig) tot 4-byte grens rowSize =(bmpWidth * 3 + 3) &~3; // Als bmpHeight negatief is, staat de afbeelding in de volgorde van boven naar beneden. // Dit is geen canon, maar is in het wild waargenomen. if(bmpHeight <0) { bmpHeight =-bmpHeight; omdraaien =onwaar; } // Te laden gewasgebied w =bmpWidth; h =bmpHoogte; if((x+w-1)>=tft.breedte()) w =tft.breedte() - x; if((y+h-1)>=tft.height()) h =tft.height() - y; // Stel TFT-adresvenster in op geknipte beeldgrenzen tft.setAddrWindow(x, y, x+w-1, y+h-1); for (row=0; row=sizeof(sdbuffer)) {bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffx =0; } // Converteer pixel van BMP naar TFT-formaat, druk op om b =sdbuffer [buffidx++] weer te geven; g =sdbuffer[buffidx++]; r =sdbuffer[buffidx++]; tft.pushColor(tft.Color565(r,g,b)); } } } } } bmpFile.close(); if(!goodBmp) Serial.println("BMP-formaat niet herkend.");}// Dit is voor de Bitmap/LCD Screenuint16_t read16(File f) { uint16_t result; ((uint8_t *)&result)[0] =f.lezen(); // LSB ((uint8_t *)&result)[1] =f.read(); // MSB retourneert resultaat;}// Dit is voor de Bitmap/LCD Screenuint32_t read32 (File f) { uint32_t result; ((uint8_t *)&result)[0] =f.lezen(); // LSB ((uint8_t *)&result)[1] =f.read(); ((uint8_t *)&result)[2] =f.read(); ((uint8_t *)&result)[3] =f.read(); // MSB retourneert resultaat;}// Teken temperatuur op LCD-schermvoid drawTemperature (int temp) { // Get aantal cijfers in de temperatuur int digits =numDigits (temp); // Definieer cursorposities om bitmaps te tekenen int x1_2 =62; int x2_2 =32; int x1_3 =1; int x2_3 =1; int x3_3 =1; int y =38; char cijfer1[12]; char cijfer2[12]; char cijfer3[12]; char digitStr1[24]; char digitStr2[24]; char digitStr3[24]; // Get First Digit itoa (temp % 10, digit1,10); //Serial.println(temp% 10); strcpy(digitStr1, ""); strcat(cijferStr1, cijfer1); strcat(digitStr1, ".bmp"); // Haal het tweede cijfer op als (cijfers ==2) { itoa ((temp / 10) % 10, cijfer 2,10); strcpy(digitStr2, ""); strcat(cijferStr2, cijfer2); strcat(digitStr2, ".bmp"); } // Haal het derde cijfer op als (cijfers ==3){ itoa((temp / 100) % 10, digit3,10); strcpy(digitStr3, ""); strcat(cijferStr3, cijfer3); strcat(digitStr3, ".bmp"); } if(cijfers> 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); }}// Haal het aantal cijfers in temperatuur op om de plaatsing op screenint te bepalen numDigits(int number){int valLen =0; if(getal> 99) valLen =3; anders valLen =2; return valLen;}// Set LED Colorsvoid setColors(int r, int g, int b){ for(int i =0; i   

Aangepaste onderdelen en behuizingen

Schema's

Fritzing had niet de meeste van de eigenlijke componenten, dus ik deed mijn best om de stroom van dingen weer te geven.

Productieproces

  1. Vochtigheidssensor werkt en zijn toepassingen
  2. DHT11-sensor en zijn werking
  3. Sensirion:multigas-, vochtigheids- en temperatuurmodule voor luchtreinigers en HVAC-toepassingen
  4. Temperatuur-/vochtigheidssensor biedt strikte lineaire respons
  5. Python- en Raspberry Pi-temperatuursensor
  6. Eenvoudige temperatuur en vochtigheid op Raspberry Pi
  7. Raspberry Pi temperatuur- en lichtsensor
  8. Aerocultuur met Raspberry Pi en vochtigheidssensor
  9. Raspberry Pi-temperatuursensor
  10. Een vochtigheidssensor controleren en kalibreren
  11. Lab-on-chip stroom- en temperatuursensor