miércoles, 7 de octubre de 2026

Registrador valores meteorológicos . Parte II . Parte Informática

Página principal
Registrador valores meteorológicos
Parte II
Parte Informática

En la primera parte del proyecto http://seta43.duckdns.org/2026/misensor/senmio.html nos quedamos en el receptor RF , que recibe los datos de temperatura, humedad y presión.
Estos datos son enviados a la Raspberry Pi por el puerto serie a través del USB.
Ahora nos toca tratar los datos para representarlos en la página WEB y mostrarlos en una gráfica.

Partimos de que ya tenemos un servidor WEB instalado en nuestra raspberry , en nuestro caso he instalado Debian 9 con el servidor nginx.
Para más información podéis visitar   http://seta43.duckdns.org/2026/servpi.html .
La versión de Raspberry que utilizo es una de las primeras con solo 512 Mb, por lo cual arranco en el modo consola, de esta forma irá más fluido.

Existe dos programas que se deben ejecutar, el programa SerialSensorWEB.py que se encarga de leer los datos que proceden del puerto serie, y un segundo programa jPlot.py que se ejecuta cada 10 minutos.
Todos los programa y la páginas web creadas se encuentran en el directorio /var/www/html/ztempera .

Empezamos con que el que arranque Linux con un usuario (seta) determinado en modo consola.
--------------EDITAMOS------------------------------------
nano /etc/systemd/system/getty@tty1.ser

Añadir:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin seta  --noclear %I $TERM

Una vez arrancado en modo  consola el usuario seta debemos ejecutar el programa tarea4.sh , este es un script que lanza
SerialSensorWEB.py .

-----------Añadir a  .bashrc  ....................

cd  /var/www/html/ztempera/
./tarea4.sh



Vemos cuando se reinicia o arranca la raspberry se inicia una consola ejecutando
SerialSensorWEB.py .

Automáticamente escanea los puertos serie y si encuentra la placa llamada SENSORTOTAL6 , empieza a procesar los datos recibidos.

Todos los datos recibidos los archiva cada minuto en un fichero con el nombre Temp2026_10_02.csv , donde 2026 sería el año, 10 el mes, y 2 es el día. Además cada 2 minutos se crea y actualiza la página WEB. La página creada se llama index.html con los datos actualizados de temperatura, humedad y presión.


Ahora nos toca crear los gráficos de temperatura, humedad y presión.
Anteriormente ya lo había realizado en http://seta43.duckdns.org/webgra.html utilizando la librería
matplotlib en python.
Esta librería crea un fichero de dibujo png con la gráfica de datos proporcionados.
El problema de está librería es que en la raspberry tarda hasta 3 minutos, en un ordenador normal lo hace en 1 segundo.
Creo que es debido al uso o no uso de la FPU, pero eso es especulación mía. El uso de esta librería no es viable en esta rasberry.

La otra forma es utilizar JavaScript y utilizar la librería http://www.jqplot.com/ . De esta forma la realización y los cálculos los hace en el navegador del usuario.
Anteriormente ya lo había realizado en http://seta43.duckdns.org/jsplot.html .
Para crear la página WEB  de gráficos se debe ejecutar el programa xgratem.sh , este script lanza el programa jPlot.py cada 10 minutos.
Para ejecutar un programa cada 10 minutos debemos desde un terminal del usuario seta ejecutar:
crontab -e  .

Editaremos de la siguiente forma:

  10 * * * * /var/www/html/ztempera/xgratem.sh


El programa crea con los datos almacenados en el fichero 
Temp2026_10_02.csv , la página WEB llamada index3.html , que hace uso de JavaScript para generar los gráficos.


Programas y ficheros

Este proyecto me obligó a repasar muchos proyectos anteriores, y a recordar la programación en python y
JavaScript que lo tenía algo olvidado.
Es satisfactorio ver en directo la temperatura exterior y las gráficas, como un extra de mi página WEB.
Para ver la temperatura en Palencia  (España) - http://seta43.duckdns.org/ztempera/index.html


Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html

martes, 6 de octubre de 2026

Registrador valores meteorológicos. Parte I. Parte Electrónica

  Página principal

Registrador valores meteorológicos
Parte I
Parte Electrónica

Hace unos 6 años había realizado un proyecto sobre un registrador de datos meteorológicos.
Aprovechado un sensor exterior comercial, leía los datos de humedad y temperatura. Estos datos se almacenaban en un servidor, y luego realizaba gráficas con estos datos  http://seta43.duckdns.org/camtem.html.
Mas tarde añadí un sensor de presión, con lo cual podía predecir el tiempo http://seta43.duckdns.org/webgra.html.
Una bajada de la presión atmosférica y un aumento de la humedad, es un seguro indicio de lluvia.
Después de un par de años funcionando, el sensor exterior dejo de funcionar. Como no tenía mas sensores de humedad/temperatura, utilicé los datos de otro sensor que solo proporcionaba temperaturas http://seta43.duckdns.org/ard433.html.
Así estuve años, registrando valores de presión y temperatura.
Estos últimos meses he estado haciendo varios proyectos sobre sensores:
25/09/2026 - Sensor de temperatura - TFA - DHT11 - SENSOR_DHT11
21/04/2026 - Sensor de temperatura - TFA - 18B20 - SENSOR_TFA_18B20
18/04/2026 - ESP32-C3 - Sensor de temperatura - Protocolo  TFA . SENSOR_TFA_C3
07/04/2026 - Arduino - Sensor de temperatura - Protocolo  TFA . SENSOR_TFA
En todos ellos incluía sensores de temperatura, humedad y presión. Pero al utilizar el protocolo TFA de solo sensor de temperatura, me puse a pensar para hacer algún cambio.
No se podía depender de sensores comerciales,  se rompe el sensor (cosa habitual) , y te encuentras en la misma situación.
Pues bien, cree mi propio sensor con medidas de
temperatura, humedad y presión.
Además cree mi propio protocolo derivado del TFA, al que añadí un Byte con el valor de la humedad.
Sensor emisor de temperatura DHT11
Protocolo SETA43   
CRC=111101 61   223-Device  80-Humedad  270-Grados  3-Canal 2-Bateria
4bits-CRC   8bits-Device    8bits-Humedad   12bits-Grados   2bits-Canal   2bits-bateria
1101 11011111 01010000 000100001110 11 10




Existen dos sensores externos:

Realizado con arduino   ->http://seta43.duckdns.org/2026/tfa/tfa.html


Realizado con ESP32-C3 ->
http://seta43.duckdns.org/2026/tfa/tfac3.html


Ahora los datos se mandan desde el sensor externo mediante Radiofrecuencia 433MHz , y los recibe el módulo receptor que tiene además un sensor de presión del tipo BMP180/280.
Todos estos datos se envían al servidor web que los trata y los muestra en una página WEB.



Receptor de RF 433MHz

SENSORTOTAL6
SENSORTOTAL6
SENSORTOTAL6
Scanning...
0-I2C device found at address 0x38 AHTxx
1-I2C device found at address 0x77 BMP280/180
done

Int433_Mode40170_BMP280


INICIO
Canal= 1
Humedad= 51
Grados= 232
BMP1= 262
BMP2= 9265
CHECKSUM= 1
FINAL


Salida por el terminal serie.

Programas

Aquí terminamos la parte de electrónica del proyecto.
Como se puede ver, del sensor externo se obtienen  los datos de temperatura y humedad, y del receptor interno se obtiene los datos de la presión.
En la siguiente parte del proyecto mostraremos como se realiza la representación en la página WEB de los datos, y la gráficas de los diferentes valores.

Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html

viernes, 25 de septiembre de 2026

Sensor de temperatura Protocolo TFA Arduino - DHT11

  Página principal

Sensor de temperatura
Protocolo  TFA

Arduino - DHT11

En este caso utilizo el sensor DHT11 (Temperatura-Humedad) para transmitir la señal RF  en 433MHz y protocolo TFA.




_
SENSOR433_DHT11
OK  223-Device  24-Grados  28-Humedad  3-Canal 3-Bateria
FINAL CRC=111001 57
1001 11011111 000011110000 11 11
*****


He realizado este proyecto por que era sencillo, solo he tenido que utilizar el código de anteriores montajes y añadir la librería del DHT11.
El DHT11 solo tiene una resolución de ±1°C, y en humedad de  1%RH .
Aunque en teoría su consumo puede llegar a 150uA en Standby, no he visto ningún ejemplo de como hacerlo.
Se podría utilizar la salida de cualquier pin para alimentarlo, y solo alimentarlo cuando se va a medir, pero no he querido hacerlo, quizá otro montaje.
Tal como está diseñado, el consumo está en 2mA, por lo cual la autonomía como mucho sería 31 días.

Programa DHT11


Saludos.
Juan Galaz


Bibliografía:

http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html

jueves, 24 de septiembre de 2026

Servidor WEB con Visualizador de temperaturas

  Volver

Servidor WEB
con
Visualizador de temperaturas


Cada 2 o 3 años los servidores que monto en mini-placas tipo Raspberry Pi o OrangePI-PC suelen empezar a fallar o deben ser actualizados.
Aprovechando el traspaso del servidor de Raspberry a OrangePI me he puesto a reprogramar el código de capturar la temperatura y  servirla en gráficos.
Todo esto se basa en anteriores artículos como:
http://seta43.duckdns.org/webgra.html
http://seta43.duckdns.org/jsplot.html

Los cambios son:
  • Al tener dos sensores, se muestran los valores de los dos sensores, uno está en el lado este de la casa, y otro está en el lado oeste.
  • Utilizo 2 programas para generar los gráficos,  la librería  Matplotlib (Python), y para el otro gráfico utilizo la librería jqplot ( JavaScript ).
  • En Raspberry el generar los gráficos con Matplotlib se hace pesado (3 minutos), utilizar jqplot se hace más rápida a ser generado en el ordenador cliente. En un ordenador actual es instantáneo, en OrangePI es bastante más rápido.
  • Aunque los datos se registran casi cada minuto, en los gráficos se muestran cada hora (es bastante fácil modificarlo).
Existen otros cambios, pero son a nivel de programación.
He utilizado la Rasbperry Pi Modelo B con 512 M de memoria RAM, y le he instalado Debian 9.
Como podéis imaginar con esta placa instalar un servidor X ,se le hace algo pesado funcionar, además tiene instalado un servidor WEB y un servidor FTP.
Para solucionar esto el sistema solo arranca en modo consola, que ahora mucha memoria.
También se añadió un servidor SSH para configurar todo desde otro ordenador, es bastante más práctico.
En el arranque en modo consola, el tty1 arranca el programa SerialSensorWEB.py , es el encargado de capturar los valores que le proporciona el receptor de sensores, además genera la página WEB que muestra los valores de los 2 sensores externos.
El programa está realizado en python  y muestra los valores en el terminal.


La muestra de temperaturas y gráficos se realizan de 3 formas diferentes.




Cada vez que actualizo el servidor, siempre intento retocar el código del servidor de temperatura.
Esto de ver el código escrito 3 años antes, tiene su aquel... no te acuerdas de lo que has escrito, y vuelves a reinterpretar lo que has querido hacer, es un ejercicio bastante bueno, y de paso te pones al día en programar en python. ;)

Este modelo de Rasbperry Pi tiene ya 14 años, y se nota. En cuanto pueda migraré todo a Orangepi-PC es bastante mejor.


PROGRAMAS

Saludos
Juan Galaz

Bibliografía:

http://seta43.duckdns.org/webgra.html
http://seta43.duckdns.org/jsplot.html


sábado, 5 de septiembre de 2026

Antena YAGI - 145 MHz (2m) y 438 MHz (70 cm) , con cinta métrica.

  Página principal

Antenas
Antena 145 MHz (2m) y 438 MHz (70 cm)
Yagi

Esta antena yagi es para 2m  y 70 cm, y está realizada con cinta métrica.
Se encuentra en la página :  https://www.thingiverse.com/thing:4177081  .
Todas las piezas está impresas en PLA, y tienen la forma siguiente:

Se montan de la siguiente forma:


Diseño:

Posición de la longitud El (desde el borde de 1 elemento hasta el borde del siguiente)
1  1032    0
2  337     27
3  313     158
4 1017 180 (longitud de extremo a extremo con espaciado de 5 mm)
5  312     254
6  926     313
7  298     357

Materiales:

Tubería de PVC 20 mm (espesor de la pared 1,2 mm)
Ancho de cinta de medición 12,5х0.1 mm de longitud 5m
Tornillos M3 = x9
M3 nueces = x9
Cable coaxial





Pruebas con el NANOvna.







Pros:  La antena funciona y es bastante directiva, además se puede plegar bastante bien si problemas de romperse.

Contras:  El diseño de las piezas en PLA se pueden mejorar, si intentas meter la cinta métrica por la pequeña abertura se termina rompiendo con cualquier roce.  

Si hay poco viento la cinta métrica se mantiene recta, pero con algo de viento las cintas se van de un lado a otro.


Conclusiones:
Se debería rediseñar todas la piezas de PLA para su mejor funcionamiento, por lo demás otra antena mas.
También deberías probar a cambiar la distancia entre elementos para ajustar la antena.

Saludos.
Juan Galaz



Bibliografía:

https://www.thingiverse.com/thing:4177081 


martes, 4 de agosto de 2026

Creador de siluetas Gambas con IA

 

Creador de siluetas
Gambas (Visual Basic Linux)


El otro día necesite tener un mapa de España con valores vectorizados, pero no lo encontraba.
Cuando se tiene una necesidad de algo y no existe, se empieza a pensar y eso es bueno.
Después de alguna experiencia con la IA de Google, decidí utilizarla para crear un pequeño programa en Gambas para generar coordenadas de un mapa.
Al utilizar la IA  para crear el programa, se reduce considerablemente el tiempo de programación.
Le dices que te cree un programa gambas que tenga un menú que tu desees, unos componentes  como Botones, Áreas gráficas, ListBox, etc... ,  y genera todos los procedimientos. También le puedes pedir que en la área gráfica muestre una imagen al iniciar el programa, y todo te lo hace ella automáticamente.
Al ser Gambas un programa bastante parecido a Visual Basic, intenta algunas veces de utilizar sentencias de VB.
Este es el momento que el programador con ciertos conocimientos de Gambas empieza a rectificar bastantes errores que la IA introduce. Por lo cual debe haber siempre un programador detrás.



El programa funciona de la siguiente forma:
-Cargar un mapa con una resolución de 800x600
-Si ha cargado algún datos de coordenadas, las borras con ClearList.
-Con el botón izquierdo vas marcando el perfil del dibujo, al principio dará error de que necesita 2 puntos para dibujar una recta. Después de 2 punto veremos como dibuja la línea.
-Si el perfil de líneas es discontinuo, como saltar a unas islas, deberemos marcar el primer punto pulsando el botón derecho del ratón.
-Cuando se ha terminado , se guardan los datos de coordenadas.

Los datos guardados se pueden utilizar luego en cualquier programa.
El programa es simple, pero funciona.

VIDEO


PROGRAMA


Un saludo
SETA43


Programando Gambas (Visual Basic Linux) con IA (inteligencia artificial)

 

Programando Gambas (Visual Basic Linux)
con
IA (inteligencia artificial)


El otro día me atreví a crear programas gambas con la IA.
Estuve probando la IA de Gogle, Microsoft, DeepSeek, y CHATGPT.
La mayor frustración fue que después de 3 horas corrigiendo a las IAs, al día siguiente no sabía nada de lo que le había enseñado.
Todas funcionan de la misma manera, olvidan todo lo enseñado en la siguiente sesión. Debes hacer un resumen de lo enseñado ese día para luego recordárselo al día siguiente.

Al final me quede con la de Google, por diferentes motivos, en algún caso como ChatGPT te limitaba el tiempo por sesión, la DeepSeek me hacía procedimientos en el programa que yo no había pedido. Que cada uno pruebe.

Hice dos pruebas: uno que pintaba formas geométricas, y otro era una libreta de direcciones sencilla.
Por si queréis probarlo os doy los pasos:

Indicar la sintaxis que tuve que guardar el día anterior:
Aquí tiene el resumen de las precisiones y correcciones de sintaxis que ha señalado durante la sesión:

  Uso directo de Draw.Begin en el control:
  Corrección: En lugar de dibujar sobre un objeto Picture en memoria (como yo había sugerido), indicó que se debe iniciar y finalizar el dibujo directamente sobre el control DrawingArea:

  code Gambas

  Draw.Begin(DrawingArea1)
  '...
  Draw.End()

Sintaxis exacta para definir el color (Color.RGB):

  Corrección: Precisó que para asignar el color de forma estricta en Gambas se debe utilizar la llamada a la clase Color:

  code Gambas

Draw.Foreground = Color.RGB(r, g, b)

Ahora le pido que haga el programa:

Petición Inicial: Crear un programa con un área de dibujo (DrawingArea) y un menú desplegable con las opciones: Líneas, Círculos, Rectángulos, Elipses, Borrar y Salir.

  Restricción de Interfaz (Sin atajos): Especificaste que no querías "adelantos de teclado" (eliminar el uso del símbolo & que genera subrayados automáticos).

  Corrección y Ajuste de Separadores: Precisaste la sintaxis exacta del menú separador (Text = "-") y, acto seguido, solicitaste eliminar por completo los separadores para dejar un menú continuo.

  Multiplicación de Elementos: Pediste modificar el programa para que, en lugar de una sola figura, se dibujaran exactamente 10 líneas, 10 círculos, 10 rectángulos y 10 elipses.

  Componente Aleatorio: Solicitaste que esas 10 figuras tuvieran dimensiones aleatorias cada vez que se seleccionaran.

  Variedad Cromática: Añadiste el requisito de que cada una de las 10 figuras tuviera un color diferente.

  Relleno Sólido: Como toque final para este programa, pediste que las figuras geométricas cerradas estuvieran completamente rellenas.





El segundo programa es una libreta de direcciones sencilla.
Continuando con la sesión , con la sintaxis de tu sesión.

  Petición Inicial: Diseñar un programa nuevo que funcionara como una agenda o libreta de direcciones simple (campos para Nombre, Teléfono, Email, botones de control y una lista visual).

  Persistencia de Datos: Pediste añadir un menú para Guardar y Leer los contactos en el disco duro para no perderlos al cerrar la aplicación.

  Ampliación y Motor de Búsqueda: Solicitaste añadir las opciones de Acerca y Salir al menú, además de la funcionalidad clave de poder buscar un nombre (que terminamos implementando como un filtro inteligente en tiempo real).





Conclusión:
La IA es una herramienta muy útil, no es la panacea para programar, pero te ahorra mucho tiempo.
Debes tener en cuenta  que tienes que tener conocimientos en el lenguaje de programación, la IA se equivoca bastante, pero aprende rápido.
No olvides que todas las cosas que le enseñas las olvida de una sesión a otra, debes guardar el resumen de lo que has hecho, y al día siguiente cargarla al inicio de sesión.
Aconsejo que lo probéis  es de lo mas curioso, y seguro que lo emplearéis en vuestros programas.


Un saludo
SETA43