1 00:00:00,000 --> 00:00:11,720 Buenas tardes, aquí tenemos otro vídeo en el que vamos a explicar cómo vamos a conectar un 2 00:00:11,720 --> 00:00:17,719 dispositivo IoT a una red wifi. Lo primero es saber qué redes hay cerca y qué calidad de señal tienen. 3 00:00:17,719 --> 00:00:23,000 Hoy vamos a hacer un ejercicio básico pero súper útil con una SP32 que ya la tenemos aquí en 4 00:00:23,000 --> 00:00:28,320 WorldWii y que vamos a escanear las redes wifi cercanas y ver en el monitor en serie su nombre, 5 00:00:28,320 --> 00:00:30,339 su potencia de señal y si están protegidas 6 00:00:30,339 --> 00:00:31,820 o no. Bien, 7 00:00:32,600 --> 00:00:34,020 Walkway es un simulador online 8 00:00:34,020 --> 00:00:36,280 donde podemos ejecutar el código 9 00:00:36,280 --> 00:00:38,179 de Arduino, como hemos hecho siempre, y 10 00:00:38,179 --> 00:00:39,259 donde vamos a ver 11 00:00:39,259 --> 00:00:41,560 cómo 12 00:00:41,560 --> 00:00:44,179 esta placa SP32 13 00:00:44,179 --> 00:00:45,159 al dar al play, 14 00:00:45,840 --> 00:00:48,079 le damos aquí, pues va a efectuar 15 00:00:48,079 --> 00:00:49,159 el escaneo 16 00:00:49,159 --> 00:00:52,079 de las posibles bufías que hay. 17 00:00:52,479 --> 00:00:54,259 Aquí aparece la de Walkway West, 18 00:00:54,420 --> 00:00:56,179 que sería la del propio programa de Walkway, 19 00:00:56,179 --> 00:00:57,780 que es la que se conecta. 20 00:00:57,780 --> 00:01:16,840 Sabéis que funciona en cloud y que nos está simulando que se conecta a una red. El objetivo del programa es poner esta SP32 en modo estación, como un móvil que busca wifi, ejecutar un escaneo y mostrar resultados por el puerto en serie, que sería este de aquí. 21 00:01:16,840 --> 00:01:20,120 bien, aquí tenemos todo el código 22 00:01:20,120 --> 00:01:22,620 vamos a ir poniendo poco a poco el código 23 00:01:22,620 --> 00:01:26,859 y para hacerlo el vídeo un poco más corto 24 00:01:26,859 --> 00:01:29,140 tan solo voy a ir explicándolo 25 00:01:29,140 --> 00:01:30,620 sin tener que escribirlo 26 00:01:30,620 --> 00:01:33,000 aquí en principio, veis que aquí aparece 27 00:01:33,000 --> 00:01:33,799 vamos a pararlo 28 00:01:33,799 --> 00:01:37,239 nos aparece la librería que hay que incluir 29 00:01:37,239 --> 00:01:38,859 esta es la librería de SP32 30 00:01:38,859 --> 00:01:40,200 para trabajar con RederWifi 31 00:01:40,200 --> 00:01:42,659 gracias a esto podemos usar funciones como 32 00:01:42,659 --> 00:01:45,000 un Wifi Mode que estaría aquí 33 00:01:45,000 --> 00:01:51,840 y Wi-Fi Scan Networks, que ahora veremos para qué sirve. 34 00:01:52,540 --> 00:01:55,879 Bien, el setup es sencillo. 35 00:01:56,019 --> 00:01:57,980 Lo único que aparece es la inicialización aquí. 36 00:01:58,140 --> 00:02:04,219 Tenemos aquí inicialización del monitor en serie con el begin. 37 00:02:04,840 --> 00:02:08,300 Esto lo vamos a hacer a 115.200 baudios. 38 00:02:08,759 --> 00:02:11,159 Esto es como decir que voy a enviar mensajes al ordenador 39 00:02:11,159 --> 00:02:14,360 para ver qué está haciendo la SP32. 40 00:02:15,000 --> 00:02:20,919 El mensaje de inicio, a través de println, como ya habíamos hecho alguna vez, es inicializando un Wi-Fi. 41 00:02:22,599 --> 00:02:25,479 Esto es un testdoc para confirmar que el programa arrancó correctamente. 42 00:02:25,800 --> 00:02:41,819 Después utilizamos el método mode de Wi-Fi, en el que, bueno, pues este es muy importante porque ponemos la SP32, la ponemos en modo Wi-Fi STA, 43 00:02:41,819 --> 00:03:02,919 ¿Qué significa Station? En modo estación, la SP32 se comporta como un cliente Wi-Fi, busca redes y puede conectarse a una de ellas. Si lo pusiéramos como Wi-Fi en vez de STA, lo pusiéramos como guión bajo AP, crearía su propia red como si fuera un router. 44 00:03:02,919 --> 00:03:12,020 bien a continuación una vez que hemos puesto el modo estación y además pues añadimos a una nueva 45 00:03:12,020 --> 00:03:19,599 línea al monitor en serie en el que nos diga pues que el setup ya está concluido que está hecho bien 46 00:03:19,599 --> 00:03:24,039 a continuación nada más que nos quedaría el loop que veis que aquí no es muy largo en el que pues 47 00:03:24,039 --> 00:03:29,560 empezaría de nuevo pues que con un println en el que mostraríamos un texto en el monitor en serie 48 00:03:29,560 --> 00:03:35,120 diciendo que se está escaneando y después utilizaríamos el método scanNetworks. Este 49 00:03:35,120 --> 00:03:48,520 scanNetworks lo que va a hacer este método, esta función ordena al SP32 buscar redes cercanas. 50 00:03:48,520 --> 00:03:57,099 Entonces devuelve un número que es n, que sería de tipo entero, que es el número de redes que 51 00:03:57,099 --> 00:04:04,120 ha encontrado entonces con este método scan network nos va a buscar en las posibles redes 52 00:04:04,120 --> 00:04:10,479 que hay y nos va a decir el número a través de este entero que sería n una vez que se ha realizado 53 00:04:10,479 --> 00:04:17,360 el escaneo lo ponemos en serie también a través de primer el n diciendo pues que el escaneo se ha 54 00:04:17,360 --> 00:04:23,240 realizado scan don y luego pues aparece aquí una un condicional que lo que nos va a determinar es 55 00:04:23,240 --> 00:04:28,139 si la red es igual a cero, o sea, si el número de redes que ha detectado 56 00:04:28,139 --> 00:04:31,699 es igual a cero, pues nos aparecerá que no ha encontrado redes 57 00:04:31,699 --> 00:04:36,040 a través de este println, un método que se utiliza para el monitor en serie 58 00:04:36,040 --> 00:04:40,079 y si fuera distinto de cero, que es el caso en el que 59 00:04:40,079 --> 00:04:43,779 si veis aquí detecta una red, lo que hace es que primero imprime 60 00:04:43,779 --> 00:04:47,980 el número de redes que ha encontrado, veis aquí aparece un 1, y luego nos pondría 61 00:04:47,980 --> 00:04:51,560 networks encontradas, que sería networks found 62 00:04:51,560 --> 00:05:05,920 Después, una vez que ha realizado esto, esto hay que decir que puede tardar un momento porque está escuchando al aire y recopilando redes. 63 00:05:06,379 --> 00:05:12,199 Si no hubiera redes significa que no se encontró ninguna red y entonces pone no networks found. 64 00:05:12,939 --> 00:05:15,439 Si hay redes, pues habría que imprimir la cantidad. 65 00:05:15,439 --> 00:05:21,439 entonces si hay redes tendría que recorrer el número de redes que hay entonces como n es el 66 00:05:21,439 --> 00:05:26,600 número de redes aquí en este caso es una entonces el for lo hará una sola vez pero si fueran varias 67 00:05:26,600 --> 00:05:32,040 pues tendremos que recorrerlas e imprimir todas las características de esas redes aquí lo que 68 00:05:32,040 --> 00:05:38,480 hará en este for irá desde igual a cero hasta y hasta n o sea hasta el número de redes que hay y 69 00:05:38,480 --> 00:05:45,259 la será recorriendo imprimiendo las características de cada una de ellas entonces aquí en este caso 70 00:05:45,259 --> 00:05:48,980 si n fuera 2, pues pasaría tanto por el valor de 1 71 00:05:48,980 --> 00:05:53,319 y empezaría, veis que ha puesto aquí un más más delante del i 72 00:05:53,319 --> 00:05:57,000 eso que quiere decir, que va a empezar en el 1 73 00:05:57,000 --> 00:06:01,519 primero le suma una unidad y utiliza ese número 74 00:06:01,519 --> 00:06:05,759 entonces empezaría en el 1, si fueran dos redes, como i tiene que ser menor que n 75 00:06:05,759 --> 00:06:09,639 utilizaría primero el 1 y luego el 2 76 00:06:09,639 --> 00:06:13,480 veis que con el 77 00:06:13,480 --> 00:06:38,560 El print imprime tanto, fijaos como i empieza en cero, pues imprimiría primero el 1 y luego imprimiría el 2, le separa dos puntos, luego utiliza el método ssid de dicha red, que lo pone aquí, ssid es el nombre visible de la red, como el nombre de tu wifi en casa. 78 00:06:38,560 --> 00:06:47,319 y después otro parámetro que utiliza con el método rss y también nos diría la potencia de señal que 79 00:06:47,319 --> 00:06:54,500 normalmente pues es de pues aquí nos aposan nos ha puesto si veis aquí lo vamos a ejecutar en 80 00:06:54,500 --> 00:07:01,939 la que aparece el ssid que sería walk with west y luego el rango de señal o sea la potencia de 81 00:07:01,939 --> 00:07:10,439 señal sería el que va entre paréntesis que le ha puesto aquí. Ya digo que el RSSI es la potencia 82 00:07:10,439 --> 00:07:18,459 de señal y que normalmente se puede ver como un número negativo en dBm. Si fuera menos 30 dBm, 83 00:07:18,459 --> 00:07:24,279 la señal sería muy fuerte, muy cerca del router. Si fuera menos 60, sería el decente. Menos 80, 84 00:07:24,279 --> 00:07:32,600 una señal floja con conexión peor. Aquí nos aparece, vamos a darle para que lo veamos, 85 00:07:33,480 --> 00:07:38,000 inicializando, el setup se ha concluido, escaneando y escanea la primera red que encuentra, 86 00:07:38,180 --> 00:07:42,740 que sería WebWebWest, en el que han metido un valor de cuánto. 87 00:07:42,740 --> 00:07:51,800 Si veis aquí, nos está poniendo primero el Wifi SSID, que sería el de la potencia, 88 00:07:51,800 --> 00:07:57,259 Primero el nombre de la Wi-Fi, que sea Wacui West, 89 00:07:57,639 --> 00:08:03,740 y luego el RSSI, que sería el valor de VMs de la red. 90 00:08:04,060 --> 00:08:06,300 Está poniendo 20, pues tenemos que es un valor alto. 91 00:08:07,759 --> 00:08:09,060 ¿Qué tenemos más? 92 00:08:10,040 --> 00:08:14,399 Además, queremos imprimir el encryption type 93 00:08:14,399 --> 00:08:18,120 y aquí lo que hace es que nos va a decir 94 00:08:18,120 --> 00:08:19,779 si igualando 95 00:08:19,779 --> 00:08:21,920 a Wi-Fi Out Open 96 00:08:21,920 --> 00:08:23,439 lo que nos está diciendo aquí es 97 00:08:23,439 --> 00:08:26,120 el tipo de cifrado. Estamos cogiendo 98 00:08:26,120 --> 00:08:27,680 con Wi-Fi 99 00:08:27,680 --> 00:08:30,420 con el objeto 100 00:08:30,420 --> 00:08:32,240 Wi-Fi, pues estamos llamando 101 00:08:32,240 --> 00:08:33,399 al método de encryption type 102 00:08:33,399 --> 00:08:36,259 introduciendo el número de red 103 00:08:36,259 --> 00:08:38,100 con el que se está tratando 104 00:08:38,100 --> 00:08:39,919 en ese momento y está esta parte 105 00:08:39,919 --> 00:08:42,320 que tenemos, que lo que se hace es que 106 00:08:42,320 --> 00:08:43,820 nos va a decir si 107 00:08:43,820 --> 00:08:45,080 la red está 108 00:08:45,080 --> 00:08:47,860 protegida 109 00:08:47,860 --> 00:08:56,919 o no. Entonces, pone un asterisco si la red está protegida. Esto es un condicional en el que nos 110 00:08:56,919 --> 00:09:04,179 está diciendo que si la inyectación de la red que está tratando en este for es igual a Wi-Fi 111 00:09:04,179 --> 00:09:10,820 out open, o sea, si está abierta, esto quiere decir que si está abierta, o sea, si no tiene contraseña, 112 00:09:11,320 --> 00:09:16,940 pues que no le ponga nada. Pero si tiene contraseña, que le ponga un asterisco. Aquí, si veis, nos está 113 00:09:16,940 --> 00:09:21,820 poniendo continuamente que no nos pone el asterisco, sino que nos pone un espacio en blanco, no aparece 114 00:09:21,820 --> 00:09:29,980 nada. Eso significa que la propia red está abierta y que no tiene contaseña. Si apareciera un asterisco 115 00:09:29,980 --> 00:09:36,700 entonces indicaría que tiene una seguridad. Por último, aquí hemos introducido un delay de 10 116 00:09:36,700 --> 00:09:45,000 milisegundos para que vuelva a realizar entre el paso de una red y la siguiente, espere 10 117 00:09:45,000 --> 00:09:50,700 milisegundos. Como solo hay una, que es esta, entonces terminaría el FOR y a continuación 118 00:09:50,700 --> 00:09:59,159 me imprimiría una línea en blanco, que sería esta de aquí, y efectuaría un retraso de 119 00:09:59,159 --> 00:10:03,440 5.000 milisegundos, que serían 5 segundos, y después de 5 segundos volvería otra vez 120 00:10:03,440 --> 00:10:09,480 a hacer el loop en el que volvería a registrar o a escanear el número de redes que hay. 121 00:10:09,480 --> 00:10:30,120 Y eso sería básicamente lo que es el programa. Lo repasamos de nuevo. Únicamente hemos incluido la librería para poder manejar Wi-Fi. Hemos hecho en el setup inicializar el monitor en serie a 115.200 baudios y hemos puesto que se inicializaría la Wi-Fi. 122 00:10:30,120 --> 00:10:58,960 Hemos utilizado el método mode de Wi-Fi para decir que el propio escaneo significa que va a ser en modo estación, o sea que se comporta como un cliente Wi-Fi normal buscando redes y luego hemos imprimido que se ha hecho el setup. 123 00:10:58,960 --> 00:11:03,320 A continuación pasamos al loop y este es el que se va a repetir infinitas veces 124 00:11:03,320 --> 00:11:06,500 Lo único que hace es que nos registra a través de ScanNetworks 125 00:11:06,500 --> 00:11:11,960 Nos va a determinar el número de WIFIs que van a aparecer 126 00:11:11,960 --> 00:11:14,700 Nos lo meterá en la variable n 127 00:11:14,700 --> 00:11:17,559 Y a continuación si n es igual a cero dirá que no hay redes 128 00:11:17,559 --> 00:11:22,419 Y si no, entonces lo que hará es que mostrará a través de este for 129 00:11:22,419 --> 00:11:25,200 Cada una de las redes cada 10 milisegundos 130 00:11:25,200 --> 00:11:39,679 El primero, si hubiera dos redes, imprimiría las características de la primera red, esperaría 10.000 segundos y a continuación imprimiría las características de la segunda red. Terminaría y luego me esperaría 5 segundos y volvería otra vez a realizar la misma operación. 131 00:11:39,679 --> 00:12:05,399 Las características que va a sacar de la red Wi-Fi serían tanto el SSID, que ya hemos dicho lo que era, que era el nombre de la red, el SSI, a través de su método RSSI, y necesita un parámetro de ambos métodos, que sería el número de la red con la que estamos contando en ese mismo momento. 132 00:12:05,399 --> 00:12:22,720 El RSSI nos da la potencia de la misma, aquí nos está indicando un número, 33, 3, ya dicho, normalmente esto se mide en dBm y tenemos que decir que para menos 30 o una señal superior, la señal es fuerte. 133 00:12:23,220 --> 00:12:28,039 Cuando baja un valor más negativo, a menos 60 o menos 80, pues tenemos que decir que es bastante floja. 134 00:12:28,039 --> 00:12:55,419 Y por último nos compara a través de este operador ternario, nos va a comparar si está encriptado o no a través de esta constante que es Wi-Fi out open. Si al aplicar el método encryption type a esa red es igual a Wi-Fi out open quiere decir que la red está sin contraseña, está abierta y por tanto imprimirá un espacio en blanco que es lo que aparece en cada una de las veces que sale. 135 00:12:55,419 --> 00:13:08,179 Si, por el contrario, tenemos que no se cumple, o sea, que es que la red es segura, tiene contraseña, generará un asterisco. No genera un asterisco porque aceptaremos que continuamente Walkway West tenemos que estar abierta. 136 00:13:08,179 --> 00:13:29,440 Y poco más en cuanto a lo que sería este programa, que veis que es muy sencillo y que lo único que nos va a decir es que es un escaneo previo para ver si la red Wi-Fi funciona a través de la placa SP32. 137 00:13:29,440 --> 00:13:40,500 Y una vez hecho este escaneo y ver que tenemos una red en condiciones, podemos realizar cualquier operación como un envío de datos a un servidor, etc. 138 00:13:40,639 --> 00:13:42,399 Que veremos en ejemplos posteriores.