文 湖北省宜昌市夷陵中學 付偉韜
智能垃圾桶
文 湖北省宜昌市夷陵中學 付偉韜
垃圾桶是日常生活中的常用物品。傳統的垃圾桶開蓋時均需采用手動或腳踩方式實現,既不衛生又不方便。同時,隨著垃圾桶中垃圾的增多,細菌在其中滋生,如果不及時清理,會散發臭氣和有害物質,影響人體的健康。
我設計了一種智能垃圾桶,它無需手或腳接觸垃圾桶,只需讓手靠近垃圾桶頂部,垃圾桶的蓋子就會自動打開,投入垃圾后桶蓋自動關閉。當垃圾桶快裝滿時,會發出聲音和燈光提醒。
人體感應模塊可安裝在垃圾桶頂部,便于用戶接近時受到感應。觸發距離建議設在15cm左右,既能保證及時打開蓋子,又能防止誤觸發。開蓋動作可采用伺服電機驅動,便于根據桶蓋的開合角度設定電機的定位角度值。
當垃圾將要裝滿時,超聲波信號被遮擋,傳感器測得的距離減小,系統計算的距離小于設定的閥值時,系統將進行警示,提醒及時處理垃圾。測距模塊可安裝在垃圾桶內側頂部,并根據垃圾桶的口徑設定閥值。可通過同時點亮LED燈和使蜂鳴器發聲進行警示。
智能垃圾桶的系統結構如下圖。

系統總體結構圖
所需的元器件有ArduinoUNOR3開發板、紅外避障模塊、伺服電機SG90、測距模塊HC-SR04、LED燈(紅、綠)、蜂鳴器、9V電池、面包板、10K電阻、連接線。
把以上各組件分別和垃圾桶組裝在一起,通過導線連接各組件,輸入代碼程序測試各部位動作和信號。最終測試成功,同時發出聲、光提示信號。

智能垃圾桶成品圖
void openDoor()//檢測開門信號
{int SensorState
=digitalRead(SensorPin);
//讀取2引腳的電平
if(SensorState==
1){
digitalWrite(greenledPin,LOW);
myservo.write(180);//關門
openCheck=0;
}
else{if(openCheck==1){
digitalWrite(greenledPin,HIGH);
myservo.write(90);//開門}
else openCheck=1;//保存第一次檢測結果
}delay(2000);//防止開蓋誤判延時2秒
}
void fullCheck()//檢測桶滿信號
{digitalWrite(TrigPin,HIGH);//向TRIG接口發送高電平
delayMicroseconds(15);//延時15微秒
digitalWrite(TrigPin,LOW);//向TRIG接口發送低電平
int pulseTime=pulseIn(EchoPin,HIGH);//讀出脈沖時間,單位為微秒
distance=pulseTime*0.17;//將脈沖時間轉化為距離,單位為毫米,聲速為340m/s
if(distance<limit)//如果距離小于閥值警示燈亮起,蜂鳴器發出do,re,mi聲調提示音
{digitalWrite(redledPin,HIGH);
tone(tonePin,523);delay(200);
tone(tonePin,578);delay(200);
tone(tonePin,659);delay(200);
noTone(tonePin);}
else//如果距離大于閥值警示燈熄滅,蜂鳴器不發聲
{digitalWrite(redledPin,LOW);
noTone(tonePin);}
智能垃圾桶功能基本實現,但在測試過程中還存在如下問題。
1.當有人或物體偶然從垃圾桶前經過,可能會導致桶蓋誤開。可在系統第一次檢測到開門信號時,不立即開桶蓋,而是延遲2秒鐘后再次檢測,如果又接收到開門信號,才觸發伺服電機動作,打開桶蓋。這也要求手在感應器前至少停留2秒鐘才有效。
2.消除伺服電機的抖動。在測試過程中,需使用USB線連接電腦、上傳代碼,發現伺服電機在固定角位有微小的顫動。這是由于伺服電機較敏感,在驅動伺服電機轉向時接入負載的變化會引起電壓的微小變化,導致伺服電機抖動。所以,可改用獨立的電源為伺服電機供電。
總之,Arduino電子互動平臺擁有使用簡單、功能多樣、價格低廉等優點,每個愛上它的人都可以插上想象的翅膀,創造出一個個屬于自己的智能創意作品。
