산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아름답게 완성된 습도 및 온도 센서

구성품 및 소모품

Arduino UNO
× 1
Adafruit NeoPixel 링:WS2812 5050 RGB LED
× 1
DHT22 온도 센서
× 1
Adafruit 1.44" 컬러 TFT LCD 디스플레이(MicroSD 카드 브레이크아웃 포함) - ST7735R
× 1
브레드보드(일반)
× 1
4xAA 배터리 홀더
× 1
점퍼 와이어(일반)
× 1

필요한 도구 및 기계

납땜 인두(일반)
뜨거운 글루건(일반)

이 프로젝트 정보

이 프로젝트의 비하인드 스토리

어떻게 우리가 호두 도브테일 케이스를 만들고 쉽게 찾을 수 있는 Arduino 구성 요소를 사용하여 목공소를 위한 세련되고 유용한 습도 및 온도 모니터를 제작했는지 알아보십시오. 이 DIY 프로젝트는 Arduino Uno와 Adafruit의 일부 우수한 부품을 사용하여 호두 도브테일 및 초보자 전자 제품으로 약간의 목공 작업을 보여줍니다.

우리는 특정 목공 프로젝트에 재앙이 될 수 있는 봄에 습도와 온도가 크게 변동하는 센트럴 텍사스에 살고 있습니다. 이 멋진 프로젝트는 습도가 변하거나 높아지기 시작할 때 알림을 제공하여 목재 프로젝트를 집으로 옮기거나 습도가 높은 날씨에 밀링 작업을 하지 않는 것과 같은 예방 조치를 취할 수 있도록 도와줍니다. 또한 멋지고 우리의 달콤한 로고가 있습니다!

우리는 Arduino와 전자공학을 처음 접하기 때문에 이것을 만들 때 배웠습니다. 훌륭한 일을 하는 것이 얼마나 쉬운지 알게 되었기 때문에 더 많은 프로젝트를 만들게 되어 매우 기쁩니다.

자세한 빌드 비디오를 시청하세요!

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • Arduino 작업장 센서 코드
  • Arduino 작업장 센서 코드Arduino
    #include #include #include #include #include #include #include  // 온라인에서 찾을 수 있는 DHTXX 라이브러리가 많이 있습니다. 그들은 모두 다양한 수준의 기능을 가지고 있습니다.// 핀 정의#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 // 글로벌 변수 int 9999; //(숫자는 차트에 해당합니다. 아래 참조)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("시작 중입니다."); // DHT 시작 dht.begin(); // LCD 화면 초기화 tft.initR(INITR_144GREENTAB); // SD 카드 초기화 Serial.print("SD 카드 초기화 중입니다."); if (!SD.begin(SD_PIN)) { Serial.println("실패!"); 반품; } // 화면 배경을 검은색으로 설정 tft.fillScreen(ST7735_BLACK); // LED 초기화 FastLED.addLeds(leds, PIXEL_NUM); // 루프를 시작하기 전에 모든 것을 따라잡도록 합니다. delay(500);}// LOOPvoid ​​loop() { // 센서 데이터 가져오기 dht.readTemperature(); dht.read습도(); int f =dht.temperature_F; // 화씨 도 int h =dht.humidity; // 백분율 // 각도 아이콘 그리기 tft.fillCircle(102, 42, 6, ST7735_WHITE); tft.fillCircle(102, 42, 4, ST7735_BLACK); // LCD 화면에 온도 그리기 drawTemperature(f); // 습도 setHumidityColors(h); //시리얼 모니터에 데이터 출력 Serial.print("Temperature:"); Serial.println(f); Serial.print("습도:"); Serial.print(h); Serial.println("%"); // 지연 지연(1000); }// 비트맵 그리기 - LCD Screenvoid bmpDraw(char *filename, uint8_t x, uint8_t y) { File bmpFile; int bmp폭, bmp높이; // W+H(픽셀) uint8_t bmpDepth; // 비트 깊이(현재 24여야 함) uint32_t bmpImageoffset; // 파일의 이미지 데이터 시작 uint32_t rowSize; // 항상 그런 것은 아님 =bmpWidth; 패딩이 있을 수 있음 uint8_t sdbuffer[3*BMP_BUF]; // 픽셀 버퍼(픽셀당 R+G+B) uint8_t buffidx =sizeof(sdbuffer); // sdbuffer의 현재 위치 부울 goodBmp =false; // 유효한 헤더 구문 분석에서 true로 설정 부울 flip =true; // BMP는 아래에서 위로 저장됩니다. int w, h, row, col; uint8_t r, g, b; uint32_t 위치 =0, 시작 시간 =밀리(); if((x>=tft.width()) || (y>=tft.height())) return;// Serial.println();// Serial.print("비트맵 이미지 로드:'"); // Serial.print(파일명);// Serial.println('\''); // SD 카드에서 요청한 파일 열기 if ((bmpFile =SD.open(filename)) ==NULL) { Serial.print("비트맵 파일을 찾을 수 없습니다!"); 반품; } // BMP 헤더 구문 분석 if(read16(bmpFile) ==0x4D42) { read32(bmpFile); (무효)read32(bmp파일); bmpImageoffset =read32(bmp파일); //Serial.println()); read32(bmp파일); bmp폭 =read32(bmp파일); bmp높이 =read32(bmp파일); if(read16(bmpFile) ==1) { bmpDepth =read16(bmpFile); //Serial.print("비트 깊이:"); if((bmpDepth ==24) &&(read32(bmpFile) ==0)) { goodBmp =true; // BMP 행은 (필요한 경우) 4바이트 경계로 채워집니다. rowSize =(bmpWidth * 3 + 3) &~3; // bmpHeight가 음수이면 이미지는 하향식 순서입니다. // 이것은 표준이 아니지만 야생에서 관찰되었습니다. if(bmpHeight <0) { bmpHeight =-bmpHeight; 뒤집기 =거짓; } // 로드할 자르기 영역 w =bmpWidth; h =bmp 높이; if((x+w-1)>=tft.width()) w =tft.width() - x; if((y+h-1)>=tft.height()) h =tft.height() - y; // TFT 주소 창을 잘린 이미지 경계로 설정 tft.setAddrWindow(x, y, x+w-1, y+h-1); for (row=0; row=sizeof(sdbuffer)) { bmpFile.read(sdbuffer, sizeof(sdbuffer)); 버피드x =0; } // 픽셀을 BMP에서 TFT 형식으로 변환하고 푸시하여 표시 b =sdbuffer[buffidx++]; g =sdbuffer[버피드x++]; r =sdbuffer[버피드x++]; tft.pushColor(tft.Color565(r,g,b)); } } } } } bmpFile.close(); if(!goodBmp) Serial.println("BMP 형식이 인식되지 않습니다.");}// Bitmap/LCD Screenuint16_t read16(File f) { uint16_t result; ((uint8_t *)&결과)[0] =f.read(); // LSB((uint8_t *)&결과)[1] =f.read(); // MSB return result;}// Bitmap/LCD용 Screenuint32_t read32(File f) { uint32_t result; ((uint8_t *)&결과)[0] =f.read(); // LSB((uint8_t *)&결과)[1] =f.read(); ((uint8_t *)&결과)[2] =f.read(); ((uint8_t *)&결과)[3] =f.read(); // MSB return result;}// LCD Screenvoid drawTemperature(int temp) { // 온도의 자릿수 가져오기 intdigits =numDigits(temp); // 비트맵을 그리기 위한 커서 위치 정의 int x1_2 =62; 정수 x2_2 =32; 정수 x1_3 =1; 정수 x2_3 =1; 정수 x3_3 =1; 정수 y =38; 문자 숫자1[12]; 문자 숫자2[12]; 문자 숫자3[12]; 문자 숫자Str1[24]; 문자 숫자Str2[24]; 문자 숫자Str3[24]; // 첫 번째 숫자 가져오기 itoa(temp % 10, digit1,10); //Serial.println(임시 % 10); strcpy(digitStr1, ""); strcat(숫자Str1, 숫자1); strcat(digitStr1, ".bmp"); // 두 번째 숫자 얻기 if(digits ==2){ itoa((temp / 10) % 10, digit2,10); strcpy(digitStr2, ""); strcat(digitStr2, 숫자2); strcat(digitStr2, ".bmp"); } // 세 번째 숫자 얻기 if(digits ==3){ itoa((temp / 100) % 10, digit3,10); strcpy(digitStr3, ""); strcat(digitStr3, digit3); strcat(digitStr3, ".bmp"); } if(숫자> 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); }}// 스크린에서의 배치를 결정하기 위해 온도의 자릿수를 가져옵니다. int numDigits(int number){ int valLen =0; if(숫자> 99) valLen =3; 그렇지 않으면 valLen =2; return valLen;}// LED 색상 설정 무효 setColors(int r, int g, int b){ for(int i =0; i   

    맞춤형 부품 및 인클로저

    회로도

    Fritzing은 실제 구성 요소가 거의 없었기 때문에 사물의 흐름을 표현하기 위해 최선을 다했습니다.

    제조공정

    1. 습도 센서 작동 및 응용
    2. DHT11 센서 및 작동
    3. Sensirion:공기 청정기 및 HVAC 애플리케이션을 위한 다중 가스, 습도 및 온도 모듈
    4. Python 및 Raspberry Pi 온도 센서
    5. Raspberry Pi의 간편한 온도 및 습도
    6. Raspberry Pi 온도 및 광 센서
    7. Raspberry Pi 및 습도 센서를 사용한 수경재배
    8. 라즈베리 파이 온도 센서
    9. 습도 센서를 확인하고 보정하는 방법
    10. 랩온칩 유량 및 온도 센서