首页 文章

如何通过串口从Raspberry Pi中的Arduino读取传感器数据

提问于
浏览
0

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

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])但是那不起作用 .

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

1 回答

  • 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.
    

相关问题