就愛咖啡香 - 使用Arduino自製USB(RS-232、藍牙)K-type溫度記錄器搭配RoastLogger(類似Artisan) - 生活

前往內容


使用Arduino自製USB(RS-232、藍牙)K-type溫度記錄器搭配RoastLogger(類似Artisan)

可以吶…

請各位原諒我回了這麼廢的文…既然又被撈上來就回一下。
順便修一下標題提供一點資訊,請參考一樓。

但是這樣一個圖我也只能這樣回
nismo7391 wrote:
求救一下請問 我的電...(恕刪)




friendclub wrote:
看了許久才對各位大大...(恕刪)

感謝支持,沒辦法DIY,其實還是可以問問其他比較熱意分享的版友。
祝福樓主一世平安
主要也是參照這樓自己實作完成

並可在Raspberry Pi上運作

目前是跑RoastLogger, 配直火版的RF300烘了三鍋
有溫度監控真的輕鬆很多, 再現比較容易達成

還要再研究如何在Artisan上也能工作
畢竟RoastLogger的UI還是差了Artisan一些

Rex's View http://rexwei.pixnet.net/


搞懂Artiasn的Prog使用的Protocol
其實就是一個或兩個數字的字串, 例如 102.0 或是 102.0,103.1
改寫了一下sketch, 讓它一直吐兩個數字字串
然後在Raspbian上寫個簡單的bash, 執行該bash時會讀ttyUSB0吐出來的一行資料
Artiasn就可以運作囉

Rex's View http://rexwei.pixnet.net/

琉璃螃蟹 wrote:
搞懂Artiasn...(恕刪)


可以參考這
https://artisan-roasterscope.blogspot.com/2013/02/controlling-hottop.html
我如果沒會錯意
使用者可以自定義命令字串
然後MCU發送 命令字串,數值 就可以送給 Artiasn


琉璃螃蟹 wrote:
然後在Raspbian上寫個簡單的bash, 執行該bash時會讀ttyUSB0吐出來的一行資料

啊,這樣我有興趣了…
其實這個我沒成功耶,能分享這個bash的內容嗎?
可以用的話應該是最無痛從RoastLogger轉換Artisan的方式。
我新的烘豆機是藍牙通訊,但格式不同0.5秒才一筆溫度、火、風,如果可用的話,我Ubuntu筆電就不必任何額外硬體直接通訊了。(啊,還要搞定控制,樓上KC大提到的方式可能可以。)

請問你一開始有清空buffer以確保收到的是最新一筆資料嗎?會不會有收到不是完整訊息的問題?比方吐太多,收太少,或開始收已經傳一半了?
感覺Artisan定期執行一次prog就斷開。
我在terminal直接執行我的程式是能吐出兩個數字,只是放進prog就不理我了。有chmod +x

像它help的範例用常數是能畫兩條直線,但加了:清掉buffer內容、等收到訊息的開頭、解通析通訊內容,再print出來,它就不理人了。

xhining wrote:
啊,這樣我有興趣了...(恕刪)


terminal 執行時看到兩個數字,但是Artisan不理的問題,有可能是帶有多餘char
我有遇過類似的,但是是用pyton寫
他可能是長這樣 b'120.0,135.2'/r/n
readline時後面把它轉成UTF8就可了, ex : string = ser.readline().decode('utf-8')

ttyUSB0的baud rate 115200我是在crontab 那用stty設定,這樣開機就會設好

我的bsah超智障
因為現在要出門, 所以憑印象打

#!/bin/bash
read SERIAL < /dev/ttyUSB0
echo $SERIAL

好像是這樣,每3秒採樣一次正常
每1秒的話就會有buffer上的問題

我只做溫度監控,我下面想玩的是把它採樣效率提高

然後加上ESP8266 的模組,讓訊號走wifi
具體能玩啥,有空再想想

Rex's View http://rexwei.pixnet.net/
感謝大大無私的分享!看到回文馬上來試了一個下午…哈哈哈
琉璃螃蟹 wrote:
每1秒的話就會有buffer上的問題

本來搭RoastLogger,好像就是0.25秒吐一次的樣子呀~應該只有Artisan會警告而已吧?
打算要多快呀?
wifi好像沒很有用,像我們家沒很大,藍牙幾乎都收得到

我本來也是用Python,參考Artisan的範例去改寫,印得出來,但是artisan仍然是沒反應。
因為照範例,所以我有注意到encoder
其他註解加不加,清不清掉、等不等、放不放while迴圈(印一次,無限印)、關不關serial,或是放進main()好像都沒差

算了,我還是用別的方法好了,還有其他問題也要一起解決。

大大的方法我試了一下應該是可行的。
我也分享一下我bash的做法(對了,Mac應該也可以用,沒試):
因為我的烘豆機吐的沒有換行,所以有點麻煩,查了一下help。
稍微改寫一下:

我的烘豆機吐的格式是:
:T12345678!
沒有換行
所以read用-d把!當作換行
參考阿旺的 Linux 開竅手冊第一次cut把字串拆成三組數字,第二次加小數點,因為好像只能兩個數字(ET,BT)

#!/bin/bash
read -N 10 -d '!' SERIAL < /dev/ttyUSB0
echo $SERIAL |cut --characters=3-6,7-8,9-10 --output-delimiter=','|cut -c 1-3,4- --output-delimiter='.'

用Arduino模擬的,應該可以。

其他人有興趣,要克服的應該有:
stty -F /dev/ttyUSB0 115200
Arduino重新連線都會Auto Reset


謝謝分享!
freedomlkk wrote:
發現Arduino可以用MODBUS跟Artisan軟體配合


#!/usr/bin/env python

import serial
import time

#delay = 1 # set interval of seconds between each reading
port = '/dev/ttyUSB0'
sp = serial.Serial(port, baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=1)
#time.sleep(2) # wait until Arduino restarted after opening the serial port
#sp.flushInput()
#sp.flushOutput()
buf=''
pos=0
while True:
r=sp.read(1)
if r==b':':
buf=''
pos=0
elif r==b'!':
if pos==9:
print("%s.%s,1%s.%s"%(buf[1:4],buf[4:5],buf[5:7],buf[8:9]))
else:
pos=0
else:
buf+=r.decode("utf-8")
pos+=1

sp.close()
就大概跟bash做的差不多收到第一個字清空暫存buf,如果收到第9個字元,又是!,表示沒錯,就印。沒加這段判斷其實會出不來


附加壓縮檔: 201902/mobile01-3e77139616968a75d437ed305d7faf4c.zip
轉眼間,年假就結束了…


其實我都一直是黑白烘的,所以曲線就沒啥參考價值了,看看就好。

認真看了一下Artisan功能真的很強大呀,資訊很多,難怪大家都喜歡用。
換掉操作介面還真的很不習慣,根本像第一次烘豆一樣緊張。也一直手忙腳亂,不知道要看哪裡。
很多還可以微調。

每個Event都可以送出命令,我覺得stty的命令可以放在On的按鈕,有時候不一定會把設備一直插在電腦。
我的取樣頻率用0.5秒,跳動很大,不過設定一下Limit應該可以把大部份的雜訊都濾掉了。
應該沒必要再快了吧。

Oversampling反而會把雜訊平均放進Limit裡,所以我沒開。
這~我再慢慢措索好了,下次有空回,應該是明年過年了…
Python程式也不勞幫我看了,bash能用就好了。

我把控制烘豆機的命令用按鈕加進去
就echo '命令' >/dev/ttyUSB0
非常簡單
在最下面那排


補充一個好消息:
Windows應該也可以用。
剛才測試,Win7,搭配MINGW64可以Run bash script,所以RoastLogger Max6675應該可以很無痛地改用Artisan。
也就是Linux(Ubuntu、Raspberry)、Mac OSX、Windows都可以用!!!
請教 若使用兩個max31855 出現很大的數字,拆掉一組31855後又恢復正常溫度值,31855接線方式照大大所說的只有cs1,cs2用兩個pin 其它d0,sk都共用。

17頁 (共18頁)

前往




此文章的引用連結