La plataforma Arduino permite a las personas crear diferentes proyectos. Arduino es una plataforma fácil de usar con soporte para una amplia gama de bibliotecas, incluidas las Biblioteca de software. El Biblioteca de software le permite crear un puerto serie en cualquiera de los pines digitales en su tablero Arduino.
En este artículo, profundizaremos en la biblioteca de software y exploraremos cómo funciona.
Introducción a la biblioteca SoftWareserial
El Biblioteca de software es una biblioteca Arduino estándar que permite la comunicación en serie en pines digitales distintos de TX y RX. La biblioteca permite la creación de un puerto serie de software, que puede usarse para comunicarse con otros dispositivos, como otros microcontroladores, computadoras o incluso módulos Bluetooth. La biblioteca SoftWareserial se incluye con el IDE Arduino y se puede usar con cualquier tablero de Arduino.
Nota: Generalmente, Tx y Rx Los pines se utilizan para la comunicación en serie, pero utilizando esta biblioteca podemos permitir que la placa Arduino use cualquiera de los pines digitales para reemplazar los pines TX y RX.
Comprender las funciones de la biblioteca de software
El Biblioteca de software tiene varias funciones que le permiten configurar y controlar el puerto serie de software. Estas son algunas de las funciones principales que debe saber:
SoftWareserial ()
Esta función crea una nueva instancia del Software clase. Esta función tiene dos argumentos, el pin RX y el pin TX. Por ejemplo, si desea crear un puerto serie de software en los pines 2 y 3, usaría el siguiente código:
Softwareserial mySerial (2, 3); // rx, tx
El SoftWareserial () El método se utiliza para crear una nueva instancia de un Software objeto. Permite la creación de múltiples instancias, sin embargo, a la vez, solo uno puede estar activo.
Sintaxis
La sintaxis para el SoftWareserial () El método es el siguiente:
SoftWareserial (RXPIN, TXPIN, inverse_logic)
Parámetros
Los parámetros para el SoftWareserial () son
rxpin: Este parámetro especifica el PIN que se utilizará para recibir datos en serie.
txpin: Este parámetro especifica el pin que se utilizará para transmitir datos en serie.
inverse_logic: Este parámetro es opcional, e invertirá el sentido de bits entrantes. El valor predeterminado es falso, lo que significa que un bajo en el pin RX se interpreta como un bit de 0 y un alto como un 1 bit de 1 bit. Si se establece en verdadero, el bajo en el pin RX ahora tomará como 1 bit y alto como 0 bits.
Devolver
El SoftWareserial () no devuelve nada.
Arduino SoftWareserial () Funciones de la biblioteca
Arduino SoftWareserial () tiene una lista de funciones para la comunicación en serie entre dispositivos. Algunas de las funciones principales se discuten aquí:
comenzar()
El comenzar() La función inicializa el puerto serie de software con una velocidad de baudios. La velocidad de baudios es la velocidad de transmisión de datos sobre el puerto serie. Por ejemplo, para establecer 9600 como la tasa de baudios para la comunicación en serie, utilizaría el siguiente código:
myserial.comenzar (9600);
disponible()
El disponible () FLa unión devuelve bytes disponibles para leer en el puerto serie de software. Por ejemplo, para verificar si hay algún datos disponibles para leer, utilizaría el siguiente código:
if (mySerial.disponible ()> 0)
// leer datos de entrada
Char IncomingByte = mySerial.leer();
leer()
El leer() La función lee el siguiente byte de datos del puerto serie de software. Por ejemplo, para leer un byte de datos e imprimirlo en el monitor en serie, utilizaría el siguiente código:
Char IncomingByte = mySerial.leer();
De serie.println (IncomingByte);
escribir()
El escribir() La función escribe un byte de datos en el puerto serie de software. Por ejemplo, para enviar la carta "A" A través del puerto serie de software, utilizaría el siguiente código:
myserial.escribe un');
Código de ejemplo de la biblioteca Arduino SoftWareserial ()
Ahora nos comunicaremos entre dos tableros Arduino sobre la comunicación en serie utilizando esta biblioteca. Tome dos tableros Arduino y conecte como se muestra en la imagen a continuación.
Conectar D2 del maestro Arduino Board con D3 de la placa Arduino de esclavo, conéctese de manera similar D3 del maestro Arduino con D2 del esclavo Arduino.
Nota: Para la comunicación en serie, el Tx el pin siempre está conectado al Rx pasador del opuesto Arduino y el Rx El pin del maestro siempre está conectado al Tx Pin del otro Arduino.
El siguiente es el hardware de ambos tableros Arduino.
Aquí hay un ejemplo de código Arduino que demuestra cómo usar el Biblioteca de software Para establecer la comunicación entre dos tableros Arduino:
Código de tablero de remitente
El siguiente código es para el remitente Arduino que escribirá una cadena en la placa Arduino del receptor.
#incluir
// Configurar el objeto serie de software
Softwareserial mySerial (2, 3);
setup () void
// Comenzar la comunicación en serie
De serie.comenzar (9600);
mientras (!Serie)
; // esperar a que el puerto serie se conecte
// Iniciar la comunicación en serie del software
myserial.comenzar (9600);
bucle void ()
// Enviar un mensaje a través de la conexión en serie del software
myserial.println ("Hola, tablero de receptores!");
retraso (1000);
Código de tablero de receptores
El siguiente código es para el tablero receptor. Uso de este código Arduino recibirá la cadena de otra placa sobre la comunicación en serie establecida entre dos tableros Arduino.
#incluir
// Configurar el objeto serie de software
Softwareserial mySerial (2, 3);
setup () void
// Comenzar la comunicación en serie
De serie.comenzar (9600);
mientras (!Serie)
; // esperar a que el puerto serie se conecte
// Iniciar la comunicación en serie del software
myserial.comenzar (9600);
bucle void ()
// Compruebe si los datos están disponibles en la conexión en serie del software
if (mySerial.disponible())
// Lea los datos e imprima en el monitor en serie
De serie.println (mySerial.readString ());
En este ejemplo, primero incluimos el Biblioteca de software Al comienzo del código. Entonces, creamos un Software objeto llamado "myserial"Con pines 2 y 3 especificados como pines RX y TX, respectivamente.
En el configuración() Función, iniciamos la comunicación en serie del hardware y la comunicación en serie del software con una tasa de baudios de 9600. En el bucle() función de la placa del remitente, enviamos un mensaje a través de la conexión serie del software utilizando mySerial.Método println () y espere un segundo antes de enviar el siguiente mensaje.
En la función bucle () de la placa receptor, el código verificará la disponibilidad de datos en serie en la conexión serie de software utilizando myserial.disponible() método. Si hay datos disponibles, leemos los datos utilizando mySerial.Método ReadString () e imprimo en el monitor en serie utilizando la serie.Método println ().
Limitaciones de la biblioteca SoftWareserial ()
El Biblioteca de software tiene varias ventajas diferentes pero también tiene algunas limitaciones que los usuarios deben tener en cuenta. Estas limitaciones incluyen
Junta | Pines rx |
Mega y Mega 2560 | 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). |
Leonardo y micro | 8, 9, 10, 11, 14 (miso), 15 (SCK), 16 (Mosi). |
Conclusión
El Biblioteca de software en Arduino es una herramienta útil para comunicarse con dispositivos que utilizan protocolos de comunicación en serie. Permite a los desarrolladores crear puertos seriales basados en software que se pueden usar junto con los puertos serie basados en hardware. Esta biblioteca tiene algunas limitaciones, ya que no permite la transferencia de datos simultáneos. Para más detalles, lea el artículo anterior.