Arduino sirve para implementar cualquier idea que se proponga realizar. Por ejemplo, puede pensar en automatizar el control de su terrario, o en construir un pequeño robot, tipo auto, que evite objetos y que suba las escaleras de su casa. Este último caso, revoloteó por mi cabeza hace algunos meses; pero cuando miré su precio en Internet, me pareció excesivo. Así que me propuse realizar sin ayuda (DIY, o “hágalo usted mismo”) las carcasas de los robots. ¿Y cómo? Pues adquiriendo un kit para mi impresora 3D delta Anycubic (figura 1.1), tras lo que me di cuenta de que su placa controladora está basada en un tipo de Arduino, por lo que su entorno de programación me resultaba familiar.
Le recomiendo que visite la página http://proyectosconarduino.com/robots/otto-diy/. Trata sobre el robot OTTO (figura 1.2), que es un robot pensado para ser armado de forma muy fácil e intuitiva y es ideal para dar los primeros pasos con sus hijos en la programación con Arduino y la robótica educativa, ya que requiere pocas piezas, no necesita soldadura y se puede programar en un entorno gráfico como “mBlock” (busque esta palabra en Google y descubrirá un mundo nuevo). Las piezas del robot (cuerpo y piernas) se pueden imprimir con una impresora 3D. Realmente, el cerebro de este robot es un tipo de Arduino denominado NANO, de tal manera que aprendiendo lo expuesto en este libro se puede adentrar sin miedo en el terreno de la robótica.
En definitiva, las posibilidades de Arduino son inmensas y, además, todos los días aparecen en la red aplicaciones de lo más insospechado y curioso. Además, si se cansa del terrario o del robot, puede reutilizar la placa reprogramable para otros nuevos proyectos.
En la figura 1.3 se puede observar la apariencia de un Arduino MKR 1010. Es la placa competidora del clásico Arduino UNO (siempre desde nuestro punto de vista y perfectamente opinable según otros). Cabe en la palma de la mano y cuesta alrededor de 34 euros (la empresa Allnet Ibérica [www.allnet.es] tiene un convenio con el sector educativo, de tal manera que si lo adquiere para un centro educativo podrá beneficiarse económicamente). Con este modelo 1010 se realizarán la mayoría de proyectos de este libro.
Está equipado con un módulo ESP32 hecho por u-blox. Esta placa tiene como objetivo acelerar y simplificar la creación de prototipos de aplicaciones de IoT basadas en wifi gracias a la flexibilidad del módulo ESP32 y su bajo consumo de energía. La placa está compuesta por tres bloques principales:
* SAMD21 Cortex-M0 + MCU de bajo consumo de 32 bits.
* Wifi IEEE® 802.11 b/g/n u-blox serie NINA-W10 de baja potencia de 2.4 GHz.
* ECC508 Crypto Authentication.
El MKR 1010 incluye potencia de cómputo de 32 bits, un rico conjunto usual de interfaces de E/S y wifi de baja potencia con un Cryptochip para una comunicación segura mediante el cifrado SHA-256. Además, ofrece la facilidad de uso del software Arduino (IDE) para el desarrollo y la programación de código. Todas estas características hacen de esta placa la opción preferida para los proyectos de IoT en una forma compacta sin necesidad de añadir ningún tipo de shield como en el caso del Arduino UNO. Su puerto USB se puede utilizar para suministrar alimentación (5 V) a la placa. Tiene un circuito de carga Li-Po que permite que funcione con energía de la batería o con una fuente externa de 5 voltios, cargando la batería Li-Po mientras funciona con energía externa. El cambio de una fuente a otra se hace automáticamente. A diferencia de la mayoría de las placas Arduino, el MKR 1010 funciona a 3.3 V. El voltaje máximo que pueden tolerar los pines de E S es 3.3 V. La aplicación de voltajes superiores a 3.3 V a cualquier pin de E/S podría dañar la placa. Si bien la salida a dispositivos digitales de 5 V es posible, la comunicación bidireccional con dispositivos de 5 V necesita un cambio de nivel de voltaje adecuado.
En la figura 1.4 se observa el pineado completo del Arduino MKR 1010. Dispone de 15 entradas/salidas digitales. También dispone de 6 pines de entrada analógicos que trasladan las señales a un conversor analógico/digital de 10 bits. Además, dispone (y esto es novedoso en el mundo clásico de Arduino) de una salida digital/analógica (DAC) localizada en el pin AO. Si tiene nociones de electrónica, le adelanto que, además, posee los siguientes pines especiales:
* RX y TX: Se usan para transmisiones serie de señales TTL.
* Número amplio de interrupciones externas.
* PWM: Dispone de 12 salidas destinadas a la generación de señales PWM de hasta 8 bits.
* SPI: Posibilidad de comunicarse mediante el protocolo SPI (útil para pantallas TFT u OLED).
* I2C: Posibilidad de utilizar este protocolo I2C (útil para sensórica o interface Grove).
Por otra parte, el 1010 tiene un RTC (reloj en tiempo real) incluido en la propia placa. Esta característica simplifica muchos proyectos en los que precise tener en cuenta el tiempo.
Por último y no menos importante, hay que señalar la potencia intrínseca de este modelo en cuanto a conexión wifi se refiere. Pero de ello se hablará con detenimiento en capítulos posteriores.