Paso 5: Comunicación Serial
Proceso puede comunicarse con otros dispositivos físicos (como microcontroladores) utilizando comunicación Serial. En esta forma de comunicación, el dispositivo (en nuestro caso, un Arduino) envía datos en serie para el procesamiento esbozar un poco a la vez. El número de bits enviados por segundo depende de la velocidad en baudios. De forma predeterminada, la velocidad en baudios para el Arduino y procesamiento es 9600. Podría cambiar esto, pero asegúrese de que la tasa de baudios es la misma para ambos las aplicaciones finales.
Para demostrar esto, va a utilizar un Arduino para enviar datos de un sensor de temperatura/humedad DHT11 el dibujo de procesamiento. El código de Arduino se adjuntó.
La mayoría de las funciones raras que ves en el sketch de Arduino es parte de la biblioteca DHT11. Revise el bosquejo de ejemplo que viene con la biblioteca de referencia.
Lo crucial tener en cuenta es cómo les estamos enviando cada cadena de datos. En primer lugar, imprimimos el valor de temperatura mediante Serial.print(). En segundo lugar, imprimimos una coma y luego viene el valor de la humedad, seguido de una nueva línea (la Serial.println()). Por lo tanto, estamos generando cadenas que consta de dos valores de los sensores, separados por una coma y cada secuencia termina con un carácter de nueva línea.
Ahora, vamos a él cómo proceso analiza las cadenas. Aquí está un bosquejo simple que simplemente muestra el valor del sensor:
importar la biblioteca de la serie
Import processing.serial.*;
Serie myPort; objeto serial
PFont fuente; Objeto de PFont
variables globales
int temp = 0;
hum int = 0;
void setup() {}
Size(400,400);
myPort = nuevo Serial(this,"COM3",9600);
myPort.bufferUntil('\n');
Font = loadFont ("ARESSENCE 48.vlw"); //created fuente
textFont(font);
}
void draw() {}
Background(255);
Fill(140);
texto ("temperatura:" + temp, 72, 120);
texto ("humedad:" + hum, 104, 220);
}
void serialEvent(Serial myPort) {}
leer el buffer serial
String miCadena = myPort.readStringUntil('\n');
Si (miCadena! = null) {}
MiCadena = trim(myString);
int sensorData [] = int(split(myString,','));
Temp = sensorData [0];
Hum = sensorData [1];
}
}
Ver resultado anterior
Cosas a destacar:
- Biblioteca serie de procesamiento se importa en lo más alto
- Se crea un objeto de tipo Serial llamado "myPort".
- En la configuración, la "myPort.bufferUntil('\n')" extrae los datos en serie sólo cuando encuentra un carácter de nueva línea. Esto asegura que un evento serial se activa sólo cuando se extrae una cadena de datos entera, no en algún lugar en el centro.
- la serialEvent() es una función de procesamiento de evento incorporado, que se llama cada vez que se desencadena un evento serial. Una vez que se llama, lee la cadena extraída del buffer serial, lo recorta y divide la cadena en cadena dos, siendo cada uno un valor de sensor. Estos valores se almacenan temporalmente en una matriz y luego se asignan a las variables globales "temp" y "hum" respectivamente.
- "PFont" es una clase integrada para dibujar texto. Para poder usar esto, debe hacer un tipo de letra usar en herramientas la opción "Crear fuente..." de procesamiento. Luego, sólo tienes que seguir lo que hice!
Comunicación serial algo es un gran tema. Cualquier persona que desee bucear en más se recomienda revisar de computación física de Tom Igoe notas de clase.