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

martes, 7 de abril de 2026

Sensor de temperatura Protocolo TFA - Arduino

  Página principal

Sensor de temperatura
Protocolo  TFA

Arduino

 


Mi primera intención era hacer un sensor para una serie de estaciones meteorológicas que tenía sin sensor. Eran de la marca oregon cientific. Esta marca fue una referencia por su buena calidad, pero esta marca fue comprada por otra compañía, y es muy difícil de encontrar sensores, además si se encontraban eran de precio alto, por lo cual no merecía la pena.

Existe muchos modelos, más de 20, y unos no son compatibles con otros.

Hay 3 protocolos de transmisión, pero la documentación es escasa en cuanto a los diferentes sensores.

Existe una documentación que la sacó alguien con ingeniería inversa. Leyendo está documentación encontré que los sensores emiten un byte una variable aleatoria. Después de algunas pruebas, creo que esta variable aleatoria no es tan aleatoria como debería ser. Algunas estaciones base, leen durante algunas horas los sensores perfectamente al resetear los sensores y la estación base, para dejar de leer después, a pesar de que los sensores siguen mandando datos.
Mi sospecha es que la variable aleatoria es una secuencia de bytes que pertenece a un modelo concreto de base, después de ciertas lecturas si no corresponde a la base en concreta, deja de proporcionar dados de ese sensor. Es una forma de asegurarse de que ningún sensor de otra marca ajena funcione en su estación base. Por este motivo no existen sensores chinos compatibles. Desaparecida la marca, ya puedes tirar la estación base.
Como era muy difícil de realizar este tipo de sensores, empecé con otro.
Tengo 3 bases meteorológicas que funcionan con el protocolo TFA, es sencillo y solo transmite temperatura. Solo tengo 1 sensor que leen las 3 estaciones bases, por lo que en este montaje crearé un segundo sensor que funcione en el canal 2.


Existe un programa que lee muchos protocolos de diferentes sensores, desde coches hasta sensores de temperatura. Este programa se llama RTL_433 y utiliza un decodificador USB de televisión digital para la recepción de señales.

Mirando en su código fuente, se puede ver la estructura del protocolo  TFA.
Gracias Alexandre Coffignal (rtl_433) por su magnífico programa.
Data layout:
    CCCCIIII IIIITTTT TTTTTTTT DDBF
- C: checksum, sum of nibbles - 1
- I: device id (changing only after reset)
- T: temperature
- D: channel number
- B: battery status
- F: first transmission


Como me gusta investigar por mí mismo, voy grabar la señal mediante el programa Gqrx .
Lo analizo con el programa de audio Audacius para la medir los tiempos.
Descubro que los datos se repiten 7 veces y los tiempos son los que se ven en la imagen.

Se puede observar  que entre bits el pulso de separación es de 475 micro Segundos. Si se quiere mandar un cero la separación entre pulsos es de 2500 mS, y si es 1 la separación es  5000 mS. La separación entre las 7 repeticiones es de 10mS. Al inicio de la transmisión debe existir un pulso y una separación de 10mS.
Ahora comienza la programación en Arduino para generar este patrón de datos. Mediante un analizador digital barato (7€) compruebo la señal generada. Es un patrón de 7 grupos de 4bits, el primero es el la suma de los otros 6 grupos – 1 .



A final los diferentes tiempos de la señal son los siguientes.
#define SENAL_ALTA 500
#define SENAL_0 2400
#define SENAL_1 5000
#define SEPARACION 10000


El circuito utiliza el AHT20 como sensor, que utiliza la comunicación I2C. La parte de humedad de este sensor no se utiliza, por lo que me planteo para una revisión posterior el utilizar 18B20 como sensor de temperatura.

Por el pin 13 del arduino se manda la señal a un transmisor de radiofrecuencia en 433MHz  cada 36 segundos.
En los pines 3 y 4 se selecciona el canal y el pin 2 se puede utilizar para transmitir la señal cuando se quiera.

El programa está diseñado para la depuración por el puerto serie, aunque el que quiera puede eliminar todo lo relativo a la comunicación serie.
Todo está montado y probado en una protoboard utilizando el arduino nano.

Como lo importante en un sensor es la medición correcta de la temperatura y la autonomía de la batería, utilizo la librería LowPower para dormir el microprocesador mientras no hace nada.
Se puede ver en la imagen los diferentes consumos dependiendo de la alimentación, de cuando está despierto y dormido. Aún así el consumo es alto para un este tipo de sensores.
En este otro montaje solo monto el ATMEGA328 y los componente mínimos.

Esto es otra cosa, el consumo baja hasta los 0.10 mA cuando está dormido, y 7 mA cuando está despierto y transmitiendo.
Haciendo unos cálculo rápidos si demasiada precisión.
Con una batería de 1000mA/H y el micro siempre  dormido la autonomía sería de 10000 horas o lo que es lo mismo 416 días.
Como hay que ser más realista y pensando que cada 60 segundos está despierto 4 segundos podría durar la batería 90 días más o menos.
Ahora nos toca el diseño del Circuito integrado y su creación.
Utilizo el programa KIDcad para el diseño de la PCB. Y utilizo el método láser para la creación del circuito impreso.

Colocados los componentes, el prototipo queda bastante compacto, aunque si se soldarían  los componentes al circuito impreso directamente quedaría aún más pequeño.

Me lo he pasado bastante bien experimentando con señales, vosotros podéis probar otro tipo de sensores.

Programa

Saludos.
Juan Galaz



Bibliografía:

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

martes, 17 de marzo de 2026

Manipulador Morse - Paleta simple - Arduino

  Página principal

Manipulador Morse
Paleta simple
Arduino

Continuando con el artículo http://seta43.duckdns.org/morse/morsema.html, vi que se podía mejorar.
El mayor problema de tener los contactos al aire, es que se pueden ensuciar produciendo falsos contactos.
Y ya de paso era utilizar una simple paleta para manejar tanto los puntos como las rayas.

Utilizando micro pulsadores herméticos, se consigue que no se ensucien los contactos.



En el vídeo se puede ver el manejo.
Perdonar que mi velocidad de manipulación sea lenta, tengo la velocidad de caracol. ;)

Si se detecta "..--" se borra la pantalla.
Si se detecta "......"  se hace una
media de la velocidad del operador.

VIDEO
Ficheros STL


Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/morse/morsema.html
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
https://es.wikipedia.org/wiki/C%C3%B3digo_morse
http://seta43.duckdns.org/armorse.html
http://seta43.duckdns.org/amorb.html

lunes, 9 de marzo de 2026

FreeCAD Caja con bisagra

 

FreeCAD
Caja con bisagra

Ya que estoy con FreeCAD practicando, se me ocurrió hacer una pequeña caja con bisagra.


Como se puede ver, el agujero en la caja está desplazado 0,5 mm a la derecha para que encaje mejor.




En la cama caliente de la impresora 3D recién terminada la impresión.


Con una aguja gorda hacer la primera prueba para abrir el agujero.


Con el alambre de un clip se hace el pasador.



FUENTES

Saludos.
Juan Galaz


Bibliografía:

lunes, 2 de marzo de 2026

FreeCAD - Copia de figuras de ajedrez

 

FreeCAD
Copia de figuras de ajedrez

 

Con FreeCAD existen varias formas de copiar figuras 3D del tipo ajedrez.
En ciertos modelos es necesario colocar soportes para imprimir figuras que tienen mucho vuelo en la impresión.
Existe otro método que es dividir la figura en dos partes, para luego unirlas mediante pegamento.
Muestro la figura de reina del ajedrez como ejemplo.

Figura real y figura copiada .


Pieza impresa de los dos modos, entera y partida en dos.


Detalle de las dos piezas.

Cada uno debe pensar el mejor método para su caso.
Si hay muchos balcones, tienes dos opciones, utilizar soporte al imprimir, o hacer la pieza en dos mitades.









lunes, 16 de febrero de 2026

SERVIDOR WEB X96q (H313) ARMBIAN

  Página principal

SERVIDOR WEB
X96q (H313)
ARMBIAN  



Después de haber creado un servidor para el X96 mini (S905W) , ahora continuo con la X96q (H313).



Existe numerosas imágenes para esta placa, en este caso he utilizado.
    Armbian-unofficial_24.11.0-trunk_X96q_bookworm_current_6.6.44_mate_desktop.img.xz   857MB.
Existen varios lugares donde se pueden baja, aunque posiblemente se hayan movido ya.
    https://github.com/NickAlilovic/build/releases/tag/20250306
    https://github.com/sicXnull/armbian-build/releases/
    https://github.com/NickAlilovic/build/releases

Con esta imagen he conseguido que funcione el WIFI, aunque para un servidor es mucho mejor la red cableada.
Un problema que tengo yo es el ROUTER LIVEBOX . Resulta que no negocia bien la RED con la TVBOX, no se sincroniza bien, por lo que tengo que bajar la velocidad de la RED a 10Mbs para poder tener RED por cable. He probado a conectar mi caja a través de otro router  y la velocidad llega a 80MBs. Si encuentro la solución la publicaré.

Existen dos tipos de cajas, la que funciona con memoria  DDR3 o la que funciona con lpddr3.

Al iniciar por primera vez Armbian, te pide la nueva contraseña para root, y crear un nuevo usuario, le voy a llamar usuario, con su contraseña.
Si estas conectado a internet intentara detectar la localización para configurar los locales, yo de momento no quiero.
En mi caso creo otro usuario para manejar la página web, su nombre será seta.
La configuración que viene por defecto es que el nuevo usuario tendrá permisos de administrado, de esta forma no usaremos root en el entorno gráfico. El problema es que para usarlo en modo consola deberemos usar root. Es un contrasentido, pero es como viene por defecto.
También para configurar todo, deberíamos entrar en modo consola con CTRL+Alt+F2, entrar como root y luego teclear armbian-config, pero no siempre funciona todo, y deberemos reconfigurar todo con dpkg-reconfigure locales .

Existen dos formas de acceder al X96Q de forma remota, mediante vnc o mediante ssh.
Con vnc se visualiza el estado de la pantalla, que se manda en forma de imágenes, y con control del teclado y el ratón.
Con ssh los programas se ejecutan en el X96Q, aunque la representación gráfica se hace en el ordenador, esto es mucho más rápido,  es la magia del servidor X.
Ejemplos:
    ssh -X -p 22 seta@192.168.1.60 xfe
    ssh -X -p 22 seta@192.168.1.60 mate-terminal


Ejecutando programas en PC remoto con el protocolo  SSH

Los ficheros para el servidor WEB los subo mediante el protocolo ftp.

Antes de nada he de decir que no he probado la seguridad del sistema, en mi router solo he abierto el puerto 80 para servir las páginas web. Tampoco he instalado ninguna extensión en el servidor, solo sirve páginas web estáticas. Es una forma de blindar un poco el servidor, pero no infalible.


VÍDEO


apt-get update

sudo apt-get install dillo ssh x11vnc vsftpd nginx xfe mc


/usr/sbin/adduser seta

/usr/sbin/usermod -a -G www-data seta

chown -R seta:seta   /var/www/html
chmod  ugo+rx    /var/www/html

-----------------SERVIDOR FTP-----------------------------
geany /etc/vsftpd.conf

listen=NO
listen_ipv6=YES

anonymous_enable=NO
local_enable=YES
write_enable=YES

dirmessage_enable=YES

use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

local_umask=022

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO


----------SERVIDOR VNC---------------------
--ESTO SE HACE COMO USUARIO NORMAL--
CONTRASEÑA
     x11vnc -storepasswd

En Xfce añadir un arraque automático:
  
Exec=x11vnc -forever -usepw -display :0 -ultrafilexfer


------------Paquetes extras ---------
apt-get install chromium vlc audacious clementine abiword gnumeric mousepad geany
apt-get install  dump1090-mutability rtl-433  gqrx-sdr



Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/serora.html
http://seta43.duckdns.org/x96mini.html
http://seta43.duckdns.org/2026/x96/munx96.html

https://www.youtube.com/watch?v=Rgl_gaMPYp8