2016-06-28 109 views
3

我具有附接到其又连接到我树莓裨3.我的Arduino UNO电压传感器我想抢夺从Arduino的乒乓型的方式将传感器信息到树莓派。我会通过Python脚本上一个cronjob和传感器值抓起并放到一个MySQL数据库发送的字符将其唤醒。树莓裨&Arduino的串行读传感器数据

在未来,我想更多的传感器添加到Arduino

我遇到的问题是Python的一面,当我运行Python代码我只是得到了一个空白的黑线。

树莓派3 Python代码:

#!/usr/bin/python 

import serial 
import MySQLdb 
import time 

db = MySQLdb.connect(host="localhost",  
       user="user",   
       passwd="password", 
       db="database")   

cur = db.cursor() 

port = serial.Serial("/dev/ttyACM0", baudrate = 9600, timeout=None) 
port.flushInput()  

sensor1 = 0; 
sensor2 = 0; 
sensor3 = 0; 

vals = [] 

while (port.inWaiting()==0): 
port.write("*") 
time.sleep(1) 

vals = (port.readline()).split(',') 
print vals 
sensor1 = int(vals[0]) 
sensor2 = int(vals[1]) 
sensor3 = int(vals[2]) 
cur.execute("insert into voltage(volts) values(" + str(Battout) + ")") 

cur.execute("SELECT * from voltage") 

db.close() 

的Arduino代码:

const int BattVolt = A0; 

int BattVal = 0; 
float Battout;   

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


void loop() { 

Serial.flush(); 
while(!Serial.available()); //wait for character from raspi 
delay(1000); 

float Voltage; 
BattVal = analogRead(BattVolt); //read analog pins 
Voltage=BattVal/4.09; 
Battout=(Voltage/10); 

Serial.print(Battout); 
Serial.print(","); 

} 
+0

为什么你使用''在python脚本STR(Battout)? – dubafek

回答

2

一些观察到您的实现。

  1. 为什么在python脚本中使用Battout

  2. 在你期望的线的Python脚本(这意味着在“\ n”结尾的字符串),但在Arduino的C++代码使用print代替println或添加一行饲料。

  3. 显然你期待在python脚本中收到类似“12,32,15”的东西,但是如果你只发送一个字符到Arduino,它将只会产生主循环的1次迭代。

+0

谢谢,只是不添加在Arduino的新行一个简单的错误有固定的一切。 – Bibsta

0

没有与树莓裨3和uart0(蓝牙),uart1(串行)的问题。
对于Pi 3 uart1通常在/dev/ttyS0和TX-GPIO 14,RX-GPIO 15上可用。
uart1的波特率取决于核心时钟。所以如果核心时钟改变,波特率将改变!
解决方法1:/boot/config.txt,添加行core_freq=250。保存并重新启动!现在你的Pi有一个恒定的核心频率。 Raspberry Pi 3 UART baud rate workaround
解决方法2:更改设备树,使用uart0进行串行通信,使用uart1进行蓝牙(现在蓝牙也是同样的问题)。 Raspberry Pi 3 compatibility (BT disable & serial port remap fix)