internet de las cosas
Bueno, cada vez escribiendo menos.
Durante el mes de enero 2017 participé en un Taller organizado por @Club Arduino Chile relacionado con la Internet de las cosas. Todo bien, una exposición clarita, una presentación explicando a grandes rasgos los elementos que constituyen una interacción básica con las cosas a través de internet.
Basicamente las cosas se comunican a través de internet a través de algún protocolo de comunicaciones que,al igual que mi vecina, es quien lleva y trae los mensajes. En términos de hardware, el kit con que se desarrrolló el Taller consistía en madera terciada cortada con laser simulando un edificio de 3 pisos, una tarjeta NodeMcu, una protoboard + cables y leds.
para programar la NodeMcu usamos el IDE arduino, potenciado con las librería apropiada para comunicarse con la NodeMcu, agregada al ide desde aca.
Le subimos este código
#include
#include
const int primerPiso = 5; //D1
const int segundoPiso = 4; //D2
const int tercerPiso = 0; //D3
char message_buff[100];
const char* ssid = "nombredetured";
const char* password = "clavedetured";
const char* mqtt_server = "nombredetuservidor";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup() {
pinMode(primerPiso, OUTPUT);
pinMode(segundoPiso, OUTPUT);
pinMode(tercerPiso, OUTPUT);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void callback(char* topic, byte* payload, unsigned int length) {
int i = 0;
for (i = 0; i < length; i++) {
message_buff[i] = payload[i];
}
message_buff[i] = '\0';
String msgString = String(message_buff);
if (msgString.equals("off")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("a")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("b")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("c")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("d")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("e")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("f")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("on")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, HIGH);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("NodeMCUPato")) {
client.publish("ClubArduino/Pato", "Hola, soy el departamento de Pato");
client.subscribe("ClubArduino/Pato");
} else {
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}
Este código se carga desde el IDE arduino al dispositivo NodeMcu para que actúe como cliente.
Y habiendo cliente, tiene que haber un b̶a̶r̶ Servidor que centralice las comunicaciones. En este caso, el servidor estaba montado en una raspberry pi que levantaba un servidor https://mosquitto.org/ al cual accedimos a través del protocolo mqtt.
Y bueno, básicamente la aplicación embebida en la placa espera que le llegue uno de los caracteres definidos en el código para reaccionar encendiendo o apagando los led respectivos. Estos caracteres los enviamos desde la aplicación para android mqtt dash Algo así:
Hasta ahí el Taller. Perfecto.
EL siguiente paso... probar, echar a perder, experimentar.
Probaremos la aplicaciòn blynk para android siguiendo los pasos de este detallado tutorial
.
Durante el mes de enero 2017 participé en un Taller organizado por @Club Arduino Chile relacionado con la Internet de las cosas. Todo bien, una exposición clarita, una presentación explicando a grandes rasgos los elementos que constituyen una interacción básica con las cosas a través de internet.
Basicamente las cosas se comunican a través de internet a través de algún protocolo de comunicaciones que,al igual que mi vecina, es quien lleva y trae los mensajes. En términos de hardware, el kit con que se desarrrolló el Taller consistía en madera terciada cortada con laser simulando un edificio de 3 pisos, una tarjeta NodeMcu, una protoboard + cables y leds.
para programar la NodeMcu usamos el IDE arduino, potenciado con las librería apropiada para comunicarse con la NodeMcu, agregada al ide desde aca.
Le subimos este código
#include
#include
const int primerPiso = 5; //D1
const int segundoPiso = 4; //D2
const int tercerPiso = 0; //D3
char message_buff[100];
const char* ssid = "nombredetured";
const char* password = "clavedetured";
const char* mqtt_server = "nombredetuservidor";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup() {
pinMode(primerPiso, OUTPUT);
pinMode(segundoPiso, OUTPUT);
pinMode(tercerPiso, OUTPUT);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void callback(char* topic, byte* payload, unsigned int length) {
int i = 0;
for (i = 0; i < length; i++) {
message_buff[i] = payload[i];
}
message_buff[i] = '\0';
String msgString = String(message_buff);
if (msgString.equals("off")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("a")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("b")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("c")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, LOW);
} else if (msgString.equals("d")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("e")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, LOW);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("f")) {
digitalWrite(primerPiso, LOW);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, HIGH);
} else if (msgString.equals("on")) {
digitalWrite(primerPiso, HIGH);
digitalWrite(segundoPiso, HIGH);
digitalWrite(tercerPiso, HIGH);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("NodeMCUPato")) {
client.publish("ClubArduino/Pato", "Hola, soy el departamento de Pato");
client.subscribe("ClubArduino/Pato");
} else {
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}
Este código se carga desde el IDE arduino al dispositivo NodeMcu para que actúe como cliente.
Y habiendo cliente, tiene que haber un b̶a̶r̶ Servidor que centralice las comunicaciones. En este caso, el servidor estaba montado en una raspberry pi que levantaba un servidor https://mosquitto.org/ al cual accedimos a través del protocolo mqtt.
Y bueno, básicamente la aplicación embebida en la placa espera que le llegue uno de los caracteres definidos en el código para reaccionar encendiendo o apagando los led respectivos. Estos caracteres los enviamos desde la aplicación para android mqtt dash Algo así:
Hasta ahí el Taller. Perfecto.
EL siguiente paso... probar, echar a perder, experimentar.
Probaremos la aplicaciòn blynk para android siguiendo los pasos de este detallado tutorial
.
Comentarios