這幾天工作忙得差不多了,有點時間繼續折騰我的arduino,上次從TB買的arduino 套件中有一個人體熱能感應模塊,就是用來感應人體接近信號的。今天我們用這個東東來做一個簡易的智能垃圾桶。要實現的功用是:當有人接近時,垃圾能用自動打開蓋子,人離開時,蓋子能自動關閉。
一、所需材料和工具:
1 Arduino單片機 我用的是Arduino Nano
2 人體熱能感應模塊
我用的是一個雜牌的,但接線和使用方式和HC-SR501一樣
3 舵機 SG90
4 翻蓋式垃圾桶 最好是小一點的。
5 手機充電頭和mini USB電源線 直接給單片機供電用的,不是我們手機個常用的microUSB接口或TYPE C接口。
6 導線
7 熱熔膠槍
8 電烙鐵
9 刀片及其它工具
說明:
1、因為SG90舵機的扭矩很小(可以理解為這個舵機沒多大勁),只能推動小垃圾桶的蓋子,如果垃圾桶過大,我們就需要扭矩更大的舵機,並需要給舵機單獨供電。
2、我的arduiono套件隨機贈送的人體熱能感應模塊是一個雜牌的東東,但接線和使用方法與HC-SR501相同。
二、程序代碼
代碼很簡單,只有幾行。
#include //舵機所需類的頭文件
/*
* 本例結合人體紅外感應模塊和舵機實現對垃圾桶的自動控制。
* 當人接近或離開垃圾桶時,單片機根據信號強度的變化,操作舵機旋轉到指度角度,實現垃圾桶的自動開關。
* 人體紅外感應模塊型號為HC-SR501,三條線分別為+5伏,地線和輸出信號口,輸出信號接A3
* 舵機用型號為sg90,本舵機有三條線,紅為+5伏,褐色為GND,橙色為信號給,本例接pin9
* 本例在arduino nano上實驗通過
*/
Servo myservo; // 創建舵機對象來控制舵機
int angle_pos = 0;
int pin_sensory= A3;//設置A3接人體感應信號的out口
int value;
void setup()
{
// 初始化串口通信
Serial.begin(9600);
Serial.println("Signal Intensity:");
// 把連接在引腳9上的舵機賦予舵機對其控制
myservo.attach(9);
pinMode(pin_sensory,INPUT);
myservo.write(angle_pos);
}
void loop()
{
value= analogRead(pin_sensory);
Serial.println(value);
angle_pos=myservo.read();
if (value>=400)//當值大於400時,舵機轉到90度,垃圾桶開蓋。
//這個值需要自己根據不同距離調整,距離越近,信號越強,經驗數據:在距離探頭20公分時,強度值約800,人離開后,強度值約40。
{
myservo.write(90);//舵機轉到90度
delay(50);
}
else
{
delay(50);
myservo.write(0);//舵機回到0度
}
delay(1000);
} 鄭州男科醫院:http://nkmobile.zztjyy.com/鄭州男科醫院哪家好:http://nkmobile.zztjyy.com/鄭州同濟做包皮手術多少錢:http://nkmobile.zztjyy.com/
三、線路連接
實物連接如下圖:
說明一下:
1、SG-90舵機上有三條線,一般情況下棕色是地線,接GND,紅色是V+,接正5伏,橙色為控制線,我接在9號接口。
舵機有兩種驅動方式,第一種方式是無驅動的,可以用在所有可用的端口上,但程序代碼比較復雜,用起來相對麻煩,第二種是有驅動的,代碼非常簡單,但只能接在9、10兩個口上,本例中使用第二種方式(所在我們代碼的開頭第一行就引用了舵機驅動類的頭文件)。
2、HC-SR501人體熱能感應模塊也有三個接口,上面標的有,VCC接正5伏,GND接地線,OUT我接在A3上。
3、本來還想加一個LED指示燈,用來在夜間指示垃圾桶的位置,但感應模塊上有一個藍色的指示燈,在人體接近時就會自動點亮,所以這個就省了。
四、安裝和調試
1、寫入程序,這個都會,我用的是arduino IDE(1.8.5版的),將上面的代碼復制進去,在面包板上按上圖接好,編譯后直接點擊上傳就行了。
2、改裝垃圾桶
我找的垃圾桶是那種翻蓋的桌上小垃圾桶,蓋子像一個翹翹板。將蓋子從限位銷中取出來,用刀片將限位銷去掉,然后在限位銷的位置打孔。
然后找一個用完的水筆芯(之所以選擇水筆芯,是因為他的粗細剛好能套在舵機主軸的齒輪上,而且結合得非常緊。)穿過剛才打的孔和垃圾桶蓋子上的孔,並用熱熔膠固定。
然后在垃圾外側固定舵機、單片機和感應模塊,為了外面美觀一些,我用3D打印機做了一個小盒子放單片機和感應模塊,沒有的朋友可以用一個雪茄盒或其它材料代替。
將舵機主軸插入水筆芯的孔中,並用熱熔膠將舵機和小盒子固定住。
需要注意的時,舵機主軸固定在水筆芯的時候要注意舵機的0度和90度位置,以免出現初始化時垃圾桶蓋子關不嚴的情況。
五、運行效果
使用miniUSB線和手機充電頭給arduino通過5伏直流電,就可以運行了,運行情況見以下視頻連接。看起來拉風吧!