Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Schön verarbeiteter Feuchtigkeits- und Temperatursensor

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
DHT22-Temperatursensor
× 1
Adafruit 1,44" Farb-TFT-LCD-Display mit MicroSD-Karten-Breakout - ST7735R
× 1
Breadboard (generisch)
× 1
4xAA Batteriehalter
× 1
Jumper (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Heißklebepistole (generisch)

Über dieses Projekt

Die Geschichte hinter diesem Projekt

Erfahren Sie, wie wir ein Schwalbenschwanzgehäuse aus Walnussholz gebaut und leicht zu findende Arduino-Komponenten verwendet haben, um einen stilvollen und nützlichen Feuchtigkeits- und Temperaturmonitor für den Holzhandel zu bauen. Dieses DIY-Projekt zeigt ein bisschen Holzbearbeitung mit Walnuss-Schwalbenschwänzen und Anfängerelektronik mit einem Arduino Uno und einigen hervorragenden Teilen von Adafruit.

Wir leben in Zentraltexas, wo wir im Frühjahr massive Schwankungen der Luftfeuchtigkeit und Temperatur haben, was für bestimmte Holzbearbeitungsprojekte katastrophal sein kann. Dieses coole Projekt hilft uns, uns zu warnen, wenn sich die Luftfeuchtigkeit ändert oder hoch wird, damit wir Vorkehrungen treffen können, z. Es sieht auch super aus und hat unser süßes Logo!

Wir sind neu bei Arduino und Elektronik, also haben wir es gelernt, als wir dies gemacht haben. Wir freuen uns sehr, mehr Projekte zu realisieren, da wir jetzt wissen, wie einfach es ist, großartige Dinge zu machen.

Sehen Sie sich das detaillierte Build-Video an!

Code

  • Arduino Werkstatt-Sensorcode
Arduino Werkstatt-SensorcodeArduino
#include #include #include #include #include #include #include  // Es gibt eine Reihe von DHTXX-Bibliotheken, die Sie online finden können. Sie haben alle unterschiedliche Funktionen. // 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; //(Zahlen entsprechen Diagramm. Siehe unten.)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("Starten."); // DHT starten dht.begin(); // LCD-Bildschirm initialisieren tft.initR (INITR_144GREENTAB); // SD-Karte initialisieren Serial.print ( "SD-Karte initialisieren."); if (!SD.begin(SD_PIN)) {Serial.println("Fehlgeschlagen!"); Rückkehr; } // Bildschirmhintergrund auf Schwarz setzen tft.fillScreen(ST7735_BLACK); // LEDs initialisieren FastLED.addLeds(leds, PIXEL_NUM); // Lassen Sie alles aufholen, bevor Sie Schleifenverzögerung (500) starten;} // LOOPvoid ​​loop () { // Sensordaten abrufen dht.readTemperature (); dht.readHumidity(); int f =dht.temperature_F; // Grad in Fahrenheit int h =dht.humidity; // Prozentsatz // Grade zeichnen Icon tft.fillCircle(102, 42, 6, ST7735_WHITE); tft.fillCircle(102, 42, 4, ST7735_BLACK); // Temperatur auf dem LCD-Bildschirm zeichnen drawTemperature (f); // Feuchtigkeit setHumidityColors(h); // Daten auf seriellen Monitor drucken Serial.print ( "Temperatur:"); Serial.println(f); Serial.print ("Luftfeuchtigkeit:"); Seriendruck (h); Serial.println("%"); // Verzögerungsverzögerung (1000); } // Bitmap zeichnen - Dies ist für den LCD-Screenvoid bmpDraw(char *filename, uint8_t x, uint8_t y) { File bmpFile; int bmpWidth, bmpHeight; // W+H in Pixel uint8_t bmpDepth; // Bittiefe (muss derzeit 24 sein) uint32_t bmpImageoffset; // Beginn der Bilddaten in Datei uint32_t rowSize; // Nicht immer =bmpWidth; kann Auffüllen haben uint8_t sdbuffer[3*BMP_BUF]; // Pixelpuffer (R+G+B pro Pixel) uint8_t buffidx =sizeof(sdbuffer); // Aktuelle Position in sdbuffer boolean goodBmp =false; // Bei gültigem Header-Parse auf true setzen boolean flip =true; // BMP wird von unten nach oben gespeichert 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 ( "Bitmap-Bild wird geladen:'"); // Serial.print (Dateiname); // Serial.println ('\''); // Angeforderte Datei auf SD-Karte öffnen if ((bmpFile =SD.open (Dateiname)) ==NULL) { Serial.print ( "Bitmap-Datei nicht gefunden!"); Rückkehr; } // BMP-Header analysieren if (read16 (bmpFile) ==0x4D42) { read32 (bmpFile); (void)read32(bmpDatei); bmpImageoffset =read32(bmpDatei); //Seriell.println()); read32(bmpDatei); bmpWidth =read32(bmpDatei); bmpHeight =read32(bmpDatei); if (read16 (bmpFile) ==1) { bmpDepth =read16 (bmpFile); // Serial.print ( "Bittiefe:"); if((bmpDepth ==24) &&(read32(bmpFile) ==0)) { goodBmp =true; // BMP-Zeilen werden (falls erforderlich) auf eine 4-Byte-Grenze aufgefüllt. rowSize =(bmpWidth * 3 + 3) &~3; // Wenn bmpHeight negativ ist, ist das Bild von oben nach unten. // Dies ist kein Kanon, wurde aber in freier Wildbahn beobachtet. if(bmpHeight <0) { bmpHeight =-bmpHeight; umdrehen =falsch; } // Zu ladender Zuschneidebereich w =bmpWidth; h =bmpHöhe; if((x+w-1)>=tft.width()) w =tft.width() - x; if((y+h-1)>=tft.height()) h =tft.height() - y; // TFT-Adressfenster auf abgeschnittene Bildgrenzen setzen tft.setAddrWindow(x, y, x+w-1, y+h-1); for (row=0; row=sizeof(sdbuffer)) { bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffidx =0; } // Pixel vom BMP- in das TFT-Format konvertieren, zum Anzeigen drücken b =sdbuffer[buffidx++]; g =sdbuffer[buffidx++]; r =sdbuffer[buffidx++]; tft.pushColor(tft.Color565(r,g,b)); } } } } } bmpFile.close(); if(!goodBmp) Serial.println("BMP-Format nicht erkannt.");} // Dies ist für die Bitmap/LCD Screenuint16_t read16 (Datei f) { uint16_t result; ((uint8_t *)&result)[0] =f.read(); // LSB ((uint8_t *)&result)[1] =f.read(); // MSB Rückgabeergebnis;} // Dies ist für die 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 Rückgabeergebnis;} // Temperatur auf LCD-Bildschirm zeichnenvoid drawTemperature (int temp) { // Anzahl der Stellen in der Temperatur abrufen int digits =numDigits (temp); // Cursorpositionen zum Zeichnen von Bitmaps definieren int x1_2 =62; int x2_2 =32; int x1_3 =1; int x2_3 =1; int x3_3 =1; int y =38; Zeichen Ziffer1[12]; Zeichen Ziffer2[12]; Zeichenziffer3[12]; char digitStr1[24]; char digitStr2[24]; char digitStr3[24]; // Erste Ziffer abrufen itoa(temp % 10, digit1,10); //Seriell.println (temp % 10); strcpy(digitStr1, ""); strcat(ZifferStr1, Ziffer1); strcat(digitStr1, ".bmp"); // Zweite Ziffer abrufen if(digits ==2){ itoa((temp / 10) % 10, digit2,10); strcpy(digitStr2, ""); strcat(ZifferStr2, Ziffer2); strcat(digitStr2, ".bmp"); } // Dritte Ziffer abrufen if(digits ==3){ itoa((temp / 100) % 10, digit3,10); strcpy(digitStr3, ""); strcat(ZifferStr3, Ziffer3); strcat(digitStr3, ".bmp"); } if (Ziffern> 2) { bmpDraw (DigitStr1,x1_3,y); bmpDraw(digitStr2,x2_3,y); bmpDraw(digitStr3,x3_3,y); aufrechtzuerhalten. Sonst { bmpDraw (digitStr1,x1_2,y); bmpDraw(digitStr2,x2_2,y); }} // Anzahl der Stellen in der Temperatur abrufen, um die Platzierung auf dem Bildschirm zu bestimmenint numDigits(int number){ int valLen =0; if(Zahl> 99) valLen =3; sonst valLen =2; return valLen;} // Setze LED-Farbenvoid setColors(int r, int g, int b){ for(int i =0; i  

Kundenspezifische Teile und Gehäuse

Schaltpläne

Fritzing hatte nicht die meisten der eigentlichen Komponenten, also tat ich mein Bestes, um den Fluss der Dinge darzustellen.

Herstellungsprozess

  1. Funktionsweise von Feuchtigkeitssensoren und ihre Anwendungen
  2. DHT11-Sensor und seine Funktionsweise
  3. Sensirion:Multigas-, Feuchtigkeits- und Temperaturmodul für Luftreiniger und HLK-Anwendungen
  4. Python- und Raspberry Pi-Temperatursensor
  5. Einfache Temperatur und Luftfeuchtigkeit auf Raspberry Pi
  6. Raspberry Pi Temperatur- und Lichtsensor
  7. Aeroponik mit Raspberry Pi und Feuchtigkeitssensor
  8. Raspberry Pi-Temperatursensor
  9. So überprüfen und kalibrieren Sie einen Feuchtigkeitssensor
  10. Lab-On-Chip-Durchfluss- und Temperatursensor