使用Arduino & Visual Studio開發的冷氣控制器

現在是一個開源的世界,也有了很多的板子都很便宜,開發上也都很方便(EX: Arduino,Raspberry Pi,LinkIt ONE、Ameba等等...)

因此我使用了Arduino當作開發,開發出了冷氣壓縮機控制器,在不影響舒適度下以達到節能效果

(這故事就是這樣開始的,因為是地球暖化等因故,而冷氣在居家或是校園佔為大部分耗電...

這時間有點長的是學習了一些工業控制 跟 工業通訊等...

這故事就是這樣開始的,因為是地球暖化等因故,而冷氣在居家或是校園佔為大部分耗電,而我是電機系控制組的學生,因而我們就去思考要如何做節能的方式

更加的冷氣現在市場上販賣的是變頻式的冷氣,但在家中或是校園非變頻式的冷氣也佔為多數,因為我去思考去開發如何使用最便宜的方式去節省冷氣(各類型各廠牌冷氣(變頻非變頻、箱型、分離式、窗型等)都可以做控制)

就如下面的圖片就是當時開發出來的板子(區域空調之節能系統一部分的裝置)

<區域空調之節能控制器>

一、成本:

當時我在開發上一開始就要考慮整個做好的成本,因為在主控制器上就得選好晶片,能越便宜越好的

因而選了一顆SILICON LAB C8051F530 價格相較 ATMEGA328P-AU 便宜點的

<繪製好 C8051F530測試晶片電路圖>

<洗好C8051F530測試晶片線路>

最後因為在USB Debug 連接電腦時有時找的到有時找不到 以及這顆晶片封裝用人焊接不好使用

....................因而選擇其他晶片做快速開發

(雖然在這之前也有使用過其他8051做開發過,但是...當時那顆因為腳位以及要縮小版子等關係就開始選用SILICON LAB C8051F530---> ATMEGA328P-AU....這故事有點漫長)

 

二、Arduino為當時火紅的一個裝置:

最後就在光華商場買了Arduino UNO先做開發使用測試,越來越熟悉後就開始做一些通訊測試撰寫等....

⇉ Arduino 相關 資訊

<Arduino Uno>

<Arduino Uno 一些板子測試>

最後就先把一些邏輯跟一些通訊做測試,我們選用的通訊為工業通訊RS485

====================RS485=========================

會選用RS485通訊是一些原因,因為RS485通訊有些好處:

操作模式:差動傳輸(其抗共模能力增強,即抗雜訊干擾性好)

最大傳輸距離:1.2km(4000 feet)

最大傳輸綠10 Mb/s

RS485是一種工業標準。RS485優點是抗雜訊能力強,通訊過程只需要2條線,所以RS485介面均採用遮罩雙絞線傳輸,RS485是一種半雙工傳輸 (半雙工意指同一時間只能做傳送或是接收的動作,無法同時傳送與接收,像是對講機就是半雙工通訊的一種)

WIKI告訴你一些

在這些緣故下以及我們校園內已經建置了一些工業控制燈光冷氣監控設備,在這些搭配下,選用了RS485通訊協定,做為硬體上開發與軟體撰寫

====================RS485=========================

三、跨出正式的那一步:

經過這些測試設備與訊號撰寫測試下,就選用ATMEGA328P晶片為主要晶片控制

在測試下選用了好插拔的PU封裝的 ATMEGA328P-PU 

因為新買來的晶片裡面是不會有Arduino開機檔的(筆記筆記重要..)

<也因為有了Arduino開機讓開發快一點,可以不用再去了解 Atmel晶片相關DataSheet 但是多看看DataSheet也是一件好事,可以了解更多相關硬體>

因此可以使用跨燒等方式去燒入開機檔(bootloader)--->這邊我就先不說燒入方式,想了解關鍵字搜尋很多教學XXD

<這也是跨燒,燒入開機檔的一個方式>

<第一個比較完整的使用ATMEGA328P 開發,校內洗板子洗出來的(大小大概6.5cm*6.5cm)>

左方綠色腳位,分別為冷氣控制版電源*2(內外)、RS485通訊、冷氣控制線路

初始的架構大概出來是這樣~~

四、為了測試寫程式更大的板出現了 Arduino MEGA 1280:

<Arduino Mega1280>

因為當下買的時候不知道1280跟2560差別,而且差沒多少錢(但是就買了1280)

會選用這塊原因是因為之前測試打的Code可以直接平行移轉,只要修改一些燒入設定,重要的是這塊板子有多組TX、RX

在最主要開發的結果需要一組(通訊RS485)、但是為了方便電腦端測試需要在一組通訊會比較方便(Arduino 序列埠監控來看程式回應是否,這也是Arduino不能像Visual Studio 當作Debug測試,所以只好選用序列埠監控監看)

<文末會介紹Visual Studio 做Arduino開發多方便的功能>

<USB-RS485線>

<Arduino Mega1280、RS485通訊測試>

<校內測試使用 Altium Designer繪製洗出來的板子,校內洗板子測試算末期了>

經歷過一些測試、洗、測試、洗.......才產出的

<經過幾代的測試跟洗才產出的結果XXD>

<經過一些配置設計、測試後,就進入送洗階段了XXD>

(但是也在台灣送洗了三四階段才整體完成)

============送洗小心得====================

因為在設計後,那去送洗,有可能因為一些正反面設計視覺或是安裝配置元件方式覺得不良

以及一些晶片對上另一些晶片可能會有干擾或是通訊上不穩定,或是一些腳位多餘沒有配置合適

經過一次在一次地確認後

在經過幾次送洗後

才能完全定案,在大量送洗

不然有一個錯誤,大量送洗回來會GG(可能謀個元件問題要全部解焊(會眼花)

============送洗小心得====================

五、還有燒入器:

因為在開發階段都尋找著便宜方便使用,以及之後量產之關係

在網路上找到的燒入器,便宜(大概NT$100~200)又好用的USB ISP

<USB ISP燒入器>

<USB ISP 跟板子連接>

設計搭配燒入器腳位、燈號、開機燒入檔直接使用USB ISP 一次到位

<直接連接電腦USB (WIN10、WIN7都可以使用、WIN10需要設定一下USB認證)>

在這些板子設計、測試、燒入、修改等...

<測試在測試>

<Bon表跟相關電路圖>

<近200片的板子在硬體上送洗就完成,回台~~>

透過一次一次地確認

六、軟體端撰寫配置:

因為在硬體架構下需要再回歸軟體端設計,再回歸硬體端修改(會經過不少次的修改跟配置才會達到合適的配置方式

那些年的Code(GITHUB上)

<定義一些腳位跟配置方式>

<一啟動 Setup那些>

<進去Loop那些Code>

<通訊RS485 傳輸檢查碼 Hi Lo>

在一些設定了解後跟硬體概念理念了解後,再去撰寫軟體

而RS485工業通訊,當時沒有找到工業通訊RS485有人透過Arduino撰寫,因而在這個地方就需要透過較多的時間測試撰寫,跟了解所有的協定方式

而且

我們校內使用設備為 施耐德(Schneider Electric)監控設備、以及我們實驗室也是使用這套設備

這設備的RS485協定比較詳細(就是比較嚴格阿XXD)

它會自動去判斷連接他的裝置是否有問題與否

所以client端程式就必須更嚴格的才有辦法與他溝通

所以在這地方我程式就必須寫得更嚴格讓他有辦法接受此client端裝置

(舉例說 我們這裝置原本RS485通訊軟體端沒有些的那麼標準,在其他設備(如其他間公司的RS485讀取、TCP轉RS485設備)也是能溝通 (能傳/收數值)-->看似穩定也OK)

但是要寫成規範的通訊才能跟施耐德設備溝通~(就是才標準阿XDXD

<紅色框 這套DIO/AIO等通訊數位監控系統(直接數位控制器 (Direct Digital Controller ,簡稱 DDC)(StruxureWare設備)>

<StruxureWare軟體>

<透過上層軟體就可以馬上跟我們開發Client端設備連接讀取控制>

<將近200片的板子放上大樓大多數的冷氣上,作為client跟校內廠商設備Server端做連結(上面綠色點位都是一台冷氣)做舒適度下控制達到節能救地球>

<每個點為是否斷線與各地方的溫度回值>

七、軟體開發上跳跳跳:

因為Arduino IDE開發需要有足夠的腦力去記憶程式(怎麼這麼說呢?

因為當成是大量時,很多Code錯誤、或是Code的命名以及副程式到底在哪邊呢?

這些等等種種原因

在我實習階段了解到Visual Studio 現在支援很多tool安裝工具

因而去了解之後,他也有支援Arduino~~太神了

他的方式算是把編譯環境納入進Visual Studio 但是在底層的編譯燒入環境還是用到Arduino IDE

我的點部落格 之前有大概介紹以及安裝

舉例說:

<副程式部分的提醒,都會依依跑出來>

<以及撰寫時,會提醒!!!!!!>

然而"只有Arduino IDE能做的Visual Studio for Arduino都能做"

(尤其在開發大量的程式時,最需要的Debug工具就是他了)

<有安裝VS的Arduino Tool就會有Visual Micro >

裡面類似選port這簡單東西一定有、燒入開機檔(Burn Bootloader)、library等等都有

((((((有些不足的地方,會再補足,有不懂 或筆誤的地方可以告訴我一聲XD