聚豐項目 > 智能移動(dòng)保濕器

智能移動(dòng)保濕器

我們團隊所設計的智能移動(dòng)保濕器主要具有以下特點(diǎn)及優(yōu)勢: 1. 可以實(shí)時(shí)檢測室內溫濕度的變化并顯示; 2. 該保濕器可根據檢測到的室內濕度與設定值(該閾值可修改)進(jìn)行比較,自動(dòng)啟動(dòng)加濕操作并提示,相比以往的家用保濕器,實(shí)現了智能化,這是我們的一個(gè)創(chuàng )新點(diǎn); 3. 該產(chǎn)品還具有移動(dòng)避障等功能。而傳統的保濕器基本上都是固定式的,這樣只能在局部進(jìn)行加濕,而對于室內整體的濕度上卻沒(méi)有改善,即容易造成局部濕度過(guò)高,且其它區域干燥無(wú)變化,因而,移動(dòng)避障的設計克服了該缺點(diǎn),具有更好的適應性,這也是我們的創(chuàng )新之處; 4. 二次開(kāi)發(fā)性強,還可以集成多種功能。目前市場(chǎng)上暫無(wú)該類(lèi)產(chǎn)品,所以可以增加類(lèi)似掃地機器人的清掃功能,向家用服務(wù)機器人邁進(jìn)一步。

憤怒者 憤怒者

分享
5 喜歡這個(gè)項目
團隊介紹

憤怒者 憤怒者

團隊成員

安華亮 學(xué)生

喬林軍 學(xué)生

羅亞哲 學(xué)生

分享
項目簡(jiǎn)介
我們團隊所設計的智能移動(dòng)保濕器主要具有以下特點(diǎn)及優(yōu)勢: 1. 可以實(shí)時(shí)檢測室內溫濕度的變化并顯示; 2. 該保濕器可根據檢測到的室內濕度與設定值(該閾值可修改)進(jìn)行比較,自動(dòng)啟動(dòng)加濕操作并提示,相比以往的家用保濕器,實(shí)現了智能化,這是我們的一個(gè)創(chuàng )新點(diǎn); 3. 該產(chǎn)品還具有移動(dòng)避障等功能。而傳統的保濕器基本上都是固定式的,這樣只能在局部進(jìn)行加濕,而對于室內整體的濕度上卻沒(méi)有改善,即容易造成局部濕度過(guò)高,且其它區域干燥無(wú)變化,因而,移動(dòng)避障的設計克服了該缺點(diǎn),具有更好的適應性,這也是我們的創(chuàng )新之處; 4. 二次開(kāi)發(fā)性強,還可以集成多種功能。目前市場(chǎng)上暫無(wú)該類(lèi)產(chǎn)品,所以可以增加類(lèi)似掃地機器人的清掃功能,向家用服務(wù)機器人邁進(jìn)一步。
硬件說(shuō)明

主控制器:Arduino開(kāi)發(fā)板,該開(kāi)發(fā)板有數字、模擬輸入輸出接口以及支持I2C,串行等多種通訊模式,本次設計開(kāi)發(fā)板由9V鎳氫電池供電,采用I2C協(xié)議與溫濕度傳感器通訊,并通過(guò)數字模擬檢測控制其余各模塊。

環(huán)境檢測傳感器:IDT公司的SDAH01溫濕度傳感器,具有±1.5%的相對濕度 (RH) 精度誤差,快速 RH 響應時(shí)間,0.01% RH的分辨率以及平均1.0μA的低功耗;

Mini空氣加濕與繼電器模塊:專(zhuān)用微孔霧化片和振蕩電路組成加濕模塊,采用5V直流供電,為了保證驅動(dòng)功率,由Arduino5V電源供電并由數字I/O給繼電器信號從而實(shí)現對加濕模塊的控制。

LCD1602顯示屏:實(shí)時(shí)顯示溫濕度變化,并通過(guò)電位器調節背光亮度;

L298N驅動(dòng)模塊與直流電機:L298N模塊可隔離控制部分與驅動(dòng)電路,且L298N驅動(dòng)能力遠高于Arduino,驅動(dòng)模塊使用9V鎳氫電池直接供電,Arduino只需輸出PWM脈沖信號到L298N驅動(dòng)模塊中,從而實(shí)現對移動(dòng)速度的無(wú)級調節,最終達到移動(dòng)加濕,保持室內濕度均勻的目的。

紅外與超聲避障模塊:在物體進(jìn)入紅外光電開(kāi)關(guān)與超聲測距模塊的檢測范圍內時(shí),可以輸出數字(紅外)與模擬信號(超聲)到Arduino中,進(jìn)行條件判斷并輸出相應的控制信號到電機驅動(dòng)電路中,例如控制電機的轉向,實(shí)現避障功能。

智能保濕器電路原理圖.pdf


軟件說(shuō)明

本項目采用Arduino自帶IDE進(jìn)行編程,C語(yǔ)言編程;

程序運行流程:

1.  超聲及紅外避障檢測;

2.  若障礙物進(jìn)入避障范圍內時(shí),執行避障操作,停止并根據不同方位傳感器的輸入信號可進(jìn)行停止,后退,左轉或直接向左后方及右后方轉向;

3.  同步進(jìn)行溫濕度檢測及保濕操作,通過(guò)I2C協(xié)議讀取傳感器的溫濕度值,并把該值通過(guò)LCD1602進(jìn)行顯示,同時(shí)把濕度值與預先設定的30%RH進(jìn)行比較,若當前室內濕度值小于濕度值,則給繼電器輸出信號,啟動(dòng)振蕩器進(jìn)行加濕操作;

4.  程序結束,循環(huán)執行。


運行代碼:

#include

#include

LiquidCrystal lcd(12, 11, 10, 13, 8, 7);//設置LCD1602接口

#define ADDRESS_HUMIDITY 0x44


//定義溫濕度傳感器高低位變量

byte humidity_high = 0;

byte humidity_low = 0;

byte tempature_high = 0;

byte tempature_low = 0;


int humidity_temp,tempature_temp;

double humidity,tempature;


//定義振蕩加濕器控制輸出

int humidifer=1;



//定義控制電機的PWM脈沖輸出

int INA = 3;

int INB = 5;

int INC = 6;

int IND = 9;


//定義超聲測距的控制接口

const int TrigPin = 2;

const int EchoPin = 4;

double distance;


//定義電機初始速度

int low_motor_speed=80;

int high_motor_speed=160;

int motor_speed=100;


//定義紅外光電傳感器輸入接口

int left_infrared_detect=A0;

int right_infrared_detect=A1;

int left_infrared=0;

int right_infrared=0; 


//程序初始化

void setup() 

{

   pinMode(INA,OUTPUT);

   pinMode(INB,OUTPUT);

   pinMode(INC,OUTPUT);

   pinMode(IND,OUTPUT);

   pinMode(humidifer,OUTPUT);

 

   pinMode(TrigPin, OUTPUT);

    // 要檢測引腳上輸入的脈沖寬度,需要先設置為輸入狀態(tài)

   pinMode(EchoPin, INPUT);


  Wire.begin();

  lcd.begin(16,2);

  lcd.clear(); //清屏

  delay(500); //延時(shí)1000ms

}


void loop() 

{

  //超聲傳感器檢測

  // 產(chǎn)生一個(gè)10us的高脈沖去觸發(fā)TrigPin

  digitalWrite(TrigPin, LOW);

  delayMicroseconds(2);

  digitalWrite(TrigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(TrigPin, LOW);

   // 檢測脈沖寬度,并計算出距離

  //delayMicroseconds(2);

  distance = pulseIn(EchoPin, HIGH) / 58.00;

 

//檢測到避障傳感器輸入,進(jìn)行避障動(dòng)作

 if(infrared())

   {

     stopmove();

     if(left_infrared<100&&right_infrared>900)

      {

        negative_left();

        delay(500);

        }

     else if(left_infrared>900&&right_infrared<100)

       {

        negative_right();

        delay(500);

       }    

     else 

       {

          negative();

          delay(1000);

          left();

          delay(500);

        }

    }

  else if(distance<12)

   {

    negative();

    delay(500);

    left();

    delay(500);

  }

  else

   positive();


//調用溫濕度檢測顯示函數

  HUMIDITY();

}


void positive()//前進(jìn)

{

  digitalWrite(INA,LOW);

  analogWrite(INB,motor_speed);

  analogWrite(INC,motor_speed);

  digitalWrite(IND,LOW);

  }


  void negative()//后退

{

  analogWrite(INA,motor_speed);

  digitalWrite(INB,LOW);

  digitalWrite(INC,LOW);

  analogWrite(IND,motor_speed);

  }


 void right()//右轉

 {

  digitalWrite(INA,LOW);

  analogWrite(INB,motor_speed);

  digitalWrite(INC,LOW);

  digitalWrite(IND,LOW);

  }


void left()//左轉

{

  digitalWrite(INA,LOW);

  digitalWrite(INB,LOW);

  analogWrite(INC,motor_speed);

  digitalWrite(IND,LOW);

  }

  

 void stopmove()//停止

 {

  digitalWrite(INA,LOW);

  digitalWrite(INB,LOW);

  digitalWrite(INC,LOW);

  digitalWrite(IND,LOW);

  }


  void negative_left()//向左后方倒退

{

  analogWrite(INA,low_motor_speed);

  digitalWrite(INB,LOW);

  digitalWrite(INC,LOW);

  analogWrite(IND,high_motor_speed);

  }


 void negative_right()//向右后方倒退

{

  analogWrite(INA,high_motor_speed);

  digitalWrite(INB,LOW);

  digitalWrite(INC,LOW);

  analogWrite(IND,low_motor_speed);

  }

  

void HUMIDITY()//溫濕度檢測

{

//HS300x傳感器與Arduino通過(guò)I2C協(xié)議通訊

  Wire.beginTransmission(ADDRESS_HUMIDITY); 

  Wire.endTransmission(); 

  delay(200);

  Wire.requestFrom(ADDRESS_HUMIDITY,20);

  humidity_high = Wire.read();

  humidity_low = Wire.read();

  tempature_high = Wire.read();

  tempature_low = Wire.read();


//數據轉換


  humidity_temp=((humidity_high<<8)|humidity_low)&0x3fff;

  tempature_temp=((tempature_high<<6)|tempature_low>>2)&0xfffc;


  humidity=humidity_temp/(pow(2,14)-1)*100.0*10;

  tempature=(tempature_temp/(pow(2,14)-1)*165-40)*10;


//LCD1602屏顯示溫濕度

  lcd.setCursor(0, 0) ;   //設置光標位置為第1行第1個(gè)位置

  lcd.print("IDT Humi=");

  lcd.print((int)humidity/10);//顯示整數部分

  lcd.print(".");

  lcd.print((int)humidity%10);//顯示小數部分

  lcd.print("%RH");

  

  lcd.setCursor(0, 1) ;

  lcd.print("IDT Temp=");

  lcd.print((int)tempature/10);//顯示整數部分

  lcd.print(".");

  lcd.print((int)tempature%10);//顯示小數部分

  lcd.print((char)223);

  lcd.print("C");


  if(humidity<300)

    digitalWrite(humidifer,LOW);

  else

    digitalWrite(humidifer,HIGH);

  }


 int infrared()//紅外光電檢測

 {

  left_infrared=analogRead(left_infrared_detect);

  right_infrared=analogRead(right_infrared_detect);

  if(left_infrared<100||right_infrared<100)

    return 1;

  else

    return 0;

  }

  


演示效果

智能保濕器圖片.jpgHS300x系列溫濕度檢測傳感器.jpgLCD屏顯示.jpg振蕩加濕.jpg濕度上升.jpg停止加濕.jpg移動(dòng)避障加濕.jpg

附件

(0.16 MB)下載

評論區(1 )
  • 葬花佛: 您好,對您這邊的項目很感興趣,可以加微信聊聊嗎?鞏文潔,18222005391微信手機同號

    回復

亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看