Paso 7: Comunicación Serial (parte 1)
Considera varias opciones para enviar datos de control entre el ordenador y el coche. Wi-Fi o bluetooth parece ser las soluciones obvias, pero no puede proporcionar la gama que quisiera. Más proyectos de arduino sin hilos parecen usar módulos XBee, que dependen de comunicación serial, así que decidí utilizar una interfaz serial.
La comunicación del coche/del ordenador portátil funciona así:
1. el coche envía una cadena serial (con una estructura fija), con el conocido principio y final de caracteres de mensaje.
2. el programa C# continuamente encuestas el portátil serie del interfaz. Cuando recibe una cadena serial, que contiene el comienzo previsto y fin personajes, el programa C# prepara su propia cadena de serie (con una estructura fija) y lo envía al coche.
3. el coche recibe la cadena de serie, hace una verificación rápida (basada en un carácter de mensaje y longitud del mensaje), saca y procesa la información si el mensaje es "válido" y espera un retraso especificado antes de preparar y enviar otro mensaje - y el ciclo se repite.
Nota: Si el mensaje recibido no se considera "válido" en el Arduino, el sketch de Arduino parar el coche y la dirección del centro.
La estructura de mensaje para mensajes enviados al coche, desde el programa C# es:
500.500, F, D00, Z
El significado de esta cadena es:
Primer campo: acelerador (centrado alrededor de 500)
Segundo campo: dirección (centrado alrededor de 500)
Tercer campo: Slowmode - F: rápido, S: lenta (máxima aceleración es halfspeed)
Cuarto campo: faros
Primer carácter: D: oscuro (se apaga), L: luces en
Segundo carácter: brillo (0 - 9)
Tercer carácter: secuencia de la luz (0 - 9)
Campo definitivo: extremo del carácter del mensaje (Z)
Se proporcionarán más detalles sobre algunos campos en pasos posteriores
La estructura de mensaje para mensajes enviados desde el coche, para el programa C# es:
A, 500, 500, Z, R, F, D00
Primer campo: comienzo del carácter del mensaje (A)
Segundo campo: Acelerador (centrado alrededor de 500)
Tercer campo: Dirección (centrado alrededor de 500)
Cuarto campo: Slowmode - F: rápido, S: lenta (máxima aceleración es halfspeed)
Quinto campo: faros
Primer carácter: D: oscuro (se apaga), L: luces en
Segundo carácter: brillo (0 - 9)
Tercer carácter: secuencia de la luz (0 - 9)
Sexto campo: rumble (R - rumble, O - off)
Campo definitivo: extremo del carácter del mensaje (Z)
La mayoría de estos campos son solo haciéndose eco de lo que fue recibido por el Arduino. Esto fue hecha como un indicador visual de la salud de la interfaz serial. Si la interfaz está funcionando correctamente, deben coincidir la salida y cadenas de entrada aparece en el programa C#.
Este método de comunicación serial se desarrolló inicialmente utilizando una conexión por cable en serie (es decir, usando el cable USB del Arduino). Pude ajustar el retardo en el lado de Arduino a 20ms, para que la frecuencia del mensaje fue unos 50Hz. Con el cable USB, no tuvo problemas con la comunicación y podría obtener recibo mensaje estable en ambos extremos. Ajustó la tasa de baudios 38400.