發表文章

目前顯示的是 2019的文章

Arduino ANN溫度控制實驗計畫

圖片
夥伴招募: 1.加熱電路設計及製作.  目前採用12V PTC加熱片/10K熱敏電阻/RF520放大模組    -加熱效率改善 (我其實很想把整個放大模組砍掉重練....)    -溫度感測反應改善 2. PC_APP  目前採用VisualC# 開發,已完成溫度命令傳送, 當前溫度文字顯示,溫度及命令紀錄    - 架構規劃(重構refactoring)    - 功能製作 3. 機器學習  目前使用MATLAB nntool 進行機器學習實驗     -機器學習參數調整及腳本撰寫 (可使用其他工具,如PYTHON, R, Java...等)     -RNN實驗規劃 4. 機構及佈線設計     -外殼或實驗平台機構設計及製作 5. Arduino 控制器設計 6. 支援軟體製作     -MATLAB, PC_APP, Arduino間三者資料轉檔(網路參數,實驗記錄...等) 7. GitHub 分支管理顧問 8. ProjectManager (如三人以上加入團隊時需要) 計畫目的: 1.練習驗證基本神經網路ANN使用方式 2.建立一溫度實驗平台, 並可通用於不同控制演算法之驗證實驗 很重要的一點,這個計畫主要目的是要控制器 模仿人類的溫控行為, 使否為 有效率的精確控制為次要目的       使用流程概念: ANN網路架構 初版網路架構如下 Input: 目標溫度,目前溫度, 溫度變化0,溫度變化1,溫度變化2 (計畫增加過去10次取樣溫度) Output:加熱器開關 計畫增加到4 (關閉,小火,中火,大火) 系統架構: Github Arduino:  https://github.com/firmamentone/TCP_Amber/tree/HeaterTest Github PC APP:  https://github.com/firmamentone/TCP_PCApp 由於第一次ANN自動溫控實驗並不理想,短期內會先進行下列改良及測試 1.增加ANN輸入節點到過去10秒 2.增加學習樣本,去除不良學習樣本 3..增

Arduino Serail.readString() 解析

圖片
-已Arduino Leonardo為例 -已處理字元,字串為主 -"Arduino Leonardo" 並沒有硬體的UART FIFO Buffer , 所以整個readString()之所以可以暫存字元,是靠中斷轉存字元到宣告的buffer中. 1.Serail.readString()相關的程式在那? Arduino中, UART通訊相關的"Serial"物件實體,主要是實做在"HardwareSerial"類別中,除了"Serail"外,不同的Arduino平台,可能還會有其他同樣是"HardwareSerial"類別的的物件實體以用來支援多組UART. 而"HardwareSerial"類別本身又是繼承自"stream"類別.所以有部分"HardwareSerial"本身有部分的功能已經實作在"stream",另外也有部分的功能還是需要在"HardwareSerial"中實做. 以上圖為例: - "stream"中已實做的方法: "readStream()", "setTimeout()"...等 - "stream"中已宣告為虛擬,需在"HardwareSerial"中實做: "read()","available"...等 - UART專屬功能,需"HardwareSerial"實做: "begin()","rx_complete_irq()" 所以如果想解析"readString()"方法在Arduino中的運作方式,可從分析這些類別所在的相關檔案. 2. Arduino怎麼知道有資料進來了?  硬體buffer只有一個字元,怎麼暫存字串資料?   當UART硬體收到字元(一個BYTE)時,會觸發rx_compl