【问题标题】:Raspberry Pi connection with Arduino over XRF continuous sensor monitoringRaspberry Pi 通过 XRF 连续传感器监控与 Arduino 连接
【发布时间】:2014-06-18 09:55:09
【问题描述】:

我正在尝试制作一个用于持续监控传感器的系统,包括记录传感器离线(服务器无法访问)的时间。

该系统基于 Raspberry Pi 作为服务器,Arduino Leonardo 作为带有传感器的节点,数据通过 XRF 从 Arduino 传输到 Raspberry。

我正在使用带有 pySerial 的 Python 脚本来收集数据。我的 Python 技能很差,我需要帮助来弄清楚如何在 Arduino 和 Raspberry 之间的连接丢失以及重新建立连接时继续监控传感器数据,而无需重新启动脚本。

Python 脚本如下:

import serial
from datetime import datetime

ser = serial.Serial('/dev/ttyAMA0', 9600)

while True:
   #Arduino sends sensor analog reading when receiving the letter "k"
   ser.write('k') 
   datetime = str(datetime.now())
   print(datetime)
   print(ser.readline())

一旦服务器断开与客户端的连接,脚本就会停止。

【问题讨论】:

  • 您的客户如何停止?您使用的是一个 Arduino,还是多个?你的串口设备是恒定的?
  • 服务器脚本停止而不是客户端。我一开始尝试了一个客户。序列是恒定的

标签: python raspberry-pi monitoring pyserial


【解决方案1】:

我猜您需要定期重新打开连接,并记录连接丢失的时刻?像这样...

import serial
import time
from datetime import datetime

ser = serial.Serial('/dev/ttyAMA0', 9600)

while True:
   if ser.isOpen()==True:
       ser.write('k') # Arduino sends sensor analog reading when receiving the letter "k"
       datetime = str(datetime.now())
       print(datetime)
       print(ser.readline())
       time.sleep(1) # take a break so that you dont thrash the sensor with requests all the time
   else:
       try:
           print "Lost connection at %s" % str(datetime.now())
           ser.open()              
       except:
           print "Cannot open port."
           exit(-1)

【讨论】:

  • 看起来应该这样做。我会在晚上测试它并让你知道。谢谢!
  • 代码似乎运行良好......现在:)。
  • 非常感谢您的帮助!
猜你喜欢
  • 2015-12-17
  • 2017-11-07
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
相关资源
最近更新 更多