- ESP8266 NodeMCU v3
- USB Cable
- Mini Breadboard
- Jumper Cables
- LEDs
- PIR Sensor HC-SR501
- 4.5V AAA Battery Case
- AAA Batteries
- 5V Relay
Instala el IDE de Arduino si no lo has hecho ya.
Si tienes Windows o Max OSC baja e instala los drivers para conexion por USB usando el chip CH340. Ya tienes los drivers de otro taller? no hace falta instalarlos otra vez.
Si tienes Linux no hace falta instalar los drivers, ya viene instalados con la mayoria de las distribuciones linux.
- Archivo > Preferencias > Gestor de URLs de Tarjetas > http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Herramientas > Placa > Gestor de tarjetas...
- Buscar "esp8266" y elegir "esp8266 by ESP8266 Community"
- Instalar
- Herramientas > Placa .. > "NodeMCU v1.0 (ESP-12E Module)" (o el módulo en particular que uses).
- Herramientas > Puerto > (lo que aparezca, por ejemplo COM5)
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(D8, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(D8, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(D8, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
https://github.com/north-hackerspace/taller-domotica/blob/master/soluciones/Desafio2/Desafio2.ino
https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=en
Aqui podremos leer mensajes del canal de mensajes y encender y apagar el LED con el movil.
https://github.com/north-hackerspace/taller-domotica/blob/master/soluciones/Desafio3/Desafio3.ino
Vamos a usar el sensor de movimiento HC-SR501, aqui teneis mas informacion sobre el modulo.
A efectos practicos, lo que queremos es leer el movimiento con la funcion digitalRead(D2)
de Arduino (si hay movimiento es 1
, si no es 0
) y encender un LED de indicador amarillo en el pin D6.
A la vez vamos a mandar este valor por un canal de MQTT usando el topic /hackerspace/sensor
:
// Lineas 100 en adelante
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
// Cada medio segundo mirar el sensor de movimiento
if (now - lastMsg > 500) {
int sensorVal = digitalRead(D2);
// Ha cambiado el sensor?
if (sensorVal != lastSensorVal) {
Serial.print("The Sensor is: ");
Serial.println(sensorVal);
snprintf (msg, 50, "%ld", sensorVal);
client.publish("/north-hackerspace/sensor", msg);
lastSensorVal = sensorVal;
digitalWrite(D6, sensorVal);
}
}
// Cada 5 segundos mandar mensaje por MQTT
if (now - lastMsg > 5000) {
lastMsg = now;
++value;
snprintf (msg, 50, "Hello #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish("/north-hackerspace/messages", msg);
}
}
https://github.com/north-hackerspace/taller-domotica/blob/master/soluciones/Desafio4/Desafio4.ino
https://github.com/north-hackerspace/taller-domotica/blob/master/soluciones/Desafio5/Desafio5.ino
Completo: Un dispositivo que notifica sensor de presencia, y se puede usar para encender y apagar la luz
https://github.com/north-hackerspace/taller-domotica/blob/master/soluciones/Completo/Completo.ino