# Programando en bloques mBlock

# Preparar el ALVIK para mBlock: Actualizar el firmware de Alvik

<p class="callout success"><span style="color: rgb(0, 0, 0);">Actualizar el firmware significa que nuestro Alvik le instalamos el interpretador de micropython y por lo tanto podremos:  
- Programar en código con **Python**  
- Programar en bloques con **mBlock**</span></p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Si ya tiene el firmware instalado en el Alvik **puedes saltarte esta página**</span></p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Con este firmware **no** podemos programar con Arduino IDE</span></p>

##### <span style="color: rgb(22, 145, 121);">**Antes de nada enciende el Alvik con esta precaución :**</span>

<p class="callout warning">Primero **<span style="background-color: rgb(241, 196, 15);">nos aseguramos que el Alvik este <span style="color: rgb(0, 0, 0);">APAGADO </span>antes de conectarlo con el PC</span>   
<span style="color: rgb(224, 62, 45);">en caso contrario se puede perjudicar la batería</span>**[![robot-off.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/robot-off.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/robot-off.png)  
Licencia CC-BY-NC-SA origen [https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/](https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/)  
  
Luego lo **conectamos** por cable[![connecting-final.gif](https://libros.catedu.es/uploads/images/gallery/2024-06/connecting-final.gif)](https://libros.catedu.es/uploads/images/gallery/2024-06/connecting-final.gif)  
Licencia CC-BY-NC-SA origen [https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/](https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/)  
  
Y ahora ya podemos **encender** nuestro Alvik  
[![alvik-on.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/alvik-on.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/alvik-on.png)  
Licencia CC-BY-NC-SA origen [https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/](https://courses.arduino.cc/explore-robotics-micropython/lessons/getting-started/)</p>

##### <span style="color: rgb(22, 145, 121);">**Actualizamos el FIRMWARE**</span>

Esto lo hacemos una vez, entramos en [https://alvikupdate.arduino.cc/](https://alvikupdate.arduino.cc/) damos a **conectar** y luego **updated** *(si no sabes qué puerto es, desconecta y conecta y te fijas cual aparece)*

<p class="callout info">Puede tardar varios ciclos, **paciencia**</p>

**[![2025-03-28 10_18_52-Arduino® Alvik Updater 🤖.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-28-10-18-52-arduino-alvik-updater.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-28-10-18-52-arduino-alvik-updater.png)**

<p class="callout warning">Asegúrate de tener el ALVIK **encendido**</p>

Hasta que sale esta pantalla de éxito

[![2025-03-26 11_59_36-Arduino® Alvik Updater 🤖.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-11-59-36-arduino-alvik-updater.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-11-59-36-arduino-alvik-updater.png)

## <span style="color: rgb(22, 145, 121);">**ATENCIÓN ¿Y SI DA PROBLEMAS?**</span>

Por ejemplo se ha quedado enganchado, lo has desconectado antes de hora... entonces la solución pasa por utilizar un flasheador más potente

##### <span style="color: rgb(22, 145, 121);">**MicroPython Installer**</span>

[Descargamos el programa ](https://labs.arduino.cc/en/labs/micropython-installer)y ejecutamos teniendo conectado el ESP32 del Alvik, (no hace falta encender el robot, pues sólo trabajamos con el ESP32) lo detecta y simplemente le damos a Instalar Micropython dentro del chip

Descargable en [https://labs.arduino.cc/en/labs/micropython-installer](https://labs.arduino.cc/en/labs/micropython-installer)

[![2024-07-04 19_17_33-MicroPython Installer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-04-19-17-33-micropython-installer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-04-19-17-33-micropython-installer.png)

<p class="callout warning">Si sigue puñetero y no detecta el Arduino Nano ESP32 tendrás que ponerlo en modo Bootoloader, haz los pasos 1, 2 y 3 de [https://libros.catedu.es/books/arduino-alvik/page/preparar-alvik-para-arduino-ide-modo-bootloader ](https://libros.catedu.es/books/arduino-alvik/page/preparar-alvik-para-arduino-ide-modo-bootloader) y vuelve a intentarlo con el MicroPython Installer</p>

Al acabar de instalar, sale este mensaje :

[![2025-03-28 10_15_55-MicroPython Installer.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-28-10-15-55-micropython-installer.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-28-10-15-55-micropython-installer.png)

Aconsejamos **apagar y desconectar totalmente** y volver a conectar (acuérdate que no hay que conectar el ALVIK en el PC con el ALVIK encendido, lo conectas con el PC apagado y luego lo enciendes, tal y como dice arriba del todo)

Entramos en [https://alvikupdate.arduino.cc/](https://alvikupdate.arduino.cc/) damos a **conectar** y luego **updated** *(si no sabes qué puerto es, desconecta y conecta y te fijas cual aparece)*

<p class="callout info">AQUÍ VA A TARDAR VARIOS, VARIOS CICLOS, **paciencia, paciencia**</p>

**[![2025-03-28 10_18_52-Arduino® Alvik Updater 🤖.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-28-10-18-52-arduino-alvik-updater.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-28-10-18-52-arduino-alvik-updater.png)**

<p class="callout warning">Asegúrate de tener el ALVIK **encendido**</p>

Hasta que sale esta pantalla de éxito

[![2025-03-26 11_59_36-Arduino® Alvik Updater 🤖.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-11-59-36-arduino-alvik-updater.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-11-59-36-arduino-alvik-updater.png)

# Instalando mBlock

{{@13340}}

# Instalando la extensión ALVIK en mBlock

##### <span style="color: rgb(22, 145, 121);">**En mBlock instalar la extensión Alvik**</span>

1. <span style="color: rgb(0, 0, 0);">Pinchamos en el + de **añadir** dispositivo</span>
2. <span style="color: rgb(0, 0, 0);">**buscamos** Alvik </span>
3. <span style="color: rgb(0, 0, 0);">apretamos al + de **descargarlo** (al finalizar desaparece el + )</span>
4. <span style="color: rgb(0, 0, 0);">dos clicks y se **instala**</span>

<span style="color: rgb(0, 0, 0);">[![2025-03-25 23_34_33-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-25-23-34-33-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-25-23-34-33-mblock-v5-4-3.png)  
*Licencia CC-BY-SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*  
</span>

<span style="color: rgb(0, 0, 0);">![COM-port.png](https://docs.arduino.cc/4d06db3ba809aa6d418afa2d31f7b51b/add-device.gif)</span>

<span style="color: rgb(0, 0, 0);">Se nos instalan una colección de instrucciones para controlar el ALVIK completamente </span>

##### [![2025-03-26 10_39_58-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-10-39-58-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-10-39-58-mblock-v5-4-3.png)

# Dos formas de programar en mBlock

{{@2986}}

# Un ejemplo de programa en vivo

##### <span style="text-decoration: underline;"><span style="color: rgb(22, 145, 121); text-decoration: underline;">**PROBANDO EN VIVO** </span></span>

1. Entramos en mBlok, en dispositivos
2. Seleccionamos Alvik
3. En vivo
4. Conectar
5. Nos saldrá una ventana pop-up en Windows saldrá COMx donde x es un número. En otros sistemas operativos /dev/tty.\[yourSerialPortName\] o algo así. En teoría tiene que funcionar con el puerto elegido, sino, elegiremos otro, suele ser el más alto.

[![2025-03-26 11_03_38-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-11-03-38-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-11-03-38-configuracion.png)

A funcionar así de sencillo !!!!!

<p class="callout warning">la primera vez, tarda algo en responder, paciencia</p>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/pPkUVh7UqyI" title="26 de marzo de 2025" width="478"></iframe>

<p class="callout success">**RETO** Ves probando así de rápido la multitud de instrucciones gráficas para saber cómo funcionan</p>

# Un ejemplo de programa en carga

Como ejemplo de programa en carga

1. Creamos un sencillo programa con eventos de **cuando botón ... es presionado ...**
2. Elegimos el botón **Cargar**
3. **Subir** código

[![2025-03-26 12_38_48-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-12-38-48-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-12-38-48-mblock-v5-4-3.png)

Ahora el robot **es libre en movimientos** no depende del ordenador, por lo tanto podemos desconectar el cable

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/J-rgIfJ8ewk" width="560"></iframe>

# Otro ejemplo de programa en carga : Evita obstáculos

Podemos hacer un evita obstáculos, en la página *[https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)* proponen este programa

<video controls="controls" height="394" style="width: 790px; height: 394px;" width="790"> <source src="https://docs.arduino.cc/12c3deb73b1dee522a0b0532e8afcf92/tof-video.mp4" type="video/mp4"></source></video>  
*Licencia CC-BY-SA fuente [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*

Pero no gira, luego proponemos este [https://planet.mblock.cc/project/5547662](https://planet.mblock.cc/project/5547662)

[![2025-03-26 13_13_53-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-13-13-53-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-13-13-53-mblock-v5-4-3.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/gOKHZ6CqQ28" title="EVITA OBSTACULOS mblock alvik" width="478"></iframe>

# Métodos para interactuar los objetos y el robot (dispositivo)

{{@13349}}

# Un ejemplo interactuando con un objeto

Vamos a probar dos métodos anteriores, el de variable global y el envío de mensaje, por lo tanto<span style="background-color: rgb(251, 238, 184);"> **vamos a trabajar EN VIVO**</span>

El Alvik va a enviar cuando pulse OK un mensaje COMENZAMOS a un objeto (un ovni) para que empiece a moverse y va grabando continuamente en dos variables globales ANGULOX y ANGULOY los ángulos del sensor de inclinación

[![2025-03-26 14_10_40-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-14-10-40-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-14-10-40-mblock-v5-4-3.png)

En un objeto OVNI vamos a realizar un programa que se mueva según el ángulo. Como el ángulo va de 0 a 100 y el eje va de 0-250 luego lo multiplicaremos por dos para que se mueva con más margen.

[![2025-03-26 14_12_05-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/2025-03-26-14-12-05-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/2025-03-26-14-12-05-mblock-v5-4-3.png)

El programa lo tienes aquí [https://planet.mblock.cc/project/5548364](https://planet.mblock.cc/project/5548364)

Y este es el resultado

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/k3RkCdRqhAs" width="560"></iframe>