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





martes, 21 de abril de 2026

Sensor de temperatura Protocolo TFA - Arduino - ESP32-C3 Super Mini 18B20

  Página principal

Sensor de temperatura
Protocolo  TFA

Arduino - ESP32-C3 Super Mini
18B20

En los 2 anteriores montajes había realizado un sensor de temperatura con el protocolo TFA que utilizan muchas estaciones meteorológicas comerciales.
En un primer montaje había utilizado el ATmega328 , y el segundo montaje utilizaba  un ESP32-C3. En ambas utilizaba un AHT21 que es un sensor doble, de presión, y de humedad-temperatura.
Como solo utilizaba el sensor de temperatura, pensé que era desaprovechar el módulo, y que para este montaje era mejor utilizar un 18B20, que es más barato.
El 18B20 utiliza el protocolo OneWire, por lo cual elimino toda la programación de I2C, para sustituirla por OneWire.







Toda la PCB sería igual, solo habría que colocar un 18B20 y una resistencia de 4K7.
Además he mejorado el código en la versión de ATmega328, corrigiendo algún error.

PROGRAMA ATmega328





En la versión de ESP32-C3 todo sigue igual, solo sustituyo el código de I2C por el de OneWire.
He visto que el C3 tiene un LED de piloto de alimentación, por lo cual si se quiere reducir aún más el consumo, deberíamos el LED.
Existe otra posibilidad para aumentar la autonomía es que tarde más en despertarse, pasar de 1 Seg. a 4 Seg.  o más.

Programa ESP32-C3


Saludos.
Juan Galaz



Bibliografía:

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

sábado, 18 de abril de 2026

Sensor de temperatura - Protocolo TFA - ESP32-C3 super mini

  Página principal

Sensor de temperatura
Protocolo  TFA

ESP32-C3 super mini


Esta es la continuación del sensor con el protocolo TFA realizado con un ATMEGA328, pero en este caso lo realizo con un ESP32_C3 super mini.


Que cada uno mire en su placa la configuración de pins.
Se puede encontrar en:
    /home/usuario/.arduino15/packages/esp32/hardware/esp32/3.3.0/variants/lolin_c3_mini

Se diseña el esquema y el circuito impreso en KICAD.




El circuito impreso se realizó con el método de transferencia de tinta tóner.
Quedando como se ve en la foto.


Como no me quería arriesgar en alimentar el ESP-C3 con los 4V que proporciona la batería 18650, he bajado el voltaje a 3.3V utilizando un diodo que tiene una caída de voltaje de 0.6V .

Quedando todo el conjunto ...


El 95% del código es el mismo que con el ATmega328, pero he tenido que cambiar la forma en que se duerme el microcontrolador.

    esp_sleep_enable_timer_wakeup(1000000); // 1 Segundo
    esp_light_sleep_start();


También he solucionado algún error, sobre todo el que siempre sonaba un pitido cuando mandaba datos, y solo lo tiene sonar la primera vez.

Como el micro se encuentra dormido el 98% del tiempo, cuando se programa por segunda vez, no responde a la programación.
Para poder programarlo, deberás pulsar los dos botones a la vez (BOOT y RESET), sin dejar de presionar el BOOT, soltar el RESET, y ahora mandar el código al microprocesador.
El consumo es el siguiente:
Alimentado a 5V en el pin de 5V -> 0.78mA (Dormido)        27mA(Despierto)
Alimentado a 3.3V en el pin de 3.3V -> 0.5mA        26mA(Despierto)




El próximo cambio será utilizar un 18B20 como sensor de temperatura, en este montaje se desaprovecha el AHT20.

Programa


Saludos.
Juan Galaz



Bibliografía:
http://seta43.duckdns.org/2026/tfa/tfa.html
http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html