El mundo a través de los ojos de un enrutador WiFi
La historia de los intentos de ver el mundo bajo una luz completamente diferente y cómo esto finalmente condujo a la creación de un dispositivo que le permite "ver" WiFi. El proceso utilizará el popular módulo ESP8266. Desafortunadamente, Arduino tampoco lo hará sin Arduino.Hace N años, un grupo de jóvenes investigadores de Alemania describió el concepto de una cámara termográfica basada solo en un sensor. La esencia del dispositivo era la siguiente: usando un diseño de dos servos, el sensor IR se dirigió secuencialmente vertical y horizontalmente al área deseada, escaneando gradualmente la imagen. Una solución tan interesante hizo posible reducir drásticamente el precio del dispositivo y obtener imágenes divertidas de la distribución de temperatura, como estas:
el sistema de escaneo mecánico de la imagen, y esto es lo que es el diseño de los servos, resultó ser algo extremadamente interesante. Inmediatamente después de la construcción de un dispositivo de este tipo, surge la pregunta: ¿por qué no reemplazar el sensor IR con cualquier otra cosa que permita utilizar el mismo principio para visualizar, por ejemplo, ondas de radio?El ojo humano, aunque es una herramienta bastante compleja pero muy limitada. El rango de luz que vemos es una parte muy pequeña del espectro de radiación electromagnética.
Califique la magnitud de la tragedia: la mayor parte de la información sobre el mundo que nos rodea simplemente se nos oculta. Por supuesto, sería genial expandir el marco natural y obtener la capacidad de ver más allá de los límites descritos por la naturaleza. Por lo tanto, los siguientes experimentos se llevaron a cabo utilizando un sistema de barrido mecánico.Para probar la tecnología, hice una cámara simple de "un solo píxel" que funciona en el rango ya visible que nos es familiar. Usé una batería solar de un automóvil de juguete chino como sensor:
Por supuesto, el área de una fotocélula es muy grande, lo que significa que de alguna manera es necesario proporcionar un campo de visión estrecho, por lo que le agregamos una lente de la linterna. Nos ponemos servos y nos conectamos a Arduino.
La batería solar gira al área deseada de la imagen futura, después de lo cual el controlador lee una señal que es proporcional a la cantidad de luz incidente en la batería. Por supuesto, dicha cámara finalmente producirá una imagen en blanco y negro.Para procesar los resultados del análisis, utilizando QT, se implementó un programa con una interfaz simple. (Las lecciones sobre cómo implementar la comunicación entre Arduino y Qt se pueden obtener fácilmente en YouTube) El programa consiste en un par de botones para el control manual de servos y el campo QGraphicsScene, donde se dibujan cuadrados-píxeles, cuyo color depende de la magnitud de la señal en un punto en particular. El uso es simple: primero, las unidades se guían manualmente al punto superior izquierdo de la imagen futura, después de lo cual se realiza un escaneo automático del área durante la cual se construye la imagen. Esto es lo que salió de todo esto:
¿Qué se representa en esta visualización? Por supuesto, este es el tema más obvio para disparar si su cámara es una batería solar: este es el sol.Sin embargo, la señal de la batería es demasiado débil para recibir imágenes adecuadas en la iluminación de la habitación, ya que fue reemplazada por una fotorresistencia, y la lente de la linterna dio paso a la mitad de los prismáticos rotos del teatro.
Esta creación resultó ser más exitosa, y ya era posible tomar fotografías más o menos reconocibles:Chandelier
Machine en la carretera
Vista desde la ventana
E incluso nubes en el cielo
Una vez satisfecho con este resultado, decidí que era hora de finalmente hacer un generador de imágenes de radio completo, reemplazando el fotorresistor con una antena direccional. El rango más adecuado para esto es el microondas, ya que una antena direccional no ocupa mucho espacio, y en nuestra vida actual hay muchos dispositivos que emiten cuidadosamente en este rango.Al principio decidí usar una antena de bocina, que se encuentra en los detectores de radar del automóvil (generalmente funcionan en el rango de 10.525 GHz o 24.15 GHz). Los intentos de aislar una señal analógica proporcional a la magnitud de la radiación detectada del circuito de dicho detector no tuvieron éxito, posiblemente debido a una falta de conocimiento, y posiblemente porque no existe, ya que funciona según el principio de comparación. (Hola a los hermanos chinos que reunieron este milagro). Por supuesto, quería sacar la antena y construir algo propio, pero no comencé a romper un buen dispositivo para esto.Lo segundo que me vino a la mente fue construir un detector de campo de acuerdo con uno de los esquemas que se encuentran en abundancia en los portales de radioaficionados y conectarle una antena direccional casera, por ejemplo, la muy popular y relativamente simple de producir biquadrat de Kharchenko. Pero resultó que el elemento más importante: el diodo detector de microondas es muy difícil de encontrar, fácil de perder y, en general, cuesta mucho, por lo que tuve que buscar la parte correcta.Después de un tiempo, logré obtener un diodo detector de germanio de la época soviética y ensamblar el siguiente circuito:
El dispositivo resultante funcionó con confianza, pero a una distancia muy corta, en algún lugar a 5-10 cm de un teléfono móvil que actúa como fuente de radiación. Esto, por supuesto, no fue suficiente para la tarea.Después de todas estas pruebas, finalmente obtuve el módulo ESP8266, que puede mostrar RSSI (Indicador del nivel de señal WiFi recibida) de los puntos de acceso encontrados. Para hacer esto, use el comando AT + CWLAP en el firmware estándar del módulo. Decidí aplicar esta función, junto con la antena biquadrat de WiFi hecha en casa mencionada anteriormente. Así, apareció este milagro de la tecnología:
El ESP8266 en sí está montado en la parte posterior de la antena y está bien protegido con láminas de cobre. Los dígitos luminosos muestran el voltaje en la salida del convertidor DC-DC pulsado, que reduce los 12V de la fuente de alimentación a 3.3V, lo cual es necesario para que el módulo funcione (es muy voraz, por lo que alimentarlo desde el Arduino está plagado de una operación inestable).Arduino todavía maneja servoaccionamientos y también envía comandos AT al ESP8266 usando la biblioteca SoftwareSerial. Uno de los puntos difíciles: en lugar de las bibliotecas estándar SoftwareSerial y Servo, tuve que cambiar a sus contrapartes, ya que las originales entran en conflicto cuando se usan simultáneamente.Por supuesto, puede escuchar reproches de que el Arduino es un elemento adicional aquí, ya que el ESP8266 en sí mismo puede hacer frente a dicha funcionalidad. Pero sucedió históricamente que durante la creación del dispositivo, inicialmente me concentré en Arduino como el enlace central del dispositivo final, y el ESP8266 desempeña el papel de un tipo de sensor.El programa QT, escrito para la "cámara solar", ha experimentado un refinamiento significativo.versión final del programa Durante el escaneo del área, para cada punto de acceso encontrado, se crea una matriz de valores de señal, que le permite ver cómo los diferentes enrutadores WiFi "brillan" al final del escaneo, e incluso tratar de estimar su ubicación aproximada. Cuanto más fuerte sea la señal en un punto particular, más brillante será el color azul del píxel correspondiente.Y finalmente, colocando el dispositivo en diferentes partes de mi hogar, obtuve las siguientes imágenes. Afortunadamente, hay muchas redes wifi en mi casa, y con una antena direccional similar puedes capturar incluso las más remotas.
Sofá y alfombra. Si presta atención, se obtiene una imagen de muy alta calidad en comparación con las demás en el punto "SkyNet": este es el enrutador de mi casa. Está más cerca del lugar de filmación, que aparentemente juega un papel importante en el proceso.
Araña de nuevo. Las señales de algunas redes no se reflejan desde el techo o desde el candelabro. Lo más probable es que, basándose en estos signos, pueda intentar determinar la ubicación física del transmisor.
Una bañera llena de agua. Como todos saben, las ondas de radio bajo el agua se transmiten mal.Vale la pena señalar que las fotos en el rango visible solo corresponden aproximadamente al área escaneada. También es necesario tener en cuenta que durante la operación la antena de alguna manera describe el hemisferio, y esto también afecta el resultado. La resolución, en principio, está limitada solo por el curso de la antena y el tiempo que se tarda en rodear toda el área. Además, obtener datos para cada píxel requiere de 4 a 5 segundos. Me gustaría obtener imágenes menos borrosas, pero esto requiere una antena con un patrón de radiación más estrecho.Códigos fuente, incluido un boceto para ArduinoSource: https://habr.com/ru/post/es392555/
All Articles