Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[SpainLabsIoT2018] Caso real: Nodos ESP8266
#21
(15-03-2018, 01:18 PM)Kurama escribió:
(15-03-2018, 11:40 AM)grafisoft escribió:
(15-03-2018, 09:35 AM)Kurama escribió: No se podria sacar una versión mas reducida con la que se pueda usar una lipo como la de los mini drones? Estoy en documentacion de mi proyecto para gestionar la temperatura/humedas de todas las estancia s de mi piso y habia visto la NodeMCU pero la de Grafisoft tiene muy buena pinta.

El problema de nodemcu es que no esta enfocado al bajo consumo, de ahi que yo tuviera que hacer este diseño,  porque mis pruebas iniciales eran en nodemcu.

La pcb  es del tamaño que las baterias 18650, no ocupa mas. Cuidado porque para conseguir autonomia, si no vas a tener el dispositivo conectado a la red o panel solar, no puedes usar una bateria pequeña.

El rediseño siempre es posible. La pcb esta no es mucho mas grande que la de nodemcu. Le puedes poner una bateria del tipo que quieras, no es necesaeio que sea tipo 18650, la pcb dispone de connector ptipo JST para una bateria externa.

Me queda alguna pcb, si te animas a soldar Guiño


Saludos

Me gusta la idea, se podria conserguir con todos los componentes para soldar?

Si que se podria.
Citar
#22
Por intentar simplificar un poco nuestros códigos, esto podría seros útil.

Actualmente para construir toda la estructura necesaria para enviar datos mediante MQTT hacemos algo similar a esto:

Código:
//Bloque para el envio del valor temperatura.
   char valTemperature[5];
   dtostrf(bme.readTemperature(), 3, 1, valTemperature);
   String payload; //Variable para contener la info de la trama que se envia.
   //Creamos la trama. Sera del estilo: "sensors/NodeName/temp"
   TopicMQTT = "sensors/" + NodeName + "/temp";
   //Creamos el mensaje. Sera del estilo: "NodeName temperature=";
   payload = ""; //Limpiamos la variable.
   payload += NodeName;
   payload += " temperature=";
   payload += valTemperature;
   //Enviamos la trama via MQTT.
   client.publish((char*) TopicMQTT.c_str(), (char*) payload.c_str());
   delay(3000);

Y esto lo hacemos para cada tipo de dato que queremos enviar, es decir, este mismo fragmento (cambiando algún nombre de variable) lo tenemos que repetir para todos los datos que queremos enviar. Como pueden ser, temperatura, humedad, presión, etc etc.

Podemos simplificar un poco esto, y crear una función genérica que genere todo lo necesario para construir.

Estas lineas no las vamos a incluir, son para preparar el dato, y es algo que tendremos que dárselo ya hecho a la función:
   char valTemperature[5];
   dtostrf(bme.readTemperature(), 3, 1, valTemperature);

El resto lo que haremos sera crear la siguiente función en el archivo "funciones.h". Lo podemos colocar al final de todo el contenido. Añadiremos lo siguiente:


Código:
//Funcion generica para el envio de datos usando MQTT. Los parametros
//tienen que ser de tipo String.
//Siendo el parametro Dato el correspondiente al valor del sensor que queremos enviar.
//El resto de parametros corresponden a la creación del topic.
//El topic tendra la estructura: "BName/NName/TipoDato".
void enviarDato(String Dato, String BName, String NName, String TipoDato) {

     //Creamos el topic. Sera del estilo: "BName/NName/TipoDato"
     TopicMQTT = BName + "/" + NName + "/" + TipoDato;
     //Creamos el mensaje. Sera del estilo: "NName TipoDato=";
     String payload; //Variable para contener la info de la trama que se envia.
     payload = ""; //Limpiamos la variable.
     payload += NName;
     payload += " " + TipoDato + "=";
     payload += Dato;
     //Enviamos la trama via MQTT.
     client.publish((char*) TopicMQTT.c_str(), (char*) payload.c_str());
     delay(3000);

}

En nuestro archivo de código principal (main.cpp), enviaremos los datos de la siguiente manera:
Al principio de todo, justo debajo de la linea " #include "funciones.h" ", para facilitar la configuración del código según que queramos hacer con el nodo, colocaremos lo siguiente:


Código:
//----------------------- CONFIG PARAMETERS------------------------
//Con este parametro se construye todos los topics para el protocolo MQTT.
// Nombre del nodo.
//Estructura del Topic: "BaseName/NodeName/"
String BaseName = "sensors";
String NodeName = "Test4";
//El tiempo de sueño se especifica en el fichero funciones.h (sleeptime).
//-----------------------------------------------------------------

Así simplificamos y no tenemos que andar renombrando por el código los nombres de diversos parámetros según el tipo de sensor o dato que mandemos.

Para enviar los datos, ahora simplemente tendremos que usar esta función:

Código:
enviarDato(valDato, BaseName, NodeName, "TipoDato");

Donde en valDato es el parámetro que pasamos a la función con el valor del dato. Ya tiene que estar convertido a string.
El resto de parámetros que le pasamos es para construir el topic, que tendrá la estructura: "BName/NName/TipoDato".

En la siguiente versión que suba del firm para el curso, ya tendré implementada esta estructura. Os la comento aquí para los que vais pidiendo PCBs sueltas y que os resulte mas fácil programar. Espero os sea de utilidad.

Saludos
Citar
#23
Alguien que controle de OTA en ESP8266, para ver como podríamos implementarlo en este proyecto? Seria muy interesante Sonrisa
Citar
#24
(15-03-2018, 03:35 PM)grafisoft escribió:
(15-03-2018, 01:18 PM)Kurama escribió:
(15-03-2018, 11:40 AM)grafisoft escribió: El problema de nodemcu es que no esta enfocado al bajo consumo, de ahi que yo tuviera que hacer este diseño,  porque mis pruebas iniciales eran en nodemcu.

La pcb  es del tamaño que las baterias 18650, no ocupa mas. Cuidado porque para conseguir autonomia, si no vas a tener el dispositivo conectado a la red o panel solar, no puedes usar una bateria pequeña.

El rediseño siempre es posible. La pcb esta no es mucho mas grande que la de nodemcu. Le puedes poner una bateria del tipo que quieras, no es necesaeio que sea tipo 18650, la pcb dispone de connector ptipo JST para una bateria externa.

Me queda alguna pcb, si te animas a soldar Guiño


Saludos

Me gusta la idea, se podria conserguir con todos los componentes para soldar?

Si que se podria.
Me interesarían dos, envíame mp.

Saludos,
"Enseñar es aprender dos veces".
Citar
#25
(07-04-2018, 04:08 PM)Kurama escribió:
(15-03-2018, 03:35 PM)grafisoft escribió:
(15-03-2018, 01:18 PM)Kurama escribió: Me gusta la idea, se podria conserguir con todos los componentes para soldar?

Si que se podria.
Me interesarían dos, envíame mp.

Saludos,

MP enviado!
Citar
#26
Añadida info en el post principal sobre gestión de interrupciones tanto en la parte de software como en hardware.

Gestión de interrupciones: https://techtutorialsx.com/2016/12/11/es...nterrupts/
[Hardware] Posibles formas de implementar la parte de hardware en las interrupciones y deepsleep: https://github.com/esp8266/Arduino/issues/1488
Nota: Todos los pines pueden generar interrupciones excepto el GPIO16.
Citar
#27
Primero felicitarte por tu gran trabajo,
no se si llego tarde pero te quedan pcb?
un saludo.
Citar
#28
(13-04-2018, 04:41 PM)adev escribió: Primero felicitarte por tu gran trabajo,
no se si llego tarde pero te quedan pcb?
un saludo.

Gracias Sonrisa


Si, me quedan pcbs, componentes alguno suelto ya. Mandame MP.

Saludos
Citar
#29
(10-04-2018, 10:21 PM)grafisoft escribió:
(07-04-2018, 04:08 PM)Kurama escribió:
(15-03-2018, 03:35 PM)grafisoft escribió: Si que se podria.
Me interesarían dos, envíame mp.

Saludos,

MP enviado!
Respondido.
"Enseñar es aprender dos veces".
Citar
#30
(13-04-2018, 05:15 PM)grafisoft escribió:
(13-04-2018, 04:41 PM)adev escribió: Primero felicitarte por tu gran trabajo,
no se si llego tarde pero te quedan pcb?
un saludo.

Gracias Sonrisa


Si, me quedan pcbs, componentes alguno suelto ya. Mandame MP.

Saludos

MP enviado
Citar
#31
Respondidos todos!

Saludos
Citar
#32
Planteada la shield para poder conectar sensores. Control de alimentación para reducir consumos. Conectores I2C, UART, 1 ADC, elevador a 5v, 1 conector para pluviómetro y 1 conector directo al ESP para lo que sea (por ejemplo One Wire). No obstante se tiende mas a sensores digitales, que ya llevan toda la electrónica necesaria integrada, de forma que solo nos centramos en comunicación, gestión de interrupciones y alimentación. No hay salida SPI porque generalmente se suele disponer de comunicación SPI e I2C, así que es mejor tirar de I2C. Ahora a ver si cabe todo en la placa y no hay que empezar a recortar conectores Facepalm Creo que le abriré un post solo para la shield, y así quedara mas organizado y localizado el material.

resim
Citar
#33
Primeros pasos... será por conectores!

resim
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [SpainLabsIoT2018] Nodo ESP8266 - Smart Sensors Shield grafisoft 16 1,295 02-07-2018, 08:55 PM
Último mensaje: grafisoft
  APORTE [SpainLabsIoT2018] ESP8266 NodeMCU - Ajustando su consumo (hack) grafisoft 4 500 15-06-2018, 06:47 AM
Último mensaje: grafisoft
  CONSULTA Red esp8266 esp32 wifi. Más de 50 dispositivos jandrito80 1 295 10-04-2018, 11:05 AM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Grafana - Actualizar a la ultima version grafisoft 0 258 02-04-2018, 07:46 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Grafana - Dashboard Open Source grafisoft 0 724 19-02-2018, 10:44 PM
Último mensaje: grafisoft