NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
82.- NodeMCU y Bluetooth. Enviar un mensaje desde el móvil al NodeMCU y verlo en la LCD. App Inventor.
- Vamos a enviar un palabra o un mensaje de menos de 16 caracteres desde el móvil al NodeMCU por Bluetooth, en mensaje se verá en una LCD.
- Además se enviamos a palabra enciende o apaga, se encenderá o apagará el LED conectado al terminal D3 del NodeMCU, se corresponde al GPIO0.
___________________________________________________
1.- Conexiones.
- Los terminales D1 y D2 los necesita la pantalla LCD para funcionar con el bus I2C.
- El LED está conectado al terminal D3 del NodeMCU, que corresponde al GPIO0.
___________________________________________________
5.- Código para enviar un mensaje desde el móvil al NodeMCU por Bluetooth, con pantalla LCD.
Código
Nodemcu_mensaje_LED_BT_LCD.ino |
// Juan Antonio Villalpando
// KIO4.COM
// Enviar mensaje desde móvil a NodeMCU por BT.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int LED0 = 0; // Es el terminal D3 de NodeMCU
void setup() {
lcd.begin(16,2); // Columnas y filas de LCD
Serial.begin(9600);
pinMode(LED0, OUTPUT);
}
void loop(){
byte guardados[10];
int caracteres;
String palabra;
while(1){
if ((caracteres=(Serial.available()))>0){
lcd.clear(); // Borra pantalla
// Esto por si vinieran varios caracteres.
for (int i=0; i<caracteres; i++){
guardados[i]=char(Serial.read());
}
}
guardados[caracteres]=0; // Fin de caracteres.
palabra = (char*)guardados;
lcd.setCursor(0,0); // Inicio del cursor
lcd.print(palabra);
delay(500);
if (palabra == "enciende"){
digitalWrite(LED0, HIGH);
}
if (palabra == "apaga"){
digitalWrite(LED0, LOW);
}
}
} |
___________________________________________________
- App Inventor.
___________________________________________________________
9J.- Android envía un mensaje al NodeMCU por Bluetooh.
p9J_palabra_LED_Nodemcu.aia
- Escribimos una palabra o frase (menor de 16 caracteres) en el CampoDeTexto y la enviamos por Bluetooth al NomeMCU.
- Si escribimos la palabra enciende o apaga, se encenderá o apagará el LED.
_________________
- Diseño.
- El Intervalo del Reloj lo ponemos a 100 milisegundos.
_________________
- Bloques.
_________________
- Comentarios.
- Es importante el delay en el código para dar tiempo a escribir en la LCD.
- Puedes poner botones y varios LED, cada botón envía una letra, según la letra enviada se encenderá/apagará un LED
______________________________________________________________
10.- Otro código más sencillo.
- En vez del código anterior del NodeMcu, podemos poner este otro.
Código
Nodemcu_mensaje_LED_BT_LCD.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int LED0 = 0; // Es el terminal D3 de NodeMCU
char caracter;
String palabra;
void setup()
{
lcd.begin(16,2);// Columnas y filas de LCD
Serial.begin(9600);
pinMode(LED0, OUTPUT);
}
void loop() {
if(Serial.available())
{
caracter = Serial.read();
palabra = palabra + caracter;
if (caracter == '*') {
Serial.println(palabra);
palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter *
// LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print(palabra);
delay(400);
// LED0
if (palabra == "enciende"){digitalWrite(LED0, HIGH); }
if (palabra == "apaga"){digitalWrite(LED0, LOW); }
palabra = "";
}
}
}
|
- Este código irá recibiendo caracteres hasta que llegue el asterisco, este indica fin del mensaje.
- Cuando termine el mensaje se muestra en la LCD y se actúa sobre el LED0.
- Para ello debemos hacer una pequeña modificación en el código de App Inventor:
- En la aplicación p9J_palabra_LED_Nodemcu.aia
- cambiar esto, es decir que la palabra enviada siempre termine en asterisco *
- Si queremos una contestación, un retorno de la información, estudiamos el código visto en:
http://kio4.com/appinventor/9J2A_bluetooth_palabras_LCD.htm
- Se haría mediante un Serial.print, y un Reloj en App Inventor
______________________________________________________
________________________________
|