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


martes, 14 de julio de 2026

Medidor ROE con ESP32C3

  Página principal

Medidor ROE
ESP32C3


Hace unos meses había visto en youtube (RADIO BUNKER)  un medidor de potencia y ROE que se podía visualizar las medidas a través de internet.
Yo tenía el mismo medidor, y me comió la curiosidad el ver si yo podía hacer algo parecido.
Tenía dos posibilidades, tomar la tensión de la propia alimentación de la aguja medidora, o tomar los datos directamente del captador, tanto de la tensión directa como de la reflejada.


Para poder medir la ROE se tiene que medir la tensión directa como la reflejada a la vez, y hacer los cálculos.

Para hacer el proyecto, que debía servir una página a través de internet, además de medir la onda directa y la onda reflejada, he utilizado un ESP32C3.


A la vez se calcula la potencia sobre una carga de 50 ohmios.

Para nuestro caso la conversión a Watios se hace de la siguiente forma.

        W=((V/63)²)/50


Donde 63 es la proporción para transformación de la lectura proporcionada por el ESP32C3 a Voltios, y los 50 son los ohmios.

Después de calcular tanto la ROE y los Watios debemos representarlos en una página web.
Con la biblioteca WebServer se hace fácil, se crea una cadena de texto con todas la partes de una página web.
Se representa en texto y en gráficos. Los gráficos se hacen mediante la creación de un dibujo con formato svg.
Los gráficos son sencillos, son unas barras que representan los diferentes valores.
En el propio código fuente de la página web se obliga al navegador a actualizarse cada 1 Segundo.
Si se quiere  acceder desde Internet a nuestra página creada con el ESP32C3, deberemos configurar nuestro router a la IP del ESP32C3.





Si nos fijamos cuando cambiamos las teclas para medir tanto los Watios como el SWR, se modifica la carga sobre la tensión de V0 y V1.
Por lo cual debemos saber lo que queremos medir para no errar en la medida. Si colocamos la teclas para SWR, la medida en Watios será incorrecta, y viceversa.
También podemos observar que la medida cambia constantemente. Aunque el ESP32 no tiene fama por su linealidad en la conversión de A/D, el culpable no es el.
Las interferencias RF que produce una emisora, aunque sea de 4W, provoca ruido en la propia señal a medir, se debería poner filtros de alta frecuencia y apantallamientos.  

Este proyecto es solo un punto de inicio para hacer un medidor, si se quiere hacer uno serio se necesita tener su propio captador de ROE.

PROGRAMA

VIDEO



VERSIÓN 2
Para mandar datos desde un servidor WEB existe otro método más rápido.
En esta versión se hace uso de la programación en JavaScript.
Este método no recarga toda la página, solo manda desde el servidor los datos pedidos mediante el comando en javascript .
setInterval(leerDatos,500);
leerDatos();
Recibidor los datos en el navegador el programa javascript, crea las barras de Watios y del ROE.
 async function leerDatos()
    {
        const r = await fetch('/datos');
        const d = await r.json();
        document.getElementById('Wvol0').textContent = d.Jvol0;
        document.getElementById('Wvol1').textContent = d.Jvol1;
        document.getElementById('Wwat').textContent = d.Jwat;
        document.getElementById('Wroe').textContent = d.Jroe;


        document.getElementById("mi_watG").style.width = (d.Jwat*100)/5 + "%";
        document.getElementById("mi_watG").innerHTML = d.Jwat + " W";

        document.getElementById("mi_roeG").style.width = d.Jroe*20 + "%";       
        document.getElementById("mi_roeG").innerHTML ="ROE: " + d.Jroe ;
    }

ProgramaVersión2

VIDEO2





Saludos.
Juan Galaz



Bibliografía:

https://youtu.be/Y6bU1aNEhe0?si=yWGXt5H0RoDwl9Ak
https://youtu.be/ro6M2ssqFKA?si=XZG6q0CkU2q38VK8

lunes, 22 de junio de 2026

Grabador láser con piezas impresas en 3D.

  Página principal

CNC Láser
Grabador láser
Con piezas impresas en 3D
Parte 2



Hace unos meses realicé un grabador láser donde el objeto a grabar se colocaba en una plataforma movible, pero para objetos grandes o pesados no valía.
http://seta43.duckdns.org/cncale/cncale.html


Ahora realizo el mismo grabador, pero ahora el objeto se queda fijo,  y el láser se mueve en los 2 ejes, X e Y.


Se imprimen las diferentes partes en PLA.


Como se puede ver en la imagen el objeto se queda fijo, y es el láser el que se mueve.


El que no se quiera complicar mucho, que utilice el programa LaseGRBL .
El que quiera utilizar el programa INKScape, en este caso utilizo la extensión Laser-Tool.
Una vez bajada de su página WEB , deberemos descomprimir los archivos en el directorio donde  se instalan las extensiones.
Por defecto el tamaño del documento que viene en la extensión es de 200x200 , se puede cambiar, de momento cambiaré el tamaño del documento.

Podemos observar que el eje Y soporta el peso de todo el eje X (motor, 2 barras de acero, motor y 5 piezas de PLA) .
Esto implica bastante inercia cuando se aumenta la velocidad, y como consecuencia algún defecto en las líneas.
No hay mucho problema a velocidades inferiores a 1200 mm/S, pero hay que tenerlo en cuenta.
También se debe equilibrarla posición de las barras para que se equilibre el peso.

El acabado no es malo tanto en dibujos como en letras.



El motivo de este proyecto fue grabar los mangos de herramientas, que por sus dimensiones no se podían poner en plataformas deslizantes.


VIDEO



Saludos.
Juan Galaz


Bibliografía:
https://github.com/grbl/grbl
https://lasergrbl.com/
https://lightburnsoftware.com/
http://seta43.duckdns.org/cnca.html
https://winder.github.io/ugs_website/



martes, 19 de mayo de 2026

Antena Loop IV - Servo WEB

  Página principal

Antena Loop
IV

Hace medio año había construido una antena Loop para la banda de HF.
http://seta43.duckdns.org/loopb/loopc.html
La sintonía se manejaba mediante servos, y estos se controlaban mediante el microcontrolador ESP32.
El control se hacía mediante
Bluetooth , el cual me obligó a realizar un programa android.
El caso es que me parecía un poco engorroso, por lo que me plantee en su momento hacerlo tipo WEB.
También había utilizado un
ESP32 clásico, pero me parecía infrautilizar este microcontrolador.

El caso era emplear un ESP32C3, es muy pequeño y barato.
El problema es que la antena que utiliza es minimalista del tipo cerámica, y no llega muy lejos.
Lo primero que me plantee era mejorar la antena.
Mirando por internet encontré algún artículo que sustituían la antena por una pequeña antena hecha con un hilo de cobre.
https://peterneufeld.wordpress.com/2025/03/04/esp32-c3-supermini-antenna-modification/


La antena la modifique un poco, y utilice el hilo de cobre con un diámetro de 1.3mm .

ANTENA MODIFICADA
-------------------------------------
Default wifi band mode scan:
-------------------------------------
Scan start
Scan done
21 networks found
Nr | SSID                             | RSSI | CH | Encryption
 1 | MiFibra-5FF8                     |   -8 |  6 | WPA2
 2 | MiFibra-5FF8-2G4                 |   -8 |  6 | WPA2
 3 | MOVISTAR_EE00                    |  -58 |  6 | WPA2
 4 | Tech603F                         |  -64 |  1 | WPA+WPA2
 5 | vodafone5114                     |  -75 |  1 | WPA+WPA2
 6 | Livebox6-C2D0                    |  -83 |  1 | WPA2
 7 | MOVISTAR_9500                    |  -85 |  1 | WPA2
 8 | Livebox6-0273                    |  -87 |  6 | WPA2
 9 | HMU4Pq4AOfLziYzaPVZfffRwTi3YdQQV |  -87 | 10 | WPA2
10 | MOVISTAR_F410                    |  -87 | 11 | WPA2
11 | vodafone3830                     |  -90 |  1 | WPA+WPA2
12 | MIWIFI_NuE3-2G-2G-EXT_EXT        |  -91 |  1 | WPA2
13 | MOVISTAR_5EC0                    |  -91 |  6 | WPA2
14 | Lowi3E15                         |  -91 | 11 | WPA+WPA2
15 | MIWIFI_NuE3-2G-2G-EXT            |  -92 |  1 | WPA2
16 | Livebox6-46F4                    |  -92 |  6 | WPA2
17 | Red Wi-Fi de Alvaro              |  -92 | 11 | WPA2
18 | MiFibra-0E94                     |  -92 | 11 | WPA2
19 | MOVISTAR-WIFI6-A790              |  -92 | 11 | WPA2
20 | MOVISTAR-WIFI6-7500              |  -93 |  1 | WPA2
21 | SUPERRESASO                      |  -93 |  1 | WPA+WPA2
-------------------------------------

ANTENA ORIGINAL
-------------------------------------
Default wifi band mode scan:
-------------------------------------
Scan start
Scan done
17 networks found
Nr | SSID                             | RSSI | CH | Encryption
 1 | MiFibra-5FF8                     |  -19 |  6 | WPA2
 2 | MiFibra-5FF8-2G4                 |  -19 |  6 | WPA2
 3 | Tech603F                         |  -59 |  1 | WPA+WPA2
 4 | MOVISTAR_EE00                    |  -72 |  6 | WPA2
 5 | Livebox6-C2D0                    |  -75 |  1 | WPA2
 6 | MOVISTAR_F410                    |  -84 | 11 | WPA2
 7 | MOVISTAR_9500                    |  -85 |  1 | WPA2
 8 | vodafone5114                     |  -89 |  1 | WPA+WPA2
 9 | Livebox6-0273                    |  -90 |  6 | WPA2
10 | Livebox6-46F4                    |  -91 |  6 | WPA2
11 | MOVISTAR_5EC0                    |  -91 |  6 | WPA2
12 | vodafone3830                     |  -92 |  1 | WPA+WPA2
13 | MOVISTAR-WIFI6-A790              |  -92 | 11 | WPA2
14 | MIWIFI_NuE3-2G-2G-EXT_EXT        |  -93 |  1 | WPA2
15 | HMU4Pq4AOfLziYzaPVZfffRwTi3YdQQV |  -94 | 10 | WPA2
16 | Lowi3E15                         |  -94 | 11 | WPA+WPA2
17 | DIGIFIBRA-AYdy                   |  -95 | 11 | WPA+WPA2

Como se puede ver en los datos, la ganancia es considerable.

Una vez probada la mejora significativa de señal, ponemos el ESP32C3 en el circuito.



Ahora no toca programar el ESP32C3 para crear un Punto de Acceso, y insertar una página WEB del tipo formulario a base de botones.


client.println("<body><h1>ESP32-CAPACITOR</h1>");
client.println("<p>CAPACITOR1 - " + String(CAP1) + "</p>");
client.println("<p><a href=\"/cap1/menos\"><button class=\"button\">-</button></a>   <a href=\"/cap1/mas\"><button class=\"button\">+</button></a></p>");          
client.println("<p>CAPACITOR2 - " + String(CAP2) + "</p>");
client.println("<p><a href=\"/cap2/menos\"><button class=\"button\">-</button></a>   <a href=\"/cap2/mas\"><button class=\"button\">+</button></a></p>");
Parte del código de la página WEB.

Pulsado los diferentes botones, cambiamos la capacidad de los condensadores, y de esta forma la sintonía de resonancia.

Para conectarnos a la AP creada con el ESP32C3 he creado un QR que hará muy fácil su conexión a la red WIFI creada.


Si no queréis complicaros mucho cambiando el tipo de antena, se puede utilizar ESP8266 y sus muchas variantes que llevan impresas la antenas.

PROGRAMA_ESP32C3

Saludos.
Juan Galaz



Bibliografía:

https://loop-magnetic-ce3yu.blogspot.com/2015/01/antena-loop-magnetica_31.html
https://www.nonstopsystems.com/radio/frank_radio_antenna_magloop.htm#top-of-page
http://www.pearltrees.com/kc4fne/loop-antennas/id25196879
http://www.radioamatoripeligni.it/i6ibe/loopflat/loopflat.htm
https://www.ivarc.org.uk/uploads/1/2/3/8/12380834/multi-band_hf_magnetic_loop_slides_-1.pdf