使用串口和MySQL从arduino收集Rpi数据

时间:2017-01-13 19:14:02

标签: python mysql arduino raspberry-pi usb

我正在制作一个arduino程序,通过USB将一些传感器数据发送到Raspberry pi模型3

我还制作了一个python脚本来将这些数据记录到Raspberry和一个SQL Base

arduino发送1知道何时取第一个值,rPi脚本将模式从0更改为1,然后开始读取4个值,这是问题出现时,因为rPi没有注意到1和永远不会改变到模式1

下面是python代码:

while True:
    while mode==0:
        x = ser.readline()
        if x==1:
            //never gets here
            print("b")
            mode = 1
            print("Starting data Gathering at rPi from arduino")

    while mode==1:
        print("Gathering data")
        text1 = "CFL"
        ignore1 = ser.readline()
        x1 = ser.readline()
        x1 = double(x1)
        x2 = ser.readline()
        x2 = double(x2)
        y = ser.readline()
        y = int(y)
        z = ser.readline()
        z = int(z)  
        time1 = time.time()
        date1 = time.strftime('%d-%m-%d')
        print("Saving sql data")
        sql = "INSERT INTO tempdat(tdate, ttime, zone, DHTtemp, DHThum, SoilHum, Light) VALUES (%s, %s, %s, %d, %d, %d, %d)" %(date1,time1,text1,x1,x2,y,z)
        cursor.execute(sql)
        db.commit()

和arduino的人:

void loop() {

    Serial.println(1);

    Serial.println(read_temp());
    delay(1000);

    Serial.println(read_humidity_DHT());
    delay(1000);

    Serial.println(read_humidity_soil()); 
    delay(1000);

    Serial.println(read_light());
    delay(10000);
}

也很想知道是否有人知道,这是标记我发送的信息的最佳方式,来自rPi的传感器来自哪里。提前致谢

*编辑某些代码时,在创建问题时错误地复制了

2 个答案:

答案 0 :(得分:0)

Serial.println发送ASCII代码后跟\r\n。您正在将ASCII字符与整数值进行比较。试试这个:

    x = ''
    while ser.inWaiting():
        c=ser.read()
        if c not in "\r\n":
            x += c
    if x=='1':
    . . .

答案 1 :(得分:0)

放一个break语句,这样你永远不会离开第一个循环。