Wifi
El wifi es un mecanismo de conexión de dispositivos electrónicos de forma inalámbrica. Los dispositivos habilitados con wifi como Arduino, pueden conectarse a internet a través de un punto de acceso de red inalámbrica.
![](https://upload.wikimedia.org/wikipedia/commons/a/ae/WiFi_Logo.svg)
Wi-Fi es una marca de la Alianza Wi-Fi, la organización comercial que adopta, prueba y certifica que los equipos cumplen con los estándares 802.11 relacionados a redes inalámbricas de área local.
- Los estándares IEEE 802.11b, IEEE 802.11g e IEEE 802.11n disfrutan de una aceptación internacional debido a que la banda de 2,4 GHz está disponible casi universalmente, con una velocidad de hasta 11 Mbit/s, 54 Mbit/s y 300 Mbit/s, respectivamente.
- En la actualidad ya se maneja también el estándar IEEE 802.11ac, conocido como WIFI 5, que opera en la banda de 5 GHz y que disfruta de una operatividad con canales relativamente limpios. La banda de 5 GHz ha sido recientemente habilitada y, además, no existen otras tecnologías (Bluetooth, microondas, ZigBee) que la estén utilizando, por lo tanto existen muy pocas interferencias. Su alcance es algo menor que el de los estándares que trabajan a 2,4 GHz (aproximadamente un 10 %), debido a que la frecuencia es mayor (a mayor frecuencia, menor alcance).
Existen otras tecnologías inalámbricas como Bluetooth que también funcionan a una frecuencia de 2,4 GHz, por lo que puede presentar interferencias con la tecnología wifi. Debido a esto, en la versión 1.2 del estándar Bluetooth actualizó su especificación para que no existieran interferencias con la utilización simultánea de ambas tecnologías, además se necesita tener 40 000 kbit/s.
Existen varias alternativas para garantizar la seguridad de estas redes. Las más comunes son la utilización de protocolos de cifrado de datos para los estándares wifi como el WEP, el WPA, o el WPA2 que se encargan de codificar la información transmitida para proteger su confidencialidad, proporcionados por los propios dispositivos inalámbricos. La mayoría de las formas son las siguientes:
- WEP, cifra los datos en su red de forma que sólo el destinatario deseado pueda acceder a ellos. Los cifrados de 64 y 128 bits son dos niveles de seguridad WEP. WEP codifica los datos mediante una “clave” de cifrado antes de enviarlo al aire. Este tipo de cifrado no está recomendado debido a las grandes vulnerabilidades que presenta ya que cualquier cracker puede conseguir sacar la clave, incluso aunque esté bien configurado y la clave utilizada sea compleja.
- WPA: presenta mejoras como generación dinámica de la clave de acceso. Las claves se insertan como dígitos alfanuméricos.
- WPA2 (estándar 802.11i): que es una mejora relativa a WPA. En principio es el protocolo de seguridad más seguro para Wi-Fi en este momento. Sin embargo requieren hardware y software compatibles, ya que los antiguos no lo son. Utiliza el algoritmo de cifrado AES (Advanced Encryption Standard).
- IPSEC (túneles IP) en el caso de las VPN y el conjunto de estándares IEEE 802.1X, que permite la autenticación y autorización de usuarios.
- Filtrado de MAC, de manera que solo se permite acceso a la red a aquellos dispositivos autorizados. Es lo más recomendable si solo se va a usar con los mismos equipos, y si son pocos.
- Ocultación del punto de acceso: se puede ocultar el punto de acceso (router) de manera que sea invisible a otros usuarios.
Dispositivos de distribución o de red en wifi son:
- Los puntos de acceso son dispositivos que generan un set de servicio, que podría definirse como una red wifi a la que se pueden conectar otros dispositivos. Los puntos de acceso permiten, en resumen, conectar dispositivos de forma inalámbrica a una red existente. Pueden agregarse más puntos de acceso a una red para generar redes de cobertura más amplia, o conectar antenas más grandes que amplifiquen la señal.
- Los repetidores inalámbricos son equipos que se utilizan para extender la cobertura de una red inalámbrica, éstos se conectan a una red existente que tiene señal más débil y crean una señal limpia a la que se pueden conectar los equipos dentro de su alcance. Algunos de ellos funcionan también como punto de acceso.
- Los enrutadores inalámbricos son dispositivos compuestos, especialmente diseñados para redes pequeñas (hogar o pequeña oficina). Estos dispositivos incluyen, un enrutador (encargado de interconectar redes, por ejemplo, nuestra red del hogar con Internet), un punto de acceso (explicado más arriba) y generalmente un conmutador que permite conectar algunos equipos vía cable (Ethernet y USB). Su tarea es tomar la conexión a Internet, y brindar a través de ella acceso a todos los equipos que conectemos, sea por cable o en forma inalámbrica.
Los estándares 802.11b y 802.11g utilizan la banda de 2,4 GHz. En esta banda se definieron 11 canales utilizables por equipos wifi, que pueden configurarse de acuerdo a necesidades particulares. Sin embargo, los 11 canales no son completamente independientes (un canal se superpone y produce interferencias hasta un canal a 4 canales de distancia). El ancho de banda de la señal (22 MHz) es superior a la separación entre canales consecutivos (5 MHz), por eso se hace necesaria una separación de al menos 5 canales con el fin de evitar interferencias entre celdas adyacentes, ya que al utilizar canales con una separación de 5 canales entre ellos (y a la vez cada uno de estos con una separación de 5 MHz de su canal vecino) entonces se logra una separación final de 25 MHz, lo cual es mayor al ancho de banda que utiliza cada canal del estándar 802.11, el cual es de 22 MHz. Tradicionalmente se utilizan los canales 1, 6 y 11, aunque se ha documentado que el uso de los canales 1, 5, 9 y 13 (en dominios europeos) no es perjudicial para el rendimiento de la red.
Esta asignación de canales usualmente se hace sólo en el Punto de acceso, pues los “clientes” automáticamente detectan el canal, salvo en los casos en que se forma una red “Ad-Hoc” o punto a punto cuando no existe punto de acceso.
![](https://aprendiendoarduino.wordpress.com/wp-content/uploads/2019/03/wifi_channles.jpg?w=625)
Canales en 802.11 (wifi) frente a 802.15.4 (zigbee):
![](https://i2.wp.com/www.mrrace.com/DJI/WifiSpectrumComparisonFounten-1024x570.jpg)
Y dentro del espectro electromagnético:
![](https://aprendiendoarduino.wordpress.com/wp-content/uploads/2019/03/wireless-radio-spectrum.png?w=625)
Además, el 802.11n puede utilizar la banda de 5 GHz, que es casi siempre menos concurrida y con menos interferencia que la banda de 2,4 GHz. Pero también funciona en 2,4 GHz, y los clientes 802.11n pueden asociarse con facilidad allí. La Tabla 1 muestra las frecuencias disponibles para los diferentes tipos de clientes inalámbricos.
![](https://meraki.cisco.com/blog/wp-content/uploads/2011/04/wifi-frequency-bands.png)
IEEE 802.11ac (también conocido como WiFi 5G o WiFi Gigabit) es una mejora a la norma IEEE 802.11n, se ha desarrollado entre el año 2011 y el 2013, y finalmente aprobada en enero de 2014.
El estándar consiste en mejorar las tasas de transferencia hasta 433 Mbit/s por flujo de datos, consiguiendo teóricamente tasas de 1.3 Gbit/s empleando 3 antenas. Opera dentro de la banda de 5 GHz, amplía el ancho de banda hasta 160 MHz (40 MHz en las redes 802.11n), utiliza hasta 8 flujos MIMO e incluye modulación de alta densidad (256 QAM).
A un Arduino es posible añadirle conectividad Wifi de forma muy sencilla y ampliar las posibilidades de este microcontrolador con comunicación inalámbrica Wifi.
Hay varias formas de añadir hardware Wifi a Arduino, ya sea con un shield, una breakout board específica, con microcontroladores que tenga wifi integrado o con placas Arduinos que tenga chip wifi en la misma placa. Veamos varios casos de estos tipos, como conectarlos y usarlos, así como las librerías a usar en cada caso.
Buena parte de los visto en Ethernet con Arduino, es válido para wifi, puesto que el protocolo tcp/ip usado es el mismo y solo cambia el medio de comunicación. Trasladar un proyecto de ethernet a wifi es sencillo, solo cambiando la librería para usar el hardware y adaptar los comando en función de los métodos que tengan las librerías.
Wifi 5G
La banda de frecuencia de 5GHz es muy diferente a la de 2.4GHz. Como se puede ver en la siguiente ilustración, ofrece mucho más espacio de frecuencia, que proporciona hasta 25 canales posibles. Como se dará cuenta, sin embargo, hay muchas advertencias a la utilización de 5GHz, y el número de canales configurables en los puntos de acceso pueden ser significativamente menos de 25.
Esta ilustración muestra los canales de 5GHz WiFi disponibles en la actualidad en los diferentes anchos de canal. Cortesía de Security Uncorked
![](https://i2.wp.com/cioperu.pe/revista_recursos/Fotos2015/Octubre/Informe_WiFi_2.jpg)
Lo más evidente es el esquema de numeración distinto. El primer canal de conexión WiFi es del 36 y el último es el 165. Sin embargo, no todos los canales están disponibles. En lugar de permitir que usted elija cada canal consecutivo (36, 37, 38, etc.), los dispositivos WiFi están configurados para funcionar solo en canales que no se superponen (36, 40, 44, etc.) si se utilizan los canales 20MHz legados. Todos los canales configurables están separados entre sí por cuatro canales, pero hay lagunas (como el salto del canal 64 al 100) debido a que el espacio de frecuencia dado a WiFi no es totalmente continuo.
WiFi Shield
El WiFi Shield de Arduino conecta Arduino a Internet de forma inalámbrica.
![](https://i0.wp.com/arduino.cc/en/uploads/Main/A000058_front_450.jpg)
Toda la información sobre este Shield en :
Y los datasheet de los integrados:
Para conectarte al 32UC3: http://arduino.cc/en/Hacking/WiFiShield32USerial
Y la librería para manejar el shield en: http://arduino.cc/en/Reference/WiFi
Actualizar su firmware: http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading
![](https://i0.wp.com/arduino.cc/en/uploads/Main/ArduinoWiFiShieldPinUseDescribed_2.jpg)
Wifi library:
Un proyecto hecho con Ethernet pasarlo a wifi con el wifi shield, simplemente se trata de cambiar las líneas de código de la parte de red de la librería ethernet a las equivalentes de la librería wifi.
Ejercicio servidor web para encender y apagar led: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio27-Boton_Mejorado_WIFI
WiFi Shield 101
Arduino WiFi Shield 101 es un shield potente para aplicaciones IoT con autenticación criptográfica, desarrollado con ATMEL, que conecta la placa Arduino a Internet de forma inalámbrica. La conexión a una red WiFi es simple, no se necesita ninguna configuración adicional además del SSID y la contraseña. El WiFi Shield 101 viene con una biblioteca fácil de usar que permite conectar la placa Arduino a Internet con pocas instrucciones. Como siempre, cada elemento de la plataforma – hardware, software y documentación está libremente disponible y de código abierto. Se basa en el módulo Atmel SmartConnect-WINC1500, compatible con la norma IEEE 802.11 b/g/n
![](https://www.arduino.cc/en/uploads/Main/ASX00001_iso_both.jpg)
Características:
- Operating voltage both 3.3V and 5V (supplied from the host board)
- Connection via: IEEE 802.11 b/g/n for up to 72 Mbps networks
- Encryption types: WEP and WPA2 Personal
- Support TLS 1.1 (SHA256)
- Connection with Arduino or Genuino on SPI port
- Onboard CryptoAuthentication by ATMEL
Web del producto https://www.arduino.cc/en/Main/ArduinoWiFiShield101
La de Adafruit https://www.adafruit.com/products/2891
El módulo wifi WINC1500 integrado es un controlador de red capaz de protocolos TCP y UDP. El Wifi Shield 101 también cuenta con un hardware de seguridad de cifrado / descifrado proporcionado por el chip ATCC508A CryptoAuthentication que es un método ultra seguro para proporcionar un acuerdo clave para el cifrado/descifrado, diseñado específicamente para el mercado de IoT.
Datasheet módulo wifi: http://www.atmel.com/devices/atwinc1500.aspx
El pin digital 7 se utiliza como un pin de handshake entre el shield WiFi 101 y Arduino, y no se debe utilizar. El pin digital 5 se utiliza como pin RESET entre el shield WiFi 101 yArduino, y no debe utilizarse.
Tener en cuenta que Uno + WiFi Shield 101 no es compatible con la biblioteca Serial de software. El WiFi Shield 101 usa una biblioteca que es muy compleja y ocupa más del 60% de la memoria disponible, dejando poco espacio para los sketches. Tener en cuenta que para un uso básico es compatible con el Uno, pero para proyectos complejos se recomienda usar el shield WiFi 101 con un Arduino / Genuino Zero, 101 o Mega 2560.
El Wifi Shield 101 se usa con la librería Wifi101 https://www.arduino.cc/en/Reference/WiFi101
Ejemplo sencillo por con el wifi shield 101: https://www.arduino.cc/en/Tutorial/Wifi101SimpleWebServerWiFi
Más información:
Arduino MKR100
Es un nuevo Arduino con un microcontrolador que lleva integrado wifi y mucho más. El Arduino MKR1000 ha sido diseñado para ofrecer una solución práctica y económica buscando conectividad WiFi para gente con mínima experiencia en redes.
![](https://www.arduino.cc/en/uploads/Main/mkr1000_both.jpg)
Este Arduino está basado en la MCU ATSAMW25 especialmente diseñado para proyectos IoT. Este SoC está compuesto de tres bloques principales:
- SAMD21 Cortex-M0+ 32bit low power ARM MCU
- WINC1500 low power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi
- ECC508 CryptoAuthentication
Microcontrolado ATSAMW25 http://www.atmel.com/devices/ATSAMW25.aspx
Este Arduino también incluye un circuito para cargar baterías Li-Po y utilizar el MKR1000 alimentándose con este tipo de baterías.
IMPORTANTE: Arduino MKR1000 funciona a 3.3V, el máximo voltaje que pueden tolerar los pines es de 3.3V y aplicar voltajes mayores podría dañar la placa. Mientras que una salida de 5V digital es posible, para una comunicación bidireccional de 5V es necesario level shifting.
Datasheet MCU: http://www.atmel.com/devices/ATSAMW25.aspx
Esquemático: https://www.arduino.cc/en/uploads/Main/MKR1000-schematic.pdf
Pinout:
![](https://i0.wp.com/www.giuseppecaccavale.it/wp-content/uploads/2016/04/MKR1000-Pinout-.png)
Getting Started https://www.arduino.cc/en/Guide/MKR1000
Para programar el MKR1000 es necesario añadir al IDE de Arduino soporte para esta placa, ya que el microcontrolador no es un AVR sino un ARM Cortex-M0 de 32 bits. SAMD Core.
![](https://www.arduino.cc/en/uploads/Guide/MKR_Zero_BrdMgrAdd.jpg)
El MKR1000 y Arduino Zero tienen unas librerías específicas por su microcontrolador:
Ejemplo NTP en MKR1000: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio39-NTP_MKR1000
ESP8266
El ESP8266 es un chip Wi-Fi de bajo coste con pila TCP/IP completa y capacidad de MCU (Micro Controller Unit) producida por el fabricante chino Espressif Systems, con sede en Shanghai.
El chip primero llegó a la atención de los fabricantes occidentales en agosto de 2014 con el módulo ESP-01. Este pequeño módulo permite a los microcontroladores conectarse a una red Wi-Fi y realizar conexiones TCP/IP sencillas utilizando comandos de tipo Hayes.
En siguientes capítulos se tratará en profundidad.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/ESP-01.jpg/300px-ESP-01.jpg)
ESP32 el sucesor de ESP8266
ESP32 es una serie de bajo costo, sistema de bajo consumo de energía en un microcontrolador chip con Wi-Fi integrado y Bluetooth de modo dual. La serie ESP32 utiliza un microprocesador Xtensa LX6 de Tensilica de doble núcleo.
Características:
- Processors:
- CPU: Xtensa dual-core (or single-core) 32-bit LX6 microprocessor, operating at 160 or 240 MHz and performing at up to 600 DMIPS
- Ultra low power (ULP) co-processor
- Memory: 520 KiB SRAM
- Wireless connectivity:
- Wi-Fi: 802.11 b/g/n/e/i
- Bluetooth: v4.2 BR/EDR and BLE
- Peripheral interfaces:
- 12-bit SAR ADC up to 18 channels
- 2 × 8-bit DACs
- 10 × touch sensors
- Temperature sensor
- 4 × SPI
- 2 × I²S
- 2 × I²C
- 3 × UART
- SD/SDIO/MMC host
- Slave (SDIO/SPI)
- Ethernet MAC interface with dedicated DMA and IEEE 1588 support
- CAN bus 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM up to 16 channels
- Hall effect sensor
- Ultra low power analog pre-amplifier
- Security:
- Power Management
- Internal LDO
- Individual power domain for RTC
- 5uA deep sleep current
- Wake up from GPIO interrupt, timer, ADC measurements, capacitive touch sensor interrupt
El ESP32 trae ventajas muy claras frente al modelo anterior, tales como la inclusión de un segundo procesador (es decir, posee 2 núcleos). Además se ha añadido la posibilidad de utilizar Bluetooth Low Energy (BLE), el cual es un atractivo para proyectos de tipo IoT. Se ha expandido la cantidad de GPIOs; y ahora se cuentan con más pines de lecturas análogas a digitales (ADC). Se incluyeron dos pines de salida digital a análoga (DAC), lo cual es sumamente atractivo para ciertos proyectos con audio. Se debe resaltar el hecho que hasta ahora, casi ningún modelo de Arduino o microcontrolador similar posee un DAC integrado.
Al poseer un segundo núcleo, este se dedica únicamente para manejar los eventos de WiFi (por defecto), aunque se le pueden asignar tareas específicas. Esto permite una ventaja contra el ESP8266, el cual tiene que detener ciertos eventos para procesar las actividades del WiFi. Otra de las ventajas es la posibilidad de utilizar más sensores de lecturas analógicas sin la necesidad de utilizar multiplexores.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Espressif_ESP-WROOM-32_Wi-Fi_%26_Bluetooth_Module.jpg/300px-Espressif_ESP-WROOM-32_Wi-Fi_%26_Bluetooth_Module.jpg)
Comparativa de especificaciones:
![](https://i0.wp.com/blog.bricogeek.com/img_cms/2748-comparativa-esp8266-vs-esp32-05.gif)
![](https://i0.wp.com/blog.bricogeek.com/img_cms/2748-comparativa-esp8266-vs-esp32-06.gif)
Pinout
![](https://i0.wp.com/exploreembedded.com/wiki/images/thumb/a/ac/ESP32_Pinout_a1_3.png/1600px-ESP32_Pinout_a1_3.png)