工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

美しく仕上げられた湿度および温度センサー

コンポーネントと消耗品

>
Arduino UNO
× 1
Adafruit NeoPixelリング:WS2812 5050 RGB LED
× 1
DHT22温度センサー
× 1
Adafruit 1.44 "MicroSDカードブレイクアウト付きカラーTFTLCDディスプレイ-ST7735R
× 1
ブレッドボード(汎用)
× 1
4xAAバッテリーホルダー
× 1
ジャンパー線(汎用)
× 1

必要なツールとマシン

>
はんだごて(汎用)
ホットグルーガン(汎用)

このプロジェクトについて

このプロジェクトの裏話

クルミのダブテールケースを作成し、見つけやすいArduinoコンポーネントを使用して、木材店向けのスタイリッシュで便利な湿度と温度のモニターを作成した方法を学びましょう。このDIYプロジェクトでは、Arduino UnoとAdafruitの優れた部品を使用して、クルミのアリ溝と初心者向けの電子機器を使った木工を少し紹介します。

私たちはテキサス州中部に住んでおり、春には湿度と気温が大幅に変動します。これは、特定の木工プロジェクトにとって悲惨な結果になる可能性があります。このクールなプロジェクトは、湿度が変化したり高くなり始めたりしたときに警告を発するのに役立ちます。これにより、木材プロジェクトを家に移動したり、湿度の高い天候のときに製粉を行わなかったりするなどの予防策を講じることができます。見た目も素晴らしく、ロゴも素敵です!

私たちはArduinoとElectronicsに慣れていないので、これを作成するときに学びました。素晴らしいものを作るのがいかに簡単であるかがわかった今、私たちはより多くのプロジェクトを作ることに非常に興奮しています。

詳細なビルドビデオをご覧ください!

コード

  • Arduinoワークショップセンサーコード
Arduinoワークショップセンサーコード Arduino
 #include  #include  #include  #include  #include  #include  #include  //オンラインで見つけることができるDHTXXライブラリがたくさんあります。それらはすべてさまざまなレベルの機能を備えています。//ピンの定義#defineTFT_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 //グローバル変数9999; //(数字はグラフに対応しています。以下を参照してください。)CRGBleds [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( "Failed!");戻る; } //画面の背景を黒に設定tft.fillScreen(ST7735_BLACK); // LEDを初期化しますFastLED.addLeds (leds、PIXEL_NUM); //ループを開始する前にすべてを追いかけますdelay(500);} // LOOPvoid loop(){//センサーデータを取得しますdht.readTemperature(); dht.readHumidity(); int f =dht.temperature_F; //華氏での度数inth =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( "%"); //遅延delay(1000); } //ビットマップの描画-これはLCD画面用ですvoidbmpDraw(char * filename、uint8_t x、uint8_t y){File bmpFile; int bmpWidth、bmpHeight; // W + H(ピクセル単位)uint8_t bmpDepth; //ビット深度(現在は24でなければなりません)uint32_t bmpImageoffset; //ファイルuint32_tの画像データの開始rowSize; //常にではない=bmpWidth;パディングuint8_tsdbuffer [3 * BMP_BUF]がある可能性があります。 //ピクセルバッファ(ピクセルあたりR + G + B)uint8_t buffidx =sizeof(sdbuffer); // sdbufferブール値の現在の位置goodBmp =false; //有効なヘッダーでtrueに設定されますparseboolean brief =true; // BMPは下から上に格納されますintw、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( "Loading Bitmap Image: '"); // Serial.print(filename); // Serial.println( '\' '); //要求されたファイルをSDカードで開きますif((bmpFile =SD.open(filename))==NULL){Serial.print( "ビットマップファイルが見つかりません!");戻る; } // BMPヘッダーを解析しますif(read16(bmpFile)==0x4D42){read32(bmpFile); (void)read32(bmpFile); bmpImageoffset =read32(bmpFile); //Serial.println()); read32(bmpFile); bmpWidth =read32(bmpFile); bmpHeight =read32(bmpFile); 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;フリップ=false; } //ロードする領域を切り抜くw =bmpWidth; h =bmpHeight; 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)); buffidx =0; } //ピクセルをBMPからTFT形式に変換し、プッシュして表示しますb =sdbuffer [buffidx ++]; g =sdbuffer [buffidx ++]; r =sdbuffer [buffidx ++]; tft.pushColor(tft.Color565(r、g、b)); }}}}}} bmpFile.close(); if(!goodBmp)Serial.println( "BMP形式が認識されません。");} //これはビットマップ/ LCD画面用ですuint16_tread16(File f){uint16_t result; ((uint8_t *)&result)[0] =f.read(); // LSB((uint8_t *)&result)[1] =f.read(); // MSBは結果を返します;} //これはビットマップ/ LCD用ですScreenuint32_tread32(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の結果を返します;} // LCD画面に温度を描画しますvoiddrawTemperature(int temp){//温度の桁数を取得しますintdigits =numDigits(temp); //ビットマップを描画するためのカーソル位置を定義しますintx1_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]; //最初の桁を取得itoa(temp%10、digit1,10); //Serial.println(temp% 10); strcpy(digitStr1、 ""); strcat(digitStr1、digit1); strcat(digitStr1、 "。bmp"); // 2桁目を取得if(digits ==2){itoa((temp / 10)%10、digit2,10); strcpy(digitStr2、 ""); strcat(digitStr2、digit2); strcat(digitStr2、 ".bmp"); } // 3桁目を取得if(digits ==3){itoa((temp / 100)%10、digit3,10); strcpy(digitStr3、 ""); strcat(digitStr3、digit3); strcat(digitStr3、 ".bmp"); } if(digits> 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の色を設定するvoidsetColors(int r、int g、int b){for(int i =0; i  

カスタムパーツとエンクロージャー

回路図

フリッツィングには実際のコンポーネントがほとんどなかったので、物事の流れを表現するために最善を尽くしました。

製造プロセス

  1. 湿度センサーの動作とその応用
  2. DHT11センサーとその動作
  3. Sensirion:空気清浄機およびHVACアプリケーション用のマルチガス、湿度、および温度モジュール
  4. 温度/湿度センサーは厳密な線形応答を提供します
  5. PythonとRaspberryPiの温度センサー
  6. ラズベリーパイの簡単な温度と湿度
  7. ラズベリーパイ温度および光センサー
  8. ラズベリーパイと湿度センサーを備えたエアロポニックス
  9. ラズベリーパイ温度センサー
  10. 湿度センサーをチェックして校正する方法
  11. ラボオンチップフローおよび温度センサー