Archivo de la categoría: Programación Visual

Programación Dispositivos M5Stack con UIFLOW

UIFlow es una plataforma Web de programación usando Blockly y Python

Web: http://flow.m5stack.com/

UIFlow: https://m5stack.com/pages/uiflow

Foro UIFlow: http://forum.m5stack.com/category/5/uiflow

UIFlow Doc: https://m5stack.github.io/UIFlow_doc/en/

Tutorial: https://docs.m5stack.com/#/en/uiflow/uiflow_home_page

Manual de UIFlow: http://flow.m5stack.com/download/M5GO_User_Manual_en.pdf

Vídeos:

Quick Start UIFlow:

UIFlow-Desktop-IDE: https://m5stack.com/pages/download (UIFlow en local sin acceso a Internet)

Cargar Firmware UIFlow

Lo primero es cargar el firmware de UIFlow en M5Stack para poder programarlo con UIFlow, para ello debemos usar el programa M5Burner: https://docs.m5stack.com/#/en/quick_start/m5stickc/m5stickc_quick_start_with_uiflow que se puede descargar desde https://m5stack.com/pages/download

En caso que no nos reconozca el puerto serie M5Burner, habrá que instalar el driver como hemos hablado anteriormente desde: https://m5stack.com/pages/download 

El Driver Oficial para la interfaz serie CP210X se puede descargar en: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

A la hora de cargar el firmware, seleccionar la versión de UIFlow que se va a usar en http://flow.m5stack.com/ y en caso que no aparezca resaltada, descargarla.

Luego seleccionar el puerto serie y el modelo de M5Stack que vamos a usar y por último configurar la wifi a la que se va a conectar para programar on-line.

Y pulsar el botón burn, si da fallo probar a reducir el baudrate por defecto o borrar la flash con el botón erase.

En caso que no se haya configurado la wifi o no esté disponible la wifi, el M5Stack se configura como un AP Hotspot donde abre una red wifi a la que me puedo conectar y entrar a la web para configurar la wifi.

Modo Programación en Red

El modo de programación de red es un modo de acoplamiento entre el dispositivo M5Stack y la plataforma de programación web UIFlow. La pantalla mostrará el estado actual de la conexión de red del dispositivo. Cuando el indicador está en verde, significa que puede recibir un programa push en cualquier momento. Después de la primera configuración exitosa de la red WiFi, el dispositivo se reiniciará automáticamente e ingresará al modo de programación de red. 

Una vez que el M5Stack tiene cargado el firmware y se inicia, se conectará a la wifi configurada y nos mostrará en pantalla el API KEY:

Una vez conectado y con el icono en verde, ya puedo entrar en http://flow.m5stack.com/ y emparejar el dispositivo M5 para programarlo. Para ello debo indicar el APIKEY y el dispositivo.

Una vez hecho esto ya se puede comenzar a programar con UIFlow. Lo siguiente le mostrará un programa simple para manejar M5StickC.

Para encender el indicador LED:

  • Arrastre el LED para iluminar el bloque de programa.
  • Empalme con el programa de inicialización de configuración.
  • Haga clic en el botón Ejecutar en la esquina superior derecha

Modo Programación USB

UIFlow Desktop IDE es una versión offline del programador UIFlow que no requiere conexión de red y puede ser una alternativa en caso de no tener acceso a Internet o una conexión lenta . Haga clic en la versión correspondiente de UIFlow-Desktop-IDE para descargar de acuerdo con su sistema operativo en https://m5stack.com/pages/download

Una vez instalado, detectará automáticamente si su ordenador tiene un controlador USB (CP210X), haga clic en Instalar y siga las instrucciones para finalizar la instalación. M5StickC no requiere un controlador CP210X, por lo que los usuarios pueden elegir instalar u omitir.

Cuando se inicie la aplicación, ya podemos conectar nuestro dispositivo M5

Para poder programar como USB, debemos entrar en modo USB, para ello: Haga clic en el botón de encendido en el lado izquierdo del dispositivo para reiniciar. Seleccione rápidamente Configuración después de ingresar al menú, ingrese a la página de configuración y seleccione el modo USB.

Y por último seleccionar el puerto serie y el dispositivo en el programa para empezar a usarlo.

Más información:

Entorno de Programación

Independientemente si usamos la versión online o la versión offline, la programación es igual.

El entorno de programación se compone de 5 partes principales:

  • Coding Area:  Arrastre los bloques de código de la lista de bloques al área de codificación y conéctelos para crear un programa
  • Barra de menús: La barra de menú contiene la mayoría de las funciones importantes de la interfaz, como (Ejemplo,Deshacer y rehacer, cargar, ejecutar código, descargar código, guardar código, etc.
  • Blockly/Python: Todo el código que creamos en bloques se puede convertir a Python presionando este interruptor
  • Diseñador de UI: Arrastre los elementos de la interfaz de usuario (título, etiqueta, etc.) hacia la pantalla de para diseñar un avatar o interfaz de interfaz de usuario.
  • Unidades: Las unidades son sensores y actuadores que se pueden conectar y aquí es donde los configuramos.

Funciones de los botones:

Programación con Blockly:

Programación Básica

Para la programación vamos a usar estas tres documentaciones oficiales:

Setup: Cuando abra UIFlow, encontrará que ya hay un bloque de Configuración al principio. Cada programa debe tener un bloque de configuración. El programa se ejecuta desde el bloque de Configuración y solo se ejecutará una vez. Puedes considerarlo como un bloque de inicialización del programa

Loop: Loop es un bloque de bucle infinito. Cuando se ejecuta, ejecutará el programa contenido en el bloque indefinidamente hasta que ocurra algún evento que lo detenga, por ejemplo un reset o apagado. No tiene que existir en el programa, pero para que el programa ejecute funciones cíclicas debe usarse.

Los ficheros generados tienen la extensión .m5f, aquí puedes descargar un ejemplo de test: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Test.m5f

Primero hagamos un “Hola Mundo” con M5Stack. Que muestre por pantalla Hola mundo y haga blink el led.

Puedes descargar el código en: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Hola%20Mundo.m5f

Otros ejemplos:

¿Cuál es la diferencia entre ejecutar y descargar un programa? El botón de reproducción coloca nuestro código en la memoria volátil de su M5stack. Lo que significa que se perderá una vez que apague el M5stack. Sin embargo, la función de descarga almacenará su programa en la memoria flash de su dispositivo que no se borrará al reiniciar. Cada vez que enciende el M5stack después de descargar un programa, ese programa se ejecutará automáticamente, y también puede seleccionarlo de la lista de aplicaciones a la que se accede presionando el botón central al iniciar.

Ejecutar un programa: Una vez que haya terminado de programar, presione el botón de reproducción en la esquina superior derecha para ejecutar su código.

Descargar un programa: almacenará su programa en la memoria flash de su dispositivo que no se borrará al reiniciar.

La aplicación grabada se podrá seleccionar desde el menú de aplicaciones del dispositivo M5 y se ejecutará en el inicio cada vez que se resetee. Para volver al entorno de programación y cambiar el programa, si tengo una aplicacion en modo permanente, reiniciar y pulsar el botón mientras arranca para entrar en modo programación cloud o USB.

Unidades y HATs

La unidad o HAT es un módulo hardware de expansión de funciones proporcionado por el sistema M5. Estas deben conectarse al módulo M5 antes de programarlas.

Los módulos y faces de M5Stack ya aparecen automáticamente al seleccionar el HW Core.

Las unidades deben se añadidas en UIFlow para que aparezcan sus bloques de programación. Haga clic en la opción Units debajo del Simulador de UI, marque el módulo de Unidad que desea agregar y haga clic en Aceptar. Algunas unidades tienen configuraciones iniciales de parámetros.

Programación de Units: https://docs.m5stack.com/#/en/uiflow/Units

Programación de los módulos: https://docs.m5stack.com/#/en/uiflow/Modules

Programación de las faces: https://docs.m5stack.com/#/en/uiflow/FACES

Programación Hardware

Ver: https://docs.m5stack.com/#/en/uiflow/hardware

Boton: https://m5stack.github.io/UIFlow_doc/en/en/Start_programming/Button.html

Speaker:

IMU:

Power:

Ejemplo power en M5StickC: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/M5/M5StickC_Power_Control.m5f

Display UI

Elementos del display: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=ui-elements

Display UI: https://m5stack.github.io/UIFlow_doc/en/en/Display/UI.html

Emoji: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=emoji

Pantalla: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=screen

Imágenes:

Gráficos:

Ejemplo que muestra un logo: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Logo%20M5Stack.m5f

Lógica

If:

Loop Condicional:

Iteración de datos:

Variables

Variables:

Operaciones básicas: https://docs.m5stack.com/#/en/uiflow/data_structure?id=basic-operation

Función map (diccionario en Python): https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-a-map

Listas o arrays: https://m5stack.github.io/UIFlow_doc/en/en/Operation/List.html

JSON: https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-json

Strings/Text: https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-text

Funciones

Las funciones son una herramienta que nos ayuda a envolver nuestro código en un paquete ordenado al que podemos asignarle un nombre, y luego llamarlo en cualquier parte de nuestro programa y ejecutará el código que contiene. Las funciones pueden ayudar a mantener nuestro código ordenado y conciso y evitar repetir las mismas cosas una y otra vez.

Funciones:

Control Remoto

Control remoto de los dispositivos M5 mediante una web:

Página de control: https://docs.m5stack.com/#/en/uiflow/advanced?id=control-page

Dashboard: https://docs.m5stack.com/#/en/uiflow/advanced?id=dashboard

Lo carga en http://flow-remote.m5stack.com/

Bloques Personalizados

Es posible crear bloques personalizados.

Para crear un nuevo bloque, debemos proporcionar:

  • nombre del grupo: el nombre del grupo en el que se coloca el bloque personalizado
  • color del bloque: color de apariencia del bloque
  • Etiqueta de bloque: solo se permiten letras, números, guiones bajos
  • Tipo de bloque: defina el tipo de bloque como Valor (valor) o Ejecutar (ejecutar)
  • Número de bloques: posibilidad de agregar múltiples bloques al mismo tiempo y guardarlos en un archivo .m5b al mismo tiempo

Block Maker: http://block-maker.m5stack.com/

Haga clic en la opción Agregar en Parámetro, agregue una propiedad del programa, ingrese el nombre que se muestra en el bloque y seleccione el tipo de propiedad. Ingrese el código contenido en el bloque personalizado en el cuadro de opción Código de bloque.

Program API: https://github.com/m5stack/UIFlow-Code/wiki

Una vez programado descargar el .m5b

Para usar los bloques creados hacer open .m5b en UIFlow

Más información:

Comunicaciones

ESP-NOW: https://docs.m5stack.com/#/en/uiflow/advanced?id=esp-now

MQTT: https://docs.m5stack.com/#/en/uiflow/advanced?id=mqtt-communication

Wifi: https://docs.m5stack.com/#/en/uiflow/advanced?id=wifi 

P2P: https://docs.m5stack.com/#/en/uiflow/advanced?id=p2p

HTTP Request: https://docs.m5stack.com/#/en/uiflow/advanced?id=http 

Control Avanzado de Pines

Easy IO: https://docs.m5stack.com/#/en/uiflow/advanced?id=easy-io

PIN: https://docs.m5stack.com/#/en/uiflow/advanced?id=pin

PWM: https://docs.m5stack.com/#/en/uiflow/advanced?id=pwm

ADC: https://docs.m5stack.com/#/en/uiflow/advanced?id=adc

DAC: https://docs.m5stack.com/#/en/uiflow/advanced?id=dac

UART: https://docs.m5stack.com/#/en/uiflow/advanced?id=uart

I2C: https://docs.m5stack.com/#/en/uiflow/advanced?id=i2c

SD Card: https://docs.m5stack.com/#/en/uiflow/advanced?id=sdcard

Execute: https://docs.m5stack.com/#/en/uiflow/advanced?id=execute

Taller de Programación de Arduino por Bloques con mBlock

En este vídeo hago una introducción a la programación visual de Arduino con mBlock, que está basado en scratch 3.

Material necesario:

  • un ordenador o portátil
  • instalar mBlock 5 desde https://mblock.cc/en-us/download 
  • un Arduino UNO con su cable USB para programarlo
  • una protoboard
  • un LED y una resistencia de 220ohms
  • un pulsador y una resistencia de 10k ohms
  • un sensor de luz o LDR y una resistencia de 10k ohms

Kit iniciación usado: https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-2895.html 

mBlock

mBlock es un entorno gráfico de programación basado en el editor Scratch 3.0 para introducir de forma sencilla la programación y robótica en el aula.

Web de mblock: http://www.mblock.cc/ 

mBlock se compone de 5 partes principalmente:

  • Grupo de instrucciones clasificadas por colores en las siguientes categorías:
    • Movimiento: Conjunto de instrucciones relacionadas con el control de los pines de la tarjeta de Arduino, así como el control del movimiento de cualquier personaje del escenario.
    • Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza.
    • Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales.
    • Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria.
    • Control: Las instrucciones incluídas en esta sección son impresindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos.
    • Sensores: Instrucciones de iteración con el ratón, el teclado, sonidos y los personajes.
    • Operadores: operaciones matemáticas, lógicas y con cadenas de texto.
    • Variables: Instrucciones para el almacenamiento y gestión de datos.
  • Instrucciones de programación: Las instrucciones de cada grupo corresponden a instrucciones de programación.
  • Editor: Es la parte principal donde estructuramos y programamos nuestro programa.
    • Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos.
    • Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa.
    • Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos.
  • Escenario o ventana principal: Es el resultado de nuestro programa.
  • Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites.
    • Los objetos de tipo arduino son aquellos que interactúan con Arduino.
    • Los sprites son similares al entorno de scratch y no interactúan con Arduino.

Proyectos mBlock

mBlock Community https://planet.mblock.cc/ es la web donde se publican los proyectos de mBlock y donde podemos aprender mucho viendo otros proyectos o publicar los nuestros.

Mi usuario en mBlock donde publico los proyectos: https://planet.mblock.cc/u/1004089 

Proyectos del vídeo:

Más información de mBlock:

Programación Básica Node-RED

Node-RED es un motor de flujos con enfoque IoT, que permite definir gráficamente flujos de servicios, a través de protocolos estándares como REST, MQTT, Websocket, AMQP… ademas de ofrecer integración con apis de terceros, tales como Twitter, Facebook, Yahoo!…

Más información: https://about.sofia2.com/2016/11/16/que-es-nodered/

Historia de Node-RED: https://nodered.org/about/#history

Conceptos básicos de nodered: https://nodered.org/docs/user-guide/concepts

  • Nodo: Un nodo es el bloque de construcción básico de un flujo. Los nodos se activan al recibir un mensaje del nodo anterior en un flujo o al esperar algún evento externo, como una solicitud HTTP entrante, un temporizador o un cambio de hardware GPIO. Procesan ese mensaje o evento y luego pueden enviar un mensaje a los siguientes nodos del flujo.
  • Nodo de Configuración: Un nodo de configuración (config) es un tipo especial de nodo que contiene una configuración reutilizable que los nodos regulares pueden compartir en un flujo.
  • Flow (Flujo) Un flujo se representa como una pestaña dentro del espacio de trabajo del editor y es la forma principal de organizar los nodos. El término “flujo” también se utiliza para describir informalmente un conjunto único de nodos conectados. Por lo tanto, un flujo (pestaña) puede contener múltiples flujos (conjuntos de nodos conectados).
  • Contexto: El contexto es una forma de almacenar información que se puede compartir entre nodos sin usar los mensajes que pasan a través de un flujo. Hay tres tipos de contexto:
    • Nodo: solo visible para el nodo que establece el valor
    • Flujo: visible para todos los nodos en el mismo flujo (o pestaña en el editor)
    • Global: visible para todos los nodos
  • Mensaje: Los mensajes son los que pasan entre los nodos en un flujo. Son objetos simples de JavaScript que pueden tener cualquier conjunto de propiedades. A menudo se les conoce como msg dentro del editor. Por convención, tienen una propiedad llamada “payload” que contiene la información más útil.
  • Subflow: Un subflujo es una colección de nodos que se contraen en un solo nodo en el espacio de trabajo. Se pueden usar para reducir la complejidad visual de un flujo o para agrupar un grupo de nodos como un componente reutilizable que se usa en varios lugares.
  • Wire: Los cables conectan los nodos y representan cómo pasan los mensajes a través del flujo.
  • Palette (Paleta): La paleta está a la izquierda del editor y enumera los nodos que están disponibles para usar en los flujos. Se pueden instalar nodos adicionales en la paleta utilizando la línea de comandos o el Administrador de paletas.
  • Workspace: El área de trabajo es el área principal donde se desarrollan los flujos arrastrando nodos de la paleta y conectándolos. El espacio de trabajo tiene una fila de pestañas en la parte superior; uno para cada flujo y cualquier subflujo que se haya abierto.
  • Barra Lateral: La barra lateral contiene paneles que proporcionan una serie de herramientas útiles dentro del editor. Estos incluyen paneles para ver más información y ayuda sobre un nodo, para ver el mensaje de depuración y para ver los nodos de configuración del flujo.

Con respecto a Node-RED, se pueden hacer muchas cosas. Desde encender un LED en remoto, crear una API Rest en 5 minutos o conectar con una base de datos InfluxDB para graficar con Grafana. Aunque es visual, se requieren unos conocimientos técnicos en programación y tecnología medios y/o avanzados.

También permite programar en JavaScript funciones que pueden hacer de todo. Node-RED da mucho juego para muchas cosas.

El editor de flujos de Node-RED consiste en una sencilla interfaz en HTML, accesible desde cualquier navegador, en la que arrastrando y conectando nodos entre sí, es posible definir un flujo que ofrezca un servicio.

Como vemos, el editor se estructura como un entorno gráfico sencillo con:

  • Paleta de Nodos: Muestra todos los nodos que tenemos disponibles en nuestra instalación. Como veremos más adelante, existe un repositorio de nodos desarrollados por otros usuarios e incluso podemos crear e instalar nuestros propios nodos.
  • Editor: Nos permite arrastrar nodos desde la paleta y conectarlos. De este modo iremos creado el flujo de operación. El lienzo de node-red no tiene límites y se puede hacer zoom.

Asimismo, seleccionando cada nodo, se muestra a la izquierda su formulario de configuración, donde es posible establecer las propiedades concretas de dicho nodo:

Usar el editor: https://nodered.org/docs/user-guide/editor/

En node-Red los nodos se comunican entre sí mediante msg, que es un objeto con propiedades y que podemos añadir propiedades. La propiedad principal es payload, pero puedo añadir las que quiera. Puedo añadir otras propiedades como temperatura.

Los nodos se unen en flujos que se ejecutan en paralelo.

En los nodos con entrada y salida, lo que entra sale y se mantiene la información salvo la que modifiques en el nodo. 

Hay tres propiedades principales y que siempre existen:

  • número de mensaje
  • topic
  • payload

Ejemplo:

  • {“_msgid”:”f5daa4f0.f34888″,”topic”:”timestamp”,”payload”:”2020-03-08T11:53:50.646Z”}

El valor de una propiedad puede ser cualquier tipo de JavaScript válido como:

  • Boolean – true, false
  • Number – eg 0, 123.4
  • String – “hello”
  • Array – [1,2,3,4]
  • Object – { “a”: 1, “b”: 2}
  • Null

Más información sobre los tipos en javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

Disponemos de un debug que nos muestra el objeto y la podemos sacar por pantalla.

Los nodos son la unidad mínima que podemos encontrar en Node-RED. En la parte izquierda de la interfaz podemos ver la lista de nodos que vienen instalados por defecto y organizados en categorías según su funcionalidad.

Hay nodos de entrada, salida, funciones, social, para almacenar datos, etc… Esto muestra la capacidad de Node-RED de comunicarse con otros servicios.

Se pueden clasificar en tres tipos de nodos:

  • Nodos que sólo admiten entradas: sólo admiten datos de entrada para ser enviados a algún sitio como pueda ser una base de datos o un panel de control.
  • Nodos que sólo admiten salidas: son los nodos que sólo ofrecen datos tras recibirlos a través de diferentes métodos como por ejemplo un mensaje MQTT.
  • Nodos que admiten entradas y salidas: estos nodos nos permiten la entrada de datos y luego ofrecen una o varias salidas. Por ejemplo, podemos leer una temperatura, transformarla en grados Celsius y enviarla a otro nodo.

Los nodos los arrastramos al flujo o flow, en inglés. Aquí es donde tendremos la lógica para cada dato a base de ir arrastrando nodos.

Algunos de los nodos disponibles en Node-RED, los nodes de core son: https://nodered.org/docs/user-guide/nodes 

  • Inject: para disparar un flujo manualmente. Inyecta una payload a un topic.
  • Debug: sirve para mostrar mensajes en la zona de debug de Node-RED. Puede habilitarse o deshabilitarse.
  • Function: permite programar un nodo mediante JavaScript, pero es mejor buscar nodos hechos que hagan la función deseada, por ejemplo un temporizador.
  • Change: se usa para modificar las propiedades de un mensaje sin usar funciones
  • Switch: permite que los mensajes sean enrutados a diferentes ramas de un flujo mediante un conjunto de reglas contra el mensaje.
  • Template: se usa para generar texto usando las propiedades de un mensaje.

Trabajar con mensajes en Node-RED: https://nodered.org/docs/user-guide/messages 

Escribir funciones en Node-RED: https://nodered.org/docs/writing-functions 

Existen además muchos tipos de nodos que podemos ver en https://flows.nodered.org/ que son contribuciones de terceros.

Los nodos se organizan en flujos, para organizar los nodos como queramos. Es recomendable agrupar en flujos tareas que tengan relación entre ellos, pero solo a modo organizativo.

En node-red se puede trabajar con variables:

  • Contexto – solo aplica a un nodo
  • Flujo – aplica solo al flujo
  • globales – aplica a todo.

Cookbook de nodered: https://cookbook.nodered.org/ 

Node-RED programming guide: http://noderedguide.com/ 

Administración de node red mediante comando: https://nodered.org/docs/node-red-admin

Running node-red: https://nodered.org/docs/getting-started/running 

Más información: https://programarfacil.com/blog/raspberry-pi/introduccion-node-red-raspberry-pi/ 

Por ejemplo, podemos suscribirnos a un topic de MQTT, recibir un dato de temperatura y mostrarlo en la pantalla de debug:

primer flujo node-red

Pero no sólo podemos hacer esto, también podemos conectar con servicios de terceros como IFTTT, ThingSpeak, Google Home, ThingerIO, etc…

Primeros Flujos

Ejercicios

Hacer un programa que publicando en el topic /raspberrypi/led el texto “on” se encienda y publicando off se apague. 

Hacer un flujo que cada vez que se pulse el botón publique en el topic /raspberrypi/boton el valor recibido

Hacer otro flujo para que al pulsar el botón se encienda al detectar un flanco ascendente y al volver a pulsar se apague.

Solución: https://github.com/jecrespo/Curso-Node-RED

Itinerario Digitalización Profesorado

Con este itinerario se busca que el profesorado desde primaria hasta bachillerato e incluso formación profesional básica y ciclos formativos de grado medio de formación profesional, conozca las nuevas tecnologías libres relacionadas con la programación y la computación física, para utilizarlas en el aula dentro del programa STEM o con aplicaciones específicas para el aprendizaje de otras áreas.

El objetivo es la capacitación del profesorado para la código-alfabetización y pensamiento computacional.

Se presenta el siguiente itinerario desde un nivel básico para ir paso a paso profundizando en sus contenidos:

Iniciación Arduino para Docentes (Nivel 1)20 h
Iniciación Raspberry Pi para Docentes (Nivel 1)20 h
Iniciación a Micro:bit (Nivel 1)20 h
Programación Visual para Arduino (Nivel 2)20 h
Programación Visual para Raspberry Pi (Nivel 2) – EN DESARROLLO20 h
Programación Visual Micro:bit (Nivel 2) – EN DESARROLLO20 h
Proyectos Arduino para Docentes (Nivel 3)20 h
Proyectos Raspberry Pi para Docentes (Nivel 3) – EN DESARROLLO20 h
Robótica Educativa (Nivel 3) – EN DESARROLLO20 h

Ver Anexo I con el material necesario para impartir los cursos de este itinerario.

Iniciación Arduino para Docentes (Nivel 1)

Objetivo

El objetivo de este curso es que el alumno obtenga un conocimiento inicial de la plataforma Arduino y sea capaz de realizar proyectos para aplicar en el aula con cualquiera de las diferentes placas Arduino o compatibles.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer el HW Arduino
  • Manejar la plataforma Arduino
  • Saber cuándo Arduino es una buena solución a un proyecto o idea.
  • Conocer el lenguaje de programación
  • Conocer el potencial de Arduino en el aula
  • Manejar sensores y periféricos con Arduino

Requisitos Alumnos

No son necesarios requisitos previos de los alumnos para asistir a este curso

Contenido del Curso

  • Primeros Pasos con Arduino
  • IDE Arduino
  • Simuladores Arduino
  • Tipos de Placas y Shields Arduino
  • Hardware Educativo
  • Herramientas de Programación Visual
  • Programación Básica Arduino
  • Componentes Electrónicos
  • Manejo de Sensores

Iniciación Raspberry Pi para Docentes (Nivel 1)

Objetivo

El objetivo de este curso es que el alumno obtenga un conocimiento inicial de la placa de desarrollo basada en linux y sea capaz de instalar, configurar y realizar proyectos sencillos para aplicar en el aula.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer el HW Raspberry Pi
  • Instalar Raspbian
  • Realizar configuraciones básicas
  • Saber cuándo Raspberry Pi es una buena solución a un proyecto educativo
  • Conocer la programación visual Scratch
  • Aprender a usar el GPIO de Raspberry Pi
  • Manejar sensores y periféricos con Raspberry Pi

Requisitos Alumnos

No son necesarios requisitos previos de los alumnos para asistir a este curso

Contenido del Curso

  • Qué es Raspberry Pi
  • HW Raspberry Pi
  • Tipos de Placas y Hats Raspberry Pi
  • GPIO
  • Instalación Raspbian
  • Programación Scratch
  • Entradas y Salidas Digitales
  • Manejo de Sensores y periféricos

Iniciación a Micro:bit (Nivel 1)

Objetivo

El objetivo de este curso es que el alumno obtenga un conocimiento inicial de la plataforma de programación Micro:bit y sea capaz de realizar proyectos para aplicar en el aula con cualquiera de las diferentes placas Arduino o compatibles.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer el HW Micro:bit
  • Manejar la plataforma Micro:bit
  • Saber cuándo Micro:bit es una buena solución para un proyecto en el aula.
  • Conocer el lenguaje de programación
  • Conocer el potencial de Micro:bit en el aula
  • Manejar sensores y periféricos con Micro:bit

Requisitos Alumnos

No son necesarios requisitos previos de los alumnos para asistir a este curso

Contenido del Curso

  • Primeros Pasos con Micro:bit
  • Hardware Micro:it
  • Programación Micro:bit
  • Hardware adicional para Micro:bit
  • Componentes Electrónicos
  • Manejo de Sensores

Programación Visual para Arduino (Nivel 2)

Objetivo

El objetivo de este curso es que el alumno aprenda las opciones para programar Arduino con lenguajes visuales y utilice la opción más adecuada en cada caso. Con estos lenguajes se podrá desarrollar el pensamiento computacional en el aula e introducir los principios de la programación.

Este curso está diseñado para personas que ya conocen Arduino y el mundo de los microcontroladores.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/

Al finalizar el curso el alumno será capaz de:

  • Programar Arduino usando diversos lenguajes visuales
  • Programar Arduino usando el lenguaje propio de Arduino
  • Programar Arduino usando otros lenguajes (Lua, Go, Python, etc…)
  • Manejar librerias Arduino
  • Programas placas y microcontroladores compatibles con Arduino
  • Hacer debug de programas
  • Programar comunicaciones serie.

Requisitos Alumnos

Para realizar este curso, el alumno debe haber asistido a alguno de los cursos de iniciación de Arduino o tener experiencia en la plataforma de hardware libre Arduino y tener conocimientos básicos de electrónica. 

Contenido del Curso

  • Repaso Conceptos Arduino 
  • Lenguajes de Programación Visual
  • Programación Arduino
  • Otros Lenguajes de Programación Arduino
  • Librerias Arduino
  • Comunicaciones Arduino
  • Debug Arduino

Proyectos Arduino para Docentes (Nivel 3)

Objetivo

El objetivo de este curso es el perfeccionamiento técnico para formadores enfocado a “Realización de Proyectos basados en Arduino.“

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Manejar la plataforma Arduino
  • Saber cuándo Arduino es una buena solución a un proyecto o idea.
  • Conocer el lenguaje de programación
  • Programar y ejecutar programas en la plataforma Arduino y compatibles
  • Usar eficazmente el entorno de programación
  • Aprender a manejar componentes de hardware para recibir señales externas mediante sensores
  • Controlar elementos que nos rodean para interactuar con el mundo físico mediante actuadores
  • Conectar Arduino a Internet
  • Usar Arduino en un entorno de aprendizaje por proyectos
  • Planificar, diseñar e implementar proyectos basados en Arduino.
  • Documentar proyectos basados en Arduino y publicarlos en plataformas públicas.

Requisitos Alumnos

Para realizar este curso, el alumno debe haber asistido a alguno de los cursos de iniciación de Arduino o tener experiencia en la plataforma de hardware libre Arduino y tener conocimientos básicos de electrónica. 

Contenido del Curso

  • Arduino en la Educación
  • Hardware Arduino
  • Programación Arduino
  • Manejo de Arduino
  • Proyectos con Arduino
  • Ejecución de Proyectos Arduino

Estructuras de Control

En programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.

Con las estructuras de control se puede:

  • De acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
  • De acuerdo con el valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
  • Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
  • Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
  • Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Todos los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis; cada lenguaje tiene una sintaxis propia para expresar la estructura.

En Visualino las estructuras de control se encuentran en el apartado “control”:

Estructuras de decisión

if:  es un estamento que se utiliza para probar si una determinada condición se ha alcanzado, como por ejemplo averiguar si un valor analógico está por encima de un cierto número, y ejecutar una serie de declaraciones (operaciones) que se escriben dentro de llaves, si es verdad. Si es falso (la condición no se cumple) el programa salta y no ejecuta las operaciones que están dentro de las llaves.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/if/

if… else:  viene a ser un estructura que se ejecuta en respuesta a la idea “si esto no se cumple haz esto otro”. Por ejemplo, si se desea probar una entrada digital, y hacer una cosa si la entrada fue alto o hacer otra cosa si la entrada es baja.

else: puede ir precedido de otra condición de manera que se pueden establecer varias estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma que sean mutuamente excluyentes pudiéndose ejecutar a la vez. Es incluso posible tener un número ilimitado de estos condicionales. Recuerde sin embargo que sólo un conjunto de declaraciones se llevará a cabo dependiendo de la condición probada.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/else/

Tutorial if() – Comparar el valor leido de un potenciometro con un umbral y encender un led si el valor leido es mayor que el umbral https://www.arduino.cc/en/Tutorial/ifStatementConditional

Uso de if con Visualino

Para ampliar más información sobre if…else en Arduino, ver este fantástico artículo de Luis del Valle https://programarfacil.com/blog/arduino-blog/if-else-arduino/

switch..case: Al igual que if, switch..case controla el flujo del programa especificando en el programa que código se debe ejecutar en función de unas variables. En este caso en la instrucción switch se compara el valor de una variable sobre los valores especificados en la instrucción case.

break es la palabra usada para salir del switch. Si no hay break en cada case, se ejecutará la siguiente instrucción case hasta que encuentre un break o alcance el final de la instrucción.

default es la palabra que se usa para ejecutar el bloque en caso que ninguna de las condiciones se cumpla.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/

Uso de switch con Visualino

Tutorial Switch-case – Leer una fotorresistencia y en función de unos valores predefinidos imprimir la cantidad de luz en 4 valores: noche, oscuro, medio, claro https://www.arduino.cc/en/Tutorial/SwitchCase

Estructuras de repetición

for: La declaración for se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a testear la condición. La declaración for tiene tres partes separadas por (;). La inicialización de la variable local se produce una sola vez y la condición se testea cada vez que se termina la ejecución de las instrucciones dentro del bucle. Si la condición sigue cumpliéndose, las instrucciones del bucle se vuelven a ejecutar. Cuando la condición no se cumple, el bucle termina.

Cualquiera de los tres elementos de cabecera puede omitirse, aunque el punto y coma es obligatorio. También las declaraciones de inicialización, condición y expresión puede ser cualquier estamento válido en lenguaje C sin relación con las variables declaradas.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/for/

Tutorial for() – efecto con leds coche fantastico https://www.arduino.cc/en/Tutorial/ForLoopIteration

while: Un bucle del tipo while es un bucle de ejecución continua mientras se cumpla la expresión colocada entre paréntesis en la cabecera del bucle. La variable de prueba tendrá que cambiar para salir del bucle. La situación podrá cambiar a expensas de una expresión dentro el código del bucle o también por el cambio de un valor en una entrada de un sensor.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/while/

Tutorial while() – calibrar el valor de un sensor analógico https://www.arduino.cc/en/Tutorial/WhileStatementConditional

do..while: El bucle do while funciona de la misma manera que el bucle while, con la salvedad de que la condición se prueba al final del bucle, por lo que el bucle siempre se ejecutará al menos una vez.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/dowhile/

goto: transfiere el flujo de programa a un punto del programa que está etiquetado.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/goto/

break: se usa en las instrucciones do, for, while para salir del bucle de una forma diferente a la indicada en el bucle.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/break/

continue: se usa en las instrucciones do, for, while para saltar el resto de las instrucciones que están entre llaves y se vaya a la siguiente ejecución del bucle comprobando la expresión condicional.

Referencia Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/continue/

En Visualino están disponibles todas las estructuras de repetición

Y por su puesto ante cualquier duda: https://www.arduino.cc/reference/en/