【问题标题】:Python Script? - Logging serial output from arduinoPython 脚本? - 记录来自 arduino 的串行输出
【发布时间】:2017-01-12 12:26:41
【问题描述】:

我正在使用 OrangePI 板记录来自 arduino 的数据,它每 10 秒通过串行输出提供一条线。

20.0 / 12.0 V

这是记录由连接到 arduino 的温度传感器测量的温度和用于节省电池目的的电压。

我已经设法从网络上收集的 sn-ps 和建议构建了一个脚本,这正是我所需要的。

#!/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 应该始终观察 arduino 输出中的最后一行字符串“BAT!”。然后触发关机。

我对这个项目的硬件部分有一个概念 也是arduino代码的一个概念

但不知道如何在 Linux 上编写代码。也许现在的方法是错误的,整个事情应该用python或其他东西编码?

感谢您的任何建议。

【问题讨论】:

  • 这在我看来不像 Python。它实际上是一个 Bash 脚本
  • 是的,它不是 python,问题是,这一切都可以在 bash 中进行管理,还是我应该在 python 中重写所有这些。如果可能的话,或者 C,因为我更熟悉 C(因为 arduino)

标签: python arduino raspberry-pi debian orange-pi


【解决方案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.

希望这个示例对您有所帮助,并且您可以用它做一些事情。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多