ARDUINO CON ARDUINOBLOCKS Objetivos y contenidos Objetivos Enseñar que es posible tener un kit barato al alcance de los centros con buena calidad/precio para enseñar la robótica al alumnado. Conocer la versatilidad, posibilidades, creatividad y sencillez de la programación en bloques de Arduinoblocks. Conocer los diferentes elementos que rodean a la programación con Arduino: Sensores Actuadores y otras salidas Capacidad de desarrollar retos  STEAM  con un amplio nivel educativo: primaria hasta secundaria Retos  STEAM  de nivel principiante Retos  STEAM  de nivel medio Retos  STEAM  de nivel avanzado Realizar retos STEAM en un entorno de lenguaje gráfico por bloques  ARDUINOBLOKS  amigable, sin complicaciones técnicas y multiplataforma. Conocer  ARDUINOBLOCKS  una plataforma web que permite programar por bloques gráficos Conocer las diferentes posibilidades de la programación por bloques de  ARDUINOBLOCKS Conocer las posibilidades didácticas de  ARDUINOBLOCKS  y su gestión de proyectos en el aula Conocer el kit robótico STEAM  Arduino  que se propone, con un coste económico bajo pero de calidad para que un centro educativo lo pueda asumir para su aplicación en el aula (mínimo 12 por aula) Conocer la placa  Arduino , sus sensores y actuadores Aplicaciones prácticas del  Arduino Contenidos El kit de Arduino con Arduinoblocks El pensamiento computacional Qué es Arduinoblocks Crear cuenta Cuentas alumnos Arduinoblocks connector Empezar un proyecto Sensores Actuadores y otras salidas Prácticas como principiante Encender y led Intermitente RGB Pulsador luz Pistola láser Pulsador con luz y timbre Prácticas nivel intermedio Interruptor crepuscular Barrera por ultrasonidos Comunicaciones Lectura puerto serie ultrasonidos Prácticas nivel avanzado Alarma láser Piano con teclado invisible Aparcacoches Estación meteorológica Introducción Kit de Arduino con Arduinoblocks El paquete consta de una docena de los siguientes elementos El coste se ha optimizado a casi 24€ por robot, y con preferencia empresas españolas. Con diferencia, el kit que presentamos tiene mejor relación calidad/precio que los kits que venden comerciales, incluso en sitios " baratos " como Aliexpress ver unos ejemplos  Recomendamos el siguiente artículo de Luis Llamas que da buenos consejos sobre las compras de los kits de iniciación de Arduino, coincide con nuestro criterio es mejor comprar los elementos separados y a empresas españolas online que kits ya prefabricados a empresas tipo Amazon, Aliexpress... sobre todo porque en esos kits ponen elementos innecesarios y la relación calidad/precio es muy baja. Ver https://www.luisllamas.es/kit-de-iniciacion-barato-para-empezar-en-arduino/ Pensamiento computacional ¿Dónde se encaja este robot?¿se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU? Esta es la hoja de ruta que proponemos, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado que tenga una visión global de tanta oferta: Como se puede ver ARDUINO CON ARDUINOBLOCKS tiene la ventaja de tener un precio razonable, y dentro del rango de programación en bloques del Arduino en primaria. Guía orientativa Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon Lenguajes de programación Arduino se puede programar  Por bloques (mBlock, Echidna, Scratch, SteamMakerblocks ( este curso se basa en utilizar Arduino en este lenguaje) , Blocky....) Por código principalmente Arduino IDE  Guía de los lenguajes de programación para robots Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon 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. 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. 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 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. Tarjeta 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: El convencimiento de que la capacidad de comprender, participar y trabajar en el mundo digital es de vital importancia para las oportunidades de vida de una persona joven. La necesidad de emocionar y atraer a las personas jóvenes por medio de BBC micro:bit, especialmente a  las que podrían pensar que la tecnología no es para ellas. Diversificar a los estudiantes que eligen las materias STEM a medida que avanzan en la escuela y en sus carreras, para hacer crecer una fuente diversa de talento, impulsando la equidad social y contribuyendo a crear una tecnología mejor. Para desarrollar sus principios, la fundación trabaja en tres líneas de acción: El desarrollo de hardware y software que contribuyan a despertar el entusiasmo en las personas jóvenes hacia la tecnología y hacia las oportunidades que presenta. La creación de recursos educativos gratuitos y fáciles de usar que permitan al profesorado enseñar de forma atractiva y creativa. La colaboración con entidades asociadas que compartan una misma visión para ofrecer programas educativos de alto impacto en todo el mundo. 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 . Captura 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: Procesador de 64 MHz. 512 KB de RAM Flash y 128 KB de RAM. Matriz de 5 x 5 LED rojos. Dos pulsadores mecánicos y un tercer pulsador de apagado y reset. Un pulsador táctil. Micrófono y altavoz. Acelerómetro y brújula. Sensores de luz y de temperatura. Comunicación con otras placas por Bluetooth de bajo consumo. Alimentación a 3 V o por USB. 25 pines de entradas y salidas para conectar motorcitos, sensores, placas de Intenet de las Cosas, robots y, en general, cualquier otro tipo de accesorio. 200 mA de intensidad de corriente disponibles en las salidas para alimentar accesorios. 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: Es seguro y respeta la privacidad de los usuarios: Aunque hay compañías linuxeras, como Oracle, Novell, Canonical, Red Hat o SUSE, el grueso de distribuciones y software Linux está mantenido por usuarios y colectivos sin ánimo de lucro. De esta forma, podemos confiar en que una comunidad que tiene detrás millones de usuarios, pueda validar el código fuente de cualquier de estas distribuciones, asegurándonos la calidad de las mismas, compartir posibles problemas de seguridad, y sobre todo, estar bien tranquilos con la privacidad y seguridad de nuestros datos e información personal, aspecto que debería ser crítico y determinante a la hora de trabajar con los datos de menores de edad en las escuelas y colegios. Es ético y socialmente responsable: La naturaleza de Linux y su filosofía de código abierto y libre hace posible que cualquier usuario con conocimientos pueda crear su propia distribución basada en otras o probar las decenas de versiones que nos podemos encontrar de una distribución Linux. Este es el caso de Ubuntu por ejemplo. Gracias a esta democratización de los sistemas operativos, incluso han podido aparecer en nuestras vidas nuevos dispositivos basados en software y hardware libre como Arduino y Raspberry Pi. Es personalizable: el código abierto permite su estudio, modificación y adaptación a las necesidades de los diferentes usuarios, teniendo así no un único producto sino una multiplicidad de distribuciones que satisfacen las necesidades de los diferentes colectivos a los que se dirijan. Especialmente útiles son las distribuciones educativas libres, que pueden ser adaptadas a las necesidades de las escuelas. Está basado en las necesidades de los usuarios y no en las de los creadores de hardware y software Es gratis. La mayoría de las distribuciones Linux son gratuitas y de libre descarga Es fácil de usar. Una de las barreras que durante años ha evitado a muchos usar Linux es su complejidad. Las distribuciones orientadas al consumo doméstico cumplen los estándares de simplicidad y necesidades que cualquier usuario sin conocimientos de tecnología pueda necesitar. El entorno gráfico es sencillo, intuitivo, e incluso se puede customizar para que se pueda parecer a los más conocidos como Windows y MacOS. Además, vienen con la mayoría de aplicaciones que cualquier usuario puede necesitar: ofimáticas, edición de audio y vídeo y navegación por Internet. Es suficiente. Tiene su propio market de aplicaciones. Como el resto de sistemas operativos ya sea para ordenadores o dispositivos móviles, también podemos encontrar un lugar único donde poder descargar cientos de aplicaciones para todos los gustos y necesidades. 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: 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. Facilidad en la instalación y el uso del sistema mediante programas personalizados. 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. Gestión de equipo y del software de manera remota y desatendida mediante un servidor Migasfree. Inventario de todo el hardware y software del equipo de una forma muy cómoda. Soporte y apoyo de una comunidad que crea, comparte e innova constantemente. ¿Qué es 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) 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  2 10 = 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: 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. Los valores PWM que podemos proporcionar pueden ir desde 0 a 255. Un valor bajo es una señal cuadrada donde el pulso es pequeño comparado con el periodo (ver figura primera señal) por lo tanto el Valor medio es bajo. Un valor mitad, es decir 255/2 = 127 o 128, corresponde a una señal cuadrada perfecta (ver figura segunda señal) por lo que el Valor medio es la mitad, si 5V es la tensión de alimentación, sería 2,5V. Un valor alto es una señal cuadrada donde el pulso es grande comparado con el periodo (ver figura la tercera señal) por lo tanto el Valor medio es alto Un valor 0 corresponde a un 0V analógico y sería una señal sin pulso Un valor 255 corresponde a la máxima tensión (la de alimentación (normalmente 5V).  La frecuencia es de 490Hz para los pines 3, 9, 10, 11 y de 980Hz para los pines 5 y 6 en un Arduino UNO o Nano 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). En el curso Arduino con código u tiliza una Shield llamada Edubásica que dispone de un transistor y un circuito integrado LM293 para realizar esta función, además de otras ventajas para el aprendizaje de Arduino. En el curso Rover con Arduino utiliza Shield motor para NodeMCU Hardware 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.  Arduino UNO R3 by GmedranoTIC on Sketchfab Entradas y salidas La placa Arduino UNO consta de: DIGITALES : 14 entradas/salidas digitales D0-D13 previamente hay que configurarlas o entradas o salidas. Que operan a 5 ó 0 voltios. Cada pin puede proporcionar o recibir como máximo 40 mA. Los pines D0 y D1 son compartidos por el puerto USB por lo tanto no se pueden utilizar si se está comunicando con el ordenador, están marcados como TX/RX (transmisión y recepción puerto serie). ANALOGICAS 6 entradas analógicas A0 al A5 con una resolución de 10 bits que proporcionan un número entero de 0 a 1023. Por defecto miden de 0 voltios (masa) hasta 5 voltios.  6 salidas pseudo-analógicas, en los pines digitales 3, 5, 6, 8, 10 y 11 son PWM (Pulse Width Modulation) y como hemos visto, pueden proporcionar una salida cuadrada que su valor medio puede estar entre 0 y 5V 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: Pin de referencia analógica (naranja). Señal de tierra digital (verde claro). Pines digitales 2-13 (verde). Pines digitales 0-1 / entrada y salida del puerto serie: TX/RX (azul) (estándar de comunicación serie IC2). Botón de reset (negro). Entrada del circuito del programador serie (marrón). Pines de entrada analógica 0-5 (azul oscuro). Pines de alimentación y tierra (naranja y naranja claro). Entrada de la fuente de alimentación externa (9-12V DC) X1 (gris). - Entrada fuente de alimentación externa  SV1: En las placas antiguas existen estos pines para conmutar si la alimentación es por el puerto USB, ahora lo realiza automáticamente un transistor MOSFET Puerto USB (rojo). 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 La shield de l curso Arduino con código EDUBASICA, que integra algunos sensores y actuadores, pero lo que destaca es que además tiene la opción de conexión de motores o actuadores que requieran potencia, pues la placa Arduino por sí sola no puede proporcionar la suficiente intensidad para alimentar motores, relés o electroválvulas. El límite de intensidad que proporciona cada una de las salidas digitales es de 40 mA. Para poder activar estos dispositivos tendremos que montar un circuito externo adicional con transistores o circuitos integrados específicos para motores, como es el caso del LM293, que entregan la intensidad suficiente. Para facilitarnos la tarea esta placa integra un LM293 y un transistor de potencia, en total 5 salidas de potencia. La shield del curso ECHIDNA   que tiene integrados sensores y actuadores como el acelerómetro, sensor de luz, pulsadores, potenciómetro, altavoz...  y destaca el Joystick con la posibilidades de gamificación que se puede hacer con este elemento. También destaca el modo MAKEY que permite convertir los pines analógicos y los digitales D2 D3 en pines sensibles al tacto, con las mismas posibilidades que la placa MAKEY MAKEY ( ver curso Makey Makey ). Actualmente Echidna ya no fabrica esta Shield sino comercializa la ECHIDNA BLACK que no es una shield sino es autónoma (es decir, NO necesita la placa Arduino, la tiene integrada) . La shield del curso ARDUINO EN EL AULA, la TDR-STEAM   que tiene muchas posibilidades didácticas por su sensores (temperatura, humedad, luz, potenciometro, pulsador, receptor IR). La Shield k5864195 muy sencilla y barata, si lo que se busca son sensores sencillos (pulsadores, potenciómetro) y actuadores sencillos (altavoz, leds y display 7 segmentos). Shield Protoboard que simplemente tiene una placa para hacer los prototipos. Por ejemplo Curso de Domótica con Arduino 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... Agregar conectividad al Arduino, ya sea por red móvil (3G, 4G), por Wifi, Bluetooth o por cable Ethernet o incluso localización GPS. Agregar potencia a las salidas para conectar por ejemplo motores, como el de Edubásica pero más especializado en esta función y con más salidas pero por ejemplo la L293D ⨤7€ permite 4 motores, motor paso a paso, servo... . Shields con relés para conectar sensores y actuadores con tensión y así no tienes problemas de quemar el Arduino. Shields con batería que en el caso de corte de alimentación, permiten que el Arduino no se apague. Entrada y salida de  imagen con pantalla líquida y cámara 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: Cada pin proporciona 40 mA. El límite proporcionado por el USB es de 500 mA en total. 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) : El voltaje recomendado de la fuente externa está entre 7 y 12V. Tiene un diodo de protección para proteger la placa de cambio de polaridad accidental. La intensidad máxima que puede entregar Arduino a los actuadores que queramos controlar (servos, motores, relés,...) es de 1A, aunque una exposición prolongada a esta corriente puede estropear la placa. Lo recomendable son 500 mA. El pin serigrafiado con Vin proporciona directamente el voltaje de la fuente conectada al Jack de Arduino (menos la caída de tensión del diodo de protección) Desde ese pin podemos sacar un cable y alimentar a los actuadores que necesitemos. Por ejemplo, si alimentamos con una pila externa de 9V conectada al jack, en el pin Vin tendremos aproximadamente 9V (hay que restar la caída de tensión del diodo de protección que será de medio voltio). Además en los pines 5V y 3.3V dispondremos también de dichos voltajes aunque la fuente externa sea de 9V. 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 necesitamos hacer funcionar actuadores de bajo consumo (luces, zumbadores, etc...) podremos trabajar directamente con el USB conectado al ordenador o conectado a un PowerBank. Si necesitamos mover cargas, excitar bobinas u otros elementos de mayor consumo lo recomendable es alimentar externamente Arduino desde el Jack con un rango de 9 a 12V. 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. Software Las placas electrónicas educativas (Echidna, Micro:bit, Arduino, ESP32 ...)  se programan mediante varias opciones : OPCIÓN LENGUAJE GRÁFICO POR BLOQUES Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos: ECHIDNASCRATCH Específico para Echidna e integra la IA CURSO DE ECHIDNA MBLOCK  Basado en Scratch. Aunque es un programa especializado en el robot comercial mBot, (basado en Arduino), el mismo programa está adaptado para programar Arduino. CURSO ARDUINO CON MBLOCK   se utiliza Arduino y placa Protoboard CURSO DE ECHIDNA   se utiliza la Shield Echidnam y EchidnaBlack CURSO DE MBOT  se utiliza el robot mBot STEAMAKERBLOCKS (antes ARDUINOBLOCKS)  se trabaja online, muy visual y muy amigable. Está adaptado tanto para trabajar tanto Arduino como muchas placas controladoras y en el aula. Podemos verlo en los siguientes cursos: CURSO ROVER CON ARDUINO aunque no se utiliza un Arduino, sino un NodeMCU pero la programación es exactamente igual CURSO DE ARDUINO CON ARDUINOBLOCKS donde se utiliza el Arduino con una placa protoboard CURSO ARDUINOBLOCKS EN EL AULA  donde se utiliza la Shield TDR-STEAM CURSO ESP32 EN EL AULA donde también utiliza la Shiedl TDR Steam pero la placa no es un Arduino, sino ESP32, la programación es exactamente igual. Microbloks https://microblocks.fun/   placas: Arduino, Microbit, ESP32, RaspberryPico, .... ver minitutorial Otros softwares para programar con bloques Snap4Arduino  https://snap4arduino.rocks/run/ Online, libre... ver compartiva vs mBlock S4A https://s4a.cat/ EN VIVO ¿Qué es eso?                                                                                                                                                        Existe una posibilidad de utilizar la placa "en vivo" frente a "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:      - Enviar órdenes desde el ordenador a la placa.                       Por ejemplo que al pulsar la tecla espacio que se encienda el led D13      - Enviar información desde la placa al ordenador                   Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc... Que nosotros sepamos, estos programas permiten la programación en vivo :                - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...                 - EchidnaScratch CURSO DE ECHIDNA                 - Microblocks  VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS INCONVENIENTES : Necesitas el ordenador encendido y conectado al robot. TAMBIÉN ES EN VIVO PERO .... Hay otros softwares que técnicamente trabajan en vivo, es decir, que el programa se ejecuta desde el ordenador, no se ejecuta en la placa, son : - Snap4Arduino para placas Arduino - Picobriks blocks para Picobrick board Pero no permiten trabajar utilizando los elementos del ordenador (teclado, webcam, pantalla, sprite o objetos,,,) Es importante que entiendas que para trabajar en vivo, la placa tiene que tener cargado un " firmware " para que interactúe con el ordenador. P: ¿Qué es eso de "firmware"? R: No es más que un software que se graba en los chips de la placa. P ¿Y por qué se llama así, y no se llama software o programa y en paz? R: Digamos que como se graba en los chips, es un medio camino entre software y hardware, para diferenciarlo del software habitual. EN CARGA ¿Qué es eso?                                                                                                                                                        Simplemente el programa que estas haciendo  se carga en la placa VENTAJAS: Eres independiente del ordenador, tu robot funciona independiente DESVENTAJAS Pierdes todas las posibilidades de utilizar los recursos de un ordenador, teclado, pantalla, webcam, altavoces... Es  importante que si  cargas tu programa en la placa,  pierdes lo que había antes Es decir, si quieres volver a trabajar EN VIVO tienes que cargar el firmware correspondiente. OPCIÓN LENGUAJE POR CÓDIGO Recomendable a partir de secundaria. LENGUAJE POR CÓDIGO ARDUINO IDE 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 En los cursos de CATEDU se ha utilizado el lenguaje por código empezando desde cero en: CURSO ARDUINO CON CÓDIGO   donde se trabaja con el Arduino y con diferentes sensores y actuadores, con o sin placa Shield Edubásica. CURSO DE DOMOTICA CON ARDUINO donde se realiza una maqueta de una casa controlada con domótica. También el curso ofrece la versión de hacer la misma maqueta utilizando lenguaje gráfico por bloques. Recomendamos estas hojas resumen si vas a trabajar con código: En Español: enlaceDrive , enlaceGithub En Inglés: enlaceDrive , enlaceGithub,  enlaceSpakrfun LENGUAJE POR CÓDIGO PYTHON Es un lenguaje más amigable que ArduinoIDE y tiene muchos campos de aplicación aparte de la robótica Arduino tiene su propia versión para trabajar con sus placas compatibles: Arduino Lab for Micropython Ver curso Arduino ALVIK Un compilador universal Thonny Ver curso Pico-briks 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  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,  debido a que el código es más depurado y no tiene la información necesaria para volver a su origen en bloques, ya lo has visto con el anterior ejemplo, el código tiene más información. ¿No te lo crees?  Haz la prueba, métete en https://www.tinkercad.com/ crea un programa con bloques, dale a la pestaña de código y te aparecerá una advertencia que perderás el programa con bloques ! no puedes volver atrás ! Curiosamente, tiene una opción bloques+código que traduce cada bloque con un código, es decir, traduce cada bloque sin perder información, sólo de esa manera se puede pasar de bloques a código y viceversa. Hay herramientas para pasar de bloques a código pero no al revés 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 OPCIÓN SIMULACIÓN                                  Incluimos dentro del apartado de Software los diferentes programas que hay para simular placas electrónicas como Arduino, ESP32, Micro:bit 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. Además permite embeber, pruébalo !!! 😍😍😍 Pulsa Iniciar simulación y luego pulsa el botón A de cualquiera de los dos micro:bits 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. 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. SIMULIDE En https://simulide.com/ podemos encontrar un programa local de software libre genérico para electrónica, incluido Arduino. En esta captura se puede ver uno de los ejemplos que incorpora el programa: OPCIÓN SÓLO DIBUJAR TinkerCad es un buen programa para dibujar los planos ➕permite también la simulación ➕ permite embeber y compartir ➖  no tiene muchos componentes SimulIDE es software libre. Es un programa portable. ➕ Tiene muchos componentes ➕permite también la simulación ➖  le faltan algunos sensores, pero van incorporando Fritzing  es un clásico. Es un programa portable. ➕ Tiene muchos componentes ➖ no es gratis, hay que pagar 8€ Circuit canvas ➕ puede compartir  por ejemplo ➕ tiene buenos tutoriales sobre electrónica ➖ todo en inglés Sensores Esta sección es una visión rápida de las posibles entradas de los robots.  NO LEAS TODOS SINO LOS QUE TIENE TU ROBOT Un poco de teoría... 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 . 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,... Tipos de sensores DIGITAL : un sensor digital sólo tiene dos estados: activado/desactivado, ON/OFF, 1/0, Alto/Bajo, ... En este caso  conectaremos el sensor a una de las entradas digitales de Arduino para leer el estado. 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. ANALÓGICO : el sensor nos puede dar un rango de valores, normalmente se traduce en un valor de tensión o de  corriente variable en función de la señal captada al sensor. En este caso conectaremos el sensor a una de las entradas analógicas de Arduino (A0,..., A5). El rango de entrada será una tensión entre 0v (GND) y 5v. 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. DATOS : el sensor ofrece su información a través de una interfaz de comunicación. La forma de comunicación puede ser por sistemas estándar como I2C o SPI o algunos sensores usan su propio protocolo para codificar la información y debemos realizar desde el software la decodificación correcta para interpretar los datos del sensor (normalmente los desarrolladores de este tipo de sensores ofrecen una librería software para Arduino que hace todo el trabajo). Ejemplo: el sensor DHT11. Por un solo pin envía los datos de temperatura y humedad. Sensores modulares. 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 en el robot mClon   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? Lo "normal" es que al pulsar se emita un '1' configuración Pull down , pero hay pulsadores que funcionan Pull up y los llaman lógica invertida , por eso en la programación por bloques podemos encontrar esto: 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 Disparo láser en Arduino con ArduinoBlocks Apertura de puerta en Domotica con Arduino 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. 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: Arduino con código: Mapeo del potenciómetro Arduino con código: Regular la luz con potenciómetro Arduinoblocks en el aula En Arduino con Echidna , con joystick Domótica con Arduino con joystick  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 ejemplos de uso : el interruptor crepuscular del curso Arduino con ArduinoBlocks Medir la luz en Rover con Arduino Medir la oscuridad en Arduino con mBlock Hinchar un balón en Arduino con mBlock Una manera más económica de montar este sensor es utilizar una resistencia y un LDR: El LDR cuando más oscuridad, más resistencia En una configuración PULL DOWN, cuanto más luz, la resistencia del LDR baja, por lo tanto más tensión en A6 Los módulos LDR que se venden suelen esta configuración Pull down, es decir, cuanto más luz,  más tensión: 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. 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 . O hay algunos que tienen 4 pines como en la figura que ofrecen las dos cosas: salida analógica A0 y digital D0 . 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 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 El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC     Trig (Disparo del ultrasonido)    Echo (Recepción del ultrasonido) y  GND  aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo. La distancia se calcula con esta fórmula: Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2 Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo. Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍 Ejemplos de uso: Alarma en Domótica con Arduino Piano invisible en Arduino con ArduinoBlocks ,  Sensor parking en Arduino con ArduinoBlocks Piano invisible en Arduino con mBlock Sensor parking en Arduino con mBlock Sensor de distancia de ultrasonidos con Picobricks Sensor DHT11 (Temperatura y Humedad). Este sensor de temperatura y humedad DHT11  nos permite determinar las zonas de confort para un rango de temperaturas entre 0ºC y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Una salida digital para dos variables cómo lo hace? Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad (en BCD) y los 16 restantes es la temperatura (en BCD) los 8 restantes son de comprobación Checksum (en binario) como la letra del DNI. 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: Medir H y T con Blink en Rover con Arduino Estación meteorológica Arduino con Arduinoblocks Arduinoblocks en el aula SMART HOME con Micro:bit 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 Ejemplo de uso de un DHT11 sin encapsular: 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 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 IR Es un sensor para distancias cortas hasta 2cm y no da la distancia, simplemente si hay o no hay obstáculo, pero son muy baratos, unos 0.30€. Aquí tienes un ejemplo de evita obstáculos en un rover marciano con Raspberry Para saber más te recomendamos esta página de Luis Llamas IR Sensor Module for Arduino Projects | 3D Model by Veer AI on Sketchfab 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: Alarma por fuego en Domótica con Arduino Sensor de Gas (MQ2). Detecta gases inflamables : GLP, I-butano, propano, metano, alcohol, hidrógeno, humo... con más sensibilidad en algunos que en otros. Siempre detecta el conjunto. Son usados en electrónica de consumo y mercados industriales. Sensibilidad Tiene alta sensibilidad y se puede ajustar girando el potenciómetro. Tiempo de respuesta : Internamente posee un calentador para aumentar su temperatura y que estos gases reaccionen con la resistencia interna que tiene, por lo tanto tardan algo en responder la primera vez que se conectan, incluso horas en algunos modelos. Una vez calentados son rápidos en la respuesta. Tipo de salida : Analógico pero si tiene 4 pines como el de la figura, incorpora un pin digital. Ejemplos de uso: Smart Home Microbit Smart Home ESP32 Sensor de humedad de suelo. Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo. El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.  Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023. Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/arduino-humedad-suelo-fc-28/ 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 .   La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0V (en el aire) a 2,3V (totalmente sumergido en agua). Smart Agriculture Kit micro:bit 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 : Curso de Domótica con Arduino Smart Agriculture Kit micro:bit Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos. 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. 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. Sensor de golpe Es un sensor digital que al ser golpeado este sensor envía una señal momentánea. 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. 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. 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 Resistencia Flex Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k 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: La resistencia entre masa GND del ARDUINO (cable negro) y un punto en la placa protoboard ese punto medio conectarlo a una entrada analógica, por ejemplo A0 (cable amarillo) Una resistencia de valor parecida a la Flex de decenas de K entre ese punto y +5V (cable rojo en la foto) Este sensor tiene posibilidades para usarlo en "ropa inteligente". Sensor de movimiento  Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad.  Los sensores PIR  se basan en la medición de la radiación infrarroja . Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piro eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica. En realidad  cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica. De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital. El otro elemento restante para que todo funcione es  la óptica del sensor . Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR. De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma. Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/ Puedes ver ejemplos de uso en robótica en :  Smart Home para Microbit Smart Agriculture Kit para Microbit Más sensibles son 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..... Para saber más  ver la página de Luis Llamas Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores.  Curiosamente, la gran ventaja técnica de los de microondas es un gran inconveniente para usarlo en el aula , con cualquier movimiento se dispara, luego para clase es mejor el sensor PIR   Esta página esta adaptada de  este enlace.   José Andrés Echevarría @cantabRobots CC-BY-NC-SA. Actuadores y otras salidas Esta página es un repaso rápido de las posibles salidas de los robots NO LEAS TODOS SÓLO LOS QUE TIENE TU ROBOT ¿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 baja potencia Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador. Ejemplo de uso Smart Home para microbit Motores con algo de potencia Si quieres usar un motor para mover unas ruedas, ya pide más corriente, no se puede conectar directamente al la placa (Arduino, esp32 etc..). El de la figura es típico en robótica y lleva reductores dentro para bajar la velocidad : 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  Curso mClon con nanoArduino con el  B6612FNG  Curso Rover con Arduino con la shield L293D ESP-12E para el NODE MCU que internamente tiene el LM298N Curso Arduino con código con LM298N y también con un transistor 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: Curso Arduino con código Curso brazo robótico del mClon con nanoArduino Apertura de barrera por ultrasonidos en curso Arduino con ArduinoBlocks Tractor entrando en el corral Arduino con EchidnaShield Apertura de puerta Domótica con Arduino Servo con PicoBrick Apertura ventana y puerta en Smarth Home para microbit Smart Agriculture Kit para micro:bit Relés Un relé es un interruptor activado por un electroimán, lo que permite independizar los circuitos. En el dibujo se ve que el circuito rojo de 220V esta separado del verde, de sólo 1.5V. Pero es el circuito verde que al funcionar, hace que el electroimán mueva el interruptor del relé y encienda la bombilla. El objetivo es que he podido encender una bombilla de 220V sin tocar los 220V peligrosos. En el circuito verde, el interruptor puede ser un Arduino. Experiméntalo en este simulador . Un ejemplo con Arduino en  Luis LLamas Un ejemplo de uso en Picobricks 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: Las conexiones son : SIG del IRF520N a una salida digital por ejemplo D13 VCC del IRF5020N al 5V del ARDUINO Los dos GND del IRF520N a GND del ARDUINO V+ y V- del IRF5020N al solenoide, da igual qué cable pues no tiene polaridad. VIN del IRF520N al VIN del ARDUINO (son los voltios de la pilas) 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 : Cuatro pines digitales del ARDUINO al IN1,IN2,IN3,IN4 del ULN2003 por ejemplo D10,D11,D12,D13 El conector blanco del ULN2003 al motor paso a paso El (+) del ULN2003 al Vin del ARDUINO El (-) del ULN2003 al GND del ARDUINO 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: GND  a GND y  VCC  a 5V (ojo que están a los dos extremos, marcados en rojo y en negro) OUT  o también señalado como I/O a un pin digital, por ejemplo D13 Ejemplos de uso: Domótica con Arduino:  Apertura puerta con mBlock Domótica con Arduino  Apertura puerta con código 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. Ejemplos de uso Timbre Arduino con Echidna Arduino blocks en el aula 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: 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 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. Un ejemplo de su uso lo puedes ver en Domótica con Arduino, interruptor crepuscular Intermitente RGB en Arduino con ArduinoBlocks 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. Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea). Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”. Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad....  A los LED WS2812B también se les denomina NeoPixel Luis Llamas CC-BY-NS-SA https://www.luisllamas.es/arduino-led-rgb-ws2812b/  Smart Home para Microbit con 4 leds RGB Neopixel Smart Home para ESP32 Smart Agriculture Kit micro:bit 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. 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 : en  Arduino con código Arduinoblocks en el aula Smart Home para Microbit CC-BY-SA  Luis Llamas No confundas Display LCD con  matriz de LEDs , o una OLED Aclarando conceptos: Protocolo I2C                                                                                    Es un protocolo de emitir los datos con sólo dos cables SDA (los datos) y SCL (reloj) y además pueden compartir varios dispositivos SLAVE) para ello la placa Arduino ESP32, microbit... (MASTER) tiene que saber qué dirección tiene cada dispositivo IMPORTANTE : Fuente Luis Llamas ArduinoI2C CC-BY-SA 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  !! ¿Qué es Arduino Blocks? Esto no pretende ser un tutorial exhaustivo de STEAMAKERSBLOCKS, sino una guía rápida. STEAMAKERSBLOCKS es un programa que tiene muchas posibilidades. Si quieres saber más sobre ARDUINOBLOCKS tutoriales, ejemplos, foro.... te recomendamos http://arduinoblocks.didactronica.com/ o el libro Arduino blocks - libros y tutoriales IMPORTENTE SABERLO: TENEMOS UN CHAT DE Ayuda en STEMAKERSBLOCKS  hay chat de Telegram con una comunidad de profesores y técnicos de la empresa que apoya Arduinoblocks donde puedes encontrar proyectos, enlaces interesantes y lo más importante:  Puedes preguntar tus dudas o problemas https://t.me/innovadidactic_comunidad   ¿Por qué una programación con bloques? Arduino se programa en lenguaje C++ (con algunas variaciones  para  simplificarlo).  Para  programar normalmente  se  utiliza  el  IDE  (“Integrated  Development Environment"/"Entorno  de  Desarrollo  Integrado")  de Arduino,  que  permite  escribir  el  código,  compilar  el programa  (crear  el  programa  binario  para  el  procesador Arduino) y grabarlo en la placa Arduino a través del puerto USB.  El  IDE  de  Arduino  se  puede  descargar   desde  la  web oficial .  Es totalmente libre (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)   (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) Sin embargo pensando en edades más tempranas se han desarrollado formas más sencillas e intuitivas de programar Arduino como son los lenguajes de programación por bloques . De todos estos lenguajes cabe destacar STEAMAKERSBLOCKS .  Gracias a este lenguaje visual podemos programar las placas Arduino sin necesidad de escribir ni una sola línea de código, de esta forma podemos empezar a realizar proyectos con Arduino de una forma muy rápida y a edades más tempranas.  La única desventaja es que el lenguaje por código tiene todo el potencial que requiere la programación de un experto. Mismo programa creado con el IDE de Arduino en C++ (imagen de la izquierda) y con Arduinoblocks (imagen de la derecha).   (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) José Andrés Echevarría @cantabRobots CC-BY-NC-SA)   Para trabajar con Arduinoblocks debemos ir a su página web http://www.arduinoblocks.com/ desde cualquier navegador y para cualquier sistema operativo (Windows, Linux, Mac).  (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) STEAMAKERSBLOCKS (antes Arduinoblocks)   antes STEMAKERSBLOCKS es  un  programa  creado  por  el  profesor  Juanjo  López.  Gracias  a  su  entorno gráfico  facilita  la  programación  de  placas  Arduino  a  todos  los  niveles.  Esta  herramienta  permite programar a personas sin conocimientos previos de programación, pero su versatilidad y potencia es tan grande que expertos programadores también pueden utilizarlo. (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) De Juan José López Almendros CC-BY-SA La programación  en STEMAKERSBLOCKS se realiza  con bloques  al  estilo AppInventor  o Scratch, se puede utilizar a partir de 8 años .  No  tenemos  que  escribir  líneas  de  código  y  no  nos  permitirá  unir  bloques  incompatibles evitando  así  posibles  errores  de  sintaxis.  La  plataforma   STEMAKERSBLOCKS genera,  compila  y  sube  el programa a la placa Arduino por medio de la conexión USB. Una vez subido el programa, la placa el Arduino no necesitará de la conexión al PC para funcionar pudiendo alimentarla con baterías o una fuente de alimentación para que funcione de forma autónoma.   STEMAKERSBLOCKS actualmente funciona con todos los navegadores de última generación: Mozilla Firefox, Google Chrome, Opera, Safari,...  (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) Por otro lado, tal y como se describe en la Wiki de Vitalinux ,   STEMAKERSBLOCKS funciona perfectamente con todos los sistemas operativos, pudiendo ser fácilmente instalable en equipos individuales y a nivel de centro dentro del soporte de Vitalinux . Crear cuenta Registrándonos  como  usuarios  de  la  plataforma   Steamakerblocks podemos  aprovechar  todas estas posibilidades:  Guardar tus proyectos en la nube de Steamakerblocks . Añadir información al proyecto: descripción, componentes utilizados, imágenes, etc. Añadir  archivos  adjuntos relacionados  con  el  proyecto:  esquemas, fotos,  archivos  para  impresión  3D, aplicaciones, etc. Compartir  proyectos  con  el  resto del mundo. Importar  proyectos  compartidos por otros usuarios. Valorar y comentar proyectos. Programar  directamente  Arduino desde  el  propio  navegador  (con  la aplicación: Steamakerblocks -Connector ). Utilizar  la  consola  serie  desde  el propio navegador.   Entramos en https://www.steamakersblocks.com/ e iniciamos sesión Y rellenamos el formulario Autor José Andrés Echevarría @cantabRobots CC-BY-NC-SA Cuentas alumnos Tal y como dice el tutorial de Juanjo López : Permite a un usuario registrado con email, crear y administrar nuevas cuentas de usuario dentro de una organización, centro educativo o institución. ❤️Permite crear usuarios alumnos sin necesidad de ceder ningún tipo de datos 😍Puedes pasar proyectos a los alumnos, vacíos o empezados 🥳Tú puedes ver los proyectos de los alumnos y ponerles comentarios Si lo quieres en papel, te recomendamos el tutorial de Juanjo López son 12 diapositivas muy bien explicados Repositorio Github Repositorio en steamakerbloks.com   Prueba con Catedu: https://www.steamakersblocks.com/ usuario alumnox.catedu donde x de 1 a 20 contraseña [donde esta catedu en minúsculas] Arduino blocks connector Espera !!! Aún no conectes tu placa (ESP32, Arduino, TDR STEAM...) PRIMER PASO Descargar e instalar Connector Para poder usar la herramienta Steamakerblocks tenemos que ejecutar antes  Connector . Lo descargamos de la misma página de Steamakerblocks según el sistema operativo que usemos: Windows ( W7 E INFERIORES NO FUNCIONA ), Linux .... Entra en https://www.steamakersblocks.com/ y en Recursos, tienes la web para descargar este programa: Lo descargamos y lo  instalamos. En el caso de tener equipos Vitalinux, es fácilmente accesible e instalable desde la aplicación Vitalinux Play o si se desea una instalación masiva en el centro a través de su página de soporte : SEGUNDO PASO: INSTALAR LOS DRIVERS Si no hacemos estos pasos, cuando conectamos la placa, siempre sale en el COM1, le damos a subir y sale error En  http://www.arduinoblocks.com/web/site/abconnector5 tenemos abajo ARDUINO SERIAL DRIVERS RECOMENDAMOS EL PRIMER ENLACE Y EL TERCERO En el primero el instalador está en este enlace https://cdn.sparkfun.com/assets/learn_tutorials/7/4/CDM21228_Setup.exe El segundo sólo si quieres utilizar Arduinos no oficiales, de fabricantes chinos, que tiene el CH340g y hay que leerse la página, paciencia El tercero es necesario el 2102 si utilizas el ESP32 el instalador esta en este enlace, es una carpeta comprimida, la descomprimes y está el ejecutable instalador https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers.zip concretamente hay que ejecutar este (al menos que el equipo sea muy viejo de 32bits) COMPROBAR QUE DETECTA LA PLACA Ahora conectamos la placa (ESP32, Arduino, NodeMCU, KeyStudio TDR STEAM...) a nuestro ordenador, y observamos si lo detecta, en Windows entramos en Administrador de dispositivos: Y vemos que en los puertos COM se ha detectado correctamente la placa: En el caso de que no aparezca, es que no se han instalado correctamente los drivers de Arduino. Entonces vamos a la página oficial de Arduino y descargamos el programa ARDUINO IDE :  https://www.arduino.cc/en/software y lo instalamos. Al instalar este programa se instalan los drivers en nuestro ordenador. No hace falta ejecutarlo. En el caso de equipos con sistema operativo Linux (como Vitalinux) el puerto serie tiene la forma /dev/XXXX YA PUEDES EJECUTAR ARDUINOBLOCKS CONNECTOR Ahora buscamos el programa ArduinoBlocks connector que hemos descargado e instalado en el primer paso y lo ejecutamos . ATENCIÓN No podemos cerrar la ventana mientras utilizamos Arduinoblocks , la minimizamos  simplemente. En caso contrario, Arduinoblocks no se puede comunicar con nuestra placa Arduino, NodeMCU, KeyStudio, etc .... YA PUEDES EJECUTAR ARDUINOBLOCKS Entramos en la web ARDUINOBLOCKS http://www.arduinoblocks.com/ nos logueamos e iniciciamos un proyecto, Vemos que en el editor que aparece ya los puertos COM (si no te aparece, dale a la rueda actualizar) Aparecen varios COM,  elegir el último que tiene que coincidir con el que has visto en el segundo paso , no necesariamente es el COM más alto. Si se queda una ruleta de espera demasiado tiempo, entonces, actualizar la página o darle a actualizar el botón 1 de la figura : Una vez elegido el COM ya puedes darle al botón amarillo  SUBIR cuando has realizado tu proyecto pero antes de subir, por si acaso dale a guardar el proyecto que has realizado. En el caso de equipos con Linux veremos algo así: ¿Tengo que hacer los cuatro pasos cada vez? No, sólo la primera vez para asegurar los drivers del Arduino, las siguientes veces que te conectes lo único que tienes que hacer  es el tercer y cuarto paso IMPORTANTE: TENER EL SOFTWARE ARDUINOBLOCKS ACTUALIZADO para que funcionen los nuevos bloques que se incorporan en Arudinoblocks Empezando un proyecto Entramos en Proyectos y podemos ver nuestros proyectos creados como también empezar uno. Y nos aparece tres opciones : En esta ventana podremos elegir que tipo de proyecto vamos a realizar:  Proyecto  Personal :  Iniciar  un  nuevo  proyecto  que  sólo  será  accesible  para  el  usuario. Posteriormente  se  puede  compartir  al  resto  de  la  comunidad  si  se desea. Proyecto  Profesor :  Iniciar  un  proyecto  como  profesor.  De  esta  forma  no  se  inicia  un proyecto como tal, sino que se especifican los datos del proyecto y se genera un código para que los alumnos se puedan suscribir al proyecto. El profesor podrá supervisar y valorar los proyectos de sus alumnos. Alumno :  De  esta  forma  nos  unimos  a  un  proyecto  planteado  por  el  profesor.  Nosotros realizaremos  el  proyecto  como  si  de  un  proyecto  personal  se  tratara, pero el profesor podrá supervisar y valorar nuestro trabajo. Adaptado de  este enlace.  José Andrés Echevarría @cantabRobots CC-BY-NC-SA Lo primero que tenemos que elegir es para qué tipo de placa se hace el proyecto. En el caso de que estés con el kit de CATEDU Rover marciano con Arduinoblocks el tipo de proyecto es para ESP8266 / NodeMCU En el caso de que estés con el kit de CATEDU Arduino con Arduinoblocks el tipo de proyecto es para Arduino UNO En el caso de que estés con el kit de CATEDU STEAMAKERSBLOCKS en el aula tienes dos opciones totalmente válidas: ArduinoUno ArduinoUno + Imagina TdR STEAM En el caso de que estés con el kit de CATEDU  ESP32 en el aula tienes dos opciones totalmente válidas: ESP32 STEAMakers ESP32 STEMakers + Imagina TdR STEAM En el caso de que estés con el kit de CATEDU  SMARTHOME ESP32 tienes que elegir : ESP32 STEAMakers ATENCIÓN luego NO se puede cambiar. Es decir, un proyecto realizado para un tipo de placa, no se puede cambiar a otro tipo de placa (la razón es simpe: las instrucciones cambian) Luego el nombre y el resto de campos es optativo pero importante y buena costumbre rellenarlos, sobre todo si el proyecto lo compartimos : Descripción Componentes Comentarios Área de programación del proyecto Este es el área sobre el que se trabaja en Arduinoblocks. En esta área arrastraremos y colocaremos los bloques que vamos a utilizar para crear nuestro programa. En el área de trabajo hay un Zoom (2) para ampliar o reducir la imagen, un icono para centrar (1) y un icono donde podremos borrar los bloques que no utilicemos (3). Adaptado de  este enlace.  José Andrés Echevarría @cantabRobots CC-BY-NC-SA Las principales secciones del área de programación son las siguientes : Adaptado de  este enlace.  José Andrés Echevarría @cantabRobots CC-BY-NC-SA Ver el código ArduinoBlocks genera el código de Arduino a partir de los bloques. El programa se puede compilar y subir directamente a la placa Arduino gracias a la aplicación ArduinoBlocks-Connector , sin embargo si deseamos ver o descargar el código podemos realizarlo desde el área de bloques. Adaptado de  este enlace.  José Andrés Echevarría @cantabRobots CC-BY-NC-SA Siempre, desde un lenguaje de programación en bloques podemos obtener su equivalente a Código de Arduino IDE ( de hecho es lo que hacen los programas), y luego con las funciones de Código de Arduino IDE el software lo pasa a lenguaje máquina que es la que se graba el Arduino, pero no al revés  es decir, no existen programas que dado un código máquina o código Arduino IDE lo pasen a bloques gráficos, (igual que no hay programas que lean el código máquina que hay grabado en un Arduino y lo pasen a código Arduino IDE). Esto no es del todo 100% verdadero pues la Ingeniería inversa en informática trata pues de eso: obtener la fuente aunque sea parcial, pues si obtienes el código legible, puedes alterar lo que quieras. Cuando compras un programa comercial, te dan el lenguaje máquina ilegible. Mientras que los programas de software libre se publica el código fuente legible para que todo el mundo pueda mejorarlo. Por ejemplo en la siguiente figura, el programa gráfico mBlock que se utiliza en Arduino, mBot, etc... pasa sus instrucciones de lenguaje de programación de bloques parecido a Scratch a lenguaje de Código de Arduino IDE y Arduino IDE graba instrucciones binarias de lenguaje máquina al Arduino. ¡¡A disfrutar!!  Consejo: Te recomendamos visitar el canal de Youtube de Arduinoblocks https://www.youtube.com/c/ArduinoBlocks PRACTICAS PRINCIPIANTE Son prácticas a nivel de primaria. Muy básicas en programación a nivel de control de la lógica si/sino y con una circuitería mínima para encender, apagar luces con un pulsador como sensor. Encender un led  Vamos a realizar un primer programa sencillo para empezar: encender un led. Como tenemos un led RGB vamos a encender sólo un color: El rojo El esquema de conexiones es el siguiente : El pin R=Red del RGB en D9 por ejemplo El pin GND al GND del Arduino Quedaría pues así : Y el programa en Arduino Blocks : Dejamos de momento Pin G = 10 y Pin B= 11 en esta práctica es irrelevante, pero en la siguiente práctica lo utilizaremos  Intermitente RGB Objetivo Vamos ahora a utilizar los tres colores y de forma intermitente. Que se encienda primero el rojo, luego el verde y luego el azul y así indefinidamente, con un tiempo de 1 segundo de duración cada encendido. Esquema Programa http://www.arduinoblocks.com/web/project/764523 🤔 ¿Por qué se han conectado a las salidas 9,10 y 11 ? …pista : ~ Pulsador luz Objetivo Montar el pulsador de luz, si se pulsa, que se encienda el RGB en todos sus colores Esquema A partir de ahora vamos a hacer dos líneas de +5V y GND superior e inferior en la placa Protoboard: Si te fijas se ha conectado el GND del RGB al GND de la línea azul superior de la placa Protoboard.al GND superior. El pulsador táctil su +5V y GND a las líneas rojas y azules inferiores +5V y GND de la placa Protoboard. Las dos filas rojas y azules superior e inferior están conectadas por los cables negro y rojo de la izquierda de la placa Protoboard. De esta manera simplificamos algo el cruce de cables y queda pues : las dos líneas azules de la placa Proboboard son GND (la superior y la penúltima de abajo) las dos líneas rojas de la placa Protoboard son +5V .  (la segunda y la última de abajo) Aconsejamos poner el pulsador táctil  delante de los cables de esta manera queda libre el acceso para poder pulsarlo sin tener cables por en medio. ATENCIÓN, a partir de ahora sólo señalaremos las nuevas conexiones para simplificar los esquemas Esto quiere decir que para este ejemplo, sólo mostraremos la conexión del interruptor de luz: Las demás conexiones tienes que mantenerlas aunque no las dibujemos : -  Conexión de la alimentación +5V y GND de las líneas azules y rojas superiores e inferiores -  Conexión de los anteriores elementos (en la figura el RGB) Programa http://www.arduinoblocks.com/web/project/766370 🤔¿Por qué se han conectado a las salidas 9,10 y 11 ?   …pista :  ~ y el 255 Pistola láser Objetivo Es la misma práctica que la de pulsador con luz, pero en vez del LDR es el láser. No tienen ninguna dificultad, simplemente la motivación de la creación de una pistola láser. Cableado Programa http://www.arduinoblocks.com/web/project/780595 Pulsador luz y timbre Objetivo Al tocar el pulsador, además de encenderse el RGB tiene que sonar una musiquilla ¿te suena la melodía? Esquema Añadimos el módulo zumbador, sin quitar los anteriores elementos ni cables, conectando el pin I/O a D3 , y los correspondientes pines de Vcc y GND del módulo zumbador al +5V y GND del Protoboard. Programa El esquema del programa está en http://www.arduinoblocks.com/web/project/766866 PRACTICAS INTERMEDIO Prácticas ya con sensores como el LDR, el sensor de distancia Ultrasonidos Salidas con actuadores como el servo Lectura de valores de los sensores por el puerto serie Interruptor crepuscular Objetivo Realizar un interruptor crepuscular, es decir, cuando se oscurece, que se encienda la luz y que se apague cuando la luminosidad se recupere. Cableado Utilizaremos el LDR con un divisor de tensión de tal manera que al modificar el LDR su valor, la tensión que han entre las dos resistencias se modifica. El punto intermedio que lee la tensión lo conectaremos a una entrada analógica, al A0 por ejemplo. Programa http://www.arduinoblocks.com/web/project/780612 Barrera por ultrasonidos Objetivo Crear un programa que al detectar un objeto a menos de 10cm suba una "barrera" simulada con un servo y un trozo de papel (en el vídeo un " postit " Cableado ATENCIÓN Se han omitido las conexiones del led RGB y las del zumbador Programa El programa lo tienes aquí http://www.arduinoblocks.com/web/project/770872 Puedes mejorar el programa añadiendo un retardo en la bajada de la barrera, simulando el caso real, que cuando el coche pasa, hay un poco de retraso en el cierre de la barrera También puedes añadir al programa que si se pulsa el pulsador táctil, que se suba la barrera, como pulsador de seguridad. Comunicaciones Arduino permite comunicarse con periféricos o con el PC de diferentes formas: Puerto  serie  (COM) :  Permite  una  conexión  serie  (tipo  RS232)  a  través  del  puerto  USB. Utilizada principalmente para programar la placa Arduino desde el ordenador y para comunicar con aplicaciones  en  un  ordenador  (consola  serie). Con una aplicación de terminal o consola  serie  podemos  visualizar  los datos recibidos desde Arduino y enviar datos al Arduino fácilmente.  (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) Para utilizar este puerto hay que determinar antes a qué velocidad se van a transmitir los datos para que todo se sincronice. A la hora de programar en el apartado de  Inicio se determina la velocidad en baudios bits por segundo normalmente 9600 (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)  La conexión serie de Arduino está accesible en los pines 0 (RX) y 1 (TX), internamente estos pines están conectados al chip que gestiona el USB, en caso de usar la comunicación serie con otros dispositivos conectados a los pines 0 y 1 se deberá desconectar el USB para evitar que se mezclen los datos y no funcione la comunicación.   I2C: Es otro sistema de bus de comunicaciones en serie. Permite crear una pequeña red de dispositivos (pensado principalmente para interconectar otros chips en la propia placa o cerca). La comunicación I2C sólo utiliza 2 cables. Para el Arduino UNO utiliza SDA=A4 SCL=A5 Para el Arduino Nano utiliza SDA=A4 SCL=A5 Para el Arduino Mega utiliza SDA=20 SCL=21 Para I2C Keyestudio UNO utiliza : SDA=A4 SCL=A5 Existe una tercera forma de comunicación, la SPI (Serial Peripheral Interface), pero no la veremos en este manual. (adaptado de José Andrés Echevarría @cantabRobots CC-BY-NC-SA) El Puerto serie COM lo utilizaremos como comunicaciones entre ordenador y las placas, aunque aquí puedes ver un ejemplo sencillo de comunicación entre dos Arduinos utilizando los pines 0-RX y 1-TX El I2C se utiliza principalmente en la conexión con la pantalla I2C: (José Andrés Echevarría @cantabRobots CC-BY-NC-SA) Ejemplo de conexión de LCD con ARDUINO UNO para ver cómo se programa con código aquí   Lectura puerto serie ultrasonidos Objetivo Vamos a visualizar por el puerto serie el valor del sensor de Ultrasonidos con el objetivo de aprender sobre las comunicaciones del Arduino y el ordenador y sus posibilidades de recogida de datos La gráfica que obtendremos al pinchar en el serial plotter de arriba a la derecha será algo así, moviendo un obstáculo delante del sensor : Arriba a la derecha tiene las opciones de exportar los datos a una hoja de cálculo. También se puede visualizar de forma textual en la  consola serie Cableado Simplemente conectar el sensor que se quiere examinar. Trigger en D6 y Echo e D5 por ejemplo: Programa http://www.arduinoblocks.com/web/project/780686 ¿Podrías hacer lo mismo con la lectura de la luz del sensor LDR ? PRACTICAS AVANZADO - Utilización de varios sensores y activadores a la vez - Programación en funciones y uso de variables - Continuación de lectura de sensores por el puesto serie Alarma láser Objetivo Realizaremos una alarma laser con las siguientes condiciones: Al tocar el pulsador táctil se  activará  la alarma, es decir, se encenderá el láser que apunta al sensor LDR Si la alarma está activada y " el ladrón" corta el haz láser, entonces la alarma  se dispara el disparo consistirá en avisos acústicos y visuales para salir del estado de disparo o de activación se pulsará el botón reset (no es necesario ninguna programación especial para cumplir este ítem) Cableado Tenemos que ser cuidadosos de apuntar el láser (representado en esta figura por un led) al LDR, en caso contrario el Arduino se disparará de inmediato al cargar el programa. Programa Se aconseja el uso de funciones y variables para simplificar la programación : OJO si se dispara la alarma, pon más retardo de 500ms http://www.arduinoblocks.com/web/project/772739 Mejora esta alarma añadiendo otro sensor, el sensor de Ultrasonidos, si detecta un objeto cercano que se dispare la alarma. Otra mejora :: Añade un retardo al disparo de la alarma al activar uno de los sensores, por ejemplo el láser. Igual que en los casos reales, el sensor de la puerta principal tiene retardo para que el "dueño" tenga un tiempo para  desactivar la alarma antes de que se dispare. El otro sensor (el de ultrasonidos) no tendría retardo, estaría por ejemplo en una habitación por lo tanto no tiene que tener retardo, el dueño nunca entra a la casa por ahí. Piano con teclado invisible Objetivo Vamos a tocar diferentes notas según la distancia que mida el sensor de ultrasonidos.. Cuanto más cerca, más agudo. Cableado Conectaremos el sensor de ultrasonidos y el zumbador tal y como lo hemos hecho en anteriores prácticas. Programa http://www.arduinoblocks.com/web/project/780618 Aparca coches Objetivo Simular el sensor asistente de aparcamiento que mediante una señal acústica nos avisa de la cercanía de un obstáculo. Es parecido a la práctica anterior, pero aquí el tono es el mismo. Lo que cambia es la frecuencia de los pulsos Cableado Es igual que en la práctica anterior Programa http://www.arduinoblocks.com/web/project/780629 Estación meteorológica Objetivo Igual que en la práctica de lectura de puertos podemos visualizar los datos de sensores ambientales : DHT11 que mide en el mismo pin la humedad y la temperatura El sensor LDR que mediría la luminosidad, proporcional a la nubosidad existente. Podemos ver las variaciones lanzando vaho en el sensor y tapando el LDR. Cableado Vamos a practicar la lectura de sensor DHT11 que es sencillo de utilizar pues como todos, tiene dos pines de alimentación y un pin de lectura, el otro pin, el penúltimo  no se conecta : Ojo, para que funcione correctamente hay que poner una resistencia entre el pin de datos y el de alimentación Programa http://www.arduinoblocks.com/web/project/780757 Créditos Autoría Javier Quintana Peiró CATEDU menos en los párrafos y citas que se cita su autor y procedencia. 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.