<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Nezzontli - Writings of Ale</title>
    <subtitle>Personal logbook of Alejandro B.E.: technology, physics, resilient systems, and film photography.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://nezzontli.xyz/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-16T00:00:00+00:00</updated>
    <id>https://nezzontli.xyz/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Servidor personal: Debian + Docker, no FreeBSD</title>
        <published>2026-07-16T00:00:00+00:00</published>
        <updated>2026-07-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/servidor/"/>
        <id>https://nezzontli.xyz/blog/servidor/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/servidor/">&lt;h2 id=&quot;contexto&quot;&gt;Contexto&lt;&#x2F;h2&gt;
&lt;p&gt;Este post reemplaza una entrada anterior que describía el plan original: FreeBSD, jails, bastilleBSD. Ese plan no se ejecutó así. Lo que terminó corriendo en la máquina reusada (hostname &lt;code&gt;pcale&lt;&#x2F;code&gt;) es &lt;strong&gt;Debian 13 (Trixie)&lt;&#x2F;strong&gt; con todo containerizado en &lt;strong&gt;Docker&lt;&#x2F;strong&gt;, un stack por servicio en &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt; separados, sin hypervisor ni jails.&lt;&#x2F;p&gt;
&lt;p&gt;La razón del cambio fue práctica: Docker Compose me da aislamiento por servicio sin la curva de aprendizaje adicional de jails&#x2F;bhyve, y el ecosistema de imágenes ya resueltas (linuxserver, imágenes oficiales) redujo tiempo de instalación a casi cero comparado con compilar todo desde ports.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;infraestructura-base&quot;&gt;Infraestructura base&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;&#x2F;strong&gt; Debian 13 (Trixie), kernel 6.12.x&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones:&lt;&#x2F;strong&gt; &lt;code&gt;unattended-upgrades&lt;&#x2F;code&gt; para parches de seguridad automáticos&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Todo lo demás vive en contenedores&lt;&#x2F;strong&gt; — cada servicio tiene su propio &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt; bajo &lt;code&gt;&#x2F;home&#x2F;ale&#x2F;&amp;lt;servicio&amp;gt;&#x2F;&lt;&#x2F;code&gt;, así config, volúmenes y upgrades quedan aislados por app&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;acceso-y-red&quot;&gt;Acceso y red&lt;&#x2F;h2&gt;
&lt;p&gt;No hay puertos abiertos al público en el router. El acceso normal es vía &lt;strong&gt;Tailscale&lt;&#x2F;strong&gt;: cada servicio interno se publica con un hostname propio y HTTPS real usando Tailscale Services:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;tailscale&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; serve&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;service&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;svc:&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;nombre&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-punctuation z-terminator z-file-descriptor z-shell&quot;&gt;-&lt;&#x2F;span&gt;-bg&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;https&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;443 http:&#x2F;&#x2F;localhost:&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;puerto&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;tailscale&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; serve&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;service&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;svc:&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;nombre&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-punctuation z-terminator z-file-descriptor z-shell&quot;&gt;-&lt;&#x2F;span&gt;-bg&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;http&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;80 http:&#x2F;&#x2F;localhost:&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;puerto&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Esto da URLs como &lt;code&gt;https:&#x2F;&#x2F;nextcloud.tail32b955.ts.net&lt;&#x2F;code&gt;, con certificado válido, sin recordar puertos. Un par de servicios sí salen a internet público, pero vía &lt;strong&gt;Cloudflare Tunnel&lt;&#x2F;strong&gt; (&lt;code&gt;cloudflared&lt;&#x2F;code&gt;, conexión saliente únicamente, nada expuesto en el router) — el caso principal es PeerTube en &lt;code&gt;tube.richard69.lat&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Perímetro:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;SSH solo con clave, llave de seguridad física (YubiKey), &lt;code&gt;X11Forwarding&lt;&#x2F;code&gt; desactivado&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ufw&lt;&#x2F;code&gt; en default-deny, la mayoría de servicios restringidos a LAN (&lt;code&gt;192.168.68.0&#x2F;24&lt;&#x2F;code&gt;) + Tailscale (&lt;code&gt;100.0.0.0&#x2F;8&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;fail2ban&lt;&#x2F;code&gt; en el jail de SSH (maxretry 3, ban 24h)&lt;&#x2F;li&gt;
&lt;li&gt;Vaultwarden llegó a tener un hostname público en el tunnel; se sacó por completo y ahora es Tailscale-only&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;servicios-corriendo&quot;&gt;Servicios corriendo&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Nube y datos personales&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud&lt;&#x2F;strong&gt; — almacenamiento personal, también sirve como fuente de la biblioteca de Calibre-web (apunta directo a &lt;code&gt;Documents&#x2F;Libros&lt;&#x2F;code&gt; sin duplicar archivos)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Immich&lt;&#x2F;strong&gt; — fotos&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Vaultwarden&lt;&#x2F;strong&gt; — gestor de contraseñas (servidor compatible con Bitwarden), solo por Tailscale&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Calibre-web&lt;&#x2F;strong&gt; — lector&#x2F;biblioteca de ebooks&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Media&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jellyfin&lt;&#x2F;strong&gt; — servidor de medios (películas, series, música)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;qBittorrent + Radarr + Sonarr + Prowlarr&lt;&#x2F;strong&gt; — el stack *arr completo: indexers → búsqueda → descarga → importación, aterrizando directo en la biblioteca de Jellyfin, que se refresca sola al importar&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Navidrome&lt;&#x2F;strong&gt; — streaming de música&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;spotiflac&lt;&#x2F;strong&gt;, &lt;strong&gt;AudioMuse AI&lt;&#x2F;strong&gt; — utilidades de música&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;PeerTube&lt;&#x2F;strong&gt; — instancia propia y federada de video (&lt;code&gt;tube.richard69.lat&lt;&#x2F;code&gt;), con una imagen parcheada a mano (ver abajo)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Todo el lado de descargas (qBittorrent, Radarr, Sonarr, Prowlarr, spotiflac) corre con &lt;code&gt;network_mode: container:mullvad-exit-vpn&lt;&#x2F;code&gt;, compartiendo el namespace de red de un único contenedor &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;qdm12&#x2F;gluetun&quot;&gt;gluetun&lt;&#x2F;a&gt;, así ese tráfico —y solo ese— sale por un exit de Mullvad vía WireGuard.&lt;&#x2F;p&gt;
&lt;p&gt;Un extra que armé sobre esto: un script que convierte un canal de PeerTube seguido en una biblioteca de Jellyfin de archivos &lt;code&gt;.strm&lt;&#x2F;code&gt; (punteros a la URL del HLS del video original). Jellyfin los reproduce en directo desde la instancia origen sin que el archivo toque el disco del servidor.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Utilidades&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Glance&lt;&#x2F;strong&gt; — dashboard único: bookmarks, RSS, clima, chequeos de salud de cada servicio, buscador&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;4get&lt;&#x2F;strong&gt; — metabuscador privado, también el buscador embebido en Glance&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;ntfy&lt;&#x2F;strong&gt; — notificaciones push self-hosted (alertas del servidor, watchdog de la VPN, etc.)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Uptime Kuma &#x2F; Beszel&lt;&#x2F;strong&gt; — monitoreo, con umbrales de alerta mandando a ntfy&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Prosody&lt;&#x2F;strong&gt; — mensajería XMPP&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Forgejo&lt;&#x2F;strong&gt; — Git self-hosted (donde vive este mismo blog)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;problemas-encontrados-y-soluciones&quot;&gt;Problemas encontrados (y soluciones)&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;network_mode: container:X&lt;&#x2F;code&gt; no se re-resuelve solo.&lt;&#x2F;strong&gt; Docker fija esa referencia a un &lt;em&gt;container ID&lt;&#x2F;em&gt; en el momento de crear el contenedor. Si gluetun se recrea (&lt;code&gt;docker compose up --force-recreate&lt;&#x2F;code&gt;, o cualquier reinicio del stack), todo lo que comparte su netns (qBittorrent, Radarr, Sonarr, Prowlarr, spotiflac) queda apuntando a un namespace huérfano. El síntoma es engañoso: el contenedor se ve &lt;code&gt;Up (healthy)&lt;&#x2F;code&gt; y su proceso interno escucha bien desde adentro, pero nada llega desde afuera. Fix: force-recreate de cada contenedor afectado, no alcanza con &lt;code&gt;docker restart&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;*&lt;em&gt;La ruta de descarga de un &lt;em&gt;arr no puede ser su propia root folder.&lt;&#x2F;em&gt;&lt;&#x2F;em&gt; Si la categoría de qBittorrent apunta al mismo path que el root folder de Radarr&#x2F;Sonarr, la app no puede distinguir “todavía bajando” de “ya importado” y tira &lt;code&gt;DownloadClientRootFolderCheck&lt;&#x2F;code&gt;. Solución: carpetas de staging separadas (&lt;code&gt;&#x2F;media&#x2F;downloads&#x2F;movies&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;media&#x2F;downloads&#x2F;shows&lt;&#x2F;code&gt;), Radarr&#x2F;Sonarr importan por hardlink desde ahí al root folder real.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;ntfy en iOS necesita un &lt;code&gt;base-url&lt;&#x2F;code&gt; alcanzable.&lt;&#x2F;strong&gt; iOS no puede recibir contenido completo en el push directamente (limitación de APNs) — el teléfono hace polling al &lt;code&gt;base-url&lt;&#x2F;code&gt; del propio servidor después de recibir un push genérico de “new message”. Si ese &lt;code&gt;base-url&lt;&#x2F;code&gt; apunta a un dominio muerto, la notificación queda vacía sin ningún error visible en ningún lado.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;PeerTube solo acepta thumbnails remotos en JPEG.&lt;&#x2F;strong&gt; El validador de videos federados de PeerTube rechaza en silencio cualquier video cuyo thumbnail remoto sea PNG o WebP. Lo resolví con un parche chico horneado en una imagen Docker custom — hay que reconstruirla (no solo &lt;code&gt;docker compose pull&lt;&#x2F;code&gt;) en cada actualización de PeerTube o el parche desaparece sin avisar.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;que-falta-por-hacer&quot;&gt;Qué falta por hacer&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Cloudflare Access delante de Uptime Kuma si algún día se tunelea al público&lt;&#x2F;li&gt;
&lt;li&gt;Reglas de &lt;code&gt;ufw&lt;&#x2F;code&gt; para un par de servicios más nuevos (4get, AudioMuse) que hoy solo responden desde localhost&lt;&#x2F;li&gt;
&lt;li&gt;Un manual real de recuperación ante desastres — por ahora ese conocimiento vive en mis notas, no en un documento&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;idea-central&quot;&gt;Idea central&lt;&#x2F;h2&gt;
&lt;p&gt;El objetivo cambió de “aprender FreeBSD a fondo” a “tener servicios propios corriendo de forma confiable, con el mínimo de superficie expuesta al público”. Docker Compose y Tailscale resultaron el camino más corto ahí. FreeBSD y jails siguen siendo un proyecto que me interesa, pero para otro momento — ver el post de &lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;web&#x2F;&quot;&gt;OpenBSD&lt;&#x2F;a&gt; para la versión de “control total” aplicada a algo más chico (el hospedaje de este mismo sitio).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;referencias&quot;&gt;Referencias&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;tailscale.com&#x2F;kb&#x2F;&quot;&gt;Documentación de Tailscale&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;qdm12&#x2F;gluetun&quot;&gt;gluetun&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;glanceapp&#x2F;glance&quot;&gt;Glance&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;wiki.servarr.com&#x2F;&quot;&gt;Servarr Wiki&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.joinpeertube.org&#x2F;&quot;&gt;Documentación de PeerTube&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Reconstrucción de Sonido con Láser y Fotosensor: De la Teoría al Código</title>
        <published>2026-03-15T00:00:00+00:00</published>
        <updated>2026-03-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/matlab/"/>
        <id>https://nezzontli.xyz/blog/matlab/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/matlab/">&lt;h2 id=&quot;el-problema-puede-un-rayo-de-luz-transportar-sonido&quot;&gt;El Problema: ¿Puede un Rayo de Luz Transportar Sonido?&lt;&#x2F;h2&gt;
&lt;p&gt;La idea surgió de una pregunta aparentemente simple en clase de física: si el sonido es una onda mecánica que vibra el aire, ¿podría esa vibración modular un haz de luz y recuperarse después?&lt;&#x2F;p&gt;
&lt;p&gt;La respuesta es sí, y el principio es elegante. El sonido dentro de una caja insonorizada hace vibrar un panel de vidrio. Un láser de 650 nm apunta al vidrio desde afuera; el reflejo modulado por las vibraciones es capturado por un fotodiodo BPW34. La corriente fotoeléctrica resultante pasa por un amplificador de transimpedancia (TIA LM358) que la convierte en voltaje, luego por un MAX9814 con control de ganancia automático (AGC), y finalmente llega al jack de micrófono de la PC donde MATLAB la digitaliza y reconstruye el audio original:&lt;&#x2F;p&gt;
&lt;p&gt;$$V(t) = A \cdot \sin(2\pi f t) + \eta(t)$$&lt;&#x2F;p&gt;
&lt;p&gt;donde $\eta(t)$ es el ruido introducido por el sistema óptico-electrónico. El reto es precisamente ese: dado que $\eta(t)$ siempre existe, ¿cómo recuperamos la señal $A \cdot \sin(2\pi f t)$ con la mayor fidelidad posible?&lt;&#x2F;p&gt;
&lt;p&gt;Este post documenta la &lt;strong&gt;fase de simulación completa en MATLAB&lt;&#x2F;strong&gt; que valida los algoritmos antes de construir el hardware real.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;fundamentos-teoricos&quot;&gt;Fundamentos Teóricos&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;transformada-de-fourier-fft&quot;&gt;Transformada de Fourier (FFT)&lt;&#x2F;h3&gt;
&lt;p&gt;El teorema de Fourier establece que cualquier señal periódica puede descomponerse como suma de senos y cosenos. La Transformada de Fourier Discreta (DFT) hace esto numéricamente:&lt;&#x2F;p&gt;
&lt;p&gt;$$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j2\pi kn&#x2F;N}$$&lt;&#x2F;p&gt;
&lt;p&gt;La &lt;strong&gt;FFT&lt;&#x2F;strong&gt; (Fast Fourier Transform) es un algoritmo eficiente para calcular la DFT en $O(N \log N)$ en lugar de $O(N^2)$. Para este proyecto, la FFT cumple dos funciones:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identificar&lt;&#x2F;strong&gt; qué frecuencias componen la señal capturada&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Filtrar&lt;&#x2F;strong&gt; el ruido eliminando componentes espectrales débiles&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;descomposicion-en-valores-singulares-svd&quot;&gt;Descomposición en Valores Singulares (SVD)&lt;&#x2F;h3&gt;
&lt;p&gt;Dado que el proyecto conecta con el tema de &lt;em&gt;espacios vectoriales&lt;&#x2F;em&gt; del semestre, también apliqué SVD para analizar la estructura de cada señal. Dada una matriz de trayectoria $M$ construida a partir de la señal:&lt;&#x2F;p&gt;
&lt;p&gt;$$M = U \cdot \Sigma \cdot V^T$$&lt;&#x2F;p&gt;
&lt;p&gt;Los valores singulares $\sigma_i$ en $\Sigma$ revelan cuántos “modos independientes” necesita la señal para representarse. Una señal simple (tono puro) tiene muy pocos valores singulares grandes; una señal compleja los tiene distribuidos.&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;&lt;strong&gt;Conexión con el curso:&lt;&#x2F;strong&gt; El SVD es esencialmente un cambio de base ortogonal. Los vectores columna de $U$ son la nueva base en el espacio de la señal, y los valores singulares son las “coordenadas” de importancia de cada vector base. Exactamente el mismo concepto de base ortonormal que vimos en clase.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;el-hardware&quot;&gt;El Hardware&lt;&#x2F;h2&gt;
&lt;p&gt;El sistema físico que se simulará y construirá está formado por los siguientes componentes, elegidos por su precisión y bajo ruido:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Componente&lt;&#x2F;th&gt;&lt;th&gt;Función&lt;&#x2F;th&gt;&lt;th&gt;Parámetro clave&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Láser D18×65mm 650nm 5mW&lt;&#x2F;td&gt;&lt;td&gt;Fuente de luz, punto continuo&lt;&#x2F;td&gt;&lt;td&gt;Enfocable, montado en soporte Neiko ~30°&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;BPW34 (fotodiodo PIN)&lt;&#x2F;td&gt;&lt;td&gt;Luz → corriente&lt;&#x2F;td&gt;&lt;td&gt;R = 0.3 A&#x2F;W @ 650 nm, en tubo negro&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;LM358 (TIA)&lt;&#x2F;td&gt;&lt;td&gt;Corriente → voltaje&lt;&#x2F;td&gt;&lt;td&gt;Rf = 10 kΩ, Cf = 100 pF&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Capacitor C_ac 10 µF&lt;&#x2F;td&gt;&lt;td&gt;Bloqueo de offset DC&lt;&#x2F;td&gt;&lt;td&gt;fc = 1.6 Hz&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MAX9814 HiLetgo&lt;&#x2F;td&gt;&lt;td&gt;Amplificador AGC&lt;&#x2F;td&gt;&lt;td&gt;Av = 40 dB (GAIN flotante)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Capacitor C_sal 47 µF&lt;&#x2F;td&gt;&lt;td&gt;Bloqueo offset salida&lt;&#x2F;td&gt;&lt;td&gt;fc = 0.34 Hz&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Módulo Jack ShillehTek 3.5mm&lt;&#x2F;td&gt;&lt;td&gt;Interfaz PC&lt;&#x2F;td&gt;&lt;td&gt;Entrada micrófono, breakout TRRS&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;ESP32&lt;&#x2F;td&gt;&lt;td&gt;Fuente de alimentación 5V&lt;&#x2F;td&gt;&lt;td&gt;Pin VIN → rail protoboard&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Soporte Neiko&lt;&#x2F;td&gt;&lt;td&gt;Posicionar láser en ángulo&lt;&#x2F;td&gt;&lt;td&gt;Ajuste ~30° sobre el vidrio&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;La ventaja principal del BPW34 sobre un LDR es su tiempo de respuesta: 20 ns frente a ~1 ms, permitiendo capturar audio hasta 20 kHz sin ninguna degradación por el sensor.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;diagrama-del-circuito&quot;&gt;Diagrama del circuito&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do&#x2F;raw&#x2F;main&#x2F;Imagenes&#x2F;Diagrama%20de%20Circuito%20%E2%80%94%20Microfono%20Laser.png&quot; alt=&quot;Diagrama de circuito completo: BPW34 → TIA LM358 → MAX9814 → Jack PC&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;montaje-experimental&quot;&gt;Montaje experimental&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do&#x2F;raw&#x2F;main&#x2F;Imagenes&#x2F;Simulacion%203D%20%E2%80%94%20Microfono%20Laser.png&quot; alt=&quot;Simulacion 3D animada del montaje experimental completo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;La escena 3D muestra el montaje completo: caja insonorizada con vidrio vibrante, láser industrial D18×65 mm sobre soporte Neiko apuntando al vidrio en ~30°, BPW34 en tubo negro en el ángulo de reflexión especular, y el circuito completo (ESP32 + LM358 + MAX9814 + módulo jack) en la protoboard. La animación sincroniza la vibración del vidrio con las señales en tiempo real en cada etapa del pipeline.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;metodologia-de-simulacion&quot;&gt;Metodología de Simulación&lt;&#x2F;h2&gt;
&lt;p&gt;Para validar los algoritmos sin hardware, generé cuatro tipos de señal en MATLAB y simulé el proceso completo con el pipeline óptico-electrónico real: generación → modulación óptica → BPW34 → TIA → MAX9814 → filtrado FFT → reconstrucción → validación.&lt;&#x2F;p&gt;
&lt;p&gt;A diferencia de simplemente sumar ruido gaussiano, el modelo simula la cadena física completa:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;matlab&quot; class=&quot;language-matlab z-code&quot;&gt;&lt;code class=&quot;language-matlab&quot; data-lang=&quot;matlab&quot;&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;&lt;span class=&quot;z-keyword z-other z-matlab&quot;&gt;function&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-output z-function z-matlab&quot;&gt;v_out&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-matlab&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-matlab&quot;&gt; &lt;span class=&quot;z-entity z-name z-function z-matlab&quot;&gt;pipeline_sensor&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;audio&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;P_laser&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;mod_depth&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; ...
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;&lt;span class=&quot;z-meta z-function z-parameters z-matlab&quot;&gt;                                 &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;R_bpw34&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;Rf_TIA&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;Av_MAX&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-matlab&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;ruido&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; 1. Modulacion optica: el vidrio vibrante modula el reflejo
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;P_luz&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;P_laser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; + &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mod_depth&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;audio&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; 2. BPW34: fotocorriente = responsividad x potencia + shot noise
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;I_foto&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;R_bpw34&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;P_luz&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; + &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;ruido&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1e-4&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;randn&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;size&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;audio&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; 3. TIA LM358: I → V, eliminar offset DC (como el capacitor C_ac)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_tia&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;I_foto&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;Rf_TIA&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_tia&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_tia&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; - &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;mean&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_tia&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; 4. MAX9814: amplificar y saturar (±1.65V)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_max&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;Av_MAX&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_tia&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;v_out&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;max&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1.65&lt;&#x2F;span&gt;, &lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;min&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1.65&lt;&#x2F;span&gt;, &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;V_max&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;&lt;span class=&quot;z-keyword z-control z-matlab&quot;&gt;end&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;El ruido del BPW34 (shot noise) es de apenas 0.8% de la señal — notablemente menor que el 5% típico de un LDR, lo que explica los resultados de SNR superiores.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;las-cuatro-senales-de-prueba&quot;&gt;Las Cuatro Señales de Prueba&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Señal&lt;&#x2F;th&gt;&lt;th&gt;Frecuencias&lt;&#x2F;th&gt;&lt;th&gt;Por qué es interesante&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tono puro&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;1000 Hz&lt;&#x2F;td&gt;&lt;td&gt;Caso base, señal más simple posible&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Acorde Do Mayor&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;262 + 330 + 392 Hz&lt;&#x2F;td&gt;&lt;td&gt;Tres frecuencias simultáneas (Do, Mi, Sol)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Barrido (chirp)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;100 → 1000 Hz&lt;&#x2F;td&gt;&lt;td&gt;Frecuencia variable en el tiempo&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Señal compleja&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;262·k Hz, k=1..5&lt;&#x2F;td&gt;&lt;td&gt;Serie armónica, simula voz humana&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;el-algoritmo-de-reconstruccion&quot;&gt;El Algoritmo de Reconstrucción&lt;&#x2F;h3&gt;
&lt;p&gt;El núcleo del sistema es el filtrado espectral: se aplica una máscara binaria al espectro FFT que conserva solo las componentes que superan el 10% del pico máximo, luego se reconstruye la señal con la IFFT. La clave es mantener la &lt;strong&gt;simetría hermitiana&lt;&#x2F;strong&gt; del espectro para que la IFFT devuelva valores reales:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;matlab&quot; class=&quot;language-matlab z-code&quot;&gt;&lt;code class=&quot;language-matlab&quot; data-lang=&quot;matlab&quot;&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;&lt;span class=&quot;z-keyword z-other z-matlab&quot;&gt;function&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-output z-function z-matlab&quot;&gt;senial_rec&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-matlab&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-matlab&quot;&gt; &lt;span class=&quot;z-entity z-name z-function z-matlab&quot;&gt;reconstruir_por_fft&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-input z-function z-matlab&quot;&gt;senial_ruidosa&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;        = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;length&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;senial_ruidosa&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;        = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;fft&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;senial_ruidosa&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; Magnitud del espectro unilateral (DC hasta Nyquist inclusive)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mag_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;  = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;abs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; : &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;floor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; + &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;umbral&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;   = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;max&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mag_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; * &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;0.1&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; Máscara binaria: 1 donde la señal supera el umbral
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; = &lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-matlab&quot;&gt;double&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mag_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; &amp;gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;umbral&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-comment z-line z-percentage z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-matlab&quot;&gt;%&lt;&#x2F;span&gt; Máscara completa con simetría hermitiana para señal real
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;zeros&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; : &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;floor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; + &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;   = &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara_pos&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;floor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; : &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;     = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;flipud&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; : &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;floor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-matlab&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;    &lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;senial_rec&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; = &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-mathematics z-matlab&quot;&gt;real&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-analysis z-matlab&quot;&gt;ifft&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-parens z-matlab&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-begin z-matlab&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-symbols z-matlab&quot;&gt; .* &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-variable z-other z-valid z-matlab&quot;&gt;mascara&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-parens z-end z-matlab&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-matlab&quot;&gt;&lt;span class=&quot;z-keyword z-control z-matlab&quot;&gt;end&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote class=&quot;markdown-alert-important&quot;&gt;
	&lt;p&gt;&lt;strong&gt;Error que cometí:&lt;&#x2F;strong&gt; En versiones anteriores usé &lt;code&gt;N&#x2F;2&lt;&#x2F;code&gt; directamente para indexar, lo que fallaba cuando &lt;code&gt;N&lt;&#x2F;code&gt; es impar. La solución correcta es &lt;code&gt;floor(N&#x2F;2)&lt;&#x2F;code&gt; en todos los índices, y construir la simetría conjugada explícitamente. Esto asegura que la máscara tenga exactamente &lt;code&gt;N&lt;&#x2F;code&gt; elementos sin importar la paridad de la longitud de la señal.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;resultados&quot;&gt;Resultados&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;graficas-completas&quot;&gt;Gráficas Completas&lt;&#x2F;h3&gt;
&lt;p&gt;La siguiente figura muestra el pipeline completo para las cuatro señales: señal ideal → señal capturada por el sensor (BPW34→MAX9814) → señal reconstruida → espectro FFT con el SNR obtenido.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do&#x2F;raw&#x2F;main&#x2F;Imagenes&#x2F;Sistema%20Laser-Fotosensor%20%E2%80%94%20Resultados%20Completos.png&quot; alt=&quot;Pipeline completo para las 4 señales de prueba: ideal, capturada, reconstruida y espectro FFT&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Lo más notable visualmente: la columna “Reconstruido” (verde) recupera la forma de onda con una fidelidad que hace casi indistinguible el resultado del original, a pesar del ruido visible en la columna “Capturado”.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;metricas-cuantitativas&quot;&gt;Métricas Cuantitativas&lt;&#x2F;h3&gt;
&lt;p&gt;Para no quedarme solo con la inspección visual, calculé tres métricas de error para cada señal. La señal reconstruida se escala antes de comparar (producto interno mínimo cuadrados) para separar el error de fase&#x2F;forma del error de amplitud:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Señal&lt;&#x2F;th&gt;&lt;th&gt;Error RMS&lt;&#x2F;th&gt;&lt;th&gt;SNR (dB)&lt;&#x2F;th&gt;&lt;th&gt;Correlación&lt;&#x2F;th&gt;&lt;th&gt;Resultado&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Tono puro&lt;&#x2F;td&gt;&lt;td&gt;2.79 × 10⁻⁶&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;102.1 dB&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;1.0000&lt;&#x2F;td&gt;&lt;td&gt;Excelente&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Acorde&lt;&#x2F;td&gt;&lt;td&gt;2.87 × 10⁻⁴&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;62.1 dB&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;1.0000&lt;&#x2F;td&gt;&lt;td&gt;Excelente&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Barrido&lt;&#x2F;td&gt;&lt;td&gt;1.06 × 10⁻²&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;30.5 dB&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;0.9996&lt;&#x2F;td&gt;&lt;td&gt;Muy bueno&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Compleja&lt;&#x2F;td&gt;&lt;td&gt;3.00 × 10⁻⁴&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;63.1 dB&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;1.0000&lt;&#x2F;td&gt;&lt;td&gt;Excelente&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;&lt;strong&gt;Referencia:&lt;&#x2F;strong&gt; En audio, un SNR por encima de 20 dB ya es considerado aceptable para reproducción de voz. Por encima de 40 dB es transparente para el oído humano en la mayoría de condiciones. Los resultados de este sistema están entre 30.5 y 102.1 dB.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;analisis-svd&quot;&gt;Análisis SVD&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do&#x2F;raw&#x2F;main&#x2F;Imagenes&#x2F;Analisis%20SVD%20%E2%80%94%20Espacios%20Vectoriales.png&quot; alt=&quot;Descomposicion SVD de la matriz de trayectoria para las 4 señales&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;El análisis de valores singulares confirma la intuición teórica sobre la complejidad de cada señal:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Señal&lt;&#x2F;th&gt;&lt;th&gt;Varianza acumulada en 5 modos&lt;&#x2F;th&gt;&lt;th&gt;&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Tono puro&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;99.0%&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;casi toda la energía en 1–2 modos&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Acorde&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;84.3%&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;~3 modos significativos (uno por frecuencia)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Barrido&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;9.3%&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;energía muy distribuida&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Compleja&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;88.6%&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;varios modos (armónicos)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;El caso del barrido es el más revelador: como la frecuencia cambia continuamente de 100 a 1000 Hz durante 3 segundos, ningún modo fijo puede capturar bien la señal. Necesita cientos de vectores singulares para representarse fielmente. Esto explica matemáticamente por qué tiene el SNR más bajo: el filtro FFT de umbral fijo no es el mejor para señales variantes en el tiempo.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;el-codigo-completo&quot;&gt;El Código Completo&lt;&#x2F;h2&gt;
&lt;p&gt;El script completo está disponible en el repositorio del proyecto:&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;&lt;strong&gt;Código fuente:&lt;&#x2F;strong&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do&#x2F;blob&#x2F;main&#x2F;Scripts&#x2F;script_prueba_demostracion.m&quot;&gt;script_prueba_demostracion.m&lt;&#x2F;a&gt; — MATLAB R2016b o superior, requiere Signal Processing Toolbox.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;conclusiones&quot;&gt;Conclusiones&lt;&#x2F;h2&gt;
&lt;p&gt;Los resultados de la simulación son claros:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;El filtrado espectral FFT funciona.&lt;&#x2F;strong&gt; SNR de hasta 102.1 dB para el tono puro y correlación de 1.0000 en tres de las cuatro señales. El sistema recupera la forma de onda con fidelidad suficiente para reproducción de audio.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;La señal más difícil es el barrido (chirp).&lt;&#x2F;strong&gt; Con 30.5 dB y correlación 0.9996, sigue siendo muy buena, pero revela la limitación del filtro de umbral fijo: no es el mejor para señales cuya frecuencia varía en el tiempo. La &lt;strong&gt;STFT&lt;&#x2F;strong&gt; (Short-Time Fourier Transform) o una transformada Wavelet serían mejores herramientas para ese caso.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;El SVD confirma la teoría de espacios vectoriales.&lt;&#x2F;strong&gt; El rango efectivo de la señal (medido por los valores singulares) refleja directamente su complejidad: 1–2 modos para el tono puro, cientos para el barrido.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;El BPW34 supera al LDR.&lt;&#x2F;strong&gt; El shot noise del BPW34 es de apenas 0.8% de la señal, frente al 5% típico de un LDR. Esto se traduce directamente en SNR más alto y reconstrucción más fiel.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;La simulación valida la arquitectura antes del hardware.&lt;&#x2F;strong&gt; Ya sé que los algoritmos funcionan. Ahora puedo construir el sistema real con confianza.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;proximos-pasos&quot;&gt;Próximos Pasos&lt;&#x2F;h2&gt;
&lt;p&gt;El hardware está definido y en camino:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Montaje físico:&lt;&#x2F;strong&gt; láser D18×65mm sobre soporte Neiko, BPW34 en tubo negro, circuito en protoboard 830 puntos&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Primera captura real:&lt;&#x2F;strong&gt; comparar SNR experimental con el simulado (objetivo: &amp;gt;20 dB)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Señales de prueba:&lt;&#x2F;strong&gt; tono puro de generador, luego voz, luego música&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Futuro:&lt;&#x2F;strong&gt; STFT para mejorar la reconstrucción del chirp y señales variantes en el tiempo&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;El siguiente post documentará la construcción del hardware y la primera captura real de audio.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;em&gt;Este proyecto es parte del curso de Física II (Ondas, Oscilaciones y Espacios Vectoriales), segundo semestre. Todo el código es de acceso libre en &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Richard7987&#x2F;Proyecto-Fisica-2do.git&quot;&gt;GitHub&lt;&#x2F;a&gt;.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Monero (XMR): La Vía Privada para las Remesas de Migrantes</title>
        <published>2026-02-21T00:00:00+00:00</published>
        <updated>2026-02-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/monero/"/>
        <id>https://nezzontli.xyz/blog/monero/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/monero/">&lt;h2 id=&quot;critica-vigilancia-y-presion-sobre-el-migrante-en-ee-uu&quot;&gt;Crítica: Vigilancia y Presión sobre el Migrante en EE. UU.&lt;&#x2F;h2&gt;
&lt;p&gt;Más allá de las altas comisiones, el envío de remesas tradicional expone a los migrantes a una creciente vigilancia financiera. En los últimos años, las políticas migratorias y las regulaciones bancarias en Estados Unidos se han endurecido, creando un ambiente de incertidumbre y riesgo para quienes envían dinero a casa.&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;markdown-alert-warning&quot;&gt;
	&lt;p&gt;&lt;strong&gt;El contexto actual:&lt;&#x2F;strong&gt; La información financiera se ha convertido en una herramienta de control. Cada transferencia a través de un banco o un servicio de remesas deja un rastro digital que puede ser analizado por agencias gubernamentales.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;p&gt;Noticias y reportes recientes ilustran esta presión:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vigilancia de Transacciones:&lt;&#x2F;strong&gt; Un reporte de la ACLU reveló cómo agencias como el ICE y el FBI han estado comprando datos de localización de millones de teléfonos y datos de transacciones financieras de empresas de servicios públicos y de envío de dinero para rastrear a inmigrantes, a menudo sin una orden judicial. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Presión Regulatoria:&lt;&#x2F;strong&gt; La Ley de Secreto Bancario (Bank Secrecy Act) exige a las instituciones financieras reportar transacciones “sospechosas” al FinCEN (Red de Ejecución de Delitos Financieros). Aunque está diseñada para combatir el lavado de dinero, su aplicación puede afectar a migrantes que realizan transacciones frecuentes o en efectivo, generando perfiles de riesgo injustos. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Debanking y Exclusión Financiera:&lt;&#x2F;strong&gt; Ha habido un aumento en los casos de “debanking”, donde los bancos cierran cuentas de personas o empresas consideradas de “alto riesgo” sin una explicación clara. Para un migrante, perder el acceso a su cuenta bancaria puede ser devastador, cortando su capacidad para trabajar y enviar dinero. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;En este escenario, la búsqueda de privacidad no es un capricho, sino una &lt;strong&gt;necesidad para la seguridad personal y financiera&lt;&#x2F;strong&gt;. Aquí es donde Monero (XMR) se presenta como una alternativa única.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;monero-xmr-la-criptomoneda-verdaderamente-privada&quot;&gt;Monero (XMR): La Criptomoneda Verdaderamente Privada&lt;&#x2F;h2&gt;
&lt;p&gt;A diferencia de Bitcoin o Ethereum, donde todas las transacciones son públicas y rastreables en la blockchain (pseudo-anónimas), Monero fue diseñado desde cero con un objetivo principal: &lt;strong&gt;privacidad total y no rastreable&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;“La privacidad es necesaria para una sociedad abierta en la era electrónica. La privacidad no es un secreto. Un asunto privado es algo que uno no quiere que todo el mundo sepa, pero un asunto secreto es algo que uno no quiere que nadie sepa. La privacidad es el poder de revelarse selectivamente al mundo.” - &lt;strong&gt;Eric Hughes, “A Cypherpunk’s Manifesto” (1993)&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;p&gt;Monero logra el anonimato a través de tres tecnologías clave:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Tecnología&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Función&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Resultado para el Usuario&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Direcciones Sigilosas (Stealth Addresses)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Genera una dirección única e irrepetible para cada transacción.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Nadie puede vincular las transacciones recibidas a tu dirección pública. Es imposible saber cuánto dinero tienes.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Firmas de Anillo (Ring Signatures)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Mezcla la firma digital del remitente con un grupo de otras firmas pasadas.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Un observador externo no puede saber quién del grupo fue el verdadero firmante (remitente) de la transacción.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Transacciones Confidenciales de Anillo (RingCT)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Oculta el monto de la transacción en la blockchain.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Nadie, excepto el remitente y el receptor, puede ver la cantidad de dinero que se envió.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;figure&gt;
&lt;img class=&quot;full&quot;alt=&quot;Una caja fuerte simbolizando la privacidad y seguridad de los fondos.&quot;src=&quot;https:&amp;#x2F;&amp;#x2F;4get.tail32b955.ts.net&amp;#x2F;proxy?i=https%3A%2F%2Fforkast.news%2Fwp-content%2Fuploads%2F2021%2F05%2Fmonero-cryptocurrency-coin-close-up-8P887GU-scaled.jpg&quot;decoding=&quot;async&quot; loading=&quot;lazy&quot;&#x2F;&gt;
&lt;figcaption&gt;Monero funciona como una caja fuerte digital, donde solo el remitente y el receptor conocen los detalles de la transacción.&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;&lt;strong&gt;En resumen:&lt;&#x2F;strong&gt; Cuando usas Monero, nadie puede ver quién envió el dinero, quién lo recibió, ni cuánto se envió. La blockchain es &lt;strong&gt;opaca&lt;&#x2F;strong&gt; por defecto. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;3-guia-practica-usando-monero-para-remesas&quot;&gt;3. Guía Práctica: Usando Monero para Remesas&lt;&#x2F;h2&gt;
&lt;p&gt;El proceso es conceptualmente similar a otras criptomonedas, pero con herramientas específicas que protegen la privacidad.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;paso-1-obtener-una-billetera-de-monero&quot;&gt;Paso 1: Obtener una Billetera de Monero&lt;&#x2F;h3&gt;
&lt;p&gt;Aquí no se usan las plataformas centralizadas comunes para guardar los fondos a largo plazo. Se priorizan las billeteras de código abierto y sin custodia.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recomendaciones de Billeteras (Wallets):&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Escritorio:&lt;&#x2F;strong&gt; &lt;code&gt;Monero GUI Wallet&lt;&#x2F;code&gt; (la oficial), &lt;code&gt;Feather Wallet&lt;&#x2F;code&gt; (ligera y rápida).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Móvil:&lt;&#x2F;strong&gt; &lt;code&gt;Cake Wallet&lt;&#x2F;code&gt; (muy popular y fácil de usar, disponible para iOS y Android), &lt;code&gt;Monerujo&lt;&#x2F;code&gt; (solo Android). &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;paso-2-comprar-monero-xmr-de-forma-privada&quot;&gt;Paso 2: Comprar Monero (XMR) de Forma Privada&lt;&#x2F;h3&gt;
&lt;p&gt;Este es el paso más delicado. Comprar en un exchange centralizado como Coinbase o Binance crea un vínculo entre tu identidad y la compra de XMR. Para maximizar la privacidad, se pueden usar métodos alternativos:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exchanges sin KYC (Know Your Customer):&lt;&#x2F;strong&gt; Plataformas como &lt;code&gt;TradeOgre&lt;&#x2F;code&gt; permiten operar sin verificar identidad, pero requieren depositar otra criptomoneda (como Litecoin) para intercambiarla por Monero.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Plataformas P2P (Peer-to-Peer):&lt;&#x2F;strong&gt; Sitios como &lt;code&gt;xmrbazaar&lt;&#x2F;code&gt; o &lt;code&gt;Bisq&lt;&#x2F;code&gt; conectan a compradores y vendedores directamente. Se puede pagar con transferencia bancaria, efectivo por correo o incluso tarjetas de regalo, ofreciendo un alto grado de anonimato. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#6&quot;&gt;6&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;paso-3-enviar-y-recibir&quot;&gt;Paso 3: Enviar y Recibir&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Obtener Dirección:&lt;&#x2F;strong&gt; El familiar (receptor) abre su billetera (ej. &lt;code&gt;Cake Wallet&lt;&#x2F;code&gt;) y copia su dirección de Monero. Esta dirección se puede compartir sin riesgo, ya que no revela ninguna información sobre saldos o transacciones pasadas.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Enviar:&lt;&#x2F;strong&gt; El migrante (remitente) pega esa dirección en su propia billetera, introduce el monto y envía. La transacción se confirma en la red en unos minutos.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Recibir y Convertir:&lt;&#x2F;strong&gt; Una vez recibido, el familiar puede usar un exchange P2P como &lt;code&gt;LocalMonero&lt;&#x2F;code&gt; para vender el XMR a cambio de su moneda local, acordando el método de pago con el comprador. &lt;code&gt;Cake Wallet&lt;&#x2F;code&gt; también tiene funciones integradas para intercambiar XMR por otras criptomonedas que podrían ser más fáciles de vender en un exchange local como Bitso.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;blockquote class=&quot;markdown-alert-important&quot;&gt;
	&lt;p&gt;El ecosistema de Monero es menos “amigable” para principiantes que el de Bitcoin. Requiere más investigación y precaución, pero la recompensa es un nivel de privacidad que ninguna otra criptomoneda importante puede ofrecer.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;4-conclusion-privacidad-como-derecho-no-como-delito&quot;&gt;4. Conclusión: Privacidad como Derecho, no como Delito&lt;&#x2F;h2&gt;
&lt;p&gt;En un mundo donde la vigilancia financiera se intensifica, herramientas como Monero se vuelven cruciales. Para la comunidad migrante, que a menudo opera en una zona gris legal y económica, la capacidad de realizar transacciones sin ser monitoreado, perfilado o excluido puede ser una necesidad fundamental para la supervivencia y el bienestar de sus familias.&lt;&#x2F;p&gt;
&lt;p&gt;El uso de Monero no se trata de ocultar actividades ilícitas, sino de ejercer un derecho humano básico: &lt;strong&gt;el derecho a la privacidad&lt;&#x2F;strong&gt;. Es una tecnología que devuelve el control financiero al individuo, permitiéndole proteger su patrimonio y a sus seres queridos en un entorno cada vez más incierto.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;bibliografia-y-referencias&quot;&gt;Bibliografía y Referencias&lt;&#x2F;h3&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;American Civil Liberties Union. (2020). &lt;em&gt;The U.S. Government Is Secretly Using Cell Phone Location Data to Track Us. We’re Suing.&lt;&#x2F;em&gt; ACLU. &lt;a href=&quot;https:&#x2F;&#x2F;www.aclu.org&#x2F;news&#x2F;immigrants-rights&#x2F;the-u-s-government-is-secretly-using-cell-phone-location-data-to-track-us-were-suing&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.aclu.org&#x2F;news&#x2F;immigrants-rights&#x2F;the-u-s-government-is-secretly-using-cell-phone-location-data-to-track-us-were-suing&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;2&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;Financial Crimes Enforcement Network. (s.f.). &lt;em&gt;Bank Secrecy Act (BSA).&lt;&#x2F;em&gt; U.S. Department of the Treasury. &lt;a href=&quot;https:&#x2F;&#x2F;www.fincen.gov&#x2F;resources&#x2F;statutes-and-regulations&#x2F;bank-secrecy-act&quot;&gt;https:&#x2F;&#x2F;www.fincen.gov&#x2F;resources&#x2F;statutes-and-regulations&#x2F;bank-secrecy-act&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;3&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;The Wall Street Journal. (2016). &lt;em&gt;The Unintended Consequence of Closing High-Risk Accounts.&lt;&#x2F;em&gt; The Wall Street Journal. &lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20251112201751&#x2F;https:&#x2F;&#x2F;www.wsj.com&#x2F;articles&#x2F;the-unintended-consequence-of-closing-high-risk-accounts-1459589407&quot;&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20251112201751&#x2F;https:&#x2F;&#x2F;www.wsj.com&#x2F;articles&#x2F;the-unintended-consequence-of-closing-high-risk-accounts-1459589407&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;4&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;GetMonero.org. (s.f.). &lt;em&gt;About Monero.&lt;&#x2F;em&gt; GetMonero.org. &lt;a href=&quot;https:&#x2F;&#x2F;www.getmonero.org&#x2F;resources&#x2F;about&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.getmonero.org&#x2F;resources&#x2F;about&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;5&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;5&lt;&#x2F;sup&gt;
&lt;p&gt;GetMonero.org. (s.f.). &lt;em&gt;Downloads.&lt;&#x2F;em&gt; GetMonero.org. &lt;a href=&quot;https:&#x2F;&#x2F;www.getmonero.org&#x2F;downloads&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.getmonero.org&#x2F;downloads&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;6&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;6&lt;&#x2F;sup&gt;
&lt;p&gt;XMRBazaar. (s.f.). &lt;em&gt;XMRBazaar – Peer-to-Peer Marketplace Using Monero (XMR).&lt;&#x2F;em&gt; XMRBazaar. &lt;a href=&quot;https:&#x2F;&#x2F;xmrbazaar.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;xmrbazaar.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Uso de OpenBSD para hospedaje de página web</title>
        <published>2026-02-03T00:00:00+00:00</published>
        <updated>2026-02-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/web/"/>
        <id>https://nezzontli.xyz/blog/web/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/web/">&lt;h2 id=&quot;contexto-y-motivacion&quot;&gt;Contexto y motivación&lt;&#x2F;h2&gt;
&lt;p&gt;Decidí migrar el hospedaje de mi página web a OpenBSD como un ejercicio deliberado de control, simplicidad y seguridad.&lt;br &#x2F;&gt;
No fue una decisión basada en rendimiento, escalabilidad comercial ni automatización extrema, sino en comprensión total del sistema.&lt;&#x2F;p&gt;
&lt;p&gt;OpenBSD obliga a entender cada archivo de configuración, cada servicio activo y cada permiso. No oculta complejidad: la expone. Ese fue el motivo central de esta migración.&lt;&#x2F;p&gt;
&lt;p&gt;El objetivo era claro: un servidor auditable, predecible y mínimo.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;infraestructura-y-vm&quot;&gt;Infraestructura y VM&lt;&#x2F;h2&gt;
&lt;p&gt;El servidor corre en una máquina virtual alquilada (VPS) de bajo costo, suficiente para contenido estático y servicios mínimos.&lt;&#x2F;p&gt;
&lt;p&gt;Características generales de la VM:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;1 vCPU&lt;&#x2F;li&gt;
&lt;li&gt;1–2 GB de RAM&lt;&#x2F;li&gt;
&lt;li&gt;Almacenamiento SSD&lt;&#x2F;li&gt;
&lt;li&gt;IP pública dedicada&lt;&#x2F;li&gt;
&lt;li&gt;Acceso root inicial para bootstrap&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;El proveedor no es relevante: OpenBSD no depende de features del host. El sistema se mantiene portable y reproducible.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;eleccion-del-stack&quot;&gt;Elección del stack&lt;&#x2F;h2&gt;
&lt;p&gt;El stack fue elegido conscientemente para reducir superficie de ataque:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Sistema operativo: OpenBSD&lt;&#x2F;li&gt;
&lt;li&gt;Servidor web: httpd (nativo)&lt;&#x2F;li&gt;
&lt;li&gt;HTTPS: acme-client (Let’s Encrypt)&lt;&#x2F;li&gt;
&lt;li&gt;Generador estático: Zola&lt;&#x2F;li&gt;
&lt;li&gt;Tema: Duckquill (modificado)&lt;&#x2F;li&gt;
&lt;li&gt;Repositorio: Git + GitHub&lt;&#x2F;li&gt;
&lt;li&gt;Acceso remoto: SSH con YubiKey (OpenPGP)&lt;&#x2F;li&gt;
&lt;li&gt;Servicio oculto: Tor (mirror .onion)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;No hay nginx, no hay docker, no hay paneles web, no hay Node en producción. Solo binarios del sistema base y archivos de texto.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;migracion-a-openbsd&quot;&gt;Migración a OpenBSD&lt;&#x2F;h2&gt;
&lt;p&gt;La migración incluyó:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Instalación limpia de OpenBSD&lt;&#x2F;li&gt;
&lt;li&gt;Configuración manual de red y DNS&lt;&#x2F;li&gt;
&lt;li&gt;Creación explícita de usuarios&lt;&#x2F;li&gt;
&lt;li&gt;Uso exclusivo de doas (sin sudo)&lt;&#x2F;li&gt;
&lt;li&gt;Servicios deshabilitados por defecto&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Separación clara entre: sistema (&#x2F;etc), contenido (&#x2F;var&#x2F;www), claves (&#x2F;etc&#x2F;ssl, &#x2F;etc&#x2F;acme). Nada se dejó “por default” sin entenderlo.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;servidor-web-con-httpd&quot;&gt;Servidor web con httpd&lt;&#x2F;h2&gt;
&lt;p&gt;El servidor web se configuró usando httpd nativo, sin módulos externos.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Configuración base simplificada:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;server &amp;quot;nezzontli.xyz&amp;quot; {
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    listen on * port 80
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    root &amp;quot;&#x2F;htdocs&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    location &amp;quot;&#x2F;.well-known&#x2F;acme-challenge&#x2F;*&amp;quot; {
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;        root &amp;quot;&#x2F;acme&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;        request strip 2
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    }
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;}
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;server &amp;quot;nezzontli.xyz&amp;quot; {
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    listen on * tls port 443
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    root &amp;quot;&#x2F;htdocs&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    tls {
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;        certificate &amp;quot;&#x2F;etc&#x2F;ssl&#x2F;nezzontli.xyz.fullchain.pem&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;        key &amp;quot;&#x2F;etc&#x2F;ssl&#x2F;private&#x2F;nezzontli.xyz.key&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    }
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;https-con-acme-client&quot;&gt;HTTPS con acme-client&lt;&#x2F;h2&gt;
&lt;p&gt;OpenBSD incluye acme-client en base, lo que elimina dependencias externas.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Flujo real:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Configurar httpd solo en HTTP&lt;&#x2F;li&gt;
&lt;li&gt;Resolver DNS correctamente (A records apuntando a la VM)&lt;&#x2F;li&gt;
&lt;li&gt;Ejecutar: &lt;code&gt;doas acme-client -v nezzontli.xyz&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Verificar creación de certificados en &#x2F;etc&#x2F;ssl&lt;&#x2F;li&gt;
&lt;li&gt;Habilitar TLS en httpd&lt;&#x2F;li&gt;
&lt;li&gt;Reiniciar servicio&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;No se usan scripts externos. La renovación se maneja vía cron del sistema.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;problemas-encontrados-y-soluciones&quot;&gt;Problemas encontrados (y soluciones)&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-error-404-en-acme-challenge&quot;&gt;1. Error 404 en ACME challenge&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Causa:&lt;&#x2F;strong&gt; httpd no estaba sirviendo correctamente &#x2F;var&#x2F;www&#x2F;acme.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; mkdir&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;p&lt;&#x2F;span&gt; &#x2F;var&#x2F;www&#x2F;acme&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; chown&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;R&lt;&#x2F;span&gt; web:web &#x2F;var&#x2F;www&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;2-dns-no-propagado&quot;&gt;2. DNS no propagado&lt;&#x2F;h3&gt;
&lt;p&gt;Durante el primer intento, el dominio resolvía a múltiples IPs antiguas: &lt;code&gt;dig nezzontli.xyz +short&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;&#x2F;strong&gt; Esperar propagación completa y eliminar registros conflictivos.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;3-confusion-con-dnssec&quot;&gt;3. Confusión con DNSSEC&lt;&#x2F;h3&gt;
&lt;p&gt;DNSSEC no es requisito para Let’s Encrypt HTTP-01. DNSSEC es independiente de TLS. No se activó en esta etapa.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;generacion-del-sitio-con-zola&quot;&gt;Generación del sitio con Zola&lt;&#x2F;h2&gt;
&lt;p&gt;El sitio es 100% estático.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Flujo básico:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;zola&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; build&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; rsync&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;delete&lt;&#x2F;span&gt; public&#x2F; &#x2F;var&#x2F;www&#x2F;htdocs&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;No hay generación en runtime. No hay escritura desde el servidor web.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;mirror-tor-onion&quot;&gt;Mirror Tor (.onion)&lt;&#x2F;h2&gt;
&lt;p&gt;Se configuró un Hidden Service de Tor como mirror del sitio.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;&#x2F;etc&#x2F;tor&#x2F;torrc:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;HiddenServiceDir &#x2F;var&#x2F;tor&#x2F;hidden_service&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;HiddenServicePort 80 127.0.0.1:80
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;httpd escucha solo en localhost para Tor:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;server &amp;quot;*&amp;quot; {
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    listen on 127.0.0.1 port 80
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;    root &amp;quot;&#x2F;tor&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Build específico para Tor:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;zola&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; build&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;base-url&lt;&#x2F;span&gt; http:&#x2F;&#x2F;&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;onion&lt;span class=&quot;z-keyword z-operator z-assignment z-redirection z-shell&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;.onion&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; rsync&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;delete&lt;&#x2F;span&gt; public&#x2F; &#x2F;var&#x2F;www&#x2F;tor&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Integración Tor Browser (Onion-Location):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;html&quot; class=&quot;language-html z-code&quot;&gt;&lt;code class=&quot;language-html&quot; data-lang=&quot;html&quot;&gt;&lt;span class=&quot;z-text z-html z-basic&quot;&gt;&lt;span class=&quot;z-meta z-tag z-inline z-any z-html&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-tag z-begin z-html&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-tag z-inline z-any z-html&quot;&gt;meta&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-attribute-with-value z-html&quot;&gt;&lt;span class=&quot;z-entity z-other z-attribute-name z-html&quot;&gt;http-equiv&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-html&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-html&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-html&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;onion-location&lt;span class=&quot;z-punctuation z-definition z-string z-end z-html&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-attribute-with-value z-html&quot;&gt;&lt;span class=&quot;z-entity z-other z-attribute-name z-html&quot;&gt;content&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-html&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-html&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-html&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;http:&#x2F;&#x2F;&amp;lt;onion&amp;gt;.onion&lt;span class=&quot;z-punctuation z-definition z-string z-end z-html&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-tag z-end z-html&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;automatizacion-del-despliegue&quot;&gt;Automatización del despliegue&lt;&#x2F;h2&gt;
&lt;p&gt;Script único para clearnet + Tor:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;!&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-support z-function z-set z-shell&quot;&gt;set&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt;-&lt;&#x2F;span&gt;e&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-variable z-other z-readwrite z-assignment z-shell&quot;&gt;ONION_URL&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-shell&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-unquoted z-shell&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;http:&#x2F;&#x2F;&amp;lt;onion&amp;gt;.onion&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; pull&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;zola&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; build&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; rsync&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;delete&lt;&#x2F;span&gt; public&#x2F; &#x2F;var&#x2F;www&#x2F;htdocs&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;zola&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; build&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;base-url&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-group z-expansion z-parameter z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-variable z-shell&quot;&gt;$&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-other z-readwrite z-shell&quot;&gt;ONION_URL&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;doas&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; rsync&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;delete&lt;&#x2F;span&gt; public&#x2F; &#x2F;var&#x2F;www&#x2F;tor&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Instalado en: &lt;code&gt;&#x2F;usr&#x2F;local&#x2F;bin&#x2F;update-site&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;control-de-acceso-ssh-yubikey&quot;&gt;Control de acceso: SSH + YubiKey&lt;&#x2F;h2&gt;
&lt;p&gt;Acceso remoto sin contraseñas persistentes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Clave OpenPGP en YubiKey&lt;&#x2F;li&gt;
&lt;li&gt;PIN + touch físico&lt;&#x2F;li&gt;
&lt;li&gt;gpg-agent como SSH agent&lt;&#x2F;li&gt;
&lt;li&gt;ssh-ed25519&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;La clave privada nunca toca el disco.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;control-de-versiones-y-firmas&quot;&gt;Control de versiones y firmas&lt;&#x2F;h2&gt;
&lt;p&gt;Repositorio alojado en GitHub:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Git puro&lt;&#x2F;li&gt;
&lt;li&gt;Commits firmados&lt;&#x2F;li&gt;
&lt;li&gt;Modelo de confianza por defecto&lt;&#x2F;li&gt;
&lt;li&gt;Sin CI obligatorio&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;El servidor no compila desde hooks remotos: el despliegue es consciente y manual.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;estructura-del-proyecto&quot;&gt;Estructura del proyecto&lt;&#x2F;h2&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;site&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── config.toml
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── content&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── templates&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── static&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── public&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;└── scripts&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;En servidor:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;var&#x2F;www&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── htdocs&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── tor&#x2F;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;└── acme&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;que-falta-por-hacer&quot;&gt;Qué falta por hacer&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Pendientes reales:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Hardening adicional de httpd&lt;&#x2F;li&gt;
&lt;li&gt;Documentar bootstrap completo desde cero&lt;&#x2F;li&gt;
&lt;li&gt;Monitoreo mínimo (sin agentes invasivos)&lt;&#x2F;li&gt;
&lt;li&gt;Publicar configs como referencia reproducible&lt;&#x2F;li&gt;
&lt;li&gt;Auditoría de headers de seguridad&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;idea-central&quot;&gt;Idea central&lt;&#x2F;h2&gt;
&lt;p&gt;Este proyecto no busca conveniencia ni velocidad de desarrollo.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Busca:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Comprensión&lt;&#x2F;li&gt;
&lt;li&gt;Control&lt;&#x2F;li&gt;
&lt;li&gt;Auditabilidad&lt;&#x2F;li&gt;
&lt;li&gt;Reducción de estados implícitos&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;OpenBSD no acelera el trabajo. Elimina errores silenciosos. Ese es el valor.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Detección de inundaciones</title>
        <published>2025-11-02T00:00:00+00:00</published>
        <updated>2025-11-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/proyecto1/"/>
        <id>https://nezzontli.xyz/blog/proyecto1/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/proyecto1/">&lt;h2 id=&quot;introduccion-y-justificacion&quot;&gt;Introducción y Justificación&lt;&#x2F;h2&gt;
&lt;p&gt;El estado de &lt;strong&gt;Hidalgo&lt;&#x2F;strong&gt; enfrenta una problemática crítica y recurrente de riesgo hídrico, manifestada en inundaciones por desbordamiento de ríos y presas. Esta situación se agrava por la falta de sistemas de monitoreo constante y la ausencia de un &lt;strong&gt;Sistema de Alerta Temprana (SAT)&lt;&#x2F;strong&gt; robusto y accesible para la población en las zonas de riesgo.&lt;&#x2F;p&gt;
&lt;p&gt;Cada temporada de lluvias intensas, miles de familias mexicanas, particularmente en Hidalgo, son afectadas por estos desbordamientos, resultando en la pérdida de vidas y bienes materiales. Un ejemplo trágico y emblemático fue la &lt;strong&gt;inundación del río Tula en septiembre de 2021&lt;&#x2F;strong&gt;, donde el desbordamiento alcanzó hasta &lt;strong&gt;dos metros de altura&lt;&#x2F;strong&gt;, afectando a más de &lt;strong&gt;2,500 viviendas&lt;&#x2F;strong&gt; y cobrando la vida de &lt;strong&gt;17 personas&lt;&#x2F;strong&gt; en el Hospital General de Zona (HGZ) No. 5 del IMSS en Tula de Allende &lt;a href=&quot;https:&#x2F;&#x2F;corrientealterna.unam.mx&#x2F;cronica&#x2F;a-un-ano-de-la-inundacion-en-tula-las-damnificadas-enfrentan-danos-emocionales-y-falta-de-apoyo&#x2F;&quot;&gt;1&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;www.uaeh.edu.mx&#x2F;gaceta&#x2F;3&#x2F;numero32&#x2F;octubre&#x2F;inundaciones-valle-mezquital.html&quot;&gt;2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Los municipios identificados con mayor vulnerabilidad a este tipo de fenómenos incluyen &lt;strong&gt;Tula de Allende&lt;&#x2F;strong&gt;, &lt;strong&gt;Huehuetla&lt;&#x2F;strong&gt;, &lt;strong&gt;Tianguistengo&lt;&#x2F;strong&gt;, y otras zonas de la Huasteca y la Sierra Hidalguense &lt;a href=&quot;https:&#x2F;&#x2F;www.milenio.com&#x2F;politica&#x2F;comunidad&#x2F;temporada-de-lluvias-en-hidalgo-2025-municipios-riesgo-inundacion&quot;&gt;3&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;www.jornada.com.mx&#x2F;noticia&#x2F;2025&#x2F;10&#x2F;10&#x2F;estados&#x2F;lluvias-desbordan-rios-en-hidalgo-causando-graves-inundaciones-en-7-municipios&quot;&gt;4&lt;&#x2F;a&gt;. Además, la gestión de embalses como la &lt;strong&gt;Presa La Esperanza&lt;&#x2F;strong&gt; (que ha alcanzado el 100% de su capacidad) y la &lt;strong&gt;Presa Tejocotal&lt;&#x2F;strong&gt; (con riesgo de desbordamiento en temporadas de alta precipitación) subraya la necesidad urgente de un monitoreo en tiempo real &lt;a href=&quot;https:&#x2F;&#x2F;es-us.noticias.yahoo.com&#x2F;hidalgo-mantiene-alerta-intensas-lluvias-134942535.html&quot;&gt;5&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;propuesta-de-solucion-sistema-de-deteccion-de-inundaciones-basado-en-meshtastic-lora&quot;&gt;Propuesta de Solución: Sistema de Detección de Inundaciones Basado en Meshtastic&#x2F;LoRa&lt;&#x2F;h2&gt;
&lt;p&gt;Se propone la implementación de un &lt;strong&gt;Sistema de Detección y Alerta Temprana de Inundaciones (SAT-I)&lt;&#x2F;strong&gt; utilizando la tecnología de red mallada &lt;strong&gt;Meshtastic&lt;&#x2F;strong&gt; sobre la infraestructura de radio de largo alcance y baja potencia (&lt;strong&gt;LoRa&lt;&#x2F;strong&gt;). Este sistema está diseñado para operar de manera autónoma y resiliente, incluso ante la caída de las redes de comunicación convencionales (telefonía móvil o Wi-Fi) &lt;a href=&quot;https:&#x2F;&#x2F;www.zonaindustrial.cl&#x2F;meshtastic&quot;&gt;6&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;componentes-y-funcionamiento&quot;&gt;Componentes y Funcionamiento&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Detección de Nivel de Agua:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Se emplearán &lt;strong&gt;sensores ultrasónicos de grado industrial&lt;&#x2F;strong&gt; con una precisión de hasta &lt;strong&gt;±1 cm&lt;&#x2F;strong&gt; para la medición constante del nivel del agua en ríos o presas.&lt;&#x2F;li&gt;
&lt;li&gt;Estos sensores se integrarán en una &lt;strong&gt;cápsula hermética&lt;&#x2F;strong&gt; de protección, asegurando su resistencia a la corrosión y a las condiciones ambientales extremas.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Comunicación Autónoma (Meshtastic&#x2F;LoRa):&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Los datos de los sensores serán transmitidos a través de módulos &lt;strong&gt;LoRa&lt;&#x2F;strong&gt; que ejecutan el &lt;em&gt;firmware&lt;&#x2F;em&gt; &lt;strong&gt;Meshtastic&lt;&#x2F;strong&gt;. Esta tecnología utiliza ondas de radio de largo alcance y bajo consumo, permitiendo la comunicación &lt;em&gt;off-grid&lt;&#x2F;em&gt; (fuera de la red eléctrica o de telecomunicaciones) a distancias de varios kilómetros.&lt;&#x2F;li&gt;
&lt;li&gt;La naturaleza de &lt;strong&gt;red mallada (mesh)&lt;&#x2F;strong&gt; de Meshtastic permite que cada nodo actúe como repetidor, extendiendo el alcance y la redundancia del sistema. En caso de que un nodo falle, la información puede ser retransmitida por otros nodos en la red.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Alerta Temprana y Aplicaciones Adicionales:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;El sistema no solo detectará desbordamientos inminentes, sino que también puede ser adaptado para &lt;strong&gt;detectar sequías&lt;&#x2F;strong&gt; mediante el monitoreo de niveles mínimos, facilitando la gestión hídrica en presas o zonas rurales.&lt;&#x2F;li&gt;
&lt;li&gt;La alerta se puede emitir a dispositivos portátiles (como &lt;em&gt;smartphones&lt;&#x2F;em&gt; con la aplicación Meshtastic) o a sistemas de alarma locales, garantizando una &lt;strong&gt;evacuación temprana&lt;&#x2F;strong&gt; de la población.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;requerimientos-minimos-para-el-prototipo&quot;&gt;Requerimientos Mínimos para el Prototipo&lt;&#x2F;h3&gt;
&lt;p&gt;Para la implementación inicial de un nodo de monitoreo y su repetidor se requiere:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Componente&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Cantidad&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Función&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Módulos LoRa&#x2F;Meshtastic&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Nodos de comunicación autónoma (uno para el sensor, otro como receptor&#x2F;gateway).&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Sensores Ultrasónicos&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;2&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Medición precisa (±1 cm) del nivel del agua.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Retransmisor Autónomo&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Nodo adicional con alimentación solar para extender el alcance de la red mallada.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;consideraciones-de-despliegue&quot;&gt;Consideraciones de Despliegue&lt;&#x2F;h3&gt;
&lt;p&gt;El despliegue del sistema debe ir precedido por un &lt;strong&gt;estudio topográfico&lt;&#x2F;strong&gt; detallado. Este estudio es crucial para:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Determinar la ubicación óptima de los nodos y retransmisores para maximizar el alcance de la red LoRa.&lt;&#x2F;li&gt;
&lt;li&gt;Establecer los umbrales de alerta basados en la topografía de la zona y los niveles históricos de desbordamiento.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Todos los retransmisores deben ser &lt;strong&gt;autónomos&lt;&#x2F;strong&gt; y alimentados por &lt;strong&gt;paneles solares&lt;&#x2F;strong&gt;, aprovechando la eficiencia energética y el bajo consumo de la tecnología LoRa.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;escalabilidad-y-aplicaciones-adicionales-beneficios-para-la-agricultura&quot;&gt;Escalabilidad y Aplicaciones Adicionales: Beneficios para la Agricultura&lt;&#x2F;h2&gt;
&lt;p&gt;La arquitectura modular y resiliente del sistema SAT-I basado en Meshtastic&#x2F;LoRa permite una escalabilidad inmediata para integrar otros sensores y fuentes de datos, ampliando su utilidad más allá de la prevención de inundaciones. Dado que &lt;strong&gt;Hidalgo es un estado con una importante vocación agrícola&lt;&#x2F;strong&gt;, esta escalabilidad ofrece beneficios directos para el sector primario.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;integracion-de-sistemas-meteorologicos-para-prediccion-de-lluvias&quot;&gt;Integración de Sistemas Meteorológicos para Predicción de Lluvias&lt;&#x2F;h3&gt;
&lt;p&gt;Se propone la integración de &lt;strong&gt;estaciones meteorológicas autónomas&lt;&#x2F;strong&gt; (alimentadas por energía solar y equipadas con sensores de precipitación, temperatura y humedad) que también utilicen la red Meshtastic&#x2F;LoRa para la transmisión de datos.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Dato Adicional&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Beneficio para la Prevención de Inundaciones&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Beneficio para la Agricultura&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Precipitación Acumulada&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Permite modelar la saturación del suelo y predecir el caudal de los ríos con mayor precisión, mejorando la anticipación de la alerta.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Ayuda a los agricultores a optimizar el riego y a planificar la siembra y cosecha en función de la disponibilidad hídrica.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Temperatura y Humedad&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Ofrece contexto para la predicción de tormentas intensas y fenómenos hidrometeorológicos.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Facilita la gestión de plagas y enfermedades, y optimiza las condiciones de cultivo para especies específicas.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Al enviar estos datos a través de la red mesh, se crea un sistema de información ambiental &lt;strong&gt;descentralizado y robusto&lt;&#x2F;strong&gt;. La combinación de la &lt;strong&gt;predicción meteorológica&lt;&#x2F;strong&gt; (datos de lluvia) con el &lt;strong&gt;monitoreo hidrológico en tiempo real&lt;&#x2F;strong&gt; (nivel de agua) proporciona una herramienta de análisis mucho más completa para la prevención de desastres.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusión&lt;&#x2F;h2&gt;
&lt;p&gt;La integración de sensores de precisión con la red de comunicación resiliente Meshtastic&#x2F;LoRa ofrece una solución &lt;strong&gt;autónoma y autosuficiente&lt;&#x2F;strong&gt; para la detección temprana de riesgos hídricos en Hidalgo. Este enfoque no solo aborda la vulnerabilidad de las redes convencionales, sino que proporciona una herramienta vital para la &lt;strong&gt;salvaguarda de la población&lt;&#x2F;strong&gt; y la protección de sus bienes ante un desbordamiento inminente.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;referencias-bibliografia&quot;&gt;Referencias (Bibliografía)&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;corrientealterna.unam.mx&#x2F;cronica&#x2F;a-un-ano-de-la-inundacion-en-tula-las-damnificadas-enfrentan-danos-emocionales-y-falta-de-apoyo&#x2F;&quot;&gt;Redacción. (2022, 7 septiembre). &lt;em&gt;A un año de la inundación en Tula: las damnificadas enfrentan daños emocionales y falta de apoyo&lt;&#x2F;em&gt;. Corriente Alterna UNAM. &lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.uaeh.edu.mx&#x2F;gaceta&#x2F;3&#x2F;numero32&#x2F;octubre&#x2F;inundaciones-valle-mezquital.html&quot;&gt;Gaceta UAEH. (s.f.). &lt;em&gt;Inundaciones en el Valle del Mezquital, una tragedia anunciada&lt;&#x2F;em&gt;. Universidad Autónoma del Estado de Hidalgo.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.milenio.com&#x2F;politica&#x2F;comunidad&#x2F;temporada-de-lluvias-en-hidalgo-2025-municipios-riesgo-inundacion&quot;&gt; Milenio Digital. (2025, 12 mayo). &lt;em&gt;Estos son los municipios de Hidalgo con mayor riesgo de inundaciones&lt;&#x2F;em&gt;. Milenio.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.jornada.com.mx&#x2F;noticia&#x2F;2025&#x2F;10&#x2F;10&#x2F;estados&#x2F;lluvias-desbordan-rios-en-hidalgo-causando-graves-inundaciones-en-7-municipios&quot;&gt;La Jornada. (2025, 10 octubre). &lt;em&gt;Lluvias desbordan ríos en Hidalgo causando graves inundaciones en 7 municipios&lt;&#x2F;em&gt;.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;es-us.noticias.yahoo.com&#x2F;hidalgo-mantiene-alerta-intensas-lluvias-134942535.html&quot;&gt;Yahoo Noticias. (2025, 30 junio). &lt;em&gt;Hidalgo se mantiene en alerta por intensas lluvias y presas al límite&lt;&#x2F;em&gt;.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.zonaindustrial.cl&#x2F;meshtastic&quot;&gt;Zona Industrial. (s.f.). &lt;em&gt;Meshtastic - Guía para tu Red Mesh&lt;&#x2F;em&gt;.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;-&#x2F;es&#x2F;YoLink-LoRa-inteligente-inundaciones-notificaciones&#x2F;dp&#x2F;B083Z5Z9HM&quot;&gt;YoLink. (s.f.). &lt;em&gt;YoLink LoRa - Sensor de fugas de agua de hasta 1&#x2F;4 de milla&lt;&#x2F;em&gt;.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Double Slit Experiment Simulation</title>
        <published>2025-10-28T00:00:00+00:00</published>
        <updated>2025-10-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/proy2/"/>
        <id>https://nezzontli.xyz/blog/proy2/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/proy2/">&lt;h1 id=&quot;double-slit-experiment-simulation-project&quot;&gt;Double Slit Experiment Simulation Project&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;project-overview&quot;&gt;Project Overview&lt;&#x2F;h2&gt;
&lt;p&gt;This project presents a comprehensive computational simulation of the famous &lt;strong&gt;double-slit experiment&lt;&#x2F;strong&gt;, one of the most profound demonstrations in quantum mechanics. The simulation is designed to run on a Raspberry Pi and includes four different visualization modes, each revealing different aspects of wave-particle duality and quantum behavior.&lt;&#x2F;p&gt;
&lt;p&gt;The double-slit experiment, originally performed by Thomas Young in 1801, demonstrates that light and matter exhibit both wave-like and particle-like properties. This project brings this fundamental quantum phenomenon to life through interactive Python simulations.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;the-four-simulations&quot;&gt;The Four Simulations&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-basic-simulation-static-interference-pattern&quot;&gt;1. Basic Simulation - Static Interference Pattern&lt;&#x2F;h3&gt;
&lt;p&gt;The basic simulation displays the classic interference pattern produced when coherent waves pass through two slits. This visualization shows the fundamental wave behavior with bright fringes (constructive interference) and dark fringes (destructive interference).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Key Features:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Static interference pattern visualization&lt;&#x2F;li&gt;
&lt;li&gt;Heat map showing intensity distribution&lt;&#x2F;li&gt;
&lt;li&gt;Marked slit positions&lt;&#x2F;li&gt;
&lt;li&gt;Clear demonstration of wave superposition&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Visual Result:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;captura_basica.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;captura_basica.db35fa7697ec25bf.png&quot; alt=&quot;Basic Simulation&quot; width=&quot;1440&quot; height=&quot;994&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;The image shows multiple bright and dark bands, demonstrating how waves from both slits interfere with each other. The cyan stars mark the positions of the two slits.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;2-animated-simulation-waves-in-motion&quot;&gt;2. Animated Simulation - Waves in Motion&lt;&#x2F;h3&gt;
&lt;p&gt;This is the most visually striking simulation, showing waves propagating in real-time from both slits. The animation provides an intuitive understanding of how interference patterns form dynamically.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Key Features:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Real-time wave propagation animation&lt;&#x2F;li&gt;
&lt;li&gt;Two-panel display: wave amplitude and intensity&lt;&#x2F;li&gt;
&lt;li&gt;Color-coded visualization (red = wave crests, blue = wave troughs)&lt;&#x2F;li&gt;
&lt;li&gt;Continuous animation showing wave evolution&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Visual Result:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;captura_animada.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;captura_animada.e94536631445ded6.png&quot; alt=&quot;Animated Simulation&quot; width=&quot;1440&quot; height=&quot;568&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;The left panel shows the wave amplitude with red and blue colors representing crests and valleys. The right panel displays the observable intensity pattern that would be detected on a screen.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;3-interactive-simulation-parameter-exploration&quot;&gt;3. Interactive Simulation - Parameter Exploration&lt;&#x2F;h3&gt;
&lt;p&gt;The interactive simulation allows real-time adjustment of experimental parameters, providing hands-on exploration of how wavelength and slit separation affect the interference pattern.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Key Features:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Adjustable wavelength (λ) slider&lt;&#x2F;li&gt;
&lt;li&gt;Adjustable slit separation (d) slider&lt;&#x2F;li&gt;
&lt;li&gt;Toggle between 1 and 2 slits&lt;&#x2F;li&gt;
&lt;li&gt;Real-time intensity profile graph&lt;&#x2F;li&gt;
&lt;li&gt;Display of Young’s formula: Δy = λL&#x2F;d&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Visual Result:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;captura_interactiva.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;captura_interactiva.efe37d0e20b2353f.png&quot; alt=&quot;Interactive Simulation&quot; width=&quot;1440&quot; height=&quot;1004&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;The simulation shows both the 2D interference pattern and a 1D intensity profile, with interactive controls at the bottom for parameter adjustment.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;4-quantum-simulation-the-observer-effect&quot;&gt;4. Quantum Simulation - The Observer Effect&lt;&#x2F;h3&gt;
&lt;p&gt;This is the most impressive and conceptually profound simulation. It demonstrates the quantum mechanical observer effect: the phenomenon where the act of measurement fundamentally changes the behavior of quantum particles.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Key Features:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Individual particle detection simulation&lt;&#x2F;li&gt;
&lt;li&gt;“OBSERVE” button to toggle measurement&lt;&#x2F;li&gt;
&lt;li&gt;Side-by-side comparison of theoretical and experimental patterns&lt;&#x2F;li&gt;
&lt;li&gt;Accumulation of particle detections over time&lt;&#x2F;li&gt;
&lt;li&gt;Clear demonstration of wave function collapse&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Visual Result:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;captura_cuantica.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;captura_cuantica.4eadcd3ce7732490.png&quot; alt=&quot;Quantum Simulation&quot; width=&quot;1440&quot; height=&quot;581&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;The left panel shows the theoretical probability distribution, while the right panel accumulates individual particle detections. When observation is activated, the interference pattern disappears.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;the-observer-effect-the-heart-of-quantum-mechanics&quot;&gt;The Observer Effect - The Heart of Quantum Mechanics&lt;&#x2F;h2&gt;
&lt;p&gt;The most striking result of this project is the demonstration of how observation changes quantum behavior:&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;comparacion_observador_simple.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;comparacion_observador_simple.5d1bf519bf25b215.png&quot; alt=&quot;Observer Effect Comparison&quot; width=&quot;1440&quot; height=&quot;626&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;h3 id=&quot;without-observation-left-blue&quot;&gt;Without Observation (Left - Blue):&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multiple interference fringes&lt;&#x2F;strong&gt; appear&lt;&#x2F;li&gt;
&lt;li&gt;Each particle behaves as a &lt;strong&gt;wave&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;The particle passes through &lt;strong&gt;both slits simultaneously&lt;&#x2F;strong&gt; (quantum superposition)&lt;&#x2F;li&gt;
&lt;li&gt;Result: &lt;strong&gt;Interference pattern&lt;&#x2F;strong&gt; with 6-8 visible bands&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;with-observation-right-red&quot;&gt;With Observation (Right - Red):&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Only 2 bands&lt;&#x2F;strong&gt; appear&lt;&#x2F;li&gt;
&lt;li&gt;Each particle behaves as a &lt;strong&gt;classical particle&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;The particle “chooses” &lt;strong&gt;one specific slit&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Result: &lt;strong&gt;No interference&lt;&#x2F;strong&gt; - just two separate distributions&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This is the central mystery of quantum mechanics: &lt;strong&gt;the act of observing changes reality itself&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;complete-comparison&quot;&gt;Complete Comparison&lt;&#x2F;h2&gt;
&lt;p&gt;All four simulations side by side:&lt;&#x2F;p&gt;
&lt;a href=&quot;&amp;#x2F;images&amp;#x2F;sim&amp;#x2F;captura_comparacion.png&quot;&gt;
	&lt;img class=&quot;landscape&quot; src=&quot;https:&amp;#x2F;&amp;#x2F;nezzontli.xyz&amp;#x2F;processed_images&amp;#x2F;captura_comparacion.4ad03e503855a3db.png&quot; alt=&quot;All Simulations Comparison&quot; width=&quot;1440&quot; height=&quot;1283&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Top Left:&lt;&#x2F;strong&gt; Basic static pattern&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Top Right:&lt;&#x2F;strong&gt; Animated wave propagation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Bottom Left:&lt;&#x2F;strong&gt; Interactive with adjustable parameters&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Bottom Right:&lt;&#x2F;strong&gt; Quantum simulation with probability distribution&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;physics-explained&quot;&gt;Physics Explained&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;wave-behavior-classical-physics&quot;&gt;Wave Behavior (Classical Physics)&lt;&#x2F;h3&gt;
&lt;p&gt;When light passes through two slits, each slit acts as a new source of circular waves (Huygens’ Principle). These waves overlap and interfere:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Constructive Interference:&lt;&#x2F;strong&gt; Wave crests align → bright fringe&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Destructive Interference:&lt;&#x2F;strong&gt; Crest meets trough → dark fringe&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The spacing between fringes follows Young’s formula:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Δy = λL&#x2F;d&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Where:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;λ = wavelength of light&lt;&#x2F;li&gt;
&lt;li&gt;L = distance to screen&lt;&#x2F;li&gt;
&lt;li&gt;d = separation between slits&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;quantum-behavior&quot;&gt;Quantum Behavior&lt;&#x2F;h3&gt;
&lt;p&gt;The quantum version reveals three fundamental principles:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Wave-Particle Duality:&lt;&#x2F;strong&gt; Quantum entities exhibit both wave and particle properties depending on how they are observed.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Quantum Superposition:&lt;&#x2F;strong&gt; An unobserved particle exists in multiple states simultaneously. In the double-slit experiment, each particle passes through both slits at once.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Wave Function Collapse:&lt;&#x2F;strong&gt; When we measure which slit a particle passes through, the wave function collapses. The particle is forced to “choose” one path, and the interference pattern disappears.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;As physicist Richard Feynman stated:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The double-slit experiment contains the only mystery of quantum mechanics.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;technical-implementation&quot;&gt;Technical Implementation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;platform&quot;&gt;Platform&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardware:&lt;&#x2F;strong&gt; Raspberry Pi (any model with Python 3)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Language:&lt;&#x2F;strong&gt; Python 3&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Libraries:&lt;&#x2F;strong&gt; NumPy (numerical computation), Matplotlib (visualization)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h3&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;pip3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; install numpy matplotlib&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;execution&quot;&gt;Execution&lt;&#x2F;h3&gt;
&lt;p&gt;Each simulation can be run independently:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;python3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; simulacion_basica.py      &lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Basic simulation&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;python3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; simulacion_animada.py     &lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Animated simulation&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;python3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; simulacion_interactiva.py &lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Interactive simulation&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;python3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; simulacion_cuantica.py    &lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Quantum simulation&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;recommended-presentation-order&quot;&gt;Recommended Presentation Order&lt;&#x2F;h2&gt;
&lt;p&gt;For maximum impact in a physics competition:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Start with Animated Simulation&lt;&#x2F;strong&gt; - Captures attention with visual movement&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Continue with Interactive Simulation&lt;&#x2F;strong&gt; - Demonstrates understanding of parameters&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Finish with Quantum Simulation&lt;&#x2F;strong&gt; - Delivers the “wow” moment with the observer effect&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;project-significance&quot;&gt;Project Significance&lt;&#x2F;h2&gt;
&lt;p&gt;This project successfully demonstrates:&lt;&#x2F;p&gt;
&lt;p&gt;✅ &lt;strong&gt;Classical wave interference&lt;&#x2F;strong&gt; through computational modeling&lt;br &#x2F;&gt;
✅ &lt;strong&gt;Quantum superposition&lt;&#x2F;strong&gt; and wave function behavior&lt;br &#x2F;&gt;
✅ &lt;strong&gt;The observer effect&lt;&#x2F;strong&gt; - measurement changing reality&lt;br &#x2F;&gt;
✅ &lt;strong&gt;Interactive parameter exploration&lt;&#x2F;strong&gt; of physical phenomena&lt;br &#x2F;&gt;
✅ &lt;strong&gt;Real-time visualization&lt;&#x2F;strong&gt; of abstract quantum concepts&lt;&#x2F;p&gt;
&lt;p&gt;The simulations make abstract quantum mechanics concepts tangible and visually accessible, providing an excellent educational tool for understanding one of physics’ most profound experiments.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;educational-value&quot;&gt;Educational Value&lt;&#x2F;h2&gt;
&lt;p&gt;This project bridges the gap between theoretical quantum mechanics and practical visualization. It allows students and audiences to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;See&lt;&#x2F;strong&gt; wave interference in action&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Explore&lt;&#x2F;strong&gt; how parameters affect patterns&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Understand&lt;&#x2F;strong&gt; the quantum measurement problem&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Experience&lt;&#x2F;strong&gt; the strangeness of quantum behavior&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The double-slit experiment has been called “the most beautiful experiment in physics” by Physics World readers. This simulation brings that beauty to life in an interactive, programmable format.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;The double-slit experiment simulation project successfully demonstrates the fundamental principles of quantum mechanics through four complementary visualizations. From the basic interference pattern to the profound observer effect, each simulation reveals a different facet of wave-particle duality.&lt;&#x2F;p&gt;
&lt;p&gt;The project proves that complex quantum phenomena can be effectively simulated and visualized using accessible technology like the Raspberry Pi, making cutting-edge physics education available to everyone.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Key Takeaway:&lt;&#x2F;strong&gt; Quantum mechanics shows us that nature behaves fundamentally differently at the microscopic scale. The act of observation is not passive - it actively participates in creating the reality we measure. This project makes that profound truth visible and interactive.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Project Created By:&lt;&#x2F;strong&gt; B.E. Alejandro&lt;br &#x2F;&gt;
&lt;strong&gt;Technology:&lt;&#x2F;strong&gt; Python 3, NumPy, Matplotlib&lt;br &#x2F;&gt;
&lt;strong&gt;Platform:&lt;&#x2F;strong&gt; Raspberry Pi&lt;br &#x2F;&gt;
&lt;strong&gt;Purpose:&lt;&#x2F;strong&gt; Physics Competition &#x2F; Educational Demonstration&lt;br &#x2F;&gt;
&lt;strong&gt;Date:&lt;&#x2F;strong&gt; October 2025&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>La Luna Rota</title>
        <published>2025-10-28T00:00:00+00:00</published>
        <updated>2025-10-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/sueno/"/>
        <id>https://nezzontli.xyz/blog/sueno/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/sueno/">&lt;h1 id=&quot;la-luna-rota&quot;&gt;La Luna Rota&lt;&#x2F;h1&gt;
&lt;p&gt;La indulgencia del ser humano y sus ganas de tener más hicieron que, al tratar de perforar la luna en un día normal —importante para la humanidad pero indiferente para cada ser humano—, la perforación saliera mal, desgarrando la luna a la mitad y provocando un inminente choque contra la Tierra.&lt;&#x2F;p&gt;
&lt;p&gt;No se activó ninguna alarma hasta mucho después. ¿Por qué lo haría? Podrías mirar al cielo y ver un pedazo de luna viniendo hacia ti.&lt;&#x2F;p&gt;
&lt;p&gt;Eran las 6:30 a.m. Estaba amaneciendo. Recuerdo que desperté; papá había ido a su carpintería unas calles abajo de casa. Era grande y olía a tiner. Había estado haciendo puertas para alguien rico, un total de 23, todas barnizadas.&lt;&#x2F;p&gt;
&lt;p&gt;Mamá estaba haciendo de comer. Ella decía que todas las comidas eran importantes, pero por alguna razón estaba preparando su mejor platillo: papas con chorizo. Cocinaba muy bien, tal vez sería el destino tratando de darme un último regalo antes de morir.&lt;&#x2F;p&gt;
&lt;p&gt;Mis hermanas se maquillaban. Escuché que irían a una fiesta de un amigo que tenían en común. A mí nunca me gustaron las fiestas, así que no las acompañaría. Solo estaba sentado en la orilla de mi cama viendo cómo se maquillaban. Recuerdo haber visto el pelo de ambas brillar ante la luz del amanecer.&lt;&#x2F;p&gt;
&lt;p&gt;Solo pensaba en qué haría ese día. Me preguntaba si me iría bien en la universidad. Había aprobado el examen de admisión: oficialmente era un universitario. No sentía nada, ni emoción ni tristeza. Solo existía.&lt;&#x2F;p&gt;
&lt;p&gt;Recuerdo que salí de casa para ver el amanecer cuando vi la luna. Hoy era el gran día. ¿Cómo lo había olvidado? Corrí por mi telescopio, lo monté y apunté hacia la luna. Ahí estaba. En unos minutos, el ser humano perforaría algunas zonas de la luna, ya que había descubierto un yacimiento de gas metano. Podríamos usarlo como combustible y como trampolín para viajes espaciales.&lt;&#x2F;p&gt;
&lt;p&gt;Mientras veía la luna, solo podía pensar que algún día yo haría algo tan importante como eso. Miraría hacia atrás y vería la Tierra alejarse mientras me embarcaba rumbo a otro planeta. No para abandonarlo, sino para expandirlo. Qué desolación me invadió al ver que la luna se estaba moviendo. Asustado, tardé 20 minutos en verificar y digerir lo que veía: la luna se había partido literalmente en dos y una parte venía hacia nosotros.&lt;&#x2F;p&gt;
&lt;p&gt;Corrí hacia mamá. Estaba cocinando y le dije:&lt;&#x2F;p&gt;
&lt;p&gt;—¡MAMÁ, LA LUNA SE CAE!&lt;&#x2F;p&gt;
&lt;p&gt;Claro, creyó que era un juego y continuó picando las papas, pero cuando vio mi cara —llorando y llena de pánico— salió a verlo. Se quedó callada. No la culpo. Yo también lo habría hecho. La mitad de la luna se acercaba; estaba entrando a la atmósfera. Mamá se arrodilló y lloró como nunca la había visto. Sentí más miedo por ella que por la luna.&lt;&#x2F;p&gt;
&lt;p&gt;Grité el nombre de mis hermanas. Al escuchar a mamá llorar desesperadamente, corrieron a la puerta donde ella estaba arrodillada y yo parado a su lado mirando la luna.&lt;br &#x2F;&gt;
¿Por qué había pasado esto?&lt;br &#x2F;&gt;
¿Toda mi vida la desperdicié?&lt;br &#x2F;&gt;
¿Debí hacer algo diferente?&lt;br &#x2F;&gt;
¿Por qué me pasa esto?&lt;&#x2F;p&gt;
&lt;p&gt;Eso pensaba mientras un trozo gigante de nuestra luna se acercaba. Cuando llegaron mis hermanas corriendo, preguntaban qué había sucedido. Solo señalé la luna. Se quedaron calladas. Mi hermana mayor intentó llamar a su novio, pero naturalmente ya nada funcionaba. En su desesperación dijo que iría a buscarlo. La detuve. Quería pasar mis últimos minutos con la familia de la que tanto quería huir.&lt;&#x2F;p&gt;
&lt;p&gt;Recordé a papá. Tal vez no se había dado cuenta, ya que su carpintería era una bodega grande. Le dije a mamá que se quedara con mis hermanas, que iría por él. Ella no dijo nada.&lt;&#x2F;p&gt;
&lt;p&gt;Les dije a las niñas:&lt;br &#x2F;&gt;
—Cuídenla, iré por papá en la bici.&lt;&#x2F;p&gt;
&lt;p&gt;Me subí a la bici y pedaleé lo más rápido que pude. Llegué y no estaba papá. Me asusté. En ese momento cayó el primer impacto: un escombro, comparado con la luna que venía hacia nosotros. Todos se dieron cuenta de lo que pasaba. Atónitos, algunos lloraban, gritaban o rezaban.&lt;&#x2F;p&gt;
&lt;p&gt;Yo, aturdido por tanto ruido, seguí buscando a papá. No lo encontraba y cada vez estaba más cerca la luna. Parecía que podría tocarla en cualquier momento. Pensé en buscarlo, pero ya no me daría tiempo de regresar con mamá. Me imaginé los peores escenarios. En un arranque de desesperación, y siguiendo mi corazón, fui con mamá y mis hermanas.&lt;&#x2F;p&gt;
&lt;p&gt;Al llegar, estaban enraizadas. Mamá, al verme, me abrazó muy fuerte. Solo nos dijo “perdón” y siguió abrazándonos. Cayó otro escombro cerca de nosotros. Podía escuchar los gritos de la gente y otros llantos. Miré al cielo: era inminente, estaba a punto de morir.&lt;&#x2F;p&gt;
&lt;p&gt;De repente llegó papá. Lo vi. Yo nunca había tenido una relación amistosa con él, pero en ese momento solo podía abrazarlo. Me abrazó, y nuevamente nos abrazamos todos.&lt;&#x2F;p&gt;
&lt;p&gt;En ese instante no vi mi vida pasar; solo podía ver lo que pude haber sido. Estaba asustado y molesto. Yo era ateo; sabía que no había nada después de la muerte, y eso me asustaba más. No quería desaparecer. Tenía miedo. Mucho miedo.&lt;&#x2F;p&gt;
&lt;p&gt;Empezaron a sonar alarmas. Cayó el primer gran trozo muy a lo lejos, pero aun así sentimos el impacto.&lt;br &#x2F;&gt;
Y aquí viene el sol.&lt;br &#x2F;&gt;
Aún estaba hermoso en su amanecer.&lt;br &#x2F;&gt;
Me di cuenta de cuán insignificantes somos, a pesar de creer que todo gira alrededor de nosotros.&lt;&#x2F;p&gt;
&lt;p&gt;Cuarenta minutos después de la perforación, toda la raza humana había muerto. La Estación Espacial Internacional, en un intento por preservar nuestra especie, se dirigió al planeta habitable más cercano, pero la misma Tierra, destruyéndose, impactó contra ella, matando a todo ser humano del universo.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Abro los ojos. Despierto sudando por lo que acaba de pasar. Corro a ver la luna y no está ahí. Escucho a mamá llamarme para comer. Voy corriendo y me siento en la mesa que papá había construido. La veo: es ella, actuando tan normal. No entiendo qué pasa.&lt;&#x2F;p&gt;
&lt;p&gt;Llegan mis hermanas con vestidos y maquilladas, platicando entre ellas. Mamá nos sirve la comida. En ese momento llega papá, se lava las manos y se sienta a mi lado. Mamá termina de servir.&lt;&#x2F;p&gt;
&lt;p&gt;No sé qué está pasando, pero probar la comida de mamá otra vez con mi familia es todo lo que me importa.&lt;br &#x2F;&gt;
Tomo la cuchara, pruebo un sorbo y sí, como lo esperaba: es la mejor comida que ha preparado mamá.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Smart Mushroom Cultivation</title>
        <published>2025-06-14T00:00:00+00:00</published>
        <updated>2025-06-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/hongos/"/>
        <id>https://nezzontli.xyz/blog/hongos/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/hongos/">&lt;h2 id=&quot;project-summary&quot;&gt;Project Summary&lt;&#x2F;h2&gt;
&lt;p&gt;This project involves the development of a modular, intelligent, and fully automated system for cultivating edible and medicinal mushrooms. Each unit functions as an independent ecosystem, automatically monitored and adjusted by artificial intelligence, with full control from a mobile application or web dashboard.&lt;&#x2F;p&gt;
&lt;p&gt;The system is designed to optimize the growing conditions for different mushroom species, maximizing production while minimizing human intervention.&lt;&#x2F;p&gt;
&lt;p&gt;#Mushrooms #Automation #IoT #Cultivation #AI #RaspberryPi #ESP32&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;main-features&quot;&gt;Main Features&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;modular-design&quot;&gt;Modular Design&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Vertical structure with independent cubes of different sizes&lt;&#x2F;li&gt;
&lt;li&gt;Each module has its own environmental control system&lt;&#x2F;li&gt;
&lt;li&gt;Ability to grow different species simultaneously&lt;&#x2F;li&gt;
&lt;li&gt;Scalability according to production needs&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;intelligent-environmental-control&quot;&gt;Intelligent Environmental Control&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Real-time monitoring of critical parameters&lt;&#x2F;li&gt;
&lt;li&gt;Automatic adjustment according to the selected species&lt;&#x2F;li&gt;
&lt;li&gt;Alerts and notifications for anomalous conditions&lt;&#x2F;li&gt;
&lt;li&gt;Historical data logging for analysis and optimization&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;visual-analysis-with-ai&quot;&gt;Visual Analysis with AI&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Growth status detection using computer vision&lt;&#x2F;li&gt;
&lt;li&gt;Prediction of the optimal harvest time&lt;&#x2F;li&gt;
&lt;li&gt;Early identification of contamination or problems&lt;&#x2F;li&gt;
&lt;li&gt;Continuous learning to improve results&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;system-components&quot;&gt;System Components&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;infrastructure-and-design&quot;&gt;Infrastructure and Design&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modular structure:&lt;&#x2F;strong&gt; Vertical shelf with cubes of different sizes&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;cubos&#x2F;&quot;&gt;Cubes&lt;&#x2F;a&gt;:&lt;&#x2F;strong&gt; Each cube has its own environmental control system&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Substrate material:&lt;&#x2F;strong&gt; Varies by species (straw, sawdust, coffee, etc.)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Thermal insulation:&lt;&#x2F;strong&gt; To maintain stable conditions regardless of the external environment&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;automated-environmental-control&quot;&gt;Automated Environmental Control&lt;&#x2F;h3&gt;
&lt;p&gt;Each cube will have sensors and actuators to maintain an autonomous microclimate, adjusted according to the type of mushroom entered via the app.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Sensors&lt;&#x2F;th&gt;&lt;th&gt;Actuators&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Temperature&lt;&#x2F;td&gt;&lt;td&gt;Humidifiers &#x2F; Dehumidifiers&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Humidity&lt;&#x2F;td&gt;&lt;td&gt;Fans &#x2F; Air extractors&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;CO₂&lt;&#x2F;td&gt;&lt;td&gt;Water pumps (automated irrigation)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Light&lt;&#x2F;td&gt;&lt;td&gt;Programmable LED lighting&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;em&gt;Each cube automatically adjusts these parameters based on the selected mushroom species.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ai-for-monitoring-and-management&quot;&gt;AI for Monitoring and Management&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Database with ideal parameters for each species&lt;&#x2F;li&gt;
&lt;li&gt;Computer vision to monitor and predict harvest time&lt;&#x2F;li&gt;
&lt;li&gt;Learning algorithms for continuous optimization&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Technology&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Cameras&lt;&#x2F;td&gt;&lt;td&gt;One per cube to capture periodic images&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Machine Learning&lt;&#x2F;td&gt;&lt;td&gt;Models with &lt;strong&gt;YOLOv8&lt;&#x2F;strong&gt;, &lt;strong&gt;TensorFlow&lt;&#x2F;strong&gt;, or &lt;strong&gt;PyTorch&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Analysis&lt;&#x2F;td&gt;&lt;td&gt;Automatic detection of growth and maturity&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Adaptation&lt;&#x2F;td&gt;&lt;td&gt;Environmental adjustment based on visual analysis of the mushroom&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;automation-and-communication&quot;&gt;Automation and Communication&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Central management platform for all cubes&lt;&#x2F;li&gt;
&lt;li&gt;Microcontrollers like &lt;strong&gt;ESP32 &#x2F; ESP8266&lt;&#x2F;strong&gt; or &lt;strong&gt;Raspberry Pi&lt;&#x2F;strong&gt; in each cube&lt;&#x2F;li&gt;
&lt;li&gt;Communication based on &lt;strong&gt;MQTT + Python&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Automation with &lt;strong&gt;Node-RED&lt;&#x2F;strong&gt; or &lt;strong&gt;Home Assistant&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;user-interface&quot;&gt;User Interface&lt;&#x2F;h3&gt;
&lt;p&gt;A web or app platform to control, visualize, and receive notifications.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Functionalities&lt;&#x2F;th&gt;&lt;th&gt;Technologies&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Mushroom type selection per cube&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Backend:&lt;&#x2F;strong&gt; Flask, Django, or FastAPI (Python)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Real-time data visualization&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Frontend:&lt;&#x2F;strong&gt; Grafana (visualization)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Harvest notifications&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Interface:&lt;&#x2F;strong&gt; Home Assistant (intuitive control)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Manual parameter control&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Mobile:&lt;&#x2F;strong&gt; PWA or native app&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;required-hardware&quot;&gt;Required Hardware&lt;&#x2F;h2&gt;
&lt;p&gt;For complete details on hardware components, see &lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;hardware&#x2F;&quot;&gt;Hardware&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Processing unit:&lt;&#x2F;strong&gt; Raspberry Pi 4 &#x2F; Jetson Nano&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Local controllers:&lt;&#x2F;strong&gt; ESP32 &#x2F; ESP8266&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sensors:&lt;&#x2F;strong&gt; Temperature, humidity, CO₂, light&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Cameras:&lt;&#x2F;strong&gt; HD per cube for visual monitoring&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Actuators:&lt;&#x2F;strong&gt; Fans, humidifiers, heaters, pumps&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;operation-flow&quot;&gt;Operation Flow&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Initial setup:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The user inserts the cube into the shelf&lt;&#x2F;li&gt;
&lt;li&gt;Selects the mushroom type from the interface&lt;&#x2F;li&gt;
&lt;li&gt;The system automatically configures the ideal parameters&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cultivation cycle:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Constant monitoring of environmental conditions&lt;&#x2F;li&gt;
&lt;li&gt;Real-time automatic adjustments&lt;&#x2F;li&gt;
&lt;li&gt;Visual analysis of growth&lt;&#x2F;li&gt;
&lt;li&gt;Data logging for optimization&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Harvest:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Detection of the optimal moment by AI&lt;&#x2F;li&gt;
&lt;li&gt;Notification to the user&lt;&#x2F;li&gt;
&lt;li&gt;Recording of results to improve future cycles&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;For a visual representation of the complete process, see &lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;diseno&#x2F;&quot;&gt;Flowchart&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;phase-1-prototype&quot;&gt;Phase 1: Prototype&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Construction of a test module&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Implementation of the basic sensor system&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Development of the preliminary control interface&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-2-ai-development&quot;&gt;Phase 2: AI Development&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Collection of growth data&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Training of computer vision models&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Harvest prediction tests&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-3-scaling&quot;&gt;Phase 3: Scaling&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Optimization of the modular design&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Improvement of energy efficiency&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Implementation of a complete multi-module system&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;references-and-resources&quot;&gt;References and Resources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20240000000000*&#x2F;https:&#x2F;&#x2F;fungi.com&#x2F;blogs&#x2F;articles&#x2F;the-parameters-of-mushroom-cultivation&quot;&gt;Optimal cultivation parameters by species (Archived)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20240000000000*&#x2F;https:&#x2F;&#x2F;www.mdpi.com&#x2F;2073-4395&#x2F;10&#x2F;5&#x2F;728&quot;&gt;Implementation of computer vision in agriculture (Archived)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20240000000000*&#x2F;https:&#x2F;&#x2F;www.sciencedirect.com&#x2F;science&#x2F;article&#x2F;pii&#x2F;S2214317320300360&quot;&gt;IoT systems for controlled cultivation (Archived)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;For more details, see:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;cubos&#x2F;&quot;&gt;Cubes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;diseno&#x2F;&quot;&gt;Design&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;estante&#x2F;&quot;&gt;Shelf&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;hardware&#x2F;&quot;&gt;Hardware&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;investigacion&#x2F;&quot;&gt;Research and Planning&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;metodologia&#x2F;&quot;&gt;Metodología&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;hongos&#x2F;laboratorio&#x2F;&quot;&gt;Laboratory&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Building My Own Laptop</title>
        <published>2024-06-12T00:00:00+00:00</published>
        <updated>2024-06-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/laptop/"/>
        <id>https://nezzontli.xyz/blog/laptop/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/laptop/">&lt;h2 id=&quot;project-overview&quot;&gt;Project Overview&lt;&#x2F;h2&gt;
&lt;p&gt;This project aims to replicate the &lt;strong&gt;anyon_e&lt;&#x2F;strong&gt; laptop, an open-source design created by &lt;a href=&quot;https:&#x2F;&#x2F;www.byran.ee&#x2F;posts&#x2F;creation&quot;&gt;Byran Huang&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It is a modular laptop, highly integrated and fully customizable, with a strong focus on &lt;strong&gt;repairability&lt;&#x2F;strong&gt;, &lt;strong&gt;hardware control&lt;&#x2F;strong&gt;, and &lt;strong&gt;self-learning&lt;&#x2F;strong&gt; about modern components.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;documentation-resources&quot;&gt;Documentation &amp;amp; Resources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Repository&lt;&#x2F;strong&gt;: &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Hello9999901&#x2F;laptop&quot;&gt;github.com&#x2F;Hello9999901&#x2F;laptop&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Creator’s Website&lt;&#x2F;strong&gt;: &lt;a href=&quot;https:&#x2F;&#x2F;www.byran.ee&#x2F;posts&#x2F;creation&quot;&gt;byran.ee&#x2F;posts&#x2F;creation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Explainer Video&lt;&#x2F;strong&gt;: &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=fks3PBodyiE&quot;&gt;YouTube – How I Made A Laptop From Scratch&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;required-components&quot;&gt;Required Components&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-soc-module-rk3588&quot;&gt;1. SoC Module (RK3588)&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Specification&lt;&#x2F;th&gt;&lt;th&gt;Details&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Model&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;CM3588&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Description&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;The laptop’s brain, runs the full OS&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendors&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.friendlyelec.com&#x2F;index.php?route=product&#x2F;product&amp;amp;product_id=312&quot;&gt;FriendlyElec&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;www.ebay.com&#x2F;sch&#x2F;i.html?_nkw=356336193089&quot;&gt;eBay (Search)&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$300 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;2-amoled-display-13-3&quot;&gt;2. AMOLED Display 13.3“&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Suggested Model&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Wisecoco 2880x1920 AMOLED&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendor&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;-&#x2F;es&#x2F;dp&#x2F;B0CN4B659V&quot;&gt;Amazon&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$120–150 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;3-auxiliary-microcontroller-esp32-s3&quot;&gt;3. Auxiliary Microcontroller (ESP32-S3)&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Function&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Peripheral, fan, and sensor control&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendor&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.amazon.com.mx&#x2F;dp&#x2F;B0C28FFBRP&quot;&gt;Amazon Mexico&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$10–20 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;4-mechanical-keyboard&quot;&gt;4. Mechanical Keyboard&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Hot-swappable, custom design&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendors&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.keychron.com&quot;&gt;Keychron&lt;&#x2F;a&gt;, Amazon, AliExpress&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$80–150 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;5-trackpad&quot;&gt;5. Trackpad&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Recommended&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Apple Magic Trackpad 2 (Bluetooth)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendors&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.apple.com&#x2F;mx&#x2F;shop&#x2F;product&#x2F;MXKA3BE&#x2F;A&quot;&gt;Apple Mexico&lt;&#x2F;a&gt;, eBay&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$90–130 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;6-battery&quot;&gt;6. Battery&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Model&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Dell F3YGT (60Wh Li-Po)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendor&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;listado.mercadolibre.com.mx&#x2F;bateria-f3ygt-dell&quot;&gt;MercadoLibre (Search)&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Note&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Requires BMS module&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$50–80 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;7-custom-motherboard&quot;&gt;7. Custom Motherboard&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Files&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Available on GitHub&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Fabrication&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.pcbway.com&quot;&gt;PCBWay&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;jlcpcb.com&quot;&gt;JLCPCB&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Design&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;KiCad&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$50–100 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;8-cooling-system&quot;&gt;8. Cooling System&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Components&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Heatsink, heatpipes, fan&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Vendors&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Amazon, AliExpress&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$20–40 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;9-chassis&quot;&gt;9. Chassis&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;Material&lt;&#x2F;strong&gt;&lt;&#x2F;th&gt;&lt;th&gt;Anodized aluminum (ideal), 3D printing (prototype)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CNC Fab&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.pcbway.com&#x2F;rapid-prototyping&#x2F;cnc-machining&#x2F;&quot;&gt;PCBWay CNC&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Price&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;$150–300 USD (CNC), $20–50 USD (3D)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;extra-parts-accessories&quot;&gt;Extra Parts &amp;amp; Accessories&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Vendor&lt;&#x2F;th&gt;&lt;th&gt;Price&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;M2&#x2F;M3 Screws&lt;&#x2F;td&gt;&lt;td&gt;Amazon, hardware stores&lt;&#x2F;td&gt;&lt;td&gt;$5–10 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Flex cables (eDP&#x2F;USB)&lt;&#x2F;td&gt;&lt;td&gt;AliExpress&lt;&#x2F;td&gt;&lt;td&gt;$15–30 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;BMS Module&lt;&#x2F;td&gt;&lt;td&gt;Amazon, AliExpress&lt;&#x2F;td&gt;&lt;td&gt;$10–20 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;USB&#x2F;HDMI Connectors&lt;&#x2F;td&gt;&lt;td&gt;Amazon, local shops&lt;&#x2F;td&gt;&lt;td&gt;$10–15 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPIO pins, dupont cables&lt;&#x2F;td&gt;&lt;td&gt;SparkFun, AliExpress&lt;&#x2F;td&gt;&lt;td&gt;$5–10 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;required-tools&quot;&gt;Required Tools&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Precision soldering iron&lt;&#x2F;li&gt;
&lt;li&gt;Digital multimeter&lt;&#x2F;li&gt;
&lt;li&gt;Screwdriver set&lt;&#x2F;li&gt;
&lt;li&gt;3D printer (optional)&lt;&#x2F;li&gt;
&lt;li&gt;CNC access (recommended)&lt;&#x2F;li&gt;
&lt;li&gt;Skills:
&lt;ul&gt;
&lt;li&gt;Basic electronics&lt;&#x2F;li&gt;
&lt;li&gt;CAD design&lt;&#x2F;li&gt;
&lt;li&gt;Soldering&lt;&#x2F;li&gt;
&lt;li&gt;Linux&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;date-implementation-plan&quot;&gt;📅 Implementation Plan&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;phase-1-design&quot;&gt;Phase 1: Design&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Review original schematics&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Adapt design to local components&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Bill of Materials and vendors&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-2-acquisition&quot;&gt;Phase 2: Acquisition&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Buy SoC, display, and battery&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Order PCB fabrication&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Acquire tools&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-3-prototyping&quot;&gt;Phase 3: Prototyping&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
3D print prototype model&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Assemble electronics&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Run functionality tests&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-4-final-assembly&quot;&gt;Phase 4: Final Assembly&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
CNC manufacture chassis&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Assemble final version&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Install operating system&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;project-to-do&quot;&gt;Project To-Do&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
PCB adjustments&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
CNC chassis quotation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
OS preparation for RK3588&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
ESP32-S3 compatibility tests&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;blockquote class=&quot;markdown-alert-tip&quot;&gt;
	&lt;p&gt;This project will serve as a personal challenge to deepen my knowledge in hardware and electronic design and to build a 100% personalized laptop.&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;estimated-budget&quot;&gt;Estimated Budget&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Category&lt;&#x2F;th&gt;&lt;th&gt;Cost&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Main components&lt;&#x2F;td&gt;&lt;td&gt;$700–830 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Accessories &amp;amp; parts&lt;&#x2F;td&gt;&lt;td&gt;$45–85 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PCB&lt;&#x2F;td&gt;&lt;td&gt;$50–100 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Chassis&lt;&#x2F;td&gt;&lt;td&gt;$150–300 USD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TOTAL&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;$945–1,315 USD&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;additional-references&quot;&gt;Additional References&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;community.frame.work&#x2F;&quot;&gt;Framework Laptop Community&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.pcbway.com&#x2F;blog&#x2F;PCB_Design_Guidelines&#x2F;&quot;&gt;PCB Design Guidelines (PCBWay)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20240000000000*&#x2F;https:&#x2F;&#x2F;wiki.radxa.com&#x2F;Rock5&#x2F;dev&#x2F;rk3588&quot;&gt;RK3588 Documentation (Archived)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>TARS - Intelligent Robotic Assistant</title>
        <published>2024-05-23T00:00:00+00:00</published>
        <updated>2024-05-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/robotia/"/>
        <id>https://nezzontli.xyz/blog/robotia/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/robotia/">&lt;h2 id=&quot;project-summary&quot;&gt;Project Summary&lt;&#x2F;h2&gt;
&lt;p&gt;This project aims to create a functional replica of TARS, the assistant robot featured in the movie &lt;em&gt;Interstellar&lt;&#x2F;em&gt;. The system is powered by artificial intelligence, allowing it to hold natural conversations and emulate emotional responses. The design is based on the &lt;a href=&quot;https:&#x2F;&#x2F;www.hackster.io&#x2F;charlesdiaz&#x2F;how-to-build-your-own-replica-of-tars-from-interstellar-224833#cad&quot;&gt;Hackster.io project&lt;&#x2F;a&gt;, with significant improvements in mobility, interaction, and AI capabilities.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;project-versions&quot;&gt;Project Versions&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;tars-v1&quot;&gt;TARS V1&lt;&#x2F;h3&gt;
&lt;p&gt;The initial version was my first attempt at a self-propelled miniature replica. Although many implemented ideas were untested, it served as a fundamental base for further development.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;main-components&quot;&gt;Main Components&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Computer&lt;&#x2F;strong&gt;: Raspberry Pi 3B+ with Raspbian&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Servomotors&lt;&#x2F;strong&gt;: Four high-torque metal gear servos&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Controller&lt;&#x2F;strong&gt;: Adafruit PCA-9685 for servo management&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Power Supply&lt;&#x2F;strong&gt;: Two 8-cell NiMH battery packs (7.2 V) in parallel&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Display&lt;&#x2F;strong&gt;: 5“ HDMI monitor&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Control&lt;&#x2F;strong&gt;: Bluetooth controller 8BitDo Zero 2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;structure&quot;&gt;Structure&lt;&#x2F;h4&gt;
&lt;p&gt;The V1 chassis was built with a spine-like framework using aluminum extrusion “spines” as the structural base. 3D-printed polycarbonate pieces were mounted on this base to define the robot’s general shape and drivetrain.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;identified-limitations&quot;&gt;Identified Limitations&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;Heavy, jerky steps due to NiMH battery weight&lt;&#x2F;li&gt;
&lt;li&gt;Poor weight distribution (heavy components concentrated in torso)&lt;&#x2F;li&gt;
&lt;li&gt;Underdeveloped walking program&lt;&#x2F;li&gt;
&lt;li&gt;3D-printed components prone to breaking on impact&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;control-system&quot;&gt;Control System&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;software-architecture&quot;&gt;Software Architecture&lt;&#x2F;h3&gt;
&lt;p&gt;The control system is organized into three main layers:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Servo Controller&lt;&#x2F;strong&gt;: Manages basic servo movements&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Servo Abstractor&lt;&#x2F;strong&gt;: Combines basic movements to create complex functions&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;TARS Runner&lt;&#x2F;strong&gt;: Handles communication with the remote control and command execution&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h4 id=&quot;servo-abstractor&quot;&gt;Servo Abstractor&lt;&#x2F;h4&gt;
&lt;p&gt;This program takes basic servo movements and combines them to automate complex motion functions:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;python&quot; class=&quot;language-python z-code&quot;&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-statement z-import z-python&quot;&gt;&lt;span class=&quot;z-keyword z-control z-import z-python&quot;&gt;import&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;time&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; 
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-statement z-import z-python&quot;&gt;&lt;span class=&quot;z-keyword z-control z-import z-python&quot;&gt;import&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-python&quot;&gt;&lt;span class=&quot;z-keyword z-declaration z-function z-python&quot;&gt;def&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;stepForward&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-function z-begin z-python&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;height_neutral_to_up&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;torso_neutral_to_forwards&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;torso_bump&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;torso_return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-python&quot;&gt;&lt;span class=&quot;z-keyword z-declaration z-function z-python&quot;&gt;def&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;turnRight&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-function z-begin z-python&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;neutral_to_down&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;turn_right&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;down_to_neutral&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;neutral_from_right&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-python&quot;&gt;&lt;span class=&quot;z-keyword z-declaration z-function z-python&quot;&gt;def&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;turnLeft&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-function z-begin z-python&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; 
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;neutral_to_down&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;turn_left&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;down_to_neutral&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;neutral_from_left&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-python&quot;&gt;&lt;span class=&quot;z-keyword z-declaration z-function z-python&quot;&gt;def&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;pose&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-function z-begin z-python&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;neutral_to_down&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;torso_neutral_to_backwards&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;down_to_up&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-python&quot;&gt;&lt;span class=&quot;z-keyword z-declaration z-function z-python&quot;&gt;def&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;unpose&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-parameters z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-parameters z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-function z-begin z-python&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;    &lt;span class=&quot;z-meta z-function-call z-python&quot;&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;TARS_Servo_Controller3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-accessor z-dot z-python&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-qualified-name z-python&quot;&gt;&lt;span class=&quot;z-variable z-function z-python&quot;&gt;&lt;span class=&quot;z-meta z-generic-name z-python&quot;&gt;torso_return2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-python&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-begin z-python&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-arguments z-end z-python&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-python&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;planned-improvements-for-tars-v2&quot;&gt;Planned Improvements for TARS V2&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;hardware&quot;&gt;Hardware&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Replace NiMH batteries with lighter LiPo packs&lt;&#x2F;li&gt;
&lt;li&gt;Improve structural design for better weight distribution&lt;&#x2F;li&gt;
&lt;li&gt;Higher precision, lower-consumption servos&lt;&#x2F;li&gt;
&lt;li&gt;Higher-resolution OLED display with lower energy consumption&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;software&quot;&gt;Software&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Integrate conversational AI model based on transformers&lt;&#x2F;li&gt;
&lt;li&gt;Voice recognition system for spoken commands&lt;&#x2F;li&gt;
&lt;li&gt;Facial expressions on display for emotional communication&lt;&#x2F;li&gt;
&lt;li&gt;Enhanced walking algorithms for smoother movement&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;interaction&quot;&gt;Interaction&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Ability to answer complex questions&lt;&#x2F;li&gt;
&lt;li&gt;Adjustable personality parameters (humor, sarcasm, etc.)&lt;&#x2F;li&gt;
&lt;li&gt;Facial recognition to identify users&lt;&#x2F;li&gt;
&lt;li&gt;Integration with home automation systems&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;technical-challenges&quot;&gt;Technical Challenges&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;mobility&quot;&gt;Mobility&lt;&#x2F;h3&gt;
&lt;p&gt;The main challenge has been the lifting mechanism. In the initial version, the legs contacted the ground and got stuck, preventing walking. The solution was to enlarge rectangular channels in the square holes through which the main shaft rotates, allowing both the shaft and legs to move vertically relative to the torso module.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;balance-and-stability&quot;&gt;Balance and Stability&lt;&#x2F;h3&gt;
&lt;p&gt;Weight distribution and center of gravity are critical for proper function. Careful component placement is required to avoid falling during movement.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;power-consumption&quot;&gt;Power Consumption&lt;&#x2F;h3&gt;
&lt;p&gt;Battery life is limited due to high servo power usage. Optimizing energy consumption is a priority for future versions.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;structural-redesign&quot;&gt;Structural Redesign&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Optimize weight distribution&lt;&#x2F;li&gt;
&lt;li&gt;Reduce total system weight&lt;&#x2F;li&gt;
&lt;li&gt;Improve durability of critical components&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;mobility-enhancements&quot;&gt;Mobility Enhancements&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Develop more efficient walking algorithms&lt;&#x2F;li&gt;
&lt;li&gt;Implement obstacle detection&lt;&#x2F;li&gt;
&lt;li&gt;Add capability to navigate various terrains&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;advanced-ai-integration&quot;&gt;Advanced AI Integration&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Implement conversational model using LLM&lt;&#x2F;li&gt;
&lt;li&gt;Develop voice recognition system&lt;&#x2F;li&gt;
&lt;li&gt;Create visual interface for facial expressions&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;energy-optimization&quot;&gt;Energy Optimization&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Transition to LiPo batteries&lt;&#x2F;li&gt;
&lt;li&gt;Implement power-saving modes&lt;&#x2F;li&gt;
&lt;li&gt;Optimize electronic component consumption&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]&lt;br &#x2F;&gt;
“I don’t need a robot to tell me how important humans are.” – Cooper, &lt;em&gt;Interstellar&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;references-and-resources&quot;&gt;References and Resources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.hackster.io&#x2F;charlesdiaz&#x2F;how-to-build-your-own-replica-of-tars-from-interstellar-224833#cad&quot;&gt;Original Hackster.io Project&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Do Not Be Afraid - Short Film Concept</title>
        <published>2024-05-19T00:00:00+00:00</published>
        <updated>2024-05-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/cortometraje/"/>
        <id>https://nezzontli.xyz/blog/cortometraje/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/cortometraje/">&lt;h2 id=&quot;general-concept&quot;&gt;General Concept&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Genre:&lt;&#x2F;strong&gt; Psychological horror with theological elements and cosmic horror&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Central theme:&lt;&#x2F;strong&gt; This project explores the figure of &lt;strong&gt;biblical angels&lt;&#x2F;strong&gt; in their original representation according to ancient texts—especially the strangest and most terrifying ones such as the ophanim (wheels of fire covered in eyes). The short film contrasts these depictions with the contemporary popular interpretation (benevolent, peaceful beings) to create a profound visual and emotional impact on the audience.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Estimated duration:&lt;&#x2F;strong&gt; 12–15 minutes&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Target audience:&lt;&#x2F;strong&gt; Fans of psychological horror, cosmic horror, and those interested in religious mythology&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;inspiration-references&quot;&gt;Inspiration &amp;amp; References&lt;&#x2F;h2&gt;
&lt;p&gt;The project draws from diverse sources that combine theology and horror:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Biblical texts:&lt;&#x2F;strong&gt; Descriptions of angels in Isaiah, Ezekiel, and Revelation&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;YouTube video:&lt;&#x2F;strong&gt; &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=w5eLMNeeYwg&quot;&gt;Inconsistencies in the Content of the Bible&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Literature:&lt;&#x2F;strong&gt; Cosmic horror in the style of Lovecraft, applied to biblical mythology&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Film:&lt;&#x2F;strong&gt; Influences from directors such as Ari Aster, David Lynch, and Panos Cosmatos&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Philosophical concepts:&lt;&#x2F;strong&gt; Fragmented reality, divided consciousness, and crisis of faith&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;narrative-structure&quot;&gt;Narrative Structure&lt;&#x2F;h2&gt;
&lt;p&gt;The story unfolds through three possible narrative branches, each exploring psychological and cosmic horror as well as the unease of a fragmented reality from a unique perspective:&lt;&#x2F;p&gt;
&lt;h3 id=&quot;narrative-branches&quot;&gt;Narrative Branches&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;branch-1-the-revelation&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;cortometraje&#x2F;rama1&#x2F;&quot;&gt;Branch 1 - The Revelation&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;A narrative&#x2F;metacommentary short film in which the protagonist analyzes the content of a video and, through his reflections, triggers an unsettling experience. The philosophical analysis leads him to discover something far more terrifying that seeps into his own life, culminating in a direct encounter with an angelic entity in its most primal and terrifying form.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;branch-2-that-which-watches-from-within&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;cortometraje&#x2F;rama2&#x2F;&quot;&gt;Branch 2 - That Which Watches From Within&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;This approach centers on the protagonist’s fractured consciousness, revealing that what he perceives is not merely a narrative but an internal manifestation of uncontrollable terror. Here, the boundaries between the real and the mental blur, leading him into a spiral of paranoia and existential dread, as angelic manifestations embody fragmented aspects of his own psyche.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;branch-3-the-verse&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;cortometraje&#x2F;rama3&#x2F;&quot;&gt;Branch 3 - The Verse&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;The protagonist receives a cryptic, unsettling message on his device: a verse or phrase seemingly taken from a religious context. This phrase triggers a chain of events with apparent cosmic origins, distorting his perception of reality. Each attempt to decipher the message brings him closer to understanding something he was never meant to grasp—like a formula that alters the very fabric of his existence.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;technical-visual-resources&quot;&gt;Technical &amp;amp; Visual Resources&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;3d-angel-models&quot;&gt;3D Angel Models&lt;&#x2F;h3&gt;
&lt;p&gt;To achieve striking representations of biblical angels, the project will use:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Types of angels to depict:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Seraphim (six wings, covered in eyes)&lt;&#x2F;li&gt;
&lt;li&gt;Cherubim (four faces, multiple wings)&lt;&#x2F;li&gt;
&lt;li&gt;Ophanim (wheels within wheels, covered in eyes)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resources for 3D models:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Platforms: Sketchfab, CGTrader, TurboSquid&lt;&#x2F;li&gt;
&lt;li&gt;Conversion tools: Kaedim, Luma AI&lt;&#x2F;li&gt;
&lt;li&gt;Software: Blender with specific add-ons for texture import&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;special-effects-cgi&quot;&gt;Special Effects (CGI)&lt;&#x2F;h3&gt;
&lt;p&gt;Blender will be the main tool for:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scene composition:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Integrating 3D models into real environments&lt;&#x2F;li&gt;
&lt;li&gt;Reality distortion effects (glitches, time freezes)&lt;&#x2F;li&gt;
&lt;li&gt;Transitions between the real and the supernatural&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Specific techniques:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Integrating 3D models into video&lt;&#x2F;li&gt;
&lt;li&gt;Virtual cameras for impossible angles&lt;&#x2F;li&gt;
&lt;li&gt;Visual “reality pause” effects&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;development-plan&quot;&gt;Development Plan&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pre-production:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Extensive research on biblical angels and their descriptions&lt;&#x2F;li&gt;
&lt;li&gt;Development of technical script and storyboard&lt;&#x2F;li&gt;
&lt;li&gt;Selection or creation of required 3D models&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Production:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Filming scenes with the protagonist&lt;&#x2F;li&gt;
&lt;li&gt;Capturing environments and locations&lt;&#x2F;li&gt;
&lt;li&gt;Recording base material for effects&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Post-production:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Integration of visual effects in Blender&lt;&#x2F;li&gt;
&lt;li&gt;Scene composition with 3D models&lt;&#x2F;li&gt;
&lt;li&gt;Sound editing and atmospheric music&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Distribution:&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;ul&gt;
&lt;li&gt;Horror short film festivals&lt;&#x2F;li&gt;
&lt;li&gt;Platforms specializing in independent content&lt;&#x2F;li&gt;
&lt;li&gt;Cosmic horror and theological horror communities&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;blockquote&gt;
&lt;p&gt;“What is truly terrifying is not what we do not know, but that which we thought we knew—only to discover it is something entirely different.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Autonomous Drone</title>
        <published>2024-05-19T00:00:00+00:00</published>
        <updated>2024-05-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            B.E. Alejandro
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nezzontli.xyz/blog/drone/"/>
        <id>https://nezzontli.xyz/blog/drone/</id>
        
        <content type="html" xml:base="https://nezzontli.xyz/blog/drone/">&lt;h2 id=&quot;project-summary&quot;&gt;Project Summary&lt;&#x2F;h2&gt;
&lt;p&gt;The goal of this project is to develop a &lt;strong&gt;fixed-wing UAV&lt;&#x2F;strong&gt; based on the &lt;strong&gt;Eclipson Pathfinder&lt;&#x2F;strong&gt; model for surveillance and reconnaissance missions. The aim is to create a system that can operate &lt;strong&gt;fully autonomously&lt;&#x2F;strong&gt;, respond to commands to reach specific waypoints, and, once in position, allow manual control or continue in automatic mode while analyzing the environment.&lt;&#x2F;p&gt;
&lt;p&gt;The system is designed to be &lt;strong&gt;efficient and low-cost&lt;&#x2F;strong&gt;, using only the essential components to maximize flight autonomy and functionality.&lt;&#x2F;p&gt;
&lt;p&gt;#Drone #UAV #Autonomy #Surveillance #ArduPilot #AI #RaspberryPi&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;key-features&quot;&gt;Key Features&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;autonomous-navigation&quot;&gt;Autonomous Navigation&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Autonomous flight system with &lt;strong&gt;Cube Orange + Here3 GPS&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Ability to follow predefined routes with multiple waypoints&lt;&#x2F;li&gt;
&lt;li&gt;Obstacle avoidance and alternative path algorithms&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;operating-modes&quot;&gt;Operating Modes&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autonomous mode&lt;&#x2F;strong&gt;: Navigation to a designated point without human intervention&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Loiter mode&lt;&#x2F;strong&gt;: Holds position over the area of interest while analyzing the environment&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Manual control&lt;&#x2F;strong&gt;: Ability to take control using a &lt;strong&gt;FrSky Taranis X9D&lt;&#x2F;strong&gt; transmitter&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Automatic return&lt;&#x2F;strong&gt;: Returns to home on low battery or loss of signal&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;transmission-and-analysis&quot;&gt;Transmission and Analysis&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Real-time FPV video transmission via &lt;strong&gt;DJI FPV Air Unit&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Optional image analysis using &lt;strong&gt;Raspberry Pi 4 + 4G&#x2F;LTE module&lt;&#x2F;strong&gt; for people and vehicle detection&lt;&#x2F;li&gt;
&lt;li&gt;Bidirectional telemetry for monitoring and real-time adjustments&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;essential-components&quot;&gt;Essential Components&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-structure-and-propulsion&quot;&gt;1. Structure and Propulsion&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Specification&lt;&#x2F;th&gt;&lt;th&gt;Function&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Frame&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Eclipson Pathfinder&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;3D-printed or kit aerodynamic structure&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Motor&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;T-Motor AT2312 KV1400&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Main propulsion with high efficiency&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Propeller&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;APC 7x4&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Optimized for efficiency and thrust&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;ESC&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;T-Motor 30A&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Precise motor control&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Servos&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;2x SG90 or MG90S&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Flight surface control&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Battery&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;3S 2200mAh - 4S 3300mAh&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;30–45 min flight autonomy&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Power Module&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Holybro PM06&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Power distribution and monitoring&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;2-flight-controller-and-navigation&quot;&gt;2. Flight Controller and Navigation&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Specification&lt;&#x2F;th&gt;&lt;th&gt;Function&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Flight Controller&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Cube Orange + Carrier Board&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;System brain, flight processing&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;GPS&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Here3 GPS&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Precise positioning and navigation&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Airspeed Sensor&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Digital airspeed sensor&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Measures relative airspeed&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;3-communication-and-control&quot;&gt;3. Communication and Control&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Specification&lt;&#x2F;th&gt;&lt;th&gt;Function&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;RC System&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;FrSky Taranis X9D + R9 Slim+ SBUS Receiver&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Manual backup control&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Telemetry&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;SiK Radio 915MHz or RFD900x&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Bidirectional data communication&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;FPV System&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;DJI FPV Air Unit&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Real-time video transmission&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;4-vision-and-processing-optional&quot;&gt;4. Vision and Processing (Optional)&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Component&lt;&#x2F;th&gt;&lt;th&gt;Specification&lt;&#x2F;th&gt;&lt;th&gt;Function&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Computer&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;Raspberry Pi 4&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Image and data processing&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Software&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;YOLOv8 lightweight&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Real-time object detection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Connectivity&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;4G&#x2F;LTE USB module&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;Long-distance data transmission&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;detailed-operating-modes&quot;&gt;Detailed Operating Modes&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Autonomous Mode&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Drone takes off and follows a predefined route to the target point&lt;&#x2F;li&gt;
&lt;li&gt;Maintains constant altitude and airspeed&lt;&#x2F;li&gt;
&lt;li&gt;Adjusts parameters according to environmental conditions&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Loiter Mode&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Holds circular or stationary pattern over the target area&lt;&#x2F;li&gt;
&lt;li&gt;Adjustable radius and speed for surveillance needs&lt;&#x2F;li&gt;
&lt;li&gt;Optimizes energy consumption for extended on-station time&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Manual Control&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Operator can take over with the FrSky transmitter at any time&lt;&#x2F;li&gt;
&lt;li&gt;Smooth transition between autonomous and manual modes&lt;&#x2F;li&gt;
&lt;li&gt;Telemetry alerts for the operator&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FPV Mode&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Real-time video streaming with DJI FPV&lt;&#x2F;li&gt;
&lt;li&gt;Low latency for precise control&lt;&#x2F;li&gt;
&lt;li&gt;On-screen telemetry overlay&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatic Return&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Triggered by command, low battery, or signal loss&lt;&#x2F;li&gt;
&lt;li&gt;Calculates optimal return path considering wind and obstacles&lt;&#x2F;li&gt;
&lt;li&gt;Automatic landing at home position&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;implementation-plan&quot;&gt;Implementation Plan&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;phase-1-construction&quot;&gt;Phase 1: Construction&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Assemble UAV with minimum components&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Integrate propulsion and control systems&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Install flight controller and sensors&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-2-configuration&quot;&gt;Phase 2: Configuration&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Configure and calibrate Cube Orange with ArduPilot&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Program basic missions and flight parameters&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Tune PID for optimal stability&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-3-testing&quot;&gt;Phase 3: Testing&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Conduct controlled flight tests&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Validate autonomous navigation with waypoints&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Test safety and recovery systems&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;phase-4-optimization&quot;&gt;Phase 4: Optimization&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Integrate DJI FPV system&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Implement image analysis (optional)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;&#x2F;&gt;
Optimize power consumption and endurance&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE] 
This project must comply with local civil aviation regulations for UAVs. Check flight restrictions, registration requirements, and weight limits before operating.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;resources-and-references&quot;&gt;Resources and References&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;ardupilot.org&#x2F;plane&#x2F;&quot;&gt;ArduPilot Official Documentation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.eclipson-airplanes.com&#x2F;&quot;&gt;Eclipson Pathfinder Specifications&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20240000000000*&#x2F;https:&#x2F;&#x2F;docs.cubepilot.org&#x2F;user-guides&#x2F;autopilot&#x2F;the-cube-module-overview&quot;&gt;Cube Orange Setup Guide (Archived)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ultralytics&#x2F;ultralytics&quot;&gt;YOLOv8 on Raspberry Pi Tutorial&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For budget details and estimated costs, see &lt;a href=&quot;https:&#x2F;&#x2F;nezzontli.xyz&#x2F;blog&#x2F;drone&#x2F;presupuesto&#x2F;&quot;&gt;Budget&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
