05 智慧植栽

末本教材連結:http://gg.gg/0923fs

時間:2021.09.23(四)09:00~12:00

講師:黃文玉

  • 高雄市新上國小電腦老師

  • 高雄市SCRATCH推廣教師

  • 教育部中小學教師運算思維增能研習種子教師

  • Facebook S4A社團管理員之一

  • 致力Scratch、Arduino、micro:bit、Web:Bit、凱比機器人等程式教育及創客教育的推廣(分享一系列的文章)


(2021/08/18)

這是下個月要去某校介紹【智慧植栽】的教材,這次是採用PictoBlox寫程式來控制Arduino開發板,最主要是利用土壤濕度感測器來偵測土壤是否太乾,是否需要澆水。使用最簡單的Scratch程式,來完成互動模式、離線模式及藍牙控制,感覺還蠻簡單的,內容如下,供參

一、智慧植栽製作說明

  • 上課的課程內容

    1. 利用PictoBlox平台寫程式控制Arduino

    2. 用scratch設計智慧植栽的控制面板

    3. 常見輸出輸入元件或感測器的測試

    4. 智慧植栽系統的組裝

    5. 製作【互動版】的智慧植栽系統(要與電腦連線)

    6. 製作【離線】的智慧植栽系統(不用與電腦連線)

    7. 利用手機的APP來控制Arduino開發板


  • 設備連接圖

  • 所需材料

    • Arduino Uno開發板 X1

    • Easy Module Shield 擴展板 X1

    • 土壤濕度感測器 X1

    • 繼電器 X1

    • 水泵 X1

    • 提供水泵供電設備(USB線或電池盒)

    • 1602LCD顯示器

    • HC-06(藍牙模組)X1

    • 母母杜邦線 X14


  • 擴展板上的元件及腳位說明

    • 按鈕1:D2

    • 按鈕2:D3

    • 溫濕度感測器(DHT11):D4

    • 蜂鳴器:D5

    • 紅外線接收器:D6

    • 三色LED燈:D9~D11

    • 紅色LED燈:D12

    • 色LED燈:D13

    • 可變電阻器(電位計):A0

    • 光敏電阻:A1

    • LM35溫度感測器:A2

    • I2C腳位:GND、VCC、SDA(A4)、SCL(A5)

    • UART腳位:GND、VCC、RXTX,燒錄時要先拔掉

  • 其他外接元件的所使用腳位

    • 土壤濕度感測器接A3

    • 繼電器接D7

二、SCRATCH互動模式

(一)使用硬體,這邊是使用 Arduino Uno開發板

  • 選擇板子

  • 選擇連接埠(先把Arduino Uno利用USB線與電腦連接)

  • 如果要使用互動模式,還要把使用PictoBlox環境的【韌體】燒錄進入Arduino Uno板子

(二)簡單測試

  • 我們可以直接透過腳位取得輸入的訊號值

    • 腳位可分【數位腳位】(0、1)及【類比腳位】(0~1023)

    • 訊號可分【輸入訊號】及【輸出訊號】

  • 請大熊說出按鍵1(D2)(數位輸入)及可變電阻器(A0)(類比輸入)的值

    • 如何請大熊說出這兩個值?

    • 如果把一個值給其他角色來說時,會出現問題!

    • 因此發現本軟體,【硬體感測值】要放在同一個角色比較沒問題

    • 如果要多角色來呈現時,就要以【變數】的方式來處理


  • 我們也可以透過腳位及別人寫好的積木(函式),【間接】取得我們所需要的值,如溫度、濕度、距離...

  • 如果沒有大師寫好可用的模組積木,那我們就沒得玩了!

  • 請大熊說出目前的溫濕度

  • 請大熊說出目前的溫度,請小貓說出目前的光亮度

  • 發現本軟體,【硬體感測值】放在同一個角色比較沒問題

  • 建議把要使用的硬體感測值用【變數】的方式來存放

()設計擴展板的【控制及顯示面板】

  • 輸入裝置的資訊顯示如下

    • 日期、時間

    • 溫度

    • 濕度

    • 光亮度

    • 可變電阻器的值

    • 按鍵1

    • 按鍵2

  • 數字以圖片方式來顯示 (此部分在時間充裕下才介紹)

    • 直接匯入我寫好的【圖形數字角色】

    • 再修改程式如下:

  • 顯示某一資料的【動態數據圖】 (此部分在時間充裕下才介紹)

    • 首先先添加【畫筆】積木 ,後面角色才能匯得進來

    • 再來直接匯入我寫好的【數據動態圖角色】

  • 加入對外控制的【按鍵】(手動控制的部份)

    • 點亮/關閉【LED燈1】

    • 點亮/關閉【LED燈2】

    • 點亮/關閉【繼電器】

      • 加裝繼電器,接D7腳位

  • 加入元件互動 (自動偵測的部份)

    • 天黑請開燈

    • 天熱請開扇

  • 加入本次的主角【土壤濕度感測器】

    • 土壤濕度感測器接在A3腳位

    • 先測試土壤濕度

    • 在控制面板加上顯示土壤濕度值

    • 把水泵接到繼電器的NO及COM上

三、離線模式

  • 利用【1602LCD顯示器】來顯示量測到的資訊,顯示內容如下

    • 溫度

    • 濕度

    • 光感測值

    • 土壤濕度的類比值

  • 可設定自動或手動(利用可變電阻器來設定【自動】或【手動】)

    • 自動偵測的部份

      • 天黑請開燈

      • 土乾請澆水

    • 手動控制的部份

      • 按鍵開關燈(按鍵1控制D13LED燈)

      • 按鍵開關繼電器(按鍵2控制D7繼電器)

  • 積木程式,如下:

    • 變數不能用中文

  • 另外,在取變數名稱時,也出現了一個問題,我把變數取【auto】就是會有問題,不知是不是不可使用的名稱

  • 由於變數是選Number時,會採用float(浮點型態),因此顯示時會有小數點,因此利用修改原始碼的方式,把變數改為int(整數型態)

  • 又由於手動時,按鍵按一下亮燈,再按一下滅燈,繼電器也是一樣,因此透過修改原始碼來簡化積木的使用

  • 測試結果:

    • 土壤濕度感測器沒有真正去實作,因此究竟要用多大的值代表太乾,然後去啟動繼電器就要自己測試一下

、利用手機控制

  • 使用HC06藍牙模組來與手機連線

  • HC06接線說明

    • 預設:

      • HC06的TX接Uno的D2

      • HC06的RX接Uno的D3

      • VCC接VCC

      • GND接GND

    • 但本例中,使用擴展板的D2、D3已被占用,只能用D0及D1

      • HC06的TX接Uno的RX(D0)

      • HC06的RX接Uno的TX(D1)

      • VCC接VCC

      • GND接GND

  • 簡易程式:

  • HC06使用注意:`

    • 鮑速要設38400

    • 如果採用預設的接法(TX接D2、RX接D3),不用修改原始碼

    • 如果採用TX接D0、RX接D1,則要修改原始碼為 Dabble.begin(38400,0,1);

    • 在燒錄時會用到D0及D1腳位來傳輸資料,所以要先把HC06接到D0及D1的線先拔掉,等燒錄成功後,再把HC06的線接上

  • 手機部份

    • 安裝Dabble的APP

    • 使用前記得先去【藍牙設定】,配對密碼為1234

    • Dabble操作如下

    • 可使用LED on、LED off、relay on、relay off 這些字可以用語音來呈現