林委鋒
“老師,今天我們要學(xué)習(xí)什么呢?”“同學(xué)們好!大家看過《火星救援》這部電影嗎?電影中的男主角馬克通過燃燒氫氣制造水,然后用來灌溉土壤,種植土豆。怎樣讓這珍貴的水資源被充分利用而不浪費(fèi)呢?一個好的辦法是檢測土壤的濕度,根據(jù)檢測的數(shù)據(jù)來供水。對了,這就要用到土壤濕度檢測傳感器?,F(xiàn)在,就來制作一個有這種功能的機(jī)器人,我們給它起個酷酷的名字——‘火星1號。”
“火星1號”機(jī)器人要實(shí)現(xiàn)的功能是檢測土壤的濕度,并且能把檢測數(shù)據(jù)顯示出來。如圖1所示,實(shí)現(xiàn)檢測土壤濕度這個功能的模塊所需的元件有:Arduino Mega 2560控制板、液晶顯示屏I2C LCD1602、土壤濕度傳感器。
隨著制作的機(jī)器人功能越來越多,我們發(fā)現(xiàn)Arduino UNO板的接口不夠用了,那怎么辦呢?這里我們使用了一個新的控制板Arduino Mega 2560,它的數(shù)字端口有54個,可以連接更多的設(shè)備。但在編程的時候要注意修改主程序工具欄的板卡選項(xiàng),改為Arduino Mega 2560,否則程序下載的時候會因出錯報(bào)警。
“火星1號”機(jī)器人用到的土壤濕度傳感器有4個引腳,分別是電源端VCC、接地端GND、數(shù)字輸出端DO和模擬輸出端AO。傳感器使用的電源為3.3~5V。將VCC和GND分別接Arduino板的電源端和接地端,AO接Arduino板的模擬接口端A0,編寫一個測試程序,檢測傳感器是否能工作,將測試結(jié)果輸出到串口監(jiān)視器上,如圖2- 1、2- 2所示。通過實(shí)驗(yàn)可得,當(dāng)傳感器電源VCC接Arduino板的5V時,傳感器在沒有接觸水的情況下,其輸出值為1023;將探測端插入土壤中,慢慢給土壤注入水,模擬濕度變化,隨著濕度的增加,輸出值越來越小。如果傳感器電源VCC端接Arduino板的3.3V,在不接觸水的情況下,AO輸出值會比較小,為746左右。
液晶顯示屏I2C LCD1602是一個帶有I2C總線轉(zhuǎn)接板的藍(lán)色液晶顯示屏。如圖3所示,它共有4個引腳,分別是電源端VCC、接地端GND、數(shù)據(jù)端口SDA、數(shù)據(jù)端口SCL。液晶屏的VCC端接Arduino板的5V,顯示屏的數(shù)據(jù)端口SDA、SCL接Arduino Mega 2560控制板上的針腳20(SDA)和21(SCL)。如果是使用Arduino UNO,則端口SDA、SCL應(yīng)分別接Arduino UNO的模擬端口的A4、A5,這兩個端口不可接反。
在Ardublock的Generic Hardware中有一個I2C LCD1602液晶顯示屏的顯示模塊,如圖4所示。這個模塊有4個參數(shù):
(1)print輸出端,默認(rèn)輸出一個提示字符串:SainsmartLCD. I2C。
(2)line端,表示顯示內(nèi)容在液晶屏的第幾行上顯示。
(3)char端,表示顯示內(nèi)容從第幾個字符位置處開始顯示。
(4)address端,表示數(shù)據(jù)寫入的地址,默認(rèn)為3F。但有些液晶顯示屏的地址不是3F,可能是27或其他。此時可從網(wǎng)上下載地址掃描程序,找到顯示屏的寫入地址。
將輸出端print的提示字符串改為humidity,然后從通信模塊中拖出“和模擬量結(jié)合”指令,連接到提示字符串后面,再從引腳模塊中拖出“模擬針腳”指令,連接到前一指令后?!澳M針腳”后面的參數(shù)為A0,也就是前面土壤濕度傳感器與Arduino板的連接端口A0。
程序編好后下載到Arduino板并運(yùn)行,“火星1號”機(jī)器人就可以開始工作了!
附:液晶顯示屏的地址掃描程序是一個C語言程序(下載地址:http://pan.baidu.com/s/1qYvUSpQ),下載運(yùn)行后,打開串口監(jiān)視器,就可以找到液晶屏的數(shù)據(jù)寫入地址。