RM新时代网站-首页

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

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

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

憤怒者 憤怒者

分享
5 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

憤怒者 憤怒者

團(tuán)隊(duì)成員

安華亮 學(xué)生

喬林軍 學(xué)生

羅亞哲 學(xué)生

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

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

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

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

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

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

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

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


軟件說(shuō)明

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

程序運(yùn)行流程:

1.  超聲及紅外避障檢測(cè);

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

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

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


運(yùn)行代碼:

#include

#include

LiquidCrystal lcd(12, 11, 10, 13, 8, 7);//設(shè)置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;



//定義控制電機(jī)的PWM脈沖輸出

int INA = 3;

int INB = 5;

int INC = 6;

int IND = 9;


//定義超聲測(cè)距的控制接口

const int TrigPin = 2;

const int EchoPin = 4;

double distance;


//定義電機(jī)初始速度

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);

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

   pinMode(EchoPin, INPUT);


  Wire.begin();

  lcd.begin(16,2);

  lcd.clear(); //清屏

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

}


void loop() 

{

  //超聲傳感器檢測(cè)

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

  digitalWrite(TrigPin, LOW);

  delayMicroseconds(2);

  digitalWrite(TrigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(TrigPin, LOW);

   // 檢測(cè)脈沖寬度,并計(jì)算出距離

  //delayMicroseconds(2);

  distance = pulseIn(EchoPin, HIGH) / 58.00;

 

//檢測(cè)到避障傳感器輸入,進(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();


//調(diào)用溫濕度檢測(cè)顯示函數(shù)

  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()//右轉(zhuǎn)

 {

  digitalWrite(INA,LOW);

  analogWrite(INB,motor_speed);

  digitalWrite(INC,LOW);

  digitalWrite(IND,LOW);

  }


void left()//左轉(zhuǎn)

{

  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()//溫濕度檢測(cè)

{

//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();


//數(shù)據(jù)轉(zhuǎn)換


  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) ;   //設(shè)置光標(biāo)位置為第1行第1個(gè)位置

  lcd.print("IDT Humi=");

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

  lcd.print(".");

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

  lcd.print("%RH");

  

  lcd.setCursor(0, 1) ;

  lcd.print("IDT Temp=");

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

  lcd.print(".");

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

  lcd.print((char)223);

  lcd.print("C");


  if(humidity<300)

    digitalWrite(humidifer,LOW);

  else

    digitalWrite(humidifer,HIGH);

  }


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

 {

  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系列溫濕度檢測(cè)傳感器.jpgLCD屏顯示.jpg振蕩加濕.jpg濕度上升.jpg停止加濕.jpg移動(dòng)避障加濕.jpg

附件

(0.16 MB)下載

評(píng)論區(qū)(1 )
  • 葬花佛: 您好,對(duì)您這邊的項(xiàng)目很感興趣,可以加微信聊聊嗎?鞏文潔,18222005391微信手機(jī)同號(hào)

    回復(fù)

RM新时代网站-首页