2014/07/04

烘豆機改造 - 3, 操作介面

【弄了一個 20*4 的顯示器,不用接電腦就可以控制烘豆機】

還沒把之前的線路實際裝上 Rotate Fun 300 之前,又想到一個想做的東西,
就是可以連接一個顯示器,這顯示器可以用來顯示豆溫、
顯示目前烘焙的時間、以及各項關於烘豆的資訊,並能夠有簡單的操作介面。
如此一來,即使沒有連上電腦,也可以操作這個烘豆機外掛,
並透過顯示器來得知各項資訊。

要讓 RPi 可以顯示畫面,可以透過 HDMI 接上螢幕,或是連接 Video out 到電視。
而在這個烘豆機外掛中,則是要用一個 20 * 4 的 LCD 螢幕來顯示畫面。
與一般螢幕不同,這種顯示器只能顯示文字,有不同的規格,
主要是 16 * 2 與 20 * 4 兩種,前面是有兩行,一行可以顯示 16 個字,
後者則是有 4 行,一行可以顯示  20 個字,我用的就是後面這個,
型號為2004,背光顏色是藍色。
【20 * 4 的顯示器,背光是藍色的】

【顯示器的背面照】

因為 RPi 的 GPIO 有限,所以在網拍上,找的是額外接上 I2C 模組的顯示器,
這樣的話,不會用掉 RPi 有限的 GPIO。
【直接接在 LCM 的 I2C 模組,以節省 GPIO】

然而這樣的顯示器就沒有在網路上找到給 RPi 使用的 Sample Code 了,
只有在買的時候網拍業者附的 C++ Sample Code 可以參考。

照著網拍業者的 C++ Sample Code,把他們轉成 Python 的程式及使用 RPi 的 API,
運氣不錯的,可以透過 I2C 成功的在螢幕上顯示文字。

接著再去買了一個 4 * 4 的鍵盤,共有 16 個按鈕,要利用這個小鍵盤來控制烘豆。
要控制什麼:
1. 可以用來開始 / 結束烘豆
2. 可以用來啟動 / 停止計時器
3. 可以看豆溫、環境溫濕度、及 RPi 系統的資訊
4. 快速開火、關火
5. 可以在咖啡一爆、二爆的時候,通知 RPi,以記錄當時的時間與溫度
【很精簡的 4*4 鍵盤】

關於 4*4 的鍵盤驅動,可以在網路上找到許多資訊,
我則是看台南大學的說明實作出來的。
4 * 4 的鍵盤有 8 根 Pin,主要是採用掃描的方式來檢查是否有按鈕按下,
原理是有 4 Pin 為輸出,另外 4 Pin 是輸入,預設全部都設定為高準位。
開始掃瞄時,輸出的 4 Pin 輪流輸出為低準位,在輸出的電位設定完後,
去檢查輸入的 4 pin 的電位,如果有某個 Pin 是低準位,
則表示這個 Input Pin 碰到了設定為低準位的 Output Pin,也就是有按鈕被按下了。
再藉由設定低電位的輸出 Pin 及偵測到低電位的輸入 Pin 的編號,
就可以知道是那一個按鈕被按下了。
看文字不太容易理解,有興趣的可以去網路上找圖文並茂的說明文件。

使用這種 4*4 的鍵盤很心痛,心痛的原因不是他很貴(其實他比我想像便宜很多),
而是因為他一次用掉 RPi  8 根 GPIO!之前已經接了感測器、電源控制等,
再加上這鍵盤後,只剩下一個 Pin 可以用!

後續如果其他功能需要更多的 GPIO,可能就要考慮 USB 鍵盤,
或者是看看 RPi 是否還有其他隱藏的 Pin 可以拿來用。

設定的第一個畫面可以顯示四項資訊,
T1 是目前量到的烘焙豆溫,
Timer 1 是開始烘豆的計時,也就是下豆後到目前為止的時間,
除非按下『烘焙結束鍵』,否則不會停止
Timer 2 是額外的另一組計時器,可以隨時透過按鍵啟動/停止/清除,
主要是用來輔助烘豆過程中的悶蒸、關火、或是下豆前滑行的計時。
Power 則是目前設定的火力大小
【顯示第一個畫面,主要是烘豆過程會用到的資訊】

按下另外一個按鈕,則是會顯示一些輔助資訊,
ETH0 是 RPi 的網路卡 IP Address,WLAN則是無線網路卡的 IP Address,
因為很多情況下需要連進 RPi 進行操作,
例如修正軟體、抓取資料或是找問題等,都需要知道 IP Address。
直接顯示在畫面上就很方便了,否則就需要先用 UART 線連進 RPi,
才能得知 IP Address。
Power period 是目前的加熱週期秒數,
Env 則是目前環境的溫濕度。
【顯示第二個畫面,主要是一些輔助用資訊】

【按下按鈕來操作烘豆機,可以啟動計時器或是通知一爆】

【也可以按按鈕來切換畫面,未來再來想新功能】

沒有留言:

張貼留言