【问题标题】:How to read sensor data from Arduino in Raspberry Pi via Serial如何通过串行从 Raspberry Pi 中的 Arduino 读取传感器数据
【发布时间】:2017-06-01 14:50:09
【问题描述】:

对于一个学校项目,我必须从 Arduino (Sodaq Mbili) 板上的 2 个传感器读取数据。我使用的传感器是 TPHv2(温度、压力、湿度)和 Grove Light Sensor。我想读取温度、湿度和光照强度。我为此使用以下代码:

void setup() {
  Serial.begin(9600);
}

void loop() {
    Serial.println(bme.readTemperature());

    Serial.println(bme.readHumidity());

    int sensorValue = analogRead(SENSOR_PIN); 
    Serial.println(sensorValue);

    delay(3000);
}

这每 3 秒给我以下输出:

21.23
25.65
256

然后我通过 USB 将 Arduino 连接到我的 Raspberry Pi 2。 我想获取变量中的数据,以便可以将其放入 Json 格式并将其发送到 Azure 事件中心。 我现在在树莓派上用 Python 编写了这段代码(我在网上找到的):

import serial

ser = serial.Serial('/dev/ttyUSB0',9600)
s = [0]

while True:
   s[0] = ser.readline()
   print s

然后我的输出每 3 秒给出一次:

['22.46\r\n']
['37.93\r\n']
['643\r\n']

我现在的问题是,如何在 3 个不同的变量中获得这 3 个值?我试图将它们放在同一个数组中(我想要这样的东西: [22.46,37.93,643] )但那没有用。

有人有建议吗?提前致谢!

【问题讨论】:

  • 为什么不在 Arduino 中格式化字符串并像 ´T=XX.XX-P=YY.YY-H=ZZ.ZZ` 一样发送?或者至少我建议你使用 start 和 end 来了解你接收的是什么传感器。

标签: arduino raspberry-pi serial-port sodaq-mbili


【解决方案1】:

好吧,如果你不想像 jabujavi 所说的那样在 arduino 中格式化代码,你可以这样做:

import serial

ser = serial.Serial('/dev/ttyUSB0',9600)
s = []

while True:
    data = ser.readline()   #read data from serial
    if data:                #if there is data, append it to s
        s.append(data)
    if len(s) == 3:         #when s is 3 elements long, (all data has been retrieved)
        print s             #print out s
        s = []              #and then reset s to start over.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2017-02-07
    相关资源
    最近更新 更多