La lecture des données en série de l'Arduino projet (pySerial)

Je suis en train de faire un projet de test avec la Raspberry pi et Arduino shield (le Alamode).
J'ai commencé avec une base de tenter de prêt de détails sur pySerial lien, juste pour voir, je reçois le droit de sortie avant que je continuer à l'étape suivante,

Malheureusement, il ne va pas aussi lisse que j'avais sauté.

Le projet se compile très bien pour le Arduino et quand on regarde le moniteur de série, je peux voir la sortie de sortir normalement, puis, dès que je démarre le pySerial script que j'ai commencer à me manquant caractères, chiffres et l'arrêt du script (revendication de la liaison série ne répond pas).

La liaison série se transporte très bien, j'ai confirmé à plusieurs reprises de série et le moniteur continue à me montrent les données en direct.

Mais pour une raison quelconque, il semble que le script python ne peut pas le "temps" ou "synchro" avec la sortie série, de sorte qu'il serait aléatoire de découpe de lettres et de caractères.

J'ai déjà essayé de changer le délai (en lui donnant plus de temps) ou en changeant le débit en bauds et il ne semble pas aider, je suis un pas de plus pour abandonner et de vérifier une solution de rechange.

C'est la base de code Arduino

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#include "DHT.h"
#define DHTPIN 2     //what pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11   //DHT 11 
//#define DHTTYPE DHT22   //DHT 22  (AM2302)
//#define DHTTYPE DHT21   //DHT 21 (AM2301)
//Connect pin 1 (on the left) of the sensor to +5V
//NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
//to 3.3V instead of 5V!
//Connect pin 2 of the sensor to whatever your DHTPIN is
//Connect pin 4 (on the right) of the sensor to GROUND
//Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
//Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
//NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
//might need to increase the threshold for cycle counts considered a 1 or 0.
//You can do this by passing a 3rd parameter for this threshold.  It's a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
//DHT dht(DHTPIN, DHTTYPE, 30);
void setup() {
Serial.begin(115200); 
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: "); 
Serial.print(h);
Serial.print(" ");
Serial.print("Temperature: "); 
Serial.print(t);
Serial.println(" ");
}

Et c'est le script de base pour PySerial

from time import sleep
import serial
ser = serial.Serial('/dev/ttyS0',115200)
counter=32
while True:
ser.write(str(chr(counter)))
print ser.readline(16384)
sleep(.1)
InformationsquelleAutor Amit | 2014-11-15