Una V2 del enchufe
inicial trata de poner orden y dar una terminación más compacta,
para lo que he diseñado una base impresa que aloje la placa con el
ESP8266 (va encajada, sin usar tornillos), el relé, el alimentador
(también encajado) y el pulsador.
El enlace al stl de
la base :
Versión Sonoff.
Encontré un módulo
comercial por unos 6 euros que utiliza un ESP8266, fabricado por
Itead. Se llama Sonoff y en una misma placa esta el ESP, la
alimentación, el relé, el pulsador y un led. Tiene más o menos el
mismo coste que comprar los elementos por separado. Es este y me
costó 5,97€:
Viene con su propio
código para utilizarse con una App (eWeLink
), tanto para Android como para IOS. Para cargarle el código souliss
hay que soldar los pines del puerto serie.
Toda la información del hack de este modulo lo tenéis aquí:
Le he diseñado un
soporte impreso que no necesita tornillos y una tapa (con unas aletas
aporte de Juan Pinto) para tener acceso al pulsador y al led:
Los stl para
imprimir:
Una vez terminado,
queda así
Os quiero advertir
que el programador que compre por 4 euros en el chino de la esquina
para este nuevo modelo, parecía primo hermano de los viejos Coati
que tenía en casa, pero no es así, lo que me complico mucho el
asunto. Tiene otro diseño que me obligó a eliminar el plástico
sobrante con una dremel provista de un disco de corte.
Para ponerlo en modo
programación, hay que mantener presionado el pulsador (GPIO 0) antes
de alimentar el Sonoff. Este mismo pulsador se utiliza para accionar
el relé de forma manual.
El código Souliss
cargado:
/**************************************************************************
NODO Souliss ESP8266 como enchufe WIFI
NODO Souliss ESP8266 como enchufe WIFI
Usamos
una IP fija: 192.168.1.24
Se utiliza la carcasa de un programador mecánico en la que se ha alojado un módulo SONOFF:
Función Puerto
Pulsador GPIO0
Relé GPIO12
LED GPIO13
RX GPIO3
TX GPIO1
Con OTA clasico (funciona con: IDE arduino 1.6.5, Python 2.7 y core ESP 1.6.5-1160-gef26c5f )
***************************************************************************/
#include "SoulissFramework.h"
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
// Configure the framework
#include "bconf/MCU_ESP8266.h" // Carga el codigo directamente en el ESP8266
// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID "XXXXXX"
#define WiFi_Password "XXXXXXXX"
// Librerias
#include "Souliss.h"
// Definir la configuracion de la red
uint8_t ip_address[4] = {192, 168, 1, 24};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4] = {192, 168, 1, 1};
#define myvNet_address ip_address[3] // El último byte de la dirección IP (24) es la dirección vNet
#define myvNet_subnet 0xFF00
// Definición de SLOTs
#define RELE_SLOT 0
//Definicion de pines
#define OUTPUTPIN 12 //relé
#define PULSADOR_PIN 0 //entrada pulsador con resistencia pullup
#define POWER_LED_PIN 13 //Pin GPIO13 para el led indicador de ON/OFF de la alimentación eléctrica
// Setup the libraries for Over The Air Update.
OTA_Setup(); //ota
void setup()
{
Initialize();
//Asignar una IP fija al nodo.
Souliss_SetIPAddress(ip_address, subnet_mask, ip_gateway);
Set_SimpleLight(RELE_SLOT); // Define la logica
pinMode(OUTPUTPIN, OUTPUT); // pin de salida
pinMode(PULSADOR_PIN, INPUT); //pin usado como entrada
pinMode(POWER_LED_PIN, OUTPUT);
// Init the OTA.
OTA_Init(); //ota
}
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
FAST_50ms() { // We process the logic and relevant input and output every 50 milliseconds
Logic_SimpleLight(RELE_SLOT);
LowDigIn(PULSADOR_PIN, Souliss_T1n_ToggleCmd, RELE_SLOT); //GPIO0 tiene pullup=>la activacion es con LOW
DigOut(OUTPUTPIN, Souliss_T1n_Coil,RELE_SLOT);
LowDigOut(POWER_LED_PIN, Souliss_T1n_Coil, RELE_SLOT); //para encender el led hay que poner la salida a 0V (LOW) que va al catodo. El anodo va a 3.3V
}
// Here we handle here the communication with Android
FAST_PeerComms();
}
// Look for a new sketch to update over the air.
OTA_Process(); //ota
}
Se utiliza la carcasa de un programador mecánico en la que se ha alojado un módulo SONOFF:
Función Puerto
Pulsador GPIO0
Relé GPIO12
LED GPIO13
RX GPIO3
TX GPIO1
Con OTA clasico (funciona con: IDE arduino 1.6.5, Python 2.7 y core ESP 1.6.5-1160-gef26c5f )
***************************************************************************/
#include "SoulissFramework.h"
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
// Configure the framework
#include "bconf/MCU_ESP8266.h" // Carga el codigo directamente en el ESP8266
// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID "XXXXXX"
#define WiFi_Password "XXXXXXXX"
// Librerias
#include "Souliss.h"
// Definir la configuracion de la red
uint8_t ip_address[4] = {192, 168, 1, 24};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4] = {192, 168, 1, 1};
#define myvNet_address ip_address[3] // El último byte de la dirección IP (24) es la dirección vNet
#define myvNet_subnet 0xFF00
// Definición de SLOTs
#define RELE_SLOT 0
//Definicion de pines
#define OUTPUTPIN 12 //relé
#define PULSADOR_PIN 0 //entrada pulsador con resistencia pullup
#define POWER_LED_PIN 13 //Pin GPIO13 para el led indicador de ON/OFF de la alimentación eléctrica
// Setup the libraries for Over The Air Update.
OTA_Setup(); //ota
void setup()
{
Initialize();
//Asignar una IP fija al nodo.
Souliss_SetIPAddress(ip_address, subnet_mask, ip_gateway);
Set_SimpleLight(RELE_SLOT); // Define la logica
pinMode(OUTPUTPIN, OUTPUT); // pin de salida
pinMode(PULSADOR_PIN, INPUT); //pin usado como entrada
pinMode(POWER_LED_PIN, OUTPUT);
// Init the OTA.
OTA_Init(); //ota
}
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
FAST_50ms() { // We process the logic and relevant input and output every 50 milliseconds
Logic_SimpleLight(RELE_SLOT);
LowDigIn(PULSADOR_PIN, Souliss_T1n_ToggleCmd, RELE_SLOT); //GPIO0 tiene pullup=>la activacion es con LOW
DigOut(OUTPUTPIN, Souliss_T1n_Coil,RELE_SLOT);
LowDigOut(POWER_LED_PIN, Souliss_T1n_Coil, RELE_SLOT); //para encender el led hay que poner la salida a 0V (LOW) que va al catodo. El anodo va a 3.3V
}
// Here we handle here the communication with Android
FAST_PeerComms();
}
// Look for a new sketch to update over the air.
OTA_Process(); //ota
}
Mas que el temporizador, no sería mejor incorporar un medidor de intensidad para saber el consumo del enchufe con un sct-013-030?
ResponderEliminarSaludos,
Es una buena idea, aunque quizas el SCT no sea el mas apropiado porque es bastante grande pero con uno de los pequeños si se podria hacer, será cuestion de mirar a ver si hay espacio.
EliminarNo hay que verlo como un simple temporizador, sino como un auténtico nodo Souliss wifi que permite controlar on/off cualquier aparato con enchufe. Con OpenHab de por medio (que se note que estoy aprendiendo a usarlo :P) puede responder a cualquier evento con las "rules" apropiadas.
EliminarEn cuanto al medidor de consumo, lo tengo en proyecto, pero empleando un ACS712 que cabe en el enchufe.
Genial esta nueva version!! Voy a imprimirlos :P
ResponderEliminarSe me ha olvidado comentar Juan Jesus, he editado tu entrada minimamente, simplemente he puesto el titulo en su sitio, he añadido el corte de hoja (para que se vea la entrada parcialmente y luego el "leer mas") y he cambiado el Link a la palabra "Entrada" para que quede mas limpio :P
ResponderEliminarSalu2
Como siempre te agradezco tu trabajo de edicion.
EliminarSaludos
hola, habria que poner una resistencia pull-down para que funcionara el rele, o no hace falta, un saludo
ResponderEliminar