Método para configurar una CPU incorporada para una red WiFi sin una interfaz de usuario física

5

Digamos que tienes un dispositivo que construiste que usa algo como un Arduino con un escudo de Wifi. La intención de este dispositivo es conectarse a su red wifi, y luego conectarse a Internet y hacer algo (use su imaginación).

Si el dispositivo era tan simple que no tenía botones ni una pantalla, ¿cómo se configuraría uno inicialmente para conectarse a una red WiFi en particular?

(Obviamente, la entrada directa de los parámetros de la red wifi en el código fuente de tu proyecto está fuera de discusión).

Últimamente he estado pensando en esto y no estaba seguro de cuál era el mejor enfoque.

Ayer sucedió algo que me hizo pensar. Compré un termostato Honeywell habilitado para WiFi para nuestra casa. Se conecta a su red WiFi para que pueda controlar el termostato usando su teléfono desde cualquier lugar del mundo.

El método utilizado para conectar el termostato al wifi fue interesante. Cuando conectaste el termostato por primera vez, crearía su propia red / servidor wifi llamado "Thermostat_EKDD94" o algo así. Utiliza su teléfono o computadora portátil para conectarse a esta red. Luego visite 192.168.1.1 en el navegador, en el que verá una lista de redes wifi disponibles para conectarse. Usted elige la red, ingresa la contraseña y luego el termostato lo desconecta y se conecta a la red que eligió. En este punto, la propia red / servidor wifi del termostato desaparece para siempre (a menos que haga un restablecimiento completo del termostato más adelante).

Y así, su termostato está conectado a una red wifi de su elección, todo sin tener que tocar el dispositivo. Fue un acercamiento muy interesante. ¿Es esto algo que es posible con un Arduino? ¿Puede actuar como un servidor y luego un cliente? Tal vez al mismo tiempo?

¿Alguna idea sobre este enfoque o si hay un mejor enfoque?

    
pregunta Jake Wilson

3 respuestas

4

Cualquier módulo WiFi que admita el modo ad-hoc debería poder hacer esto. He usado el WiFly module antes, y sé que tiene esta capacidad. Tenga en cuenta que el módulo solo puede estar en modo de cliente ad-hoc o en un momento dado; no ambos a la vez.

Puede usar ese módulo directamente con su Arduino (suponiendo que sea uno o una huella compatible) a través de este escudo . También hay un escudo independiente que puede ahorrar más espacio. Por supuesto, hay otros módulos disponibles que están a la altura de la tarea, pero estos son los que vienen a la mente.

Aquí es cómo configurar esto específicamente. En respuesta a su comentario, he modificado el enfoque para solucionar el problema de lo que sucede si falla la asociación WiFi.

  1. Arduino se inicia y establece WiFily en modo ad-hoc.
  2. Se conecta a la red de WiFly y navega al "servidor web" de WiFly.
  3. Usted ve la lista de redes disponibles, ingresa los parámetros de conexión y hace clic en "Enviar". * vea la nota a continuación
  4. La página de respuesta de WiFly contiene un fragmento de código JavaScript que busca una página especial con Ajax después de un intervalo de tiempo fijo (tal vez 2 o 3 minutos). Tal vez llame a la dirección http://[WiFly address]:80/status .
  5. Mientras el temporizador mencionado está en marcha, el WiFly ha desactivado el modo ad hoc y ha activado el modo de cliente (su computadora portátil se habrá desconectado del WiFly, por supuesto). El WiFly intenta conectarse a la red que especificaste. Si tiene éxito, el trabajo de WiFly está hecho. Si la conexión falla, vuelve a habilitar el modo ad-hoc al que su computadora portátil debería volver a conectarse automáticamente.
  6. El temporizador que configuramos en # 4 llega a 0. La página intenta obtener de forma asíncrona esa página especial que mencionamos. Si tenemos éxito, sabemos que el WiFly no se pudo conectar a nuestra red y, por lo tanto, ha vuelto a habilitar el modo ad hoc. Si la solicitud falla, sabemos que WiFi se conectó correctamente a la red.
  7. En el primer caso, con JavaScript puede mostrar el mensaje apropiado al usuario, y tal vez incluso navegar a la "página de inicio" de WiFly para comenzar de nuevo el proceso.

Consideraciones especiales:

  • Es posible que deba jugar un poco con el tiempo de espera para el paso # 4.
  • Su computadora portátil / dispositivo deberá configurarse para conectarse automáticamente a la red ad-hoc de WiFly e incluso preferirá esa red a otras.

* Nota al margen interesante:

Es posible que se esté preguntando cómo el módulo puede buscar redes mientras está en modo ad-hoc. Según el manual:

  

El módulo WiFi es compatible con los modos de red ad hoc e infraestructura.   Sin embargo, no soporta ambos modos simultáneamente. Exploración   Para redes inalámbricas es una función del modo infraestructura. Que hacer   esto, el módulo WiFly tiene que deshabilitar el modo adhoc y escanear.

     

Con el   lanzamiento de la versión de firmware 2.22 y posterior, es posible escanear   desde el modo adhoc. Al emitir el comando de escaneo se deshabilita temporalmente adhoc   Mientras el módulo está escaneando. El adhoc se restaura automáticamente   cuando se completa el escaneo Si está conectado al módulo a través de   telnet, el resultado del comando de escaneo se envía a través de telnet y luego   adhoc se restaura.

Si sus requisitos permitieron una interfaz de usuario separada (tal vez una aplicación en su computadora portátil), podría haber usado esta función para su ventaja y evitar la creación de un servidor HTTP por completo. La aplicación podría haberse conectado a la red ad-hoc de WiFly, abrir una sesión de Telnet y luego automatizar la sesión de Telnet para configurar el módulo.

Enfoque alternativo

Si el costo no es un problema, puede usar dos módulos de conexión inalámbrica: uno para proporcionar una red ad-hoc constante y el otro para actuar como cliente WiFi.

    
respondido por el Chris Laplante
1

¿Qué hay de que el dispositivo se comporte como un dispositivo de almacenamiento masivo USB? Aquí está el caso de uso:

  1. El usuario conecta el dispositivo a la PC.
  2. El usuario navega al volumen de almacenamiento expuesto por el dispositivo.
  3. El usuario edita los parámetros en un archivo de texto y los guarda.
  4. El usuario reinicia el dispositivo.

En lugar de 3, el sistema de archivos del dispositivo podría tener un archivo setup.html en la raíz que el usuario inicia en el navegador. Luego, el usuario interactúa con una IU de JavaScript para crear la configuración. (¿Cómo podría preguntarse? Pero, evidentemente, HTML5 permite que JavaScript en el navegador interactúe con el local sistema de archivos ).

    
respondido por el Kaz
0

Es una forma muy elegante de resolver esta tarea, siempre que su hardware wifi admita el modo de punto de acceso.

Otra forma de hacerlo podría ser a través de la interfaz serial: puede usar la biblioteca de línea de comandos de arduino enlace para implementar algunos comandos en serie que permiten la entrada de SSID y contraseña. El usuario conecta el dispositivo a un puerto USB, abre un software de terminal en serie y configura el dispositivo a través de la línea de comandos utilizando los comandos que implementó. Puede guardar el SSID y la contraseña en eeprom de arduino si es necesario.

No es la forma más fácil de usar y requiere que deje el puerto USB accesible, pero supongo que es la más fácil de implementar.

    
respondido por el miceuz

Lea otras preguntas en las etiquetas