Programa Arduino Con Mblock (Scratch)

Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. En este capítulo ofrecemos una guía de referencia rápida que…

Introducción

Para aprender a programar esta famosa tarjeta microcontroladora, no hace falta saber C++ y lenguajes sofisticados, en este curso proponemos utilizar el lenguaje didáctico de mBlock que es igual al Scratch con unas instrucciones específicas para robótica (bueno, también cambia el gato por un oso panda si nos ponemos meticulosos).

Objetivos

El pensamiento computacional

Hay muchas herramientas para trabajar en los niños el lenguaje de las máquinas, pero ¿cual elegir? ¿cual es el apropiado a qué edad?¿El ARDUINO donde se sitúa? para aclarar un poco hemos elaborado esta hoja de ruta, es orientativa de las herramientas y robots elegidos por Catedu para los cursos, evidentemente hay otros robots y otras herramientas muy válidas, pero no podemos ponerlas todas y complicar el esquema, así que preferimos ser claros que abarcarlo todo:

Oferta de formación en Pensamiento computacional del Centro Aragonés de Tecnologías para la Educación.

Tenemos un grupo Telegram Robótica Educativa en Aragón, si estás interesado en unirte, envía un mensaje por Telegram (obligatorio) a CATEDU 623197587 https://t.me/catedu_es y te añadimos en el grupo

Robótica y accesibilidad

1.- Introducción

Durante mucho tiempo la robótica fue patrimonio de personas y/o instituciones con alta capacidad económica (podían adquirir las placas con microcontroladores comerciales) y capacidad intelectual (podían entender y programar el funcionamiento de las mismas) siempre dentro de los límites establecidos por las marcas comerciales y lo que pudieran “desvelar” de su funcionamiento, vigilando siempre que la competencia no “robara” sus secretos y “copiara” sus soluciones.

Todo esto saltó por los aires en torno a 2005 con la irrupción de un grupo de profesores y estudiantes jóvenes, que decidieron romper con esta dinámica, tratando de poner a disposición de su alumnado microcontroladores económicamente accesibles y que les permitieran conocer su funcionamiento, sus componentes, e incluso replicarlos y mejorarlos. Nacía Arduino y el concepto de Hardware Open Source. Detrás de este concepto se encuentra la accesibilidad universal. En un proyecto Open Source todo el mundo puede venir, ayudar y contribuir, minimizando barreras económicas e intelectuales.

Arduino traslada al hardware un concepto ya muy conocido en el ámbito del software, como es el software open source o software libre.

opensource.png

Software libre

Cuando los desarrolladores de software terminan su creación, tienen múltiples posibilidades de ponerlo a disposición de las personas, y lo hacen con condiciones específicas especificadas en una licencia. Esta licencia es un contrato entre el creador o propietario de un software y la persona que finalmente acabará utilizando este software. Como usuarios, es nuestro deber conocer las condiciones y permisos con las que el autor ha licenciado su producto, para conocer bajo qué condiciones podemos instalar y utilizar cada programa.

Existen muchas posibilidades de licencias: software privativo, comercial, freeware, shareware, etc.. Nos centraremos aquí en la de software libre.

GNU (https://www.gnu.org) es una organización sin ánimo de lucro que puso una primera definición disponible de lo que es software libre: Software libre significa que los usuarios del software tienen libertad (la cuestión no es el precio). Desarrollaron el sistema operativo GNU para que los usuarios pudiesen tener libertad en sus tareas informáticas. Para GNU, el software libre implica que los usuarios tienen las cuatro libertades esenciales:

1. ejecutar el programa.
2. estudiar y modificar el código fuente del programa.
3. redistribuir copias exactas.
4. distribuir versiones modificadas.

En otras palabras, el software libre es un tipo de software que se distribuye bajo una licencia que permite a los usuarios utilizarlo, modificarlo y distribuirlo libremente. Esto significa que los usuarios tienen libertad de ejecutar el software para cualquier propósito, de estudiar cómo funciona el software y de adaptarlo a sus necesidades, de distribuir copias del software a otros usuarios y de mejorar el software y liberar las mejoras al público.

El software libre se basa en el principio de la libertad de uso, y no en el principio de la propiedad. Esto significa que los usuarios tienen la libertad de utilizar el software de la manera que deseen, siempre y cuando no violen las condiciones de la licencia. El software libre es diferente del software propietario, que es el software que se distribuye con restricciones en su uso y modificación. El software propietario suele estar protegido por derechos de autor y solo se puede utilizar bajo los términos y condiciones especificados por el propietario del software.

Recomendamos la visualización de este video para entender mejor el concepto.

Más adelante, entorno a 2015, en Reino Unido, surgiría también la placa BBC Micro:bit, con la misma filosofía de popularizar y hacer accesible en este caso al alumnado de ese país la programación y la robótica. También hablaremos de ella.

2.- ARDUINO o LA ROBÓTICA ACCESIBLE

Arduino es una plataforma de hardware y software libre.

Hardware libre

Esto significa que tanto la placa Arduino como el entorno de desarrollo integrado (IDE) son de código abierto. Arduino permite a los usuarios utilizar, modificar y distribuir tanto el software como el hardware de manera libre y gratuita, siempre y cuando se respeten las condiciones de las licencias correspondientes.

El hardware libre es un tipo de hardware cuya documentación y diseño están disponibles de manera gratuita y libre para su modificación y distribución. Esto permite a los usuarios entender cómo funciona el hardware y adaptarlo a sus necesidades, así como también crear sus propias versiones modificadas del hardware.

Arduino surge como solución al elevado precio de los microcontroladores allá por el año 2005. En el ámbito de la educación, los microcontroladores solo se utilizaban en la etapa universitaria, y su coste era tan elevado que muchos proyectos de fin de carrera se quedaban únicamente en prototipos virtuales ya que las universidades no podían proveer a cada estudiante con un microprocesador, contando además que en el propio proceso de experimentación lo más habitual era que una mala conexión hiciera que se rompieran. Otro gran inconveniente era la dificultad de la programación. Cada fabricante entregaba su manual de programación, lo que hacía que de unos a otros no hubiera un lenguaje estándar, y la consecuente dificultad de interpretación. Además, su programación era a bajo nivel en lenguaje máquina. Generar una simple PWM requería una ardua y minuciosa secuenciación que podía llevar varias horas hasta conseguir el resultado deseado. Por este motivo, el enfoque de Arduino desde el principio fue ser Open Source tanto en hardware como en software. El desarrollo del hardware fue la parte más sencilla. Orientado a educación, sufre algunas modificaciones frente a los microprocesadores existentes para hacer más fácil su manejo y accesibilidad a cualquier sensor o actuador. El mayor esfuerzo se entregó en todas las líneas de código que hacían posible que ya no hubiera que programar a bajo nivel gracias al IDE de Arduino que incluía bibliotecas y librerías que estandarizaban los procesos y hacían tremendamente sencillo su manejo. Ahora el alumnado para mover un motor, ya no tenía que modificar las tramas de bits del procesador una a una, sino que bastaba con decir que quería moverlo en tal dirección, a tal velocidad, o a equis grados.

Acabábamos de pasar de unos costes muy elevados y una programación muy compleja a tener una placa accesible, open source y de bajo coste que además hacía muy accesible su programación y entendimiento, características fundamentales para su implantación en educación, hasta tal punto que su uso ya no era exclusivo de universidades, sino que se extiende a la educación secundaria.

arduinosecundaria.png

Este hecho es fundamental para el desarrollo del Pensamiento Computacional en el aula observándose que su accesibilidad y beneficios son tales, que alcanzan a centros con alumnado de toda tipología como la aplicación del pensamiento computacional y robótica en aulas con alumnos de necesidades especiales. Una vez más, aparece el concepto de accesibilidad asociado a esta filosofía Open Source.

A este respecto, recomendamos la lectura de este interesante blog, que tiene por título: ROBOTIQUEAMOS...” Experiencia de aproximación a la robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE). También recomendamos los trabajos robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE):  http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA

blogRobotiqueamos.jpg

Igualmente, la aparición de Arduino supone una gran facilidad para la aplicación de la robótica y la programación en la atención temprana, donde son numerosas sus aplicaciones desde ayudar a mitigar el déficit de atención en jóvenes autistas, hasta ayudar a socializar a los alumnos con dificultades para ello, o ayudar a alumnos de altas capacidades a desarrollar sus ideas.

Por otro lado su accesibilidad económica lo ha llevado a popularizarse en países de todo el mundo, especialmente en aquellos cuyos sistemas educativos no disponen en muchas ocasiones de recursos suficientes, lo que supone en la práctica una democratización del conocimiento y superación de brecha digital.

Filosofía del Arduino ver vídeo

Arduino y su IDE son la primera solución que aparece en educación con todas las ventajas que hemos enumerado, y esto hace que todos los nuevos prototipados y semejantes tengan algo en común, siempre son compatibles con Arduino

Para entender bien la filosofía de Arduino y  el hardware libre, os recomendamos este documental de 30 minutos. Arduino the Documentary

Scratch: software libre para el desarrollo del pensamiento computacional

Scratch es un lenguaje de programación visual desarrollado por el grupo Lifelong Kindergarten del MIT Media Lab. Scratch es un software libre. Esto significa que está disponible gratuitamente para todos y que se distribuye bajo una licencia de software libre, la Licencia Pública General de Massachusetts (MIT License). Esta licencia permite a los usuarios utilizar, modificar y distribuir el software de manera libre, siempre y cuando se respeten ciertas condiciones. Entre otras cosas, la licencia de Scratch permite a los usuarios utilizar el software para cualquier propósito, incluyendo fines comerciales. También permite modificar el software y distribuir las modificaciones, siempre y cuando se incluya una copia de la licencia y se indique que el software ha sido modificado. En resumen, Scratch es un software libre que permite a los usuarios utilizar, modificar y distribuir el software de manera libre y gratuita, siempre y cuando se respeten las condiciones de la licencia. De hecho, gracias a que está licenciado de esta forma, han surgido decenas de variaciones de Scratch para todo tipos de propósitos, eso sí, siempre educativos y relacionados con las enseñanzas de programación y robótica

3. BBC micro:bit y la Teoría del Cambio

BBC micro:bit, a veces escrito como Microbit o Micro Bit, es un pequeño ordenador del tamaño de media tarjeta de crédito, creado en 2015 por la BBC con el fin de promover el desarrollo de la robótica y el pensamiento computacional entre la población escolar del Reino Unido. Actualmente su uso está extendido entre 25 millones de escolares de 7 a 16 años de más de 60 países.

e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webpTarjeta BBC micro:bit V1. Fuente: https://microbit.org. CC BY-SA 4.0.

Aunque el proyecto fue iniciado por la BBC, su desarrollo fue llevado a cabo por 29 socios tecnológicos de primera línea. Por ejemplo, la implementación del Bluetooth integrado en la tarjeta corrió a cargo de la fundación propietaria de la marca, Bluetooth SIG, una asociación privada sin ánimo de lucro.

El hardware y el software resultantes son 100% abiertos, y están gestionados por una fundación sin ánimo de lucro que comenzó a funcionar en el año 2016, la Micro:bit Educational Foundation. La fundación basa sus actuaciones en su Teoría del Cambio,

Teoría del cambio y más sobre microbit

Teoría del cambio puede resumirse en tres principios:

Para desarrollar sus principios, la fundación trabaja en tres líneas de acción:

Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo.

En correspondencia con las líneas de acción y con los principios expuestos, el sistema resultante es muy económico: tanto las placas como los accesorios producidos por terceras empresas tienen un precio muy contenido. Además, dado el carácter abierto del proyecto, están disponibles algunos clones totalmente compatibles, como Elecrow Mbits o bpi:bit. Estos clones son incluso más potentes y económicos que la placa original.

El universo micro:bit destaca por su alta integración de software y hardware: basta un clic de ratón para cargar las librerías necesarias para que funcione cualquier complemento robótico, como sensores, pantallas, tarjetas de Internet de las Cosas, robots, casas domóticas, etc.

La programación de la placa se realiza desde un ordenador a través de un navegador cualquiera, estando disponibles 12 lenguajes de programación. De nuevo, por ser un sistema abierto, existen múltiples soluciones de programación, aunque las más común es MakeCode.

MakeCode.pngCaptura de pantalla del editor MakeCode, https://makecode.microbit.org/#.

El sitio web MakeCode permite programar con bloques y también en Python y en Java, traduciendo de un lenguaje a otro instantáneamente. No se necesita ningún registro en la plataforma para poder programar.

Los programas también pueden guardarse descargados en el ordenador compilados en código de máquina. Al subir de nuevo el programa al editor, se realiza una decompilación automática al lenguaje de bloques, Python o Java. Los programas guardados en código de máquina se pueden cargar directamente en micro:bit, que en el escritorio de un ordenador se maneja como una simple unidad de memoria USB.

MakeCode contiene además múltiples recursos como tutoriales, vídeos, fichas de programación, cursos para el profesorado, ejemplos y propuestas de proyectos y experimentos, todo ello en varios idiomas y clasificado por edades desde los 7 años.

Otra solución muy usada para programar micro:bit es MicroPython, creada por Python Software Foundation, otra organización sin ánimo de lucro.

MicroCode permite que los más pequeños, a partir de los 6 años de edad, programen micro:bit mediante un sistema de fichas dispuestas en líneas de acción. Están disponibles un tutorial introductorio en 20 idiomas, una guía del usuario y muchos ejemplos. El proyecto es de código abierto.

Micro:bit también es programable en Scratch con sólo añadir una extensión al editor.

Todos los entornos de desarrollo descritos disponen de un simulador de micro:bit, por lo que ni siquiera resulta necesario disponer de una tarjeta física para aprender a programar.

Una vez realizada la programación, la placa y sus complementos pueden funcionar desconectados del ordenador por medio de un cargador de móvil, una batería externa o un simple par de pilas alcalinas.

Versiones y características de micro:bit

A pesar de su pequeño tamaño, micro:bit es un sistema potente. Existen dos versiones de la placa. La más moderna, llamada micro:bit V2, tiene las siguientes características:

4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN

La creación, distribución, modificación y redistribución del hardware y software libre así como su utilización, están asociados a una serie de valores que deberían ser explicados en la escuela a nuestros alumnos para dar una alternativa a la versión mercantilista de que cualquier creación es creada para obtener beneficios económicos.

En GNU, pusieron especial énfasis en la difusión del software libre en colegios y universidades, promoviendo una serie de valores fundacionales:

Valores GNU
 Compartir

   El código fuente y los métodos del hardware y software libre son parte del conocimiento humano. Al contrario, el hardware software privativo es conocimiento secreto y restringido. El código abierto no es simplemente un asunto técnico, es un asunto ético, social y político. Es una cuestión de derechos humanos que la personas usuarias deben tener. La libertad y la cooperación son valores esenciales del código abierto. El sistema GNU pone en práctica estos valores y el principio del compartir, pues compartir es bueno y útil para el progreso de la humanidad. Las escuelas deben enseñar el valor de compartir dando ejemplo. El hardware y software libre favorece la educación pues permite compartir conocimientos y herramientas.

Responsabilidad social

     La informática, electrónica, robótica... han pasado a ser una parte esencial de la vida diaria. La tecnología digital está transformando la sociedad muy rápidamente y las escuelas ejercen una influencia decisiva en el futuro de la sociedad. Su misión es preparar al alumnado para que participen en una sociedad digital libre, mediante la enseñanza de habilidades que les permitan tomar el control de sus propias vidas con facilidad. El hardware y el software no debería estar bajo el poder de un desarrollador  que toma decisiones unilaterales que nadie más puede cambiar.

Independencia

      Las escuelas tienen la responsabilidad ética de enseñar la fortaleza, no la dependencia de un único producto o de una poderosa empresa en particular. Además, al elegir hardware y software libre, la misma escuela gana independencia de cualquier interés comercial y evita permanecer cautiva de un único proveedor. Las licencias de hardware y software libre no expiran

Aprendizaje

        Con el open source los estudiantes tienen la libertad de examinar cómo funcionan los dispositivos y programas y aprender cómo adaptarlos si fuera necesario. Con el software libre se aprende también la ética del desarrollo de software y la práctica profesional.

Ahorro

        Esta es una ventaja obvia que percibirán inmediatamente muchos administradores de instituciones educativas, pero se trata de un beneficio marginal. El punto principal de este aspecto es que, por estar autorizadas a distribuir copias de los programas a bajo costo o gratuitamente, las escuelas pueden realmente ayudar a las familias que se encuentran en dificultad económica, con lo cual promueven la equidad y la igualdad de oportunidades de aprendizaje entre los estudiantes, y contribuyen de forma decisiva a ser una escuela inclusiva.

Calidad

        Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación.

Para saber más

En los años 90, era realmente complicado utilizar un sistema operativo Linux y la mayoría de la cuota del mercado de los ordenadores personales estaba dominada por Windows. Encontrar drivers de Linux para el hardware que tenía tu equipo era casi una quimera dado que las principales compañías de hardware y de software no se molestaban en crear software para este sistema operativo, puesto que alimentaba la independencia de los usuarios con respecto a ellas mismas.

Afortunadamente, y gracias a la creciente presión de su comunidad de usuarios, estas situaciones pertenecen al pasado, y las compañías fabricantes de hardware han tenido que variar el rumbo. Hoy en día tenemos una gran cantidad de argumentos en los que nos podemos basar para dar el salto hacia cualquier sistema operativo basado en Linux. Tal y como podemos leer en educacionit.com, podemos encontrar las siguientes ventajas:

Por estas razones, el software libre se ha expandido por toda la comunidad educativa en los últimos años de manera exponencial. Un buen ejemplo de lo que estamos hablando es Bookstack, este sistema de edición de contenidos para cursos que utiliza Aularagón así como el uso de Moodle como plataforma de enseñanza y aprendizaje. En cuanto a sistema operativo para ordenadores, en Aragón disponemos de nuestra propia distribución Linux: Vitalinux EDU. Tal y como podemos leer desde su página web: Vitalinux EDU (DGA) es la distribución Linux elegida por el Gobierno de Aragón para los centros educativos. Está basada en Vitalinux, que se define como un proyecto para llevar el Software Libre a personas y organizaciones facilitando al máximo su instalación, uso y mantenimiento. En concreto Vitalinux EDU (DGA) es una distribución Ubuntu (Lubuntu) personalizada para Educación, "tuneada" por los requisitos y necesidades de los propios usuarios de los centros y adaptada de forma personalizada a cada centro y a la que se ha añadido una aplicación cliente Migasfree. De ésta forma, obtenemos:

  1. Un Sistema Ligero. Permite "revivir" equipos obsoletos y "volar" en equipos modernos. Esto garantiza la sostenibilidad de un sistema que no consume recursos de hardware innecesariamente ni obliga a la sustitución del hardware cada poco tiempo en esa espiral de obsolescencia programada en la que se ha convertido el mercado tecnológico.
  2. Facilidad en la instalación y el uso del sistema mediante programas personalizados.
  3. Un Sistema que se adapta al centro y/o a cada aula o espacio, y no un centro que se adapta a un Sistema Operativo.
  4. Gestión de equipo y del software de manera remota y desatendida mediante un servidor Migasfree.
  5. Inventario de todo el hardware y software del equipo de una forma muy cómoda.
  6. Soporte y apoyo de una comunidad que crea, comparte e innova constantemente.



1. Preparando el terreno

1. Preparando el terreno

Conoce Arduino

¿Qué es Arduino?

Arduino es una tarjeta electrónica que integra básicamente a un microcontrolador y un conjunto de pines de conexión de entradas y salidas que permiten, mediante un determinado programa, interaccionar con el medio físico mediante sensores y actuadores electrónicos. De esta forma podrás crear tus propios proyectos tecnológicos, dotarlos de sensores que detecten magnitudes físicas como luz, calor, fuerza, etc… y en base a esa información, escribiendo un programa, activar otros dispositivos (actuadores) como pequeñas bombillas, ledes, servomotores, pequeños motores DC, relés, etc… Los sensores se conectan a los pines de entrada y los actuadores a los de salida.

¿Sabías que.... ? Uno de los co-creadores de Arduino es Español, de Zaragoza: David Cuartielles +info

¿Qué es un microcontrolador?

Es un circuito integrado que se puede programar, o sea que puede ejecutar las órdenes que tenga almacenadas en su memoria. Tiene las tres funciones principales de un computador: la unidad central de proceso, memoria y entradas y salidas.

Arduino utiliza la marca ATMEL, y el modelo de microcontrolador depende del tipo de tarjeta, por ejemplo la tarjeta Arduino Uno utiliza el micro ATMEL MEGA 328P. Si quieres saber las entrañas de esta placa aquí

¿Qué se puede hacer con Arduino? ¿Algún ejemplo?

Realmente el límite lo marca tu imaginación pero por dar alguna pista, podrías diseñar un sistema para la apertura y cierre de la puerta de un garaje, hacer un robot móvil que detecte objetos o que siga una línea negra, crear un detector de luz y oscuridad, implementar un termómetro, controlar un cilindro neumático, etc…

En este manual tienes múltiples ejemplos de pequeños proyectos para el aula, aunque Arduino es una herramienta que también se utiliza en el ámbito profesional para monitorización de sensores y automatización a pequeña escala por su flexibilidad, fiabilidad y precio.

¿Qué son las entradas y salidas?

Mediante los conectores de Arduino correspondientes a las entradas y salidas podemos comunicar nuestros programas con el “mundo exterior”. Si queremos leer el valor de la magnitud física medida por un sensor, por ejemplo una LDR que detecta el nivel de luminosidad, lo tendremos que hacer conectando el sensor a uno de los pines de entrada (en este caso analógicas) de la tarjeta.

De esta forma con una simple instrucción de lectura en el programa, podremos obtener el valor de la magnitud física. Si nuestra intención es actuar o “hacer algo” una vez leído el valor del sensor, por ejemplo encender un led si el sensor de luminosidad detecta oscuridad, tendremos que conectar el actuador (en este caso el led) a un pin de salida que proporcionará la corriente necesaria para activarlo.

En Arduino las entradas pueden ser analógicas o digitales y las salidas sólo digitales. Cada pin digital tiene doble función entrada o salida. En la zona de configuración del programa hay que indicar explícitamente mediante una instrucción cuál es función desempeña un determinado pin.

¿Dónde se conectan los sensores? ¿A las entradas analógicas o digitales?

La mayoría de sensores miden señales analógicas y proporcionan una variación de voltaje dentro de un rango (normalmente de 0 a +5V) dependiendo de lo que varíe la magnitud física medida. Muchos sensores son resistivos a algo (luz, temperatura, humedad,…), es decir que varían su resistencia eléctrica con la magnitud física, pero mediante un sencillo montaje de divisor de tensión conseguimos una variación de voltaje apta para Arduino. Estos montajes los veremos en las prácticas.

Veamos este ejemplo:
El sensor LDR es una resistencia que cambia según la intensidad de la luz. La estrategia es colocar el LDR en un divisor de tensión con otra resistencia de valor parecido al promedio del que da el LDR (por ej 10k), y el valor del punto de unión proporciona una tensión entre 0 y 5V. Como es una señal analógica, la conectamos a una entrada analógica (en la figura al A6)

embedded-image-YfsLGvOe.jpegldrana.png

Una vez realizadas las conexiones, si midieramos la salida del sensor con un voltímetro nos daría un valor decimal, por ejemplo un nivel de luz “intermedio” (rango de 0 a 5V) de un sensor de luz podría dar 3,3 voltios. Este tipo de información el microcontrolador no la entiende tal cual, sólo es capaz de interpretar números binarios (“0” ó “1”) por lo que para traducir los valores analógicos dispone internamente de un conversor analógico – digital que hará la conversión entre los dos sistemas, de forma que podremos tener valores discretos de la medida de los sensores analógicos. En el Arduino las entradas analógicas leen valores analógicos entre 0V y la alimentación (normalmente 5V) y los convierten en números entre 0 y 1023 (porque lo codifica en 10 dígitos binarios proporcionan  210 = 1024 combinaciones).

Por ejemplo, si la entrada analógica lee un valor de 3,3V y la fuente de alimentación es 5V, la señal analógica que lee Arduino, haciendo una regla de 3, tiene un valor de 3,3 * 1023 / 5 = 675,18 = 675

Mapeo
Para convertir estos valores 0 -1023 a valores más legibles, por ejemplo 0 - 100 para representarlo en % o 0-5 para que represente la medida en voltios ... veremos en programación la función mapear

La mayoría de los sensores nos lo venden ya preparados montados en una pequeña placa electrónica y con circuitos integrados auxiliares para no tener que estar haciendo divisores de tensión. Pueden tener salida analógica o salida digital, que en este caso lo tenemos que conectar a cualquier entrada digital D0 hasta D13.

Veamos el mismo ejemplo del LDR: Podemos comprar este módulo:

ldrdig1.png

Estos módulos proporcionan 3 pines: dos que son la alimentación, (0V, GND o - )  y (+5V V+o Vcc) y el pin que proporciona la lectura (Vout o D0 o I/O). En el caso de que sea un sensor que mida una magnitud analógica como en este caso la luz, suelen proporcionar un potenciómetro para determinar qué luminosidad se considera un 0 o un 1.

¿Hay sensores digitales que no estén en una placa electrónica?

Las entradas digitales sin una placa electrónica son cuando las señales a leer son valores discretos. Por ejemplo queremos poner un pulsador o un interruptor que encienda un led. Hacemos un montaje que cuando se pulse, entren 5 voltios en el pin digital de entrada y cuando no se pulse que “entren” 0 voltios. De esta manera la lectura del pin digital de entrada será “HIGH” con 5 voltios o “LOW” con 0 voltios.

Veremos más adelante que un interruptor no es un simple cable que conectamos a +5V o a 0V pues ¿Qué valor lee Arduino mientras levantamos el cable de un sitio a otro?, para ello veremos configuraciones Pull-up o Pull-down que se repiten en muchos sensores.

¿Qué son las salidas digitales etiquetadas con PWM (~)?

Son salidas digitales que simulan una salida analógica. Las siglas significan Modulación por Ancho de Pulso (Pulse Width Modulation) es decir, proporcionan una onda cuadrada con un nivel alto (+5V) de “cierta” duración.

pinesPWM.png

Los valores PWM que podemos proporcionar pueden ir desde 0 a 255.

pwmsenal.png

De esta manera podemos simular señales analógicas, esto es muy útil para activar servomotores y llevarlos a una posición determinada o variar la luminosidad de un led o en los motores de los robots que vayan más deprisa o más despacio

¿Puedo accionar motores DC con Arduino?

Si son motores muy, muy pequeños sí sería posible aunque no es recomendable, pueden dañar la placa. Los motores necesitan un consumo alto de corriente, sobre todo si tienen que mover cierta carga, por lo que se recomienda o bien utilizar una tarjeta Shield o extensión de Arduino que dispone de circuitería apta para proporcionar dicha corriente (transistores).

1. Preparando el terreno

Hardware del Arduino

Placa Arduino

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. 

embedded-image-UBSH5GVW.png

Entradas y salidas

La placa Arduino UNO consta de:

La intensidad de corriente que pueden proporcionar como salida son 20mA.

Pines de la placa

Elementos con los que podemos interactuar: (tomando como ejemplo la placa USB). Empezando en el sentido de las agujas del reloj desde el centro de la parte superior:

Las placas: Arduino Diecimila, Arduino Duemilanove o UNO y Arduino Mega están basados en los microcontroladores Atmega168, Atmega 328 y Atmega1280 respectivamente. Trabajan a 16MHz, una velocidad suficiente para proyectos de robótica. Su capacidad de memoria Flash van desde 16k el Atmega168 hasta 128k Atmega1280, suficientes para que quepan nuestros programas de robótica.

SHIELDS para Arduino

Las llamadas Shields (escudos) para Arduino son tarjetas que se acoplan a la placa Arduino y añaden funciones y potencialidad a la placa Arduino.  Según mi criterio hay dos tipos de Shields: Las educativas y las no educativas

Shields educativas

Hay muchas Shields Educativas, vamos a ver unos pocos ejemplos

EDUBASICA-PEQ.png

tdrsteam.png

VISUALINO.png

Shields no educativas

Es difícil elegir unos ejemplos de toda la variedad comercial que existe y tanta vitalidad de versiones (ver lista), preferimos que en caso de que necesites alguna función extra a tu Arduino, busques en ese momento cual es la mejor Shield que se adapta a tu proyecto. Es importante que sepas que existen Shields para todo, por ejemplo para...

Y encima se pueden apilar !! consiguiendo aumentar la capacidad de tu Arduino tanto como necesites (sin pasarte, pues pues alimentación del Arduino es limitada al menos que la Shield tenga su propia alimentación.

via GIPHY

Alimentación eléctrica de Arduino

Uno de los aspectos claves para el buen funcionamiento de proyectos con Arduino, es que no incluyan elementos que consuman una intensidad superior a 200 mA como motores, relés, electroválvulas, etc.. Si los incluyen, entonces todo falla, debido a que no se ha alimentado correctamente la placa.

Tenemos dos posibilidades para alimentar Arduino:

A .- Mediante el cable USB conectado al ordenador:

Si conectamos demasiada carga, la placa Arduino suele tener un comportamiento anómalo pudiéndose resetear el micro.

B .- Utilizando una fuente de alimentación externa conectada al Jack de Arduino (fuente de voltaje, adaptador de corriente, batería o portapilas) :

C.- No recomendable: Conectando el positivo (+Vcc) de la fuente externa a Vin y el negativo a GND:

Podemos alimentar Arduino externamente si necesidad de conector Jack a través de Vin y GND el problema es que nos saltamos un diodo de protección que evita  que se queme el circuito por un exceso de corriente.

CONCLUSIÓN:

Si vas a utilizar elementos que requieran más de 800mA tienes que usar la alimentación externa del Jack y alimentar esos elementos por el pin Vin del Arduino.

Si esos elementos van a ser alimentados de forma independiente. ES IMPORTANTE UNIR LAS MASAS, En caso contrario, romperás la placa Arduino.

En este ejemplo se ha conectado el motor a una tensión externa (la pila) y la placa Arduino al USB fíjate como se han unido las masas
Opcionalmente se ha optado por unir el + de la pila con Vin. Eso equivale a conectar la pila al Jack. Esto hace que si quitamos la alimentación USB, la placa Arduino sigue alimentada.
Es recomendable unir la fuente externa (pila) al jack y no como se muestra, pues así tienes un diodo de protección que te protege la placa Arduino en el caso de que cambies la polaridad de la pila de forma accidental. ¿Porqué en este circuito no se ha hecho así? Porque en Tinkercad no he encontrado un Jack.

1. Preparando el terreno

Software del Arduino

El microcontrolador en la placa Arduino se programa mediante dos tipos de programación:

OPCIÓN LENGUAJE POR CÓDIGO

Recomendable a partir de secundaria. Es un lenguaje basado en Wiring y permite la programación del Arduino en un entorno de desarrollo (basado en Processing). El programa se llama ARDUINO IDE y se puede descargar desde la página oficial de Arduino: https://www.arduino.cc/en/software.

Hay otra posibilidad que es utilizarlo online, con la ventaja de tener tus proyectos "en la nube" y no depender del equipo. OJO, TIENES QUE TENER INSTALADO EL SOFTWARE CREATE AGENT
https://create.arduino.cc/getting-started/plugin/welcome

arduinoide.png

En los cursos de CATEDU se ha utilizado el lenguaje por código empezando desde cero en:

Recomendamos estas hojas resumen si vas a trabajar con código:

OPCIÓN LENGUAJE GRÁFICO POR BLOQUES

Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos:

Otros softwares para programar con bloques

EN VIVO ¿Qué es eso?
Existe una posibilidad de utilizar la placa "en vivo" (lo normal es "cargar" el programa en la placa).
Es decir, interactuando con el ordenador. El programa está en el PC, En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:
     - Ordenador ➡️ Placa: pulsando la tecla espacio que se encienda el led 13 
      - Placa ➡️Ordenador:  Que por pantalla nos muestre la cantidad de luz, o que si es de noche que suene una canción..
Que nosotros sepamos, sólo hay dos programas de hacer esto;
               - mBlock
                -Snap4Arduino

VENTAJAS E INCONVENIENTES
LENGUAJE GRÁFICO POR BLOQUES vs CÓDIGO

El lenguaje gráfico por bloques es un lenguaje sencillo de utilizar, nos evita tener en cuenta muchas librerías y cálculos.

Otra ventaja, es que el lenguaje por bloques es el único que permite programación "en vivo"

Por ejemplo, la instrucción leer valor distancia el sensor ultrasonidos, mediante programación por bloques es 

leer-us.jpg

mientras que en código es

double distancia;

double fnc_ultrasonic_distance(int _t, int _e){
	unsigned long dur=0;
	digitalWrite(_t, LOW);
	delayMicroseconds(5);
	digitalWrite(_t, HIGH);
	delayMicroseconds(10);
	digitalWrite(_t, LOW);
	dur = pulseIn(_e, HIGH, 18000);  
    // devuelve cuanto tarda el pulso alto en microseg; 18000 es el tiempo a esperar limite
	if(dur==0)return 999.0;
	return (dur/57);
    // la velocidad del sonido es 344m/s = 34400 cm/seg = 0,0344 cm/microseg
   // como v=e/t luego e = v*t y como cuenta la ida y la vuelta distancia = v*t/2
   // luego distancia = 0,0344/2 * dur = dur/57 
}

void setup()
{
  	pinMode(6, OUTPUT);
	pinMode(5, INPUT);

}


void loop()
{

  	distancia = fnc_ultrasonic_distance(6,5);

}

Como se puede ver en código, tiene que calcular la distancia haciendo cálculos del tiempo de rebote del eco, mientras que el gráfico es sumamente sencillo y se centra en el objetivo del algoritmo a crear, no en lo accesorio. Esto hace que un lenguaje gráfico por bloques se puede aplicar desde los 8 años.

Por otra parte, el lenguaje código tiene todo el potencial, es decir, no todo está en los lenguajes gráficos. Si se quiere cosas más avanzadas, hay que recurrir al código.

Un lenguaje gráfico se convierte en lenguaje código, pero al revés no se puede.

bloques-codigo.png
Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

El lenguaje código se traduce en lenguaje máquina (ceros y unos) entendible para el microprocesador, pero al revés no se puede.

En este vídeo, en mi opinión se olvida de mBlock, Snap4Arduino, S4A pero puedes ver un vistazo de los diferentes editores

Vale, me decanto por EDITOR GRÁFICO (bloques) y permita la opción EN VIVO ¿Cual es mejor mBlock o Snap4Arduino ? 
Ver MBLOCK VS SNAP4ARDUINO

OPCIÓN SIMULACIÓN                                    

Incluimos dentro del apartado de Software los diferentes programas que hay para simular placas electrónicas como Arduino, ESP32, etc...

Tinkercad

Esta herramienta https://www.tinkercad.com aparece en el Curso Arduino con código  en la práctica Comunicación entre dos Arduinos, pero también es una plataforma que sirve para hacer los diseños de elementos 3D, ver curso Impresión 3D con Tinkercad

Tiene la ventaja que es aplicación online, muy visual y buscan un reflejo de la práctica real, además de estar la herramienta adaptada al aula (gestión de alumnos y proyectos). Como  desventajas podemos decir que no tiene mucha variedad de componentes electrónicos y la simulación es algo lenta.

Wokwi

Si Tinkercad se queda corto, puedes probar esta plataforma https://wokwi.com/ con muchas posibilidades. Es online y puede trabajar con multitud de placas: ArduinoUno, ESP32, Raspberry,,,,
Como única desventaja que encontramos, es que echamos de menos la realidad de Tinkercad, por ejemplo no puedes poner una placa protoboard para realizar las conexiones, pero a cambio se gana simplicidad de cableado.

2022-12-05 10_14_42-Knob.ino - Wokwi Arduino and ESP32 Simulator.png

UnoArduSim

Es una aplicación local.  UnoArduSim además es una aplicación portable fácil de instalar y con los elementos de leds, motores servos ya preparados, ideal para ejemplos sencillos y para examinar señales y no depender de Internet, pero no es tan versátil.

OPCIÓN SÓLO DIBUJAR


1. Preparando el terreno

Programación mBlock

mBlock es un programa especializado en el manejo de los robots de Makeblock (ver cursos de mBot en Aularagon), estos robots al principio estaban basados en Arduino por lo tanto este programa permitía programar Arduino. Actualmente permiten muchas arquitecturas de placas.

Se puede descargar gratuitamente en https://www.mblock.cc/en/download/, actualmente esta la versión 5, aunque verás que algunos vídeos de este curso enseñan la versión 3 pero las capturas se realizan en la versión actual

Dos formas de programar mBlock

OPCIÓN Programación en vivo

mBlock (y los otros S4A, Snap4Arduino... también) permite la programación en vivo Es decir, que el programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador. 

OPCIÓN Programación cargar a la placa

Todos los programas editores de Arduino (tanto los que programan con código como el Arduino IDE) como los editores de programas gráficos en bloque (mBlock, Snap4Arduino, Arduinoblocks, ...) permiten cargar el programa en la placa.  Las ventajas y desventajas son las opuestas de trabajar en vivo.

MÉTODOS PARA INTERACTUAR CON LOS OBJETOS

En mBlock 3.0 la comunicación era inmediata, fíjate en este script de una alarma:

embedded-image-xGEexnUg.jpeg

Mezcla en el mismo script:

Con mBlock 5.0 YA NO SE PUEDE, pero tenemos unos trucos

MÉTODO UTILIZAR VARIABLES GLOBALES                                                                          

Se pueden crear variables, en cualquier objeto, y las lee cualquier objeto,

Este método se utiliza con la opción EN VIVO

variablesglobales.jpg

De esta manera si creamos una variable frase para todos los objetos:

frase3.jpg

Podemos usarla en el robot

frase1.jpg

y el programa del objeto que queramos, en este caso el oso panda lo puede visualizar

frase2.jpg

MÉTODO UTILIZAR MENSAJES                                                                                  

Cualquier objeto tiene a su disposición enviar mensajes a los otros

Este método se utiliza con la opción EN VIVO

mensajes.jpg

MÉTODO EXTENSIÓN BROADCAST = TRANSMITIR MENSAJES                                  

Es parecido al anterior, hay que ir al + que hay abajo para instalar extensiones

arduino-pelotahinchadistancia3.png

Buscar la extensión "Broadcast" e instalarla 

broadcast.jpg

Se instala primero descargándola con el + aquí

broadcast1.png

Y luego añadir una vez descargada

broadcast2.png

Entonces aparecen unas nuevas instrucciones

broadcast3.png

Este método se utiliza con la opción EN CARGA

y se instalan unas instrucciones extras parecidas a las anteriores pero más potentes

El resto de objetos trabajan en modo vivo, es decir, si cambias un bloque, automáticamente se ven los efectos

A lo otros objetos TAMBIÉN hay que instalar la extensión BROADCAST

DESVENTAJA no se pueden transmitir mensajes de objetos a la placa. Sólo de la placa a los objetos

1. Preparando el terreno

Preparando mBlock y el Arduino

Hay que hacer dos cosas

Lo mejor un tutorial muy breve:

1. Preparando el terreno

Sensores

Esta sección es una visión rápida de las posibles entradas del Arduino y está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Cualquier sistema de control podríamos decir que funciona de una manera similar a un ser humano, salvando las distancias. Nosotros recibimos la información del mundo exterior gracias a nuestros sentidos (oído, olfato, gusto, vista y tacto), nuestro cerebro procesa esa información y a través de nuestros músculos o de nuestra voz realizamos diferentes acciones. Pues lo mismo sucede con los sistemas de control, reciben información del exterior gracias a los diferentes SENSORES, procesan esa información en sus PLACAS CONTROLADORAS (sus cerebros) tales como Arduino y dan una respuesta utilizando sus diferentes ACTUADORES.

2022-04-13 19_23_12-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Un sensor es un objeto capaz de detectar magnitudes físicas o químicas y transformarlas en variables eléctricas. Los sensores o periféricos de entrada nos permiten obtener información del mundo real para utilizarla desde el programa de Arduino.

En la actualidad la cantidad de sensores disponibles es tan extensa como las variables que queramos medir, desde sensores de temperatura, humedad, luminosidad,... hasta acelerómetros, giroscopios, GPS,... pasando por detectores de gases, de pulsos cardiacos, sensores de efecto HALL,...

La interfaz de conexión de un sensor con Arduino lo podemos clasificar en tres tipos: DIGITAL, ANALÓGICO o DATOS.

Ejemplo: un pulsador es un tipo de sensor sencillo que sólo nos da dos estados, “pulsado o no pulsado”. Conectado a la placa Arduino debe generar 0v en reposo y 5v al pulsarlo. De esta forma desde el programa de Arduino podremos leer el estado del botón.

2022-04-13 19_25_30-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Ejemplo: Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Su valor varía entre 0 y 5 v. la cantidad de valores que pueden leer las entradas analógicas de Ardunio son de 10 bits es decir 1024 valores. De tal modo que 0 = 0 v. y 1023 = 5V.

2022-04-13 19_26_06-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Ejemplo: el sensor DHT11 que mide temperatura y humedad.

2022-04-13 19_27_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensores modulares más comunes.

En  la  actualidad  existen  infinidad  de  sensores  que  los  fabricantes  presentan  en  forma modular.  Esto  hace  que  su  conexión  y  utilización  sea  mucho  más  sencilla  que  la  tradicional, olvidándonos de resistencias, polaridades, cableados,… para su correcto funcionamiento.

Sensor pulsador

Es un sensor digital, que presenta dos estados; cuando se presiona el botón,  emite  una  señal  de  bajo (0V), cuando suelta el botón, emite una señal de bajo alto (5V). Datasheet

Un ejemplo de uso

 2022-04-13 21_58_38-Modulo pulsador con tapa, 6uds.pngimage-1649922433118.png

Otra manera más "barata" de sustituir este módulo pulsador es poner un pulsador normal y una resistencia (±10k), al pulsar se produce una entrada en el Arduino, hay dos configuraciones, que al pulsar se emita un 0 lógico (configuración Pull up) o que al pulsar emita un 1 lógico (configuración Pull down) ¿Por qué hay que poner una resistencia?

image-1650097141548.pngimage-1650097157889.png

Lo "normal" es que al pulsar se emita un '1' configuración Pull down, pero hay pulsadores que funcionan al revés, lógica invertida o pull up, por eso en la programación por bloques podemos encontrar esto:

logicainvertida.png

Sensor Táctil Capacitivo. 

Este  pequeño  sensor  puede  "sentir"  a  las  personas  y  el  tacto  y  la retroalimentación de metales a un nivel de voltaje alto / bajo. Incluso aislado por alguna tela y papel, todavía puede sentir el tacto. Su sensibilidad disminuye a medida que la 
capa de aislamiento se hace más gruesa. En nuestra opinión lo preferimos frente al Sensor pulsador pues es muy económico, duradero y fiable.

Un ejemplo de uso en

2022-04-13 21_59_29-Interruptor táctil TTP223B.png

Potenciómetro y joystick

Un potenciómetro es una resistencia variable, es decir, cambia de valor mecánicamente, lo tenemos en multitud de dispositivos. El joystick es internamente dos potenciómetros con un pulsador integrado en un solo mando.

potenciometro-joystick.png2023-11-24 18_45_14-Quiero una – EchidnaShield.png

Este sensor es analógico, su salida puede ser cualquier valor entre Vcc y GND (si está en divisor de tensión como en la placa Edubásica no llega a esos valores extremos), por lo tanto hay que conectarlo a una entrada analógica de Arduino y como cualquier entrada analógica, proporcionará valores entre 0 y 1023.

Ejemplos de uso:

 Sensor Fotocélula LDR. 

El  uso  de  fotocélulas  es  muy  común  en  nuestras  vidas,  las  encontramos  en  el  encendido automático de  farolas, apertura de  puertas,…  La  fotocélula  es un  semiconductor. Es  ampliamente utilizado  en  campos  de  interruptores  de  control  automático  como cámaras,  luces  solares  de  jardín,  lámparas  de césped,  detectores  de  dinero,  relojes  de cuarzo, tazas de música, cajas de regalo, mini luces  nocturnas,  interruptores  de  control  de luz y sonido, etc.  
Es un sensor analógico dando valores entre 0 y 5V y como entrada analógica de un Arduino se traduce en un rango de 0 a 1023 valores. 
Un ejemplo de uso :

Una manera más económica de montar este sensor es utilizar una resistencia y un LDR:

embedded-image-YfsLGvOe.jpeg2022-04-14 08_04_14-3.5 Cableado sensores _ Librería CATEDU.png

Los módulos LDR que se venden suelen esta configuración Pull down, es decir, cuanto más luz,  más tensión:

image-1650370178627.png

La instrucción con Arduinoblocks ya cuenta con esta configuración Pull downUp de que cuando más luz, más valor tiene la entrada analógica.

2022-04-19 14_05_05-ArduinoBlocks.png

Hay módulos LDR ya montados,  que tienen componentes activos es decir, llevan circuitos electrónicos, transistores que amplifican etc... y dan la salida digital con un potenciómetro para definir el rango de luz que cambia de estado lógico. Puedes ver en la figura que tiene una salida digital D0.

sensorluzarduinodigital.jpg

O hay algunos que tienen 4 pines como en la figura que ofrecen las dos cosas: salida analógica A0 y digital D0.

sensorluzarduino.jpg

Nosotros aconsejamos el divisor de tensión por tres razones: más barato, no implica gran circuitería y es visible su funcionamiento frente a estos encapsulados.

Sensor llama

Este sensor de llama se puede utilizar para detectar fuego u otras luces cuya longitud de onda se encuentra entre 760 nm ~ 1100nm.

Un ejemplo de su uso:

2022-04-14 08_06_56-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2022-04-14 08_07_38-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de Ultrasonidos.

Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno.

No es un sensor preciso, con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato

Ejemplos de uso:

Pines de conexión:

Distancia = {(Tiempo entre Trig y el Echo) * (V.Sonido 340 m/s)}/2 por lo tanto en la programación tenemos que leer esos dos pulsos y calcular la distancia.

2022-04-14 08_10_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2022-04-14 08_11_21-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor DHT11 (Temperatura y Humedad).

Este sensor de temperatura y humedad DHT11 tiene una salida de señal digital que funciona en un rango de temperaturas entre 0 y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad y los 16 restantes es la temperatura los 8 restantes son de comprobación. Por ejemplo 0100 0111 0000 0011 0001 1001 0000 0000 0001 1000  es 0100 0111 0000 0011 = 47.03% de humedad y 0001 1001 0000 0000 = 19.00ºC y la comprobación es la suma de 4+7+0+3+1+9+0+0=24=11000

Ejemplos de uso:

2022-04-13 19_27_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

No es un sensor con gran sensibilidad, pero para propósitos educativos cumple sus funciones. Por dentro tiene una resistencia NTC que decrementa su resistencia si aumenta la temperatura. Hay otros que van al revés, los PTC. Tanto los NTC como los PTC se llaman thermistores. Para la humedad, mide la capacidad de un condensador que es sensible a la humedad, o sea, un sensor capacitivo.

Tenemos dos opciones comerciales: Encapsulado que lo tienes preparado para conectar la alimentación y leer por el pin de datos, o sin encapsular, que hay que colocar una resistencia de aproximadamente 10k entre Vcc y Data

dht11-pines.png

Ejemplo de uso de un DHT11 sin encapsular:

dht11sinencapsular.png
Fuente Luis LLamas CC-BY-NC-SA https://www.luisllamas.es/arduino-dht11-dht22/

Si queremos mejorar la sensibilidad, podemos utilizar el DHT22 que es igual pero de color blanco y más caro. Si lo que queremos es sólo la temperatura es mejor utilizar el LM35D que tiene un rango de temperaturas desde 0ºC a 100ºC con una sensibilidad de 2mV/ºC

lm35.jpg

Es un sensor bastante mediocre, si necesitas una precisión el doble, te recomendamos el DHT22 que funciona exáctamente igual pero es de color blanco y más caro ⁓3€. Ver https://www.luisllamas.es/arduino-dht11-dht22/

Sensor de humedad de suelo.

La función de este sensor es detectar la humedad del suelo. Si el suelo no tiene agua, el valor analógico emitido por el sensor disminuirá, de lo contrario, aumentará. Se puede utilizar este sensor para hacer un dispositivo de riego automático, puede detectar si las plantas “tienen sed” y evitar que se marchiten. El sensor se configura con dos sondas insertadas en el suelo, cuando la corriente atraviesa el suelo, el sensor obtendrá valor de resistencia al leer los cambios actuales entre las dos sondas y convertir dicho valor de resistencia en contenido de humedad. Cuanto mayor sea la humedad (menos resistencia), mayor será la conductividad del suelo. La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0 a 2,3V (Cuando el sensor está totalmente sumergido en agua, el voltaje será 2,3V).

2022-04-14 08_15_34-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de humedad.

Este sensor analógico está diseñado para identificar y detectar la presencia de agua y su cantidad. Puede servir para detectar el nivel de agua, para disparar una alarma en caso de una fuga de agua, también para hacer un limpiapalabrisas automático.... puedes ver un ejemplo de uso en el curso de Domótica con Arduino

Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos.

2022-04-14 08_19_22-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de efecto Hall.

Este es un sensor de inducción magnética. Detecta los materiales magnéticos dentro de un rango de detección de hasta 3 cm. El  rango de detección y la fuerza del campo magnético son proporcionales. La salida es digital.

2022-04-14 10_07_05-1.3 Conexiones _ Librería CATEDU.png
Sensor Hall.                              Edwin Helber Hall De Desconocido - Popular Science Monthly Volume 64, Dominio público

Edwin Helbert Hall descubrió en 1879 que en presencia de un campo magnético, un conductor que conduzca una corriente se le producía un campo eléctrico porque las cargas eléctricas se desviaban de su trayectoria principal, nuestro sensor simplemente mide ese campo eléctrico:

De Luis Llamas CC-BY-NC

El sensor tiene un led de color rojo que indica que hay una lectura de campo magnético.

Un ejemplo de uso lo puedes ver aquí: medir rocas magnéticas con el Rover con Arduino

Sensor inclinación

Este sensor funciona al hacerle vibrar, emitiendo una señal digital de todo o nada. El módulo del sensor viene provisto de un potenciómetro para poder regularlo.

2022-04-14 11_01_13-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de golpe

Es un sensor digital que al ser golpeado este sensor envía una señal momentánea.

2022-04-14 11_02_09-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de pulso cardíaco.

Este módulo utiliza un LED infrarrojo (IR) ultrabrillante y un fototransistor para detectar el pulso en el dedo. Principio de funcionamiento: Se debe colocar el dedo entre el LED infrarrojo ultrabrillante (parte superior) mientras que el fototransistor, que queda en el otro lado, recoge la cantidad de luz transmitida. La resistencia del fototransistor variará levemente a medida que la sangre pase a través de su dedo.

2022-04-14 11_03_47-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de Alcohol.

Este sensor de gas analógico MQ-3 es adecuado para detectar alcohol. Se puede usar en un analizador de aliento. También tiene una alta sensibilidad al alcohol y baja sensibilidad a la bencina (éter de petróleo). La sensibilidad se puede ajustar con el potenciómetro.

2022-04-14 11_04_42-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Sensor de CO2

Hay sensores que utilizan el protocolo I2C, este protocolo permite conexiones serie y pueden compartir el mismo cable pues cada elemento tiene una dirección diferente. Esto lo veremos en el Display LCD. Se identifican por los pinen SDA y SCL

CCS811-KEYSTUDUUDIO.png


Sensor de Gas (MQ2).

Este sensor analógico de gas MQ-2 se utiliza en equipos de detección de fugas de gas en electrónica de consumo y mercados industriales. Este sensor es adecuado para detectar GLP, I-butano, propano, metano, alcohol, hidrógeno y humo. Tiene alta sensibilidad y respuesta rápida. La sensibilidad se puede ajustar girando el potenciómetro.

2022-04-14 11_05_36-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Esta sección está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Resistencia Flex

Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k

Datasheet Sparkfun

Para utilizar esta resistencia haremos un DIVISOR DE TENSIÓN que consistirá en poner dos resistencias en serie y repartirá la tensión total entre 0V y 5V en las dos resistencias, el punto medio será un punto que tendrá una tensión variable en función de las dos resistencias, como la es variable, esa tensión es variable y ya tenemos la entrada analógica:

Es decir:

Este sensor tiene posibilidades para usarlo en "ropa inteligente".

Sensor de movimiento con Microondas

Tradicionalmente se utilizan sensores PIR de infrarrojos para detectar el movimiento, pero personalmente veo que tienen falsos positivos y negativos, si quieres utilizarlos, te recomendamos esta página de Luis LLamas 

2022-04-16 10_24_22-sensor pir arduino at DuckDuckGo.png

Personalmente prefiero los sensores de microondas. Son un radar que por efecto Doppler pueden captar cualquier objeto en movimiento dentro de un alcance de 5-7 metros en cualquier dirección e independiente de su temperatura. Es un buen sensor para alarmas, activación de luz por presencia.... Curiosamente, su gran ventaja técnica es un gran inconveniente para usarlo en el aula, con cualquier movimiento se dispara. Para saber más ver la página de Luis Llamas

image-1650097316026.png

Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores.

image-1650097889205.png

Esta sección es una visión rápida de las posibles entradas del Arduino y está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

1. Preparando el terreno

Actuadores y otras salidas

Esta página es un repaso rápido de las posibles salidas del Arduino

¿Qué es un actuador?

Un actuador es el nombre genérico que empleamos para cualquier dispositivo capaz de realizar acciones en el mundo físico y que podremos controlar desde un autómata o procesador como Arduino. En particular, usamos el nombre actuador para los dispositivos que son capaces de generar movimiento.   Luis LLamas CC-BY-NC-SA

ACTUADORES                                                                                                   

Motores

Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador y afines por su alta velocidad de rotación, pero lo normal en la robótica con Arduino es utilizar motores con reductoras para bajar las revoluciones como el motor amarillo :

2022-04-16 10_40_41-motor arduino at DuckDuckGo.png

Si quieres usar un motor, no se puede conectar directamente al Arduino (al menos de que sea de muy baja potencia) necesita una alimentación extra, como el LM298N y las pilas., o el B6612FNG o una shield específica.

CC-BY-NC Luis Llamas

Ejemplos de uso lo puedes ver en 

Los motores pueden (y deben) de estar conectados a salidas PWM de tal manera que se pueda regular la potencia y por lo tanto la velocidad.

Servos

Un servo convencional es un motor donde fijamos el ángulo desde 0º a 180º, pero si queremos una rotación, existen servos rotatorios que simplemente tienen su velocidad de rotación controlada

Ejemplos de uso de servos:

Electroimán

El electroimán no se puede conectar directamente, utilizaremos una etapa de potencia, por ejemplo el transistor el IRF520N que amplifique la señal del Arduino, pues las salidas de Arduino no tienen potencia para mover el electroimán

Para dar esa potencia utilizaremos otra fuente externa, unas pilas:

image-1649970623453.png

Las conexiones son :

image-1649970676310.png

Motor paso a paso

Igual que el electroimán, necesitamos un controlador que nos de la potencia necesaria para mover el motor, el ULN2003

Imagen BY-NC-SA de Luis Llamas

También igual que el electroimán, necesitamos una potencia extra con las pilas:

Conexión :

La configuración más sencilla es la rotación simple en sentido horario (llamada fase1) :

Imagen BY-NC-SA de Luis Llamas

Es decir:

Paso IN1=D10 IN2=D11 IN3=D12 IN4=D13
Paso 1 ON OFF OFF OFF
Paso 2 OFF ON OFF OFF
Paso 3 OFF OFF ON OFF
Paso 4 OFF OFF OFF ON

Si has entendido este ejemplo serás capaz de realizar las configuraciones que desees.

OTRAS SALIDAS                                                                                              

No son actuadores pues no representan movimiento pero son también salidas del Arduino como los actuadores, luego lo vemos en esta página

Buzzer activo

Reproduce un tono de una frecuencia determinada por el fabricante cuando recibe un '1' digital. Su conexión es muy simple:

Ejemplos de uso:

Buzzer pasivo

La diferencia de un buzzer activo con el pasivo es que el pasivo hay que mandar la onda que se tiene que reproducir, como Arduino no puede reproducir onda puras (senoidales analógicas), se le envía ondas cuadradas con la frecuencia que se pretende reproducir. Como se puede ver en la figura, no tiene elementos auxiliares para reproducir un tono, es simplemente un altavoz.

zumbadorpasivo.png

Ejemplos de uso

Leds y otros elementos visualizadores                                                    

Led normal

Un diodo es la unión de dos semiconductores P-N que sólo permite la corriente en un sentido. Un diodo LED es un diodo, que al pasar esta corriente emite una luz. Hay de 3mm y de 5mm de grosor, transparentes, traslúcidos y de colores (realmente son traslúcidos tintados)

Tenemos pues que respetar su polaridad para que funcione:

arduino-led-patillaje.png

Fuente Luis LLamas CC-BY-NC Encender LED con Arduino

Si alimentamos el LED con una tensión inferior a su tensión de polarización directa Vd ±1,4V-3,8V el led no luce. si alimentamos con una tensión superior, la corriente que circula se dispara por lo que se rompe. Conclusión: Hay que poner una resistencia limitante. Para calcularla te recomiendo la página de Luis Llamas  Encender LED con Arduino

Aquí puedes ver un ejemplo de semáforo en el curso Arduino con código

image-1650005625137.pngimage-1650005638493.png

Se puede conectar directamente pues las salidas de Arduino tienen una limitación interna de 20mA como en este ejemplo https://www.youtube.com/watch?v=EFFSLvIF9rY

Los LEDS igual que los motores pueden se encendidos o todo o nada con salidas digitales 0 y 1 o salidas PWM de esta manera conseguimos luminosidades medias, en esta práctica con el potenciómetro se regula la intensidad de la luz de un LED

Led RGB

Se trata de un encapsulado que integra 3 leds de los tres colores básicos. Cada color básico se puede regular desde 0 a 255 de intensidad, luego tenemos 16 millones de tonalidades diferentes.

image-1650007895867.png

Un ejemplo de su uso lo puedes ver en

Existen LEDS RGB que se comunican unos a otros, (ver este ejemplo en el curso mClon) como las tiras de leds RGB que cambian de color todos simultáneamente.

Neopixel

La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual podemos tener el control de cada pixel y de cada color, ya sea rojo, verde y azul a través de un solo cable de datos. 

Ver esta página de Luis LLamas Conectar Arduino con tiras led

    zoomNeopixel.jpg

Láser

El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente, si enviamos un 1 emite un rayo láser. Un ejemplo de uso lo puedes ver en la Alarma por láser en Domótica con Arduino

Si quieres saber más de este componente, te recomendamos esta página de Luis Llamas.

Si tienes que comprar uno, es importante que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [+info].
El modelo que proponemos es de 1mW, no obstante, EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS especialmente con niños.

image-1649971311304.png

Display LCD

Si queremos visualizar datos de forma independiente del ordenador, existen matrices de led que puedes ver en los cursos de mBot o mClon pero lo mejor es una pantalla Liquid Crystal Display y la mejor forma de conectar esta interfaz es en serie (utilizando el protocolo I2C.)

Ejemplo de uso :

image-1650096059762.png

CC-BY-SA Luis Llamas

No confundas Display LCD con matriz de LEDs , o una OLED

Aclarando conceptos: Lógica invertida                                                                                   

Igual que vimos en sensores, con las configuraciones Pull up y Pull down, las salidas de cualquier actuador PUEDEN SER LÓGICA INVERTIDA, mira en este NodeMCU (básicamente es un Arduino con wifi, aquí está conectado con el servidor Blynk) como funciona al revés, cuando apretamos, por lo tanto enviamos un uno a la salida, se apaga la salida !!

1. Preparando el terreno

Kit de préstamo de CATEDU Arduino

El presente curso parte de que el alumno tiene el kit de préstamo que facilita CATEDU:

image-1648632032646.png

Arduino UNO

Se trata de una placa con un microcontrolador (un micro ordenador) y puertos digitales y analógicos de entrada y salida. ¿Por qué es tan famoso?

image-1648632060408.jpg

Puertos:

no está nada mal ¿no? y además barato !!!

1. Preparando el terreno

Resistencias

La resistencias sirven para limitar la corriente. Lo utilizaremos en dos ocasiones:

También lo utilizaremos con el pulsador, para separar los voltios y para que tenga una tensión definida cuando el interruptor esté abierto (lo veremos en el siguiente capítulo)

Los valores de las resistencias en Ω se determina mediante la siguiente tabla:

image-1648632153105.jpg

1. Preparando el terreno

Placa Protoboard

Placa protoboard o placa de pruebas es un tablero con orificios

Estos se encuentran conectados eléctricamente entre sí de manera interna,el patrón de conexión es de líneas según este esquema:

image-1648632178895.png             image-1648632186997.gif


¿Cómo está conectado?

La línea X (pintada de rojo) está toda conectada y la línea Y (pintada de azul) también.

Las líneas verticales 1 al 47 están conectadas verticalmente separados por la línea del medio, pero no horizontalmente (he pintado de verde las 4 primeras) es decir:

¿Cómo se utiliza?

La línea X (pintada de rojo) se suele utilizar para poner la alimentación (5V en nuestro caso) y la línea Y (pintada de azul) se suele conectar a 0V

Las líneas verdes es donde se conectan los componentes de tal manera que se pueda construir el circuito

1. Preparando el terreno

Pulsadores

image-1648632240664.webp

Un pulsador nos permitirá crear entradas digitales al Arduino

Los pulsadores proporcionados abren y cierran los pines que están en vertical, pero no en horizontal pues están conectados (ver figura de la izquierda)

Luego tenemos que fijarnos en los pines, si están en línea son los pines que no están conectados cuando no se pulsa, por lo tanto son estos los que tienen que ir en líneas diferentes de la placa protoboard.

Los pines que están en paralelo están conectados, por lo tanto tienen que estar en la misma línea:

image-1648632276077.png     

Pero ¿Cómo se conecta? un poco de teoría en la página siguiente.

Esto esta mal

image-1648632330132.pngFuente Luis Llamas https://www.luisllamas.es/leer-un-pulsador-con-arduino/

La sencilla razón es la siguiente ¿cuando el interruptor o pulsador esté abierto qué tensión tendrá "Pin digital"?

En vista de protoboard sería así:

El primer pulsador cuando se cierra si que proporciona 5V al pin 12 por el cable azul pero... ¿y cuando no está pulsado?

El segundo pulsador cuando se cierra sí que proporciona 0V al pin 13 por el pin verde pero... ¿y cuando no está pulsado?

Ah!! y por supuesto ni se te ocurra esto, provocarías un cortocircuito:

image-1648632391355.png

Fuente Luis Llamas https://www.luisllamas.es/leer-un-pulsador-con-arduino/

Esto esta bien

Lo correcto es hacerlo a través de resistencias, hay dos configuraciones, pull down o pull up según si la resistencia está abajo o arriba 

image-1648632523286.png           

la más utilizada y lógica es la primera pull down, pues lo lógico es que cuando se cierra el pulsador, queremos transmitir un 1 lógico

Resumiendo: lo que tienes que hacer es una de estas dos configuraciones, la opción recomendada es PULL UP para que OFF = 0 y ON = 1

image-1648632493133.png

Fuente Luis Llamas https://www.luisllamas.es/leer-un-pulsador-con-arduino/

El valor de la resistencia puede ser de valores de algunos k

Visto en la placa el formato pull down:

Es decir (en la foto el cable verde del anterior dibujo es el blanco en la foto):

CONEXIÓN CON ARDUINO

Dos ejemplos sencillos para utilizar el pulsador, utilizaremos la resistencia configuración pull down y lo conectaremos al Arduino por A0

Utilizaremos la configuración PULL-DOWN es decir la resistencia "abajo" y el pulsador arriba, de esta manera:

La forma de conectarlo en la placa Protoboard es (en este ejemplo lo conecta al pin digital 4):

Si quieres saber su contraria (Pull-up) visita esta página.

1. Preparando el terreno

LED

LED= light-emitting diode: es un diodo emisor de luz que tiene polaridad, es decir, que tiene + y -

¿Cómo se conecta?

Pues a través de una resistencia, de valor de algunos k o centenares de Ω, cuanto más pequeña más se ilumina pero más peligro de fundir el led

En el ejemplo : conexión a la salida del pin 13 :

NOTA: A veces conectaremos el LED diréctamente, por simplificar, pues el ARDUINO TIENE UNA RESISTENCIAS INTERNAS DE 30k pero no es una buena práctica

Ejemplo de utilización

Mira el siguiente circuito NO LO HAGAS SÓLO MÍRALO Y OBSERVA:

La alimentación

El pulsador

El LED

image-1648632735275.png

image-1648632740892.jpg

1. Preparando el terreno

Condensador

¿Qué es?

Es un elemento que consta de dos placas separadas que son capaces de cargarse eléctricamente, su capacidad se mide en Faradios. Se puede interpretar como un globo que nos permite hincharlo de aire, y la capacidad los litros. Pero también pueden explotar !!! luego lee con atención:

ATENCIÓN Los condensadores (normalmente a partir de 1μF son electrólíticos) tienen POLARIDAD QUE ES IMPORTANTE

RESPETARLA, es decir, tienen un pin marcado con el signo (-) normalmente con franja blanca que tiene que ir al (-) o masa (GND 0V) de lo contario, revientan, con el consecuente peligro, más peligrosos cuanto más capacidad tienen.

ATENCIÓN Los condensadores tienen una tensión máxima de trabajo, marcado en el propio condensador, en nuestro caso los condensadores marcan 25V, luego se pueden utilizar sin problemas con el Arduino que la tensión máxima es 5V. Como si fuera la máxima presión que aguanta el globo antes de explotar.

¿No te lo crees? pues mira..

Carga y descarga

Si lo hacemos a través de una resistencia, tarda un tiempo a cargarse y también a descargarse (como si en el globo lo deshincháramos pero estrechando la boca)

El circuito de carga sería

image-1648632777199.png        

Fíjate que el lado (-) (la banda blanca) está conectado a GND

El circuito de descarga sería

image-1648632819763.png       


Cálculos

El tiempo de carga y de descarga se calcula con la fórmula :

T = 5 R C

En el caso de los circuitos de arriba T = 5 * 100k * 10μ = 5 * 100 000 * 0.00001 = 5 segundos

Igual que un globo, la carga evoluciona muy rápidamente al principio, pero a medida de que se va llenando, cuesta más, la gráfica de carga de un condensador es la siguiente:

image-1648632850406.jpg

Y para la descarga es la siguiente

image-1648632859742.jpg

1. Preparando el terreno

LDR

LDR= Light Depended Resistor es una resistencia que disminuye su valor cuando aumenta la luz.

Si se coloca en serie con una resistencia de un valor parecido, el punto de unión (cable verde) tiene una tensión variable con la luz que lo puede leer Arduino, en este esquema lo lee por la entrada A0

Si hay luz, el LDR disminuye su resistencia por lo tanto disminuye el valor de la tensión en A0, y viceversa.

1. Preparando el terreno

Sensor ultrasonidos

El sensor dispone de un emisor T que emite una señal de ultrasonidos (a veces no es ultrasonidos, pues algunos lo pueden oir) y un receptor R que capta el eco del objeto que está delante de él. Su rango de detección va desde 2cm a 450cm

Tiene cuatro pines, dos son la alimentación que conectaremos Vcc a 5V, GND a 0V y los otros dos son los importantes:

Según el tiempo entre el pulso y el eco (T), la distancia a la cual se encuentra el objeto es : distancia = T * velocidad_sonido/2

Podemos conectar el pin trigger y echo donde queramos de las entradas y salidas digitales del Arduino, en este curso vamos a tomar como criterio:

No tenemos que utilizar la fórmula para calcular la distancia, mBlock ya lo hace y la instrucción es muy sencilla, sólo hay que proporcionarle qué pin hemos conectado el trigger y qué pin hemos conectado el echo y él nos devuelve la distancia en centímetros:

2. Circuitos sencillos

2. Circuitos sencillos

Un LED

Circuito un led directo

Para las siguientes propuestas, el montaje es colocar un diodo LED, en este caso no es necesario complicarse, podemos montarlo directamente en el Arduino uno colocando el ánodo (pata más larga) en el pin13 y el cátodo (pata más corta) en masa GND, elegimos el pin 13 por estar al lado de GND

No es una buena práctica conectar un diodo directamente sin pasar por una resistencia, pues en teoría es un cortocircuito, PERO si se hace no pasa nada pues Arduino tiene una limitación interna de 20mA

Luego lo recomendable es hacerlo pasar por una resistencia, usando la placa PROTOBOARD

Para el cálculo de la resistencia, debemos de tener en cuenta que la máxima corriente es 20mA, que la tensión de salida es 5V y que el diodo tiene una tensión Vd de funcionamiento, que depende de su color:

Rminima = (5V-Vd)/20mA

Color Vd Resistencia mínima Ohm
Rojo 1.8V 160
Amarillo 3.2V 140
Verde 3.2V 90

Intermitente

Una propuesta muy sencilla

Solución



La captura está realizada con mBlock 3.0 no hay problema en hacerlo igual con mBlock 5.0

Aquí no hay ninguna interacción con el ordenador, este programa es candidato para ejecutarlo desde el Arduino como desde el ordenador. Vamos a añadirle algo de interacción con el ordenador en la siguiente propuesta.

Luz interactiva

Realizar un programa que al pulsar la tecla espacio, se encienda el led, un personaje cambie el disfraz, cambie el fondo y que suene un sonido

Solución

Con mBlock5.0 lo tienes aquí https://planet.mblock.cc/project/3265812

Declaramos una variable global ENCIENDE, es decir, estamos usando el método VARIABLE GLOBAL de https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock

En el objeto oso 

arduino-led-interactivo2.png

En el dispositivo Arduino

arduino-led-interactivo1.png

Con mBlock 3.0



2. Circuitos sencillos

Pulsador

Vamos a realizar el Arduino según el apartado CONEXIÓN CON ARDUINO que hemos visto en https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/pulsadores

Propuesta

Realizar un programa con la configuración de pulsador pull down en la entrada analógica A0 y un led en el 13, que cuando se pulse se encienda el LED

Solución

Por la entrada A0 cuando el pulsador está abierto hay 0V y cuando está cerrado hay 5V, luego los valores que tiene A0 son 0 y 1023 respectivamente

Pero eso en teoría pues si realizamos este programa:
image-1648635843759.png

Ocurre esto:



¿Por qué? seguramente cualquier defecto de conexión o si la resistencia es elevada, la tensión se queda flotante y ya el valor de A0 no es 0 sino va tomando valores, que algunas veces son 0 pero otras veces no lo son (por eso no está totalmente iluminado)

Luego lo mejor es subir el valor, hemos puesto 500 y sí que funciona correctamente



Pulsador interactivo

Realizar un programa que al apretar el pulsador, que el panda cambie de disfraz, haga un sonido, diga algo ... además de encender el LED con la misma configuración que la propuesta anterior

Solución

Con mBlock5 lo tienes aquí https://planet.mblock.cc/project/3265849

Utilizaremos la técnica BROADCAST explicado en https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock

En el dispositivo ARDUINO

arduino-pulsadorinteractivo1.png

En el objeto PANDA

arduino-pulsadorinteractivo2.png

Nota: Se podría hacer un SI - SINO pero programando de esta forma abrimos la posibilidad de ampliar si el mensaje encendido es por ejemplo = 2

Con mBlock3






2. Circuitos sencillos

Condensador

Propuesta

Realizar un programa que cargue y descargue el condensador y que lo visualice en un objeto.

La propuesta es con un condensador de 10μF y dos resistencias de centenares de k, según lo visto en el módulo M1 esto nos dará un tiempo de carga y descarga de varios segundos

OJO CONECTAR EL PIN (-) DEL CONDENSADOR A GND peligro de explosión si se conecta al revés

Las resistencias colocarlos de tal manera que uno sea para la carga y otro para la descarga.

Un cable suelto, en uno extremo el terminal (+) del condensador y el otro suelto preparado para tocar la resistencia de carga o la de descarga.

Esta misma conexión que lo lea Arduino, por ejemplo por A0

C

Visualizar la carga en un objeto Scratch que aumente de volumen:

Solución

Es muy sencillo, fija el tamaño de la pelota al valor del pin A0

Lo hemos hecho a través de una variable auxiliar "carga" para poder visualizar numéricamente su valor.

Con mBlock 5.0 lo tienes aquí https://planet.mblock.cc/project/3265873

En el dispositivo ARDUINO

arduino-condensador1.png

En el objeto PELOTA

arduino-condensador2.png

Con mBlock 3.0



AMPLIACIÓN

Se puede aprovechar esta experiencia para:

2. Circuitos sencillos

LDR

Realizar un programa que visualice en un objeto Scratch la cantidad de luz

El circuito es el siguiente: el LDR conectado a A0 y a una resistencia (la resistencia PULL UP para que la tensión que mida A0 sea la del LDR) y un objeto que aumente de tamaño según el valor de A0

Y el vídeo

Solución

El programa es el siguiente:

Lo hemos hecho a través de una variable auxiliar "carga" para poder visualizar numéricamente su valor.

Con mBlock 5.0 lo tienes aquí https://planet.mblock.cc/project/3265873

En el dispositivo ARDUINO

arduino-condensador1.png

En el objeto PELOTA

arduino-condensador2.png

Y en mblock 3.0

image.png

OOOPAAAA !!! ¡¡ Pero si es el mismo que el que acabamos de ver !!! El condensador

 ¡¡¡ vaya tontería !!!

Simplemente la variable carga no es el condensador sino la oscuridad

¿Que quieres cambiar el nombre de la variable carga por oscuridad? pues vale...




2. Circuitos sencillos

Ultrasonidos

Pues ya que estamos con la pelota, pues también seguimos: Hacer un programa que se hinche la pelota según la distancia.

En este caso, como la el sensor de ultrasonidos va desde 2 cm a 40cm, nuestra propuesta es que el tamaño se cambie multiplicado x50 ese valor, es decir "cambiar tamaño 50xdistancia", de no hacer esto, la pelota sale demasiado pequeña, o el objeto tendría que estar muy lejos para que se vea a un tamaño razonable.

La configuración la explicada en el módulo 1 es decir:

Solución

Pues el programa es muy parecido a los anteriores:

Con mBlock 5 

Opción sin instalar extensión

lo tienes aquí https://planet.mblock.cc/project/3266117

arduino-pelotahinchadistancia6.png

Estas funciones SOLO FUNCIONAN EN MODO CARGA

Opción instalando extensión 

lo tienes aquí https://planet.mblock.cc/project/3266063

Pulsamos abajo al + 

arduino-pelotahinchadistancia3.png

Buscamos extensiones para el sensor de ultrasonidos HC-SR04, nosotros hemos elegido esta

arduino-pelotahinchadistancia4.png

Que instala estas instrucciones

arduino-pelotahinchadistancia5.png

Esta extensiones (como suele pasar cuando instalamos una extensión) SOLO FUNCIONAN EN MODO CARGA

Luego para transmitir la distancia al objeto pelota, utilizamos la técnica de BROADCAST que vimos en https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock

Al dispositivo ARDUINO el programa es sin la extensión

arduino-pelotahinchadistancia7.png

Con la extensión

arduino-pelotahinchadistancia1.png

En el objeto PELOTA el programa es

arduino-pelotahinchadistancia2.png

Con mBlock3




3. Circuitos más complejos

3. Circuitos más complejos

LDR y LEDs

Esta vez vamos a convertir el valor de la oscuridad en luces. Para ello necesitaremos:

Solución

La solución tiene la complejidad del valor de la entrada A0 que va desde 0 hasta 1023 por lo tanto, hay que convertir estos valores en valores del 2 al 11 correspondiente a los LEDs

La forma más sencilla de reconvertir A0 es dividir A0 entre 100 y sumarle un 1 de esta manera aproximadamente los valores se convierten en 2-11

Otra opción es en mBlock 5.0 existe la función MAPEAR y por lo tanto también se puede hacer

mapear.png

En vez de 

mapear2.png

Si el LED se menor que el valor A0 ya convertido, encender el LED, en caso contrario apagarlo



La captura es en mBlock 3 pero En mBlock5 es igual

3. Circuitos más complejos

Condensador y LEDs

En este ejercicio proponemos que se visualice la carga y descarga de un condensador, no en una pelota que se hincha como hicimos en el M2, sino con las luces

Utilizaremos el formato de LEDs del ejercicio anterior, es decir 10 LEDs colocados consecutivamente, desde el pin 2 hasta el pin 11

La entrada será el condensador por el pin A0

El cable verde suelto será el que manualmente tocará a una resistencia o a otra para que se cargue o descargue:

Solución

Pero si... ¡¡¡ ES EL MISMO QUE EL EJERCICIO ANTERIOR LDR Y LEDS !!!





3. Circuitos más complejos

Timbre

Proponemos que cuando se pulse el pulsador, se enciendan las luces y toque un tono

El pulsador con la resistencia pull-down al pin A0 y las luces como en los ejercicios anteriores del 2 al 11, el altavoz en el pin 13:

Solución

Después de poner pin digital alto o bajo, se puede añadir un pequeño retraso para hacer más lento el efecto de encender consecutivamente los leds.




 

3. Circuitos más complejos

Piano invisible con Ultrasonidos

Podemos conectar el sensor de ultrasonidos como queramos, en estos apuntes vamos a realizar el criterio de:

La conexión sería así:

la instrucción de mBlock sería la siguiente:

Con el altavoz PC

No vamos a hacer un arpa láser estilo Jean Michel Jarre, pero con ultrasonidos, se puede hacer algo parecido. ¿Te atreves? El programa tiene que convertir la distancia en notas musicales.

Las notas musicales están en formato americano (en vez de do-re-mi-..) van desde la nota 48 a la nota 72 por lo tanto hay que convertir la distancia en esas notas musicales (pon la voz a tope, que se oye bajo)

Solución

Solución con mBlock5.0

Lo tienes aquí https://planet.mblock.cc/project/3267795

En el dispositivo ARDUINO

arduino-piano1.png

En el objeto (que hemos cambiado el oso panda por un músico). Hemos añadido la extensión MUSICA

arduino-piano3.png

Y tenemos ya una instrucción de tocar la nota en formato americano que es numérico

arduino-piano4.png

El programa queda en el objeto :

 

arduino-piano2.png

Solución con mBlock3.0



Con el altavoz Arduino

Bueno y ahora ¿por qué no repetimos el ejercicio anterior pero nos independizamos del ordenador? conectamos un altavoz en el pin 13 por ejemplo y que suene la música:

No suena de maravilla, porque no es el altavoz del PC, ni tampoco tiene potencia, pero algo es algo...

Solución

La solución es muy parecida al ejercicio anterior, simplemente hay que cambiar la instrucción de tocar nota por reproducir tono

El programa queda así: (la captura es en mBlock3.0 pero en mBlock5.0 es igual)




3. Circuitos más complejos

Ampliación: Juegos de luces

Construcción

En este caso pondremos 8 LEDs uno a continuación del otro, los ANODOS (+)(pata más larga) conectados al pin 13 - 12 -11 -10 -9 -8 -7 -6 y los CATODOS (-) (pata corta) todos al GND

Juego luces - 1                                                              

Se van encendiendo y apagando los 8 leds secuencialmente como en el vídeo:

Solución

La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual



Juego de luces -2                                            

En este caso da la sensación que es una luz la que se desplaza:

Solución

La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual



Se ha optado por utilizar una variable que controle el tiempo T por comodidad

Coche fantástico                                                            

¿Conoces las luces del coche fantástico? si la respuesta es afirmativa, tienes la edad perfecta para este curso 😁 sino, tendrás que ver este vídeo para ver el coche fantástico

Al grano. Nuestro reto  es que hagas es lo siguiente:

Solución

La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual.

Hemos puesto un tiempo T pequeño para que dar una sensación de movimiento.





Coche fantástico plus                                         

Bueno, y si pedimos que tenga alguna interacción con elementos de Scratch:

Solución

Con mBlock 5.0 la cosa se complica pues con mBlock 3 podemos intercambiar instrucciones de objeto con dispositivo pero aquí no, luego el programa lo tienes aquí https://planet.mblock.cc/project/3267890

El objeto oso panda es el que lleva la batuta de T y n

Estamos utilizando la técnica de VARIABLES GLOBALES de https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock

arduino-cochefantasticoplus1.png

Cada objeto bombilla, tiene un programa, por ejemplo el objeto 6 es (la captura es de mBlock3 pero mBlock 5 es igual)

El dispositivo ARDUINO tiene este programa

arduino-cochefantasticoplus2.png

Hace un barrido y si es el pin que hay que encender, se enciende, sino se apaga

Si T es menor de 0.5 empieza a descoordinarse el Arduino y los objetos del ordenador, pues hay retraso en la comunicación seria. Si queremos bajar tiempos, habría que trabajar con CARGA no en VIVO y habría que utililizar la técnica de BROADCAST

En mBlock 3. El programa te lo puedes descargar aquí y es como el anterior

Pero con 8 objetos bombillas, con su programa correspondiente, por ejemplo el 6

Otra propuesta de coche fantástico

Esto lo mostramos como ejemplo de hacer el coche fantástico con un potenciómetro, OJO la solución está realizada en código, no en mBlock, pero los vídeos explican muy bien cómo hay que conectar todo:

Solución

La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí









Semáforo

Realizar un semáforo de luces para coches y peatones:

Fuente: Con permiso del autor David López Morte (IES Los Albares)la propuesta del semáforo aquí.

Solución

La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí





Propuesta 2 con código

Solución

La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí






Otras propuestas

Pues ahora que sean dos luces las que se muevan, los dos en sentidos opuestos:

Solución

La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí




Puedes descargarte el programa aquí.


Ampliación: Sensor parking

Ampliación: Sensor parking

Con un led

Realizar un programa que la luz parpadee más deprisa cuanto más cerca esté el obstáculo.

Solución

El truco está en el tiempo de espera en la intermitencia

Si el tiempo de espera es proporcional a la distancia, parpadeara más cuanto más cerca.

La captura está en mBlock3.0 pero es igual en mBlock 5.0




Ampliación: Sensor parking

Con altavoz Arduino

Realizar un programa que realice pulsos el altavoz en función de la distancia al objeto. Cuanto más cerca mayor es la frecuencia de los pulsos

Solución

¡¡¡ Es exáctamente igual que el caso anterior !!! Sensor parking con led lo único es cambiar la luz POR UN ALTAVOZ !!!




Ampliación: Sensor parking

Con altavoz del PC

Ahora que no sea un altavoz suelto, sino el del ordenador

Si te fijas va más lento que el caso anterior por su dependencia con el ordenador.

Solución

Con mBlock 5.0

Si la instrucción de ultrasonidos funcionase en vivo, se podría utilizar la técnica de variables globales y sería sencillo el programa, pero esta instrucción SOLO FUNCIONA EN CARGA luego utilizaremos la técnica BROADCAST  de https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock

 instruccionultrasonidos.png

Luego el programa lo tenemos aquí https://planet.mblock.cc/project/3271155

En el dispositivo ARDUINO

arduino-sensorparking1.png

Y en el objeto tambor

arduino-sensorparking2.png

Con mBlock3.0



Si quieres este programa te lo puedes descargar aquí.


Ampliación: Sensor parking

Con varios leds

Realizar un programa que visualice con las luces la distancia que detecta el sensor de ultrasonidos.

Cuanto más lejos, más luces encendidas:

Solución

La captura está en mBlock 3.0 pero en mBlock 5.0 es igual




Muro

Hecho con Padlet

Créditos

Cualquier observación o detección de error en soporte.catedu.es

Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png