Archivo de la etiqueta: scratch

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 Visual con S4A

Además de la programación tradicional de Arduino, existen varios proyectos para programar Arduino de forma visual añadiendo bloques al estilo de scratch, blockly o similar.

Esta programación es limitada respecto a la programación tradicional, pero puede ser una opción para iniciarse tanto niños como adultos.

Otro problema de este tipo de programación es que no está estandarizada y cada solución aunque parecida en el concepto, son distintas.

Proyectos de programación visual:

S4A

S4A es Scratch for Arduino. Toda la información está en la Web: http://s4a.cat/index_es.html

S4A es una modificación de Scratch que permite programar la plataforma de hardware libre Arduino de una forma sencilla. Proporciona bloques nuevos para tratar con sensores y actuadores conectados a una placa Arduino. También cuenta con un panel de sensores similar al de la PicoBoard.

Fue desarrollado por el equipo de Smalltalk del Citilab en el año 2010, y desde entonces se ha usado en todo el mundo para una gran variedad de proyectos.

Otro de sus objetivos es proporcionar una interfaz de alto nivel para programadores de Arduino con funcionalidades tales como la interacción con un conjunto de placas mediante eventos de usuario.

Tutorial de S4A: http://recursostic.educacion.es/observatorio/web/fr/software/software-educativo/1018-monograficodesarrollos-de-scratch-para-robotica-enchanting-y-s4a?start=3

Manual S4A: http://vps34736.ovh.net/S4A/s4a-manual.pdf

Primeros pasos con S4A: https://programarfacil.com/blog/arduino-blog/s4a-primeros-pasos-con-scratch/

Una de las limitaciones que tiene S4A es la conectividad. Los componentes deben conectarse de una manera determinada para su buen funcionamiento. Esto no impide que podamos aprender a programar con esta plataforma, solo limitará el tipo de proyectos que podemos hacer con ella.

Los diferentes componentes que podemos tratar son:

  • 6 entradas analógicas (A0 a A5)
  • 2 entradas digitales (2 y 3)
  • 3 salidas analógicas PWM (5, 6 y 9)
  • 3 salidas digitales (10, 11 y 13)
  • 4 salidas digitales para conectar servomotores (4, 7, 8 y 12)

S4A es compatible con los Arduino Diecimilia, Duemilanove y Uno. Puede que con otras placas funcione, pero habría que comprobarlo.

Instalar S4A en el ordenador

S4A funciona sobre los tres sistemas operativos de escritorio más populares.

Ir a la sección de descarga de http://s4a.cat/index_es.html y descargar para el Sistema Operativo correspondiente.

Para trabajar con S4A en necesario instalar en el Arduino que usemos el firmware que nos proporciona S4A.

Proceso:

Buen tutorial de instalación: https://www.prometec.net/instalacion-scratch/

Instalar el firmware en el Arduino

Este firmware es un programa que debe instalarse en vuestra placa Arduino para poder comunicar con la placa desde S4A. Para ello es necesario instalar el IDE de Arduino.

  • Descargar e instalar el entorno Arduino siguiendo las instrucciones de http://arduino.cc/en/Main/Software.
  • Descargar firmware de la web de S4A http://s4a.cat/index_es.html sección descargas.
  • Conectar la placa Arduino a un puerto USB de vuestro ordenador
  • Abrir el archivo de firmware (S4AFirmwarexx.ino) desde el entorno Arduino
  • En el menú Herramientas, seleccionar la versión de la placa y el puerto serie donde está conectada la placa
  • Cargar el firmware a la placa mediante la opción de menú Archivo > Subir

Objetos Arduino

En S4A los objetos Arduino proporcionan bloques para las funcionalidades básicas del micro-controlador, escrituras y lecturas digitales y analógicas, y otras funcionalidades de más alto nivel. También encontraréis bloques para tratar con motores estándar y servomotores de rotación contínua.

En S4A, una placa Arduino se representa con un tipo especial de sprite. El sprite Arduino encontrará automáticamente el puerto USB en que se haya conectado la placa.

S4A habilita 6 entradas analógicas (pines analógicos), 2 entradas digitales (pines digitales 2 y 3), 3 salidas analógicas (pines digitales 5, 6 y 9), 3 salidas digitales (pines 10, 11 i 13) y 4 salidas especiales para conectar servomotores de rotación continua Parallax (pines digitales 4, 7, 8 y 12).

Es posible comunicarse inalámbricamente con una placa mediante un módulo de RF, como Xbee y con bluetooth.

S4A es compatible con Scratch, de forma que es posible abrir proyectos de Scratch desde S4A.

Entorno S4A

La interfaz de S4A es muy parecida a la de Scratch 1.4 al ser una versión del mismo. Podemos importar los proyectos que ya tengamos de dicha versión de Scratch y adaptarlos para trabajar con nuestro Arduino. S4A, al igual que Scratch 1.4 trabajan con proyectos con la extensión .sb. En el supuesto de querer basar nuestro trabajo en un proyecto de Scratch 2.0 (extensión .sb2) podríamos utilizar el Retro Convertidor de blob8108 o seguir las instrucciones dadas en esta wiki para convertir el archivo.

S4A 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 arrastrara un lápiz durante su trayectoria.
    • Control: Las instrucciones incluídas en esta sección son imprescindibles 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 interactuán con Arduino.
    • Los sprites son similares al entorno de scratch y no interactúan con Arduino.

En la parte del escenario veremos una tabla con pines de entradas y salidas de la placa Arduino, y un dibujo de nuestra placa. Si esta no está conectada al equipo mediante el USB aparecerá una ventana emergente con el mensaje “Buscando placa…“, que desaparecerá cuando el S4A la reconozca.

Scratch for Arduino tiene varios bloques específicos para interactuar con la placa de Arduino. Se encuentran en la categoría “Movimiento” y permite enviar instrucciones al micro-controlador de la placa de Arduino, como escrituras y lecturas digitales. También hay bloques para tratar con motores estándar y servomotores de rotación continua.

Por otro lado, la parte de edición de objetos incorpora botones para crear, dibujar e importar objetos Arduino. Se podría conectar otra placa de Arduino y asociarla a otro objeto en un momento dado.

Programación con S4A

Normalmente los programas los empezaremos con el primero de los bloques (El de la bandera verde) y todos los demás están por debajo de éste. Pulsamos con el botón izquierdo del ratón encima de él y lo arrastramos hacia la parte central de S4A. Con este bloque lo que hacemos es que el programa se ejecute cuando pulsemos la bandera verde de la parte de arriba a la derecha y hasta que pulsemos en el hexágono rojo.

Como queremos que el programa se ejecute un número indefinido de veces, vamos a coger ahora el bloque de control “por siempre”. Si nos fijamos en la forma de este bloque veremos que la parte de arriba encaja con la parte de abajo del bloque con el que hemos empezado.

Además el bloque “por siempre” tiene un hueco en medio en el que podremos encajar otras instrucciones, de manera que todo lo que esté dentro de él se ejecute en secuencia hasta el final. Una vez que termina, vuelve a empezar desde el principio del bloque, haciendo un ciclo sin fin.

Por ejemplo el blink se haría así:

Para ejecutar el programa hay que pulsar la bandera verde, o también podemos hacer click con el botón izquierdo encima de cualquiera de los bloques de instrucciones. Veremos que todos los bloques de nuestro programa y la bandera verde del escenario se iluminan y el LED de nuestra placa Arduino comienza a parpadear cada dos segundos.

Por último, y si queremos guardar nuestro programa iremos a la pestaña “Archivo”, y le daremos a “Guardar Como…”. En ese menú tenemos también las opciones de “Abrir…” para abrir un proyecto que hayamos guardado anteriormente y “Guardar” para guardar el archivo encima del que tenemos abierto.

Escenario y Disfraces

En el escenario podemos ver en el monitor de nuestro PC cómo se desarrolla nuestro programa. Es la pantalla en blanco que hay arriba a la derecha, donde aparece por defecto un dibujo de la placa Arduino. Ese dibujo es un ejemplo de lo que llamamos “Disfraces” en S4A.

Lo primero que haremos será ir a la pestaña “Disfraces”. Ahí podemos ver que el único que hay es un dibujo de una placa Arduino que viene por defecto. Para dibujar un disfraz nuevo haremos click en el botón “Pintar”.

Para que en el escenario aparezca un led encendiendose y apagandose hay que pintar dos disfraces uno con un círculo rojo y otro blanco.

Los bloques relacionados con los disfraces están en el grupo “Apariencia”. En este caso usaremos el bloque “cambiar el disfraz a”.

Y el programa queda:

Más información:

Cómo Funciona S4A

S4A se comunica por puerto serie con Arduino que está corriendo un firmware que ejecuta las acciones que se indica desde S4A.

Firmware: https://github.com/jecrespo/S4A/tree/master/Firmware%20Oficial/S4AFirmware16

El firmware no es más que un intérprete de las instrucciones que le manda S4A por el puerto serie. S4A permite controlar tantas placas como puertos USB tenga vuestro PC.

Especificación del protocolo de comunicación entre S4A y Arduino: http://s4a.cat/downloads/s4a-protocol.pdf

S4A interactúa con Arduino enviando el estado de los actuadores y recibiendo el estado de los sensores cada 75 ms, por lo tanto el ancho del pulso tiene que ser mayor que éste período. El intercambio de datos sigue el protocolo PicoBoard.

Picoboard: https://www.picocricket.com/picoboard.html

Analizar el firmware que ejecuta Arduino y entender el código: https://github.com/jecrespo/S4A/blob/master/Firmware%20Oficial/S4AFirmware16/S4AFirmware16.ino

S4A en Android

Aplicación simple de Android que puede comunicarse con S4A via HTTP mediante el protocolo de sensores remotos de Scratch.

La aplicación Android utiliza un protocolo muy sencillo sobre el protocolo de mensajes HTTP de Scratch, la cual cosa permite interactuar con S4A desde un navegador o cualquier otra aplicación con acceso a la red.

Para ello debe activarse la opción de sensores remotos en S4A (clic derecho en cualquier bloque de «Sensores»).

Especificación de los mensajes

Enviar un mensaje: 

 
[IP]:42001/broadcast=[nombre-del-mensaje]

Enviar el valor de un sensor remoto (por ejemplo, el acelerómetro del cliente, la posición del puntero del ratón, etc):

 
[IP]:42001/sensor-update=[nombre-del-sensor]=[valor]

Actualizar una variable de S4A: 

 
[IP]:42001/vars-update=[nombre-de-la-variable]=[valor]

Se pueden probar los mensajes desde la web:http://s4a.cat/android/index.html que manda las instrucciones de la API.

La forma de trabajar es que desde la app de S4A se conecta al ordenador que ejecuta S4A y este manda las instrucciones a Arduino. Para ello es imprescindible que tanto S4A como HiS4A tienen que estar conectados a la misma red local.

Toda la información:

Más información

Ejercicios

Listado de materiales y prácticas de El Cable Amarillo:

Programación Visual con Scratch

Scratch es un lenguaje de programación visual desarrollado por el MIT Media Lab. Scratch es utilizado por estudiantes, académicos, profesores y padres para crear fácilmente animaciones, juegos (también educativos) e interacciones etc. Para las escuelas se convierte en una oportunidad para ayudar a los estudiantes en el desarrollo de habilidades mentales mediante el aprendizaje de la programación sin necesidad de saber del programa. Sus características ligadas al pensamiento computacional han hecho que sea muy difundido actualmente en la educación de niños adolescentes y adultos.

Scratch es un entorno de aprendizaje de lenguaje de programación, que permite a los principiantes o personas sin conocimiento alguno de programación, obtener resultados sin tener que hacer nada de nada o aprender a escribir de manera sintácticamente correcta primero.

El código fuente de Scratch y sus derivados se basan en Squeak, que a su vez se basa en Smalltalk-80. La versión 2 de Scratch está implementada en ActionScript, con un intérprete experimental basado en JavaScript siendo desarrollado en paralelo.

Web: https://scratch.mit.edu/

Wiki Scratch: https://wiki.scratch.mit.edu/wiki/Scratch_Wiki_Home

Github Scratch: https://github.com/LLK

Versiones de Scratch: https://wiki.scratch.mit.edu/wiki/Scratch_Versions

Más información: https://es.wikipedia.org/wiki/Scratch_(lenguaje_de_programaci%C3%B3n)

Código fuente de Scatch: https://wiki.scratch.mit.edu/wiki/Scratch_1.4_Source_Code

Scratch se ejecuta on-line en https://scratch.mit.edu/ pero puede descargarse una version off-line.

Editor offline scratch: https://scratch.mit.edu/download

faq scratch: https://scratch.mit.edu/info/faq/

Programación con scratch

  • Escenarios
  • Movimientos
  • Variables
  • Bucles, condicionales y operadores

Descripción Bloques

Para lograr que incluso un niño aprenda a usar Scratch, el entorno de desarrollo utiliza un lenguaje de programación totalmente visual, compuesto por bloques coloreados que se encajan formando estructuras básicas como bucles o secuencias. Este pseudocódigo visual permite editar fácilmente los parámetros de cada función.

Los comandos de  Scratch se dividen en ocho categorías con las que se pueden insertar y controlar sonidos, imágenes, variables y otros elementos. Para crear un programa en Scratch sólo hay que arrastrar los elementos multimedia el escenario y añadir comandos en la pestaña Programas.

Movimiento

Apariencia

Control

Sensores

Sonido

Lápiz

Operadores

Variables

Cheatsheet Scratch

Web de scratch para dummies http://www.dummies.com/programming/scratch/scratch-for-kids-for-dummies-cheat-sheet/

Programación Visual Arduino

Además de la programación tradicional de Arduino, existen varios proyectos para programar Arduino de forma visual añadiendo bloques al estilo de scratch, blockly o similar.

Esta programación es muy limitada pero puede ser una opción para iniciarse.

Otro problema de este tipo de programación es que no está estandarizada y cada solución aunque parecida en el concepto, son distintas.

Proyectos de programación visual:

  • Ardublock: http://blog.ardublock.com/
  • Sistema de bq: http://bitbloq.bq.com/
  • Scratch es un entorno de aprendizaje de lenguaje de programación, que permite a los principiantes o personas sin conocimiento alguno de programación, obtener resultados sin tener que hacer nada de nada o aprender a escribir de manera sintácticamente correcta primero.
    S4A es una modificación de Scratch que permite programar la plataforma de hardware libre Arduino de una forma sencilla. Proporciona bloques nuevos para tratar con sensores y actuadores conectados a una placa Arduino. Tutorial.
    Manual S4A: http://vps34736.ovh.net/S4A/s4a-manual.pdf

Ejercicio: Entrar en http://bitbloq.bq.com/ y probar a hacer el ejercicio blink.

Tutorial para aprender bitbloq: http://diwo.bq.com/course/aprende-robotica-y-programacion-con-bitbloq-2/

Solución a blink: http://bitbloq.bq.com/#/project/5551b57ee4b0a4aae77c3bac:62b14501-6f8e-44ae-9382-30787ccb8716

Ejemplo puerto serie: http://bitbloq.bq.com/#/project/5742e955e4b0ca2d53dd3751:b01296cb-3d88-41ff-8fa1-7d8c495b7c59

Ejemplo Botón: http://bitbloq.bq.com/#/project/56dd479ae4b0405625badb0b:95e0d4e0-d3b7-4aed-b0dc-7d669284f821  

Lenguaje de programación de Arduino, estructura de un programa

Para programar un Arduino, el lenguaje estándar es C++, aunque es posible programarlo en otros lenguajes. No es un C++ puro sino que es una adaptación que proveniente de avr-libc que provee de una librería de C de alta calidad para usar con GCC en los microcontroladores AVR de Atmel y muchas funciones específicas para los MCU AVR de Atmel.

avr-binutils, avr-gcc y avr-libc son las herramientas necesarias para programar los microcontroladores AVR de Atmel.

AVR-libc reference manual de Atmel: http://www.atmel.com/webdoc/AVRLibcReferenceManual/index.html

Dispositivos soportados: http://www.atmel.com/webdoc/AVRLibcReferenceManual/index_1supp_devices.html

Webs del proyecto: http://www.nongnu.org/avr-libc/ y http://savannah.nongnu.org/projects/avr-libc/

Tratamiento de la memoria de la MCU por avr-libc: http://www.atmel.com/webdoc/AVRLibcReferenceManual/malloc_1malloc_intro.html

Módulos de avr-libc: http://www.atmel.com/webdoc/AVRLibcReferenceManual/ch20.html

GNU C libc: http://www.gnu.org/software/libc/index.html

GCC es un conjunto de compiladores que se considera el estándar para los Sistemas Operativos derivados de UNIX y requiere de un conjunto de aplicaciones conocidas como binutils que son unas herramientas de programación para la manipulación de código de objeto.

Cuando GCC está construido para ejecutarse en un sistema como Linux, Windows o mac OS y generar código para un microcontrolador AVR, entonces se denomina avr-gcc

avr-gcc es el compilador que usa el IDE de arduino para convertir el sketch en C++ a un fichero binario (.hex) que es el que se carga en la flash del MCU y que ejecuta.

Información sobre las binutils: http://www.atmel.com/webdoc/AVRLibcReferenceManual/overview_1overview_binutils.html

Proyecto GCC: https://gcc.gnu.org/

Pero para programar proyectos de complejidad media, la mayoría de los comandos que necesitemos con Arduino los encontraremos en la referencia de programación de Arduino en el “Arduino Reference”, que es donde debemos recurrir para cualquier duda de programación que surja. Arduino provee de unas librerías que facilitan la programación del microcontrolador. http://arduino.cc/en/Reference/HomePage

El gran éxito de Arduino en parte se debe a que nos permite programar un MCU sin tener que saber todo lo anterior y nos da unas herramientas sencillas y específicas para programar unos microcontroladores que suministra en sus placas.

Por ejemplo veamos las funciones que nos ofrece para comunicar por el puerto serie: http://arduino.cc/en/Reference/Serial

El lenguaje de programación usado por Arduino está basado en Processing: http://www.gnu.org/software/libc/index.html,  es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital.

Web del proyecto de Proccesing: https://processing.org/

Processing en github: https://github.com/processing/processing

Processing es útil cuando queremos comunicar Arduino con un ordenador y mostrar datos o guardar datos, pero también podemos usar otros lenguajes de programación como python, .NET o cualquier otro que conozcamos.

Arduino trae algunos ejemplos para trabajar con Processing en el apartado communication, por ejemplo, para hacer una gráfica de datos en http://arduino.cc/en/Tutorial/Graph

Ver el reference y la librería Serial de processing para darnos cuenta en la similitud de los lenguajes: https://processing.org/reference/ y https://processing.org/reference/libraries/serial/

También disponemos de una librería de Arduino dentro de processing que nos permite interactuar entre processing y arduino: http://playground.arduino.cc/interfacing/processing

Por supuesto Arduino se puede programar en otros lenguajes y desde otros entornos de programación, lo que va  a hacer que el código sea diferente. Cabe destacar scratch como un lenguaje visual que hace innecesario saber programación o Atmel Studio que es la herramienta que proporciona Atmel.

Más información en: https://aprendiendoarduino.wordpress.com/2014/11/20/tema-4-conceptos-basicos-de-programacion/

Como ya hemos visto, la estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes necesarias, o funciones, encierran bloques que contienen declaraciones, estamentos o instrucciones.