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