2017-01-12 6 views
0

OrangePIボードを使用して、シリアル出力から10秒ごとにラインを与えるarduinoからデータをログに記録しています。Python Script? - arduinoからのシリアル出力のロギング

20.0/12.0 V 

温度は、arduinoに取り付けられた温度センサーで測定された温度とバッテリー節約のための電圧です。

私は必要なものを正確に行うウェブ上で収集されたスニペットや提案からスクリプトを構築することができました。

#!/bin/bash 
# Script will run at reboot. 

echo "Beginning Temperature Log!" 
NOW=$(date +"%Y-%m-%d") 
LOGFILE="log-$NOW" 

name=$LOGFILE 
if [[ -e $name ]] ; then 
    i=2 
    while [[ -e $name-$i ]] ; do 
     let i++ 
    done 
    name=$name-$i 
fi 

ts </dev/ttyUSB0>$name 

このスクリプトは、私がマシンを起動するたびに実行されます。これは、cron @rebootを設定することで非常にうまくいきます。

今、電圧が一定レベル以下になったとき、私はシリアル出力に警告を送信し、「バッテリー・ガード」とArduinoのコードを拡張することを計画し

20.0/9.0 V/BAT! 

この時点でOrangePIは/シャットダウンを停止する必要がありますし、 arduinoがリレーを無効にしてシステム全体をスイッチオフできるように、arduinoに特定の手紙を送信して、「安全にシャットダウンする」ようにします。

だから、私はOrangePIが常に文字列 "BAT!"のarduino出力の最後の行を見るべきだと仮定します。次にシャットダウンをトリガーします。

私はまた、このプロジェクト Arduinoのコード

のコンセプトが、Linux上でこれをコーディングする方法については全く分からないのharware部分の概念を持っています。たぶん、アプローチは間違っていますし、今のところ全体がPythonなどでコード化されるべきですか?

ありがとうございます。

+0

これは* Python *のようなものではありません。実際には* Bash *スクリプト –

+0

それはPythonではありませんが、問題は、このすべてをbashで管理できるかどうか、またはこれをすべてPythonで書き直す必要があります。可能であればCを使用してください。私はCにもっと精通しています(arduinoのため) – Georg91

答えて

1

Pythonは本当にシンプルですっきりした方法です。 pyserialを使用すると、シリアル接続を介して送信した文字列を読み取って、BATという単語をスキャンすることができます。この例では、役に立つ

import serial 
from sys import argv 

port = argv[1] # just to assign port and baud from command line 
baud = argv[2] 

COM = serial.Serial(port, baud) # create serial instance 
data_in = COM.readline().strip("\r\n") # strip ending 
### then some manipulation of data_in ### for example: 
if(something you want is in the transmission string): 
    # do something 
else: 
    float_list = [float(x) for x in data_in] 
    # convert all the vals to a floats for logging etc. 

希望とあなたはそれで何かを行うことができます:だから、私の頭の上から、あなたのような何かを行うことができます。

関連する問題