Arduino en el aula Introducción Objetivos y Contenidos Objetivos 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 ARDUINOBLOKS amigable, sin complicaciones técnicas, multiplataforma y con lenguaje gráfico por bloques 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 TDR 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 TDR STEAM Arduino, sus sensores y actuadores Aplicaciones prácticas del TDR STEAM Arduino Contenidos Arduino Placa Arduino, hardware y software Sensores Actuadores Placa Keystudio Shield TDR Steam ArduinoBlocks Retos Telecomunicaciones Bluetooth IOT -WIFI MQTT BLYNK Blynk en una rasperry local Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Kit Arduinobloks en el aula Se ha buscado un kit entre todos los comerciales que cumpla los siguientes objetivos: Que sea fácil de utilizar en el aula, sin necesidad de utilizar excesivo cableado, con el objetivo de realizar el máximo número de retos. Utilizar un lenguaje de programación por bloques fácil de desarrollar y sin complejidades técnicas multiplataforma. Con buena relación calidad/precio. Con un amplio abanico de prácticas y niveles educativos, desde primaria hasta secundaria. El equipo pedagógico de CATEDU ha elegido para este curso el Kit TDR STEAM de KeyStudio, y además ha incorporado una bolsa con elementos para las telecomunicaciones con el objetivo de alcanzar prácticas más avanzadas dentro del mundo del Internet de las cosas IoT. El kit esta pensado para utilizar dentro del aula y se ha establecido un número de 12 grupos, consideramos que es un número óptimo para llegar a la ratio del aula y que el profesor llegue a atender correctamente a todos los grupos. En esta tabla se puede consultar los precios y los enlaces a las páginas comerciales del kit : Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Normativa TECNOLOGÍA  Curso: 4º Según Orden ECD/489/2016, de 26 de mayo, por la que se aprueba el currículo de la Educación Secundaria Obligatoria y se autoriza su aplicación en los centros docentes de la Comunidad Autónoma de Aragón que puedes consultar aquí, la parte correspondiente a TECNOLOGÍA 4º DE LA ESO BLOQUE 4: Control y robótica CONTENIDOS: Sistemas automáticos, componentes característicos de dispositivos de control. Diseño y construcción de robots. Grados de libertad. Características técnicas. El ordenador como elemento de programación y control. Lenguajes básicos de programación. Aplicación de tarjetas controladoras en la experimentación con prototipos diseñados.  CRITERIOS DE EVALUACIÓN  COMPETENCIAS CLAVE ESTÁNDARES DE APRENDIZAJE EVALUABLES Crit.TC.4.1.  Analizar  sistemas  automáticos,  describir  sus componentes.  CCL - CMCT Est.TC.4.1.1.  Analiza  el  funcionamiento  de  automatismos  en  diferentes  dispositivos  técnicos habituales, diferenciando entre lazo abierto y cerrado y  describe los distintos componentes tanto en lazo abierto como cerrado. Crit.TC.4.2. Montar automatismos sencillos. CMCT Est.TC.4.2.1. Representa automatismos sencillos. Crit.TC.4.3.  Desarrollar  un  programa  para  controlar  un  sistema automático o un robot y su funcionamiento de forma autónoma. CMCT-CD-CAA Est.TC.4.3.1. Desarrolla un programa para controlar un sistema automático o un robot que funcione de forma autónoma en función de la realimentación que recibe del entorno. PROGRAMACION Y ROBÓTICA 3º DE LA ESO Según Orden ECD/1172/2022, de 2 de agosto, por la que se aprueban el currículo y las características de la evaluación de la Educación Secundaria Obligatoria y se autoriza su aplicación en los centros docentes de la Comunidad Autónoma de Aragón (Publicada en BOA el 11/08/2022) tenemos el currículo de PROGRAMACIÓN Y ROBÓTICA ver pdf Tenemos en la parte III.2 Concreción de los saberes básicos, en el C. Pensamiento computacional, programación y robótica : Algorítmica y diagramas de flujo. Aplicaciones informáticas sencillas para ordenadores: Programación por bloques. Aplicaciones informáticas para ordenadores y dispositivos móviles. Sistemas de control programado. Montaje físico y/o uso de simuladores y programación sencilla de dispositivos. Wearables. Internet de las cosas. Fundamentos de la robótica. Montaje, control programado de robots de manera física o por medio de simuladores. Autoconfianza e iniciativa: el error, la reevaluación y la depuración de errores como parte del proceso de aprendizaje. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Y la LOMLOE para cuando... En la nueva normativa educativa publicada el año 2022 se impulsa de forma decisiva la enseñanza de contenidos relacionados con la programación tanto desde las primeras etapas como por supuesto en Secundaria y Bachillerato. En concreto los contenidos abordados en este curso corresponden a la Competencia Específica nº 5 de la materia de Tecnología y Digitalización desarrollada en la Orden ECD/1172/2022, de 2 de agosto, por la que se aprueban el currículo y las características de la evaluación de la Educación Secundaria Obligatoria . En concreto esta competencia consiste en "Desarrollar algoritmos y aplicaciones informáticas en distintos entornos, aplicando los principios del pensamiento computacional e incorporando las tecnologías emergentes, para crear soluciones a problemas concretos, automatizar procesos y aplicarlos en sistemas de control o en robótica." Específicamente en los criterios de evaluación de dicha competencia, para el curso de 2º de ESO, se habla de: 5.1. Describir, interpretar y diseñar soluciones a problemas informáticos a través de algoritmos básicos y diagramas de flujo sencillos, aplicando los elementos y técnicas de programación de manera creativa. 5.2. Programar aplicaciones sencillas, de forma guiada con una finalidad concreta y definida, para distintos dispositivos (ordenadores, dispositivos móviles y otros) aplicando herramientas de edición y empleando los elementos de programación de manera apropiada. Asimismo el currículo de dicha materia establece como uno de los bloques de saberes básicos de esta materia aquellos concernientes a Programación, pensamiento computacional y robótica, estableciendo como conocimientos, destrezas y actitudes a desarrollar con el alumnado en 2º de ESO las siguientes: ─ Algorítmica y diagramas de flujo.─ Aplicaciones informáticas sencillas para ordenadores: Programación por bloques.─ Autoconfianza e iniciativa: el error, la reevaluación y la depuración de errores como parte del proceso de aprendizaje Por lo tanto tanto los ejercicios planteados en el curso así como la metodología encajan perfectamente en la programación de esta materia en 2º de ESO, siendo los contenidos de robótica tratados en otros cursos de Aularagón más propios de la misma materia pero en 3º. A pesar de que en el currículo habla de programación por bloques, nos ha parecido interesante en este curso introducir en paralelo un programa de pseudocódigo como PSeInt para acompañar al alumnado en esa transición desde lo intuitivo de una programación por bloques, visual y con la que muchos ya vienen familiarizados desde Educación Primaria, con la sintaxis de los lenguajes de programación, con los que tendrán que empezar a manejarse en cursos posteriores. Una vez que el alumnado se ha familiarizado con los conceptos básicos de la programación estructurada contenidos en este curso, es tiempo de plantearle situaciones de aprendizaje en los que aplicarlos, preferentemente en la resolución de problemas reales y aplicando metodologías de trabajo en equipo. Esto correspondería a la última fase de Ejercicios de Creación. descrita en el apartado de Ejercicios resueltos. La Competencia arriba descrita también se encuentra en el Currículo de la materia optativa de 3º de ESO de Programación y Robótica como Competencia Específica nº 4 de esa materia, pudiendo aplicarse todo lo dicho anteriormente también en el desarrollo de dicha materia. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU 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 robótica: Como se puede ver ARDUINOBLOCKS EN EL AULA tiene la ventaja de tener un precio razonable, y dentro del rango de programación en bloques del Arduino en primaria con la ventaja que es un kit muy amigable sin apenas conexiones y con muchas posibilidades. Oferta de formación en Pensamiento computacional del Centro Aragonés de Tecnologías para la Educación. Tenemos un grupo Telegram Robótica Educativa en Aragón, si estás interesado en unirte, envía un mensaje por Telegram (obligatorio) a CATEDU 623197587 https://t.me/catedu_es y te añadimos en el grupo Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU 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. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU ¿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  210 = 1024 combinaciones). Por ejemplo, si la entrada analógica lee un valor de 3,3V y la fuente de alimentación es 5V, la señal analógica que lee Arduino, haciendo una regla de 3, tiene un valor de 3,3 * 1023 / 5 = 675,18 = 675 MapeoPara 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 utiliza 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 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Hardware del Arduino Placa Arduino Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores.  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 del 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 masasOpcionalmente 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. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Software del Arduino El microcontrolador en la placa Arduino se programa mediante dos tipos de programación: OPCIÓN LENGUAJE POR CÓDIGO Recomendable a partir de secundaria. Es un lenguaje basado en Wiring y permite la programación del Arduino en un entorno de desarrollo (basado en Processing). El programa se llama ARDUINO IDE y se puede descargar desde la página oficial de Arduino: https://www.arduino.cc/en/software. Hay otra posibilidad que es utilizarlo online, con la ventaja de tener tus proyectos "en la nube" y no depender del equipo. OJO, TIENES QUE TENER INSTALADO EL SOFTWARE CREATE AGENT https://create.arduino.cc/getting-started/plugin/welcome 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 OPCIÓN LENGUAJE GRÁFICO POR BLOQUES Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos: 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. 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 CON MBLOCK se utiliza la Shield Echidna CURSO DE MBOT se utiliza el robot mBot 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" (lo normal es "cargar" el programa en la placa).Es decir, interactuando con el ordenador. El programa está en el PC, En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:     - Ordenador ➡️ Placa: pulsando la tecla espacio que se encienda el led 13       - Placa ➡️Ordenador:  Que por pantalla nos muestre la cantidad de luz, o que si es de noche que suene una canción..Que nosotros sepamos, sólo hay dos programas de hacer esto;               - mBlock                -Snap4Arduino VENTAJAS E INCONVENIENTES LENGUAJE GRÁFICO POR BLOQUES vs CÓDIGO El lenguaje gráfico por bloques es un lenguaje sencillo de utilizar, nos evita tener en cuenta muchas librerías y cálculos. Otra ventaja, es que el lenguaje por bloques es el único que permite programación "en vivo" Por ejemplo, la instrucción leer valor distancia el sensor ultrasonidos, mediante programación por bloques es  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. Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA El lenguaje código se traduce en lenguaje máquina (ceros y unos) entendible para el microprocesador, pero al revés no se puede. En este vídeo, en mi opinión se olvida de mBlock, Snap4Arduino, S4A pero puedes ver un vistazo de los diferentes editores Vale, me decanto por EDITOR GRÁFICO (bloques) y permita la opción EN VIVO ¿Cual es mejor mBlock o Snap4Arduino ? Ver MBLOCK VS SNAP4ARDUINO OPCIÓN SIMULACIÓN                                     Incluimos dentro del apartado de Software los diferentes programas que hay para simular placas electrónicas como Arduino, ESP32, etc... Tinkercad Esta herramienta https://www.tinkercad.com aparece en el Curso Arduino con código  en la práctica Comunicación entre dos Arduinos, pero también es una plataforma que sirve para hacer los diseños de elementos 3D, ver curso Impresión 3D con Tinkercad Tiene la ventaja que es aplicación online, muy visual y buscan un reflejo de la práctica real, además de estar la herramienta adaptada al aula (gestión de alumnos y proyectos). Como  desventajas podemos decir que no tiene mucha variedad de componentes electrónicos y la simulación es algo lenta. Wolwi 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. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Sensores Esta sección es una visión rápida de las posibles entradas del Arduino y está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA Cualquier sistema de control podríamos decir que funciona de una manera similar a un ser humano, salvando las distancias. Nosotros recibimos la información del mundo exterior gracias a nuestros sentidos (oído, olfato, gusto, vista y tacto), nuestro cerebro procesa esa información y a través de nuestros músculos o de nuestra voz realizamos diferentes acciones. Pues lo mismo sucede con los sistemas de control, reciben información del exterior gracias a los diferentes SENSORES, procesan esa información en sus PLACAS CONTROLADORAS (sus cerebros) tales como Arduino y dan una respuesta utilizando sus diferentes ACTUADORES. Un sensor es un objeto capaz de detectar magnitudes físicas o químicas y transformarlas en variables eléctricas. Los sensores o periféricos de entrada nos permiten obtener información del mundo real para utilizarla desde el programa de Arduino. En la actualidad la cantidad de sensores disponibles es tan extensa como las variables que queramos medir, desde sensores de temperatura, humedad, luminosidad,... hasta acelerómetros, giroscopios, GPS,... pasando por detectores de gases, de pulsos cardiacos, sensores de efecto HALL,... La interfaz de conexión de un sensor con Arduino lo podemos clasificar en tres tipos: DIGITAL, ANALÓGICO o DATOS. 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 que mide temperatura y humedad. Sensores modulares más comunes. En  la  actualidad  existen  infinidad  de  sensores  que  los  fabricantes  presentan  en  forma modular.  Esto  hace  que  su  conexión  y  utilización  sea  mucho  más  sencilla  que  la  tradicional, olvidándonos de resistencias, polaridades, cableados,… para su correcto funcionamiento. Sensor pulsador Es un sensor digital, que presenta dos estados; cuando se presiona el botón,  emite  una  señal  de  bajo (0V), cuando suelta el botón, emite una señal de bajo alto (5V). Datasheet Un ejemplo de uso 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 al revés, lógica invertida o pull up, 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 ejemplo 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 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 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 Ultrasonidos. Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. No es un sensor preciso, con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato Ejemplos de uso: 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 Pines de conexión: VCC Trig (Disparo del ultrasonido) Echo (Recepción del ultrasonido) GND Distancia = {(Tiempo entre Trig y el Echo) * (V.Sonido 340 m/s)}/2 por lo tanto en la programación tenemos que leer esos dos pulsos y calcular la distancia. Sensor DHT11 (Temperatura y Humedad). Este sensor de temperatura y humedad DHT11 tiene una salida de señal digital que funciona en un rango de temperaturas entre 0 y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad y los 16 restantes es la temperatura los 8 restantes son de comprobación. Por ejemplo 0100 0111 0000 0011 0001 1001 0000 0000 0001 1000  es 0100 0111 0000 0011 = 47.03% de humedad y 0001 1001 0000 0000 = 19.00ºC y la comprobación es la suma de 4+7+0+3+1+9+0+0=24=11000 Ejemplos de uso: Medir H y T con Blink en Rover con Arduino Estación meteorológica Arduino con Arduinoblocks Arduinoblocks en el aula 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 de humedad de suelo. La función de este sensor es detectar la humedad del suelo. Si el suelo no tiene agua, el valor analógico emitido por el sensor disminuirá, de lo contrario, aumentará. Se puede utilizar este sensor para hacer un dispositivo de riego automático, puede detectar si las plantas “tienen sed” y evitar que se marchiten. El sensor se configura con dos sondas insertadas en el suelo, cuando la corriente atraviesa el suelo, el sensor obtendrá valor de resistencia al leer los cambios actuales entre las dos sondas y convertir dicho valor de resistencia en contenido de humedad. Cuanto mayor sea la humedad (menos resistencia), mayor será la conductividad del suelo. La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0 a 2,3V (Cuando el sensor está totalmente sumergido en agua, el voltaje será 2,3V). Sensor de humedad. Este sensor analógico está diseñado para identificar y detectar la presencia de agua y su cantidad. Puede servir para detectar el nivel de agua, para disparar una alarma en caso de una fuga de agua, también para hacer un limpiapalabrisas automático.... puedes ver un ejemplo de uso en el curso de Domótica con Arduino Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos. 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 Gas (MQ2). Este sensor analógico de gas MQ-2 se utiliza en equipos de detección de fugas de gas en electrónica de consumo y mercados industriales. Este sensor es adecuado para detectar GLP, I-butano, propano, metano, alcohol, hidrógeno y humo. Tiene alta sensibilidad y respuesta rápida. La sensibilidad se puede ajustar girando el potenciómetro. Esta sección está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA Resistencia Flex Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k 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 con Microondas Tradicionalmente se utilizan sensores PIR de infrarrojos para detectar el movimiento, pero personalmente veo que tienen falsos positivos y negativos, si quieres utilizarlos, te recomendamos esta página de Luis LLamas Personalmente prefiero los sensores de microondas. Son un radar que por efecto Doppler pueden captar cualquier objeto en movimiento dentro de un alcance de 5-7 metros en cualquier dirección e independiente de su temperatura. Es un buen sensor para alarmas, activación de luz por presencia.... Curiosamente, su gran ventaja técnica es un gran inconveniente para usarlo en el aula, con cualquier movimiento se dispara. Para saber más ver la página de Luis Llamas Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores. Esta sección es una visión rápida de las posibles entradas del Arduino y está adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Actuadores y otras salidas Esta página es un repaso rápido de las posibles salidas del Arduino ¿Qué es un actuador? Un actuador es el nombre genérico que empleamos para cualquier dispositivo capaz de realizar acciones en el mundo físico y que podremos controlar desde un autómata o procesador como Arduino. En particular, usamos el nombre actuador para los dispositivos que son capaces de generar movimiento.   Luis LLamas CC-BY-NC-SA ACTUADORES                                                                                                  Motores Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador y afines por su alta velocidad de rotación, pero lo normal en la robótica con Arduino es utilizar motores con reductoras para bajar las revoluciones como el motor amarillo : Si quieres usar un motor, no se puede conectar directamente al Arduino (al menos de que sea de muy baja potencia) necesita una alimentación extra, como el LM298N y las pilas., o el B6612FNG o una shield específica. CC-BY-NC Luis Llamas Ejemplos de uso lo puedes ver en 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 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. Ver esta página de Luis LLamas Conectar Arduino con tiras led 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 conectarl esta interfaz es en serrie (utilizando el protocolo I2C.) Ejemplo de uso : en Arduino con código Arduinoblocks en el aula CC-BY-SA Luis Llamas No confundas Display LCD con matriz de LEDs , o una OLED Aclarando conceptos: Lógica invertida                                                                                  Igual que vimos en sensores, con las configuraciones Pull up y Pull down, las salidas de cualquier actuador PUEDEN SER LÓGICA INVERTIDA, mira en este NodeMCU (básicamente es un Arduino con wifi, aquí está conectado con el servidor Blynk) como funciona al revés, cuando apretamos, por lo tanto enviamos un uno a la salida, se apaga la salida !! Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Componentes de la placa Imagina TDR STEAM ATENCIÓN, ANTES DE SUBIR UN PROGRAMA A TU PLACA TIENES QUE TENER EL POTENCIÓMETRO (8) A CERO, DE LO CONTRARIO PUEDE DAR ERROR AL SUBIRLA FLECHA DEL POTENCIÓMETRO QUE APUNTE AL PUNTO ROJOFederico Coca Notas sobre ESP32 STEAMakers CC-BY-SAEl motivo es que el potenciómetro comparte la conexión A0 (GPIO02) con el sistema de grabación del programa y si el mismo no está en su posición de cero resistencia se producirá un error en el envío del programa a la placa porque se entenderá que los pines de transmisión están ocupados con otra tarea. (Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA) También el interruptor del Bluetooth tiene que estar hacia al borde de lo contrario no se comunica con el puerto COM Esta página es extraída de Actividades con Imagina TDR STEAM y ArduinoBlocks https://github.com/arduinoblocks/librosAutoría: Equipo de Innova Didàctic y Robolot Team.  Licencia CC-BY-NC-ND La placa Imagina TDR STEAM es una placa didáctica desarrollada por el equipo ROBOLOT que presenta la gran ventaja de tener una gran cantidad de sensores, actuadores y conexiones de expansión incorporados directamente en ella. Únicamente hay que conectar esta placa a una placa Arduino UNO (en nuestro caso, una placa compatible llamada Keyestudio UNO) y ya está todo listo para empezar a programar. Tabla con la relación de elementos que hay en la placa Imagina TDR STEAM y sus conexiones: Esta página es extraída de Actividades con Imagina TDR STEAM y ArduinoBlocks https://github.com/arduinoblocks/librosAutoría: Equipo de Innova Didàctic y Robolot Team.  Licencia CC-BY-NC-ND ATENCIÓN: EN LA PLACA ESP32, SI SE UTILIZA LA COMUNICACIÓN WIFI DEJA DE FUNCIONAR A0 Y A1 ES DECIR EL POTENCIÓMETRO Y EL LDR Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Placa de control Keyestudio UNO Esta página es extraída de Actividades con Imagina TDR STEAM y ArduinoBlocks https://github.com/arduinoblocks/librosAutoría: Equipo de Innova Didàctic y Robolot Team.  Licencia CC-BY-NC-ND Al ser hardware libre existen multitud de fabricantes que han desarrollado versiones basadas en Arduino. Uno de esos fabricantes es Keyestudio. La placa Keyestudio UNO lleva un microcontrolador que está basado en el ATmega328. Tiene 14 pines digitales de entrada / salida (de los cuales 6 se pueden usar como salidas PWM), 6 entradas analógicas, un cristal de cuarzo de 16 MHz, una conexión USB, un conector de alimentación, un encabezado ICSP y un botón de reinicio. Especificaciones:● Voltaje de funcionamiento: + 5V● Voltaje de entrada externo: + 7V ~ + 12V. (Límite: +6 V. <+ 20 V).● Corriente de interfaz DCI / O: 20mA● Flash Memory: 32 KB (ATmega328) de los cuales 0,5 KB utilizados por el gestorde arranque● Capacidad de almacenamiento EEPROM: 1KB● Frecuencia del reloj: 16MHZ● Microcontrolador ATmega328P-PU● Pines de E / S digital 14 (de los cuales 6 proporcionan salida PWM)● Pines de E / S digitales PWM 6 (D3, D5, D6, D9, D10, D11)● Pines de entrada analógica 6 (A0-A5)● LED_BUILTIN D13 Las conexiones de la placa TDR STEAM con la placa Keyestudio UNO son las siguientes: Para realizar la programación la podemos hacer mediante la IDE de Arduino o mediante Arduinoblocks. Como podemos ver son dos sistemas diferentes. En la IDE de Arduino la programación se realiza mediante instrucciones (derecha en la fotografía) y en Arduinoblocks se realiza mediante bloques. Utilizar Arduinoblocks simplifica y hace más inteligible el código, lo que permite iniciarse en el mundo de la programación de un modo más amigable. Arduinoblocks también permite programar de diversas formas, ya que tiene bloques que realizan las mismas funciones pero que se pueden entender de forma más sencilla. En la siguiente imagen se hace una comparación de código entre Arduinoblocks y Arduino IDE. Esta página es extraída de Actividades con Imagina TDR STEAM y ArduinoBlocks https://github.com/arduinoblocks/librosAutoría: Equipo de Innova Didàctic y Robolot Team.  Licencia CC-BY-NC-ND Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU ¿Qué es Arduinoblocks? Esto no pretende ser un tutorial exhaustivo de ARDUINOBLOCKS, sino una guía rápida.ARDUINOBLOCKS 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 ¿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 ARDUINOBLOCKS.  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) ArduinoBlocks Arduinoblocks  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 ArduinoBlocks  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  ArduinoBlocks  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.   ArduinoBlocks 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,  ArduinoBlocks 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. Ayuda en Arduinoblocks Además 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  Crear cuenta en Arduinoblocks Registrándonos  como  usuarios  de  la  plataforma  ArduinoBlocks  podemos  aprovechar  todas estas posibilidades:  Guardar tus proyectos en la nube de ArduinoBlocks. 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: ArduinoBlocks-Connector). Utilizar  la  consola  serie  desde  el propio navegador. (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)  Entramos en http://www.arduinoblocks.com/ e iniciamos sesión Y rellenamos el formulario Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU 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. Si lo quieres en papel, te recomendamos el tutorial de Juanjo López son 12 diapositivas muy bien explicados https://github.com/arduinoblocks/documentacion/blob/master/usuarios_gestionados.pdf El contar con esta funcionalidad es especialmente interesante en el caso de alumnado menor de 14 años, de forma que no sea necesario ceder ningún tipo de datos de ellos, ni recabar consentimientos parentales para la utilización de la plataforma. En general por criterios de protección y privacidad de datos, siempre es preferible trabajar con aplicaciones que solo requieren registro por parte del profesorado. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU ArduinoBlocks connector Espera !!! Aún no conectes tu placa (Arduino, NodeMCU, KeyStudio TDR STEAM...) PRIMER PASO Descargar e instalar ArduinoBlocks Connector Para poder usar la herramienta Arduinoblocks tenemos que ejecutar antes Arduinoblocks conector. Lo descargamos de la misma página de ArduinoBlocks según el sistema operativo que usemos: Windows (W7 E INFERIORES NO FUNCIONA), Linux .... 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: COMPROBAR QUE DETECTA LA PLACA Ahora conectamos la placa (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 TERCER PASO: 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 .... CUARTO PASO: 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 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU 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 ArduinoBlocks 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 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   Con Imagina TdR STEAM ¿Qué tipo de proyecto elijo? Para aclarar, las dos opciones son válidas para nuestros proyectos, pero la específica con Imagina TdR STEAM es más cómoda: La placa sola (ArduinoUno) donde te aparecerán todos los sensores y salidas con todas las posibilidades de entradas y salidas (E/S) de la placa (Arduino o ESP32) La placa (ArduinoUno ) + Imagina TdR STEAM donde aparecen: Los sensores y salidas específicas de la placa TdR STEAM ya conectadas en sus respectivos pines E/S del Arduino. En contra, algunos sensores ya no aparecen todas las E/S del Arduino que están ocupadas por los elementos de la placa TdR STEAM. Vamos a poner un ejemplo: Hacer una intermitencia con el LED AZUL del TdR STEAM Si lo hacemos con el tipo de proyecto ArduinoUno tenemos que poner el Actuador LED y en el pin elegir el 13 porque el led Azul está conectado en el 13. Fíjate que en el desplegable del Pin están todas las E/S del Arduino UNO En cambio si elegimos un proyecto tipo ArduinoUno + Imagina TdR STEAM veremos que tenemos añadidos unos actuadores específicos para esta placa TDR STEAM que es más fácil usarlos, donde en el desplegable sólo aparece ROJO o AZUL y el alumno no necesita recordar que ROJO es el 12 y AZUL es el 13 Pero si elegimos un led del desplegable de actuadores, veremos que en su desplegable de pines sólo aparece los números 3, 5 y A3 porque son los que tiene libres, el resto están ocupados por la placa TdR STEAM Está claro que el tipo de proyecto ArduinoUno + Imagina TdR STEAM  es más cómodo por que los bloques ya tienen fijados qué pines tienen cada sensor y si eliges un sensor no incluido en la placa, ya no muestra los pines que están ocupados. Si eliges ArduinoUno + Imagina TdR STEAM es muy cómoda la programación y se evitan muchos errores. Si eliges ArduinoUno utilizas un entorno de programación como si la placa Imagina TdR STEAM no existiera y los alumnos se acostumbran a usar los elementos propios de Arduino, los pines, etc.... pero tienen que saber en cada momento qué pin utilizar. Aconsejamos en este caso que los alumnos tengan impresa la página Componentes de la placa TdR STEAM. En los apuntes de este libro vamos a utilizar el proyecto indistintamente las dos formas de trabajar. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Retos Reto A01. El led Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.Permiso Vamos a empezar con nuestro primer reto. Vamos a realizar un programa que va a encender y apagar el led rojo correspondiente al pin D12. Un LED (Diodo Emisor de Luz) es un diodo semiconductor que emite luz. Se usan como indicadores en muchos dispositivos, y cada vez con mucha más frecuencia en iluminación. Los leds presentan muchas ventajas sobre las fuentes de luz incandescente como un consumo de energía mucho menor, mayor tiempo de vida, menor tamaño, gran durabilidad y fiabilidad. El led tiene una polaridad, un orden de conexión, y al conectarlo al revés no funciona. Para evitar que se queme siempre debe llevar una resistencia en serie para limitar la corriente eléctrica que le atraviesa. La placa Imagina TDR STEAM dispone de dos leds (uno azul y otro rojo), conectados en los pines D13 (azul) y D12 (rojo). 7.1.1 Reto A01.1. ON/OFF led rojo. Entramos en ArduinoBlocks en el tipo de proyecto para la placa Imagina TDR STEAM. En la columna de la izquierda tenemos las agrupaciones de bloques clasificados en función de su tipología. En el área de programación siempre hay dos bloques verdes (Inicializar y Bucle). Estos bloques siempre aparecen al iniciar un nuevo programa. Pues bien, todo lo que se meta dentro del bloque de Inicializar sólo se ejecutará la primera vez que se inicie el programa, mientras que si se colocan dentro del Bucle se ejecutarán una y otra vez hasta que apaguemos la placa.   Seleccionaremos el bloque de TDR STEAM. Vamos a meter nuestro bloque de led en el Bucle y elegimos el color del led (Rojo o Azul). El led puede tener dos estados: ON/OFF (encendido/apagado), que podemos cambiar en el menú despegable. Si sólo dejamos este bloque con el led en estado ON, este quedaría encendido para siempre, para que se apague deberemos cambiar el estado a OFF. Pero este programa no es correcto del todo. No hay tiempos que indiquen cuanto tiempo tiene que estar encendido o apagado el led. Necesitamos ir al bloque de Tiempo** y seleccionar Esperar (valor) milisegundos (recuerda: 1.000 milisegundos es 1 segundo). Ahora tenemos el led encendido durante 1 segundo y apagado otro. Esto ser repetirá por tiempo infinito hasta que quitemos la alimentación a la placa. El programa se quedará guardado en la memoria del microcontrolador, así que, si lo alimentamos con una fuente de alimentación externa, seguirá funcionando. Actividad de ampliación: prueba ahora de hacer una intermitencia más rápida (500ms ON y 250ms OFF). 7.1.2 Reto A01.2. ON/OFF led rojo y azul Como hemos comentado anteriormente la placa dispone de dos leds (rojo y azul). Ahora vamos a realizar un programa para que se vayan alternando su encendido y apagado. Actividad de ampliación: prueba ahora de hacer que los leds rojo y azul se enciendan a la vez y con los siguientes tiempos: 500ms ON y 250ms OFF. 7.1.3 Reto A01.3. ON/OFF led rojo y azul con repeticiones. Imagina que queremos hacer un ciclo de repetición. Queremos repetir 5 veces el encendido y apagado del led rojo antes de que se encienda el azul. Para realizar esta acción lo podemos hacer de la siguiente forma: en el menú de Control existe el bloque Repetir (valor) veces hacer… En el siguiente programa fíjate como el led rojo se enciende y apaga cada medio segundo (500ms) 5 veces y después se queda el led azul encendido durante 4 segundos (4000ms). Actividad de ampliación: prueba ahora de hacer que el led rojo se encienda 10 veces cada vez que el led azul se enciende 3 veces.Reto A02. El led RGB Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoUn led RGB es un led que incorpora en su mismo encapsulado tres leds. Las siglas RGB corresponden a: R (Red=rojo), G (Green=verde) y B (Blue=azul). Con estos tres colores, en óptica, se puede formar cualquier color, ajustando de manera individual la intensidad de cada color. Los tres leds están unidos por el negativo o cátodo (RGB de cátodo común). En Arduino, cada uno de esos leds podría tomar 256 colores diferentes, es decir, el Rojo podría ir desde 0 hasta 255, el Verde de 0 a 255 y el Azul de 0 a 255, en total un led RGB podría dar más de 16,5 millones de colores diferentes. La placa Imagina TDR STEAM dispone de un led RGB conectado a los pines (D6-Red, D9-Green y D10-Blue). Estos tres pines son PWM para permitir regular su intensidad. La modulación PWM permite generar una señal analógica mediante una salida digital. Utiliza un sistema de codificación de 8 bits (en el sistema binario: 28 = 256, per tanto, del 0 al 255). Continuando con la práctica anterior, ahora vamos a controlar la intensidad de un led utilizando la modulación PWM. Pero antes vamos a explicar cómo funciona la modulación PWM. PWM es la abreviatura de Pulse-Width Modulation (modulación de ancho de pulso*)*. Las salidas digitales de Arduino sólo tienen dos estados: ALTO/BAJO, ON/OFF, ENCENDIDO/APAGADO. Es decir, corresponden a una salida de 5 V (ON) y de 0 V (OFF). Con esto sólo podemos hacer actividades de encender y apagar un led, no podríamos controlar su brillo de menos a más o viceversa. Esto lo realiza por la proporción entre el estado alto (ON) y bajo (OFF) de la señal. El control digital se utiliza para crear una onda cuadrada de ciclo de trabajo diferente, una señal conmutada entre encendido y apagado. Este patrón de encendido y apagado puede simular voltajes entre encendido total (5 voltios) y apagado (0 voltios) al cambiar la parte del tiempo que la señal pasa en comparación con el tiempo que la señal pasa. La modulación de ancho de pulso, o PWM, es una técnica para obtener resultados analógicos con medios digitales. Se utiliza mucho para controlar leds, velocidades de motores, producción de sonidos, etc. La placa Keyestudio UNO tiene un total de 6 salidas PWM, que son digitales 3, 5, 6, 9, 10 y 11, pero en la placa Imagina TDR STEAM sólo se puede controlar por PWM el led RGB (pines 6, 9 y 10). Tenemos dos bloques diferentes para regular el color: Asignaremos directamente el color en la paleta de colores: Introduciremos la cantidad de cada uno de los tres colores primarios (R rojo, G verde, B azul) con un valor comprendido entre 0 i 255. 7.2.1 Identificación de colores RGB. Con este sencillo programa vamos a identificar cada color del led RGB con su pin correspondiente. Para ello vamos a utilizar los bloques normales de ArduinoBlocks (no los específicos de la Imagina TdR STEAM). Encendemos sólo el led correspondiente al Pin 6. Encendemos sólo el led correspondiente al Pin 9. Encendemos sólo el led correspondiente al Pin 10. Actividad de ampliación: prueba ahora de ir activando varios leds a la vez para ver qué color aparece (puedes guiarte con la imagen siguiente). 7.2.2 Múltiples colores con el led RGB ArduinoBlocks tiene bloques específicos para facilitar al máximo la programación de los leds RGB. Al utilizar ese bloque no debemos preocuparnos por saber las conexiones del led RGB porque ya están asignadas internamente en el bloque. Comprueba como al pulsar sobre el icono del color se despliega una paleta de colores para que puedas elegir cualquier color. También se puede introducir directamente los números de cada uno de los colores RGB. Vamos a realizar ahora un programa que muestre sucesivamente los tres colores primarios. Ahora realizaremos el mismo programa, pero poniendo la cantidad de cada color. Actividad de ampliación: prueba ahora de hacer un programa que muestre los colores del arcoíris en orden.Reto A03. El pulsador Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoEn el siguiente reto vamos a utilizar el pulsador. Previamente debemos recordar que diferencia hay entre un pulsador y un interruptor. Un interruptor es un dispositivo que abre o cierra en paso de la corriente eléctrica, por ejemplo, los interruptores de la luz de nuestras casas, cada vez que los pulsamos cambian de estado y permanecen en él hasta ser pulsados de nuevo. Sin embargo, un pulsador sólo se activa mientras dure la pulsación volviendo a su estado inicial en el momento en el que se deje de pulsar. Hay dos tipos de pulsadores; los NA (normalmente abierto) o los NC (normalmente cerrado), con lo que al pulsarlo se activará la función inversa de la que en ese momento este realizando. La placa Imagina TDR STEAM tiene dos pulsadores de nominados SW1 y SW2 que van asociados a los pines D2 y D7 respectivamente. Ahora vamos a realizar un programa en el cual al pulsar sobre el pulsador se encienda el led y se apague cuando lo dejemos de pulsar. En el menú de Sensores encontramos los dos bloques correspondientes al pulsador y el pulsador filtrado. 7.4.1 Control ON/OFF de un led con un pulsador I   Para realizar este programa necesitamos conocer unas de las funciones más utilizadas en programación. Las funciones del menú Lógica con las funciones de condición (condicionales). Condicionales:     si (condición) hacer (acciones) Se trata del famoso bucle Si (if en inglés) que es uno de los pilares de la programación, ya que permite evaluar estados y tomar decisiones en consecuencia. El funcionamiento es el siguiente: si se cumple la condición incluida en su primer apartado, entonces se realiza la acción incluida en su segundo aparado. En caso contrario, no se hace nada. En el apartado de condiciones se pueden introducir multitud de factores: estado de sensores (analógicos o digitales), comparaciones, igualdades, operaciones matemáticas, etc. Usando el bloque lógico condicional de Si…. hacer… el programa quedaría como la imagen. No se apaga el led azul nunca, esto no es lógico, en ningún momento del programa decimos que el led tenga que estar en la posición OFF. En el siguiente programa conseguiremos que el led rojo solamente esté encendido cuando apretemos el pulsador 1. Con este otro programa al pulsar el SW1 se enciende el led azul y al pulsar el SW2 se apaga. Actividad de ampliación: prueba ahora de apaga los dos leds con el pulsador SW1 y encenderlos con SW2. 7.4.2 Control ON/OFF de un led con un pulsador II Necesitar dos pulsadores para tener que controlar un solo Led no parece la mejor opción, necesitamos introducir un sino. Si usamos un único pulsador debemos poner una nueva condición: un sino para cambiar el estado del led a OFF. Para ello debemos ampliar el condicional. Pulsando sobre el símbolo del engranaje (señalado con la flecha roja en la imagen) nos aparece un cuadro con funciones con las que podemos ampliar el condicional Si. Hay dos opciones que se consiguen arrastrando los bloques como se aprecia en las siguientes imágenes: Podemos ir encadenando varias estructuras (opción B). Veremos ejemplos del uso de estas variantes a lo largo de diferentes programas en este documento. Pero, continuando con este reto, vamos a realizar un programa que al pulsar el pulsador 2 se encenderá el led azul y sino, se apagará. El código Morse es un sistema de representación de letras y números mediante señales emitidas de forma intermitente. Estas señales pueden ser luminosas como con nuestro Led o también podrían ser acústicas utilizando el zumbador.  Este es el código Morse: Actividad de ampliación: haz una máquina de código Morse que envíe un mensaje de ayuda (SOS). 7.4.3 Control ON/OFF de un led con un pulsador III En este reto vamos a hacer que el Led Azul se quede en estado encendido o apagado pulsando una sola vez el pulsador SW1. En el programa que vamos a hacer a continuación necesitamos asegurarnos que cada vez que accionamos el pulsador sea detectado como una sola señal, ya que vamos a realizar un contador. Para hacer el contador vamos a utilizar una variable que la llamaremos Estado. En Inicializar establecemos la variable a 0 y la llamamos ESTADO. Esta variable la utilizaremos como indicador de cambio de estado del pulsador. El contador consiste en ir sumando una unidad a la variable ESTADO cada vez que se dé al pulsador. Cada vez que pulsemos el pulsador, la variable tendrá su valor anterior más 1. Por ejemplo: si al inicio del programa la variable ESTADO tiene un valor de 0, al dar al pulsador su nuevo valor será igual a 0+1=1; al volver a dar al pulsador su valor será 1+1=2; al volver a pulsar 2+1=3, etc. Este programa irá incrementando el valor indefinidamente cada vez que apretemos el pulsador. Pero vamos a hacer que se reinicie la variable cada vez que llegue al valor 2, es decir, que vuelva a poner el valor de la variable a 0. De esa manera, cuando Estado tiene un valor de 0 el Led estará apagado, cuando ESTADO tenga un valor de 1 el Led estará encendido y cuando se vuelva a dar al pulsador el valor de ESTADO será 2 y se le mandará volver a un valor de 0 por lo que el Led estará apagado nuevamente. Este sería el programa: Actividad de ampliación: intenta hacer el mismo programa, pero más simplificado (utilizando menos instrucciones).Reto A04. El potenciómetro Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoUn potenciómetro es una resistencia cuyo valor es variable ya que son un tipo de resistencias especiales que tienen la capacidad de variar su valor cambiando de forma mecánica su posición. Con ellos indirectamente, se puede controlar la intensidad de corriente que fluye por un circuito si se conecta en paralelo, o controlar el voltaje al conectarlo en serie. Son adecuados para su uso como elemento de control en los aparatos electrónicos como el control de volumen, brillo, etc. La placa Imagina TDR STEAM tiene un potenciómetro denominado Rotation que van asociado al pin A0. Las entradas Anúmero son entradas analógicas, así que empezamos con el uso de este tipo de entradas. Este potenciómetro permite realizar un giro de unos 270º entre topes (3/4 de vuelta). La diferencia entre un sensor analógico y digital es que mientras este último, el digital, sólo permite dos tipos de entradas, 0-1, alto-bajo, high-low, on-off, un sensor analógico puede tener infinidad de valores. En Arduino, las entradas analógicas pueden tener 210 valores (10 bits de resolución), es decir, valores comprendidos entre 0 y 1023. En el menú de sensores de ArduinoBlocks, disponemos de un bloque específico para realizar programas utilizando el potenciómetro de nuestra placa. En el desplegable del bloque del sensor, podemos elegir su lectura en porcentaje (%) o en valor (de 0 a 1023). 7.5.1 Lectura de valores con el puerto serie Para realizar una lectura de los valores del sensor es necesario utilizar la Consola (lector de datos por el puerto serie) que nos ofrece ArduinoBlocks, vamos a ver como se hace. En primer lugar, generamos una variable a la que llamaremos pot. Para cambiar el nombre de la variable pulsaremos sobre el menú desplegable del bloque de la variable y elegiremos Variable nueva… nos aparecerá una ventana en la que escribiremos el nuevo nombre y daremos a Aceptar. Ahora fijaremos el valor de la variable al valor del potenciómetro, tal y como está en la imagen. Es importante establecer la variable con el valor del potenciómetro dentro de Bucle, ya que si sólo se hace en Inicializar el valor siempre será el mismo a lo largo de todo el programa. En otras ocasiones interesa establecer las variables en el inicio, pero no es este el caso. Continuando con el programa, ahora nos faltan los bloques del Puerto Serie. El primero que debemos utilizar es el Iniciar Baudios 9.600 que siempre lo colocaremos en el Inicio y después el bloque Enviar. Observa cómo queda el programa resultante: Sube ahora el programa y después pulsa sobre el botón de la Consola.  Se abrirá la siguiente ventana y pulsaremos sobre el botón conectar. De esta manera podremos ver cada medio segundo el valor de nuestro potenciómetro. Gira el potenciómetro y observa cómo van cambiando los valores. Actividad de ampliación: prueba ahora quitando el tic de Salto de línea a ver qué sucede. 7.5.2 Ajuste de valores de entrada y salida: mapear Existe un pequeño “problema” entre las entradas y las salidas en Arduino. Las entradas trabajan con 10 bits (210 valores = 0 a 1023) y las salidas trabajan a 8 bits (28 valores = 0 a 255). Debido a esto, debemos realizar un cambio de escala. A este cambio de escala se le llama “mapear”. En el menú Matemáticas existe un bloque llamado mapear. Este bloque permite modificar el rango de un valor o variable desde un rango origen a un rango destino. Esta función es especialmente útil para adaptar los valores leídos de sensores o para adaptar valores a aplicar en un actuador. En esta actividad vamos a imaginar que con el potenciómetro queremos definir un rango de valores entre 0 a 255. Para ello definiremos una variable, llamada consigna, que será el valor mapeado del potenciómetro. En el potenciómetro cambiaremos su opción para obtener datos 0...1023. Continuando el programa para poder realizar lecturas por el puerto serie utilizaremos un nuevo bloque de crear texto con.... Fíjate como al pulsar sobre el símbolo del mecanismo podemos ampliar las líneas añadiendo varNum a la parte derecha. El programa resultante quedará de la siguiente forma:  Por último, carga el programa, abre la Consola y comprueba las lecturas moviendo el potenciómetro. Actividad de ampliación: cambia ahora el rango de salida y el texto que envía por el puerto serie. 7.5.3 Control del led RGB con el potenciómetro En la siguiente actividad vamos a controlar los colores del led RGB utilizando el potenciómetro. Vamos a hacer que cambie de color según varíe el valor del potenciómetro. Es decir, cuando el valor del potenciómetro se encuentre entre 0 y 100 que el color del led sea rojo, cuando se encuentre entre 101 y 200 que sea verde y cuando esté entre 201 y 255 que sea azul. Del menú Lógica vamos a necesitar dos nuevos bloques; el bloque de Evaluar condición y el bloque de Conjunción/Disyunción. Con ellos crearemos estas condiciones: Deberemos crear tres estructuras para hacer los tres rangos. El programa quedaría como muestra la imagen:  También se puede hacer el mismo programa de la siguiente forma: Actividad de ampliación: completa el programa con más condiciones.Reto A05. El zumbador Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoEl zumbador (Buzzer en inglés) es un transductor electroacústico que produce un sonido o zumbido continuo o intermitente. En función de si se trata de un zumbador Activo o Pasivo, este zumbido será del mismo tono o lo podremos variar. Sirve como mecanismo de señalización o aviso y se utiliza en múltiples sistemas, como en automóviles o en electrodomésticos. La placa Imagina TDR STEAM tiene un zumbador pasivo que está conectado en el pin D8. ArduinoBlocks tiene 4 bloques específicos para programar y trabajar con el zumbador. El sonido que emite el zumbador depende de la frecuencia de emisión del sonido. La frecuencia es el número de repeticiones por unidad de tiempo de cualquier evento periódico. Sabemos que el sonido se transmite en forma de onda y la frecuencia de un sonido es el número de oscilaciones o variaciones de la presión por segundo, nos indica cuantos ciclos por segundo tiene una onda. En la siguiente tabla están las frecuencias del sonido de las notas musicales:  7.3.1 Primeros sonidos con el zumbador. En el bloque Zumbador podemos variar dos parámetros: Ms (1) es el tiempo que dura cada sonido en milisegundos y Hz (2) es la frecuencia a la que vibra la membrana del zumbador para emitir el sonido. Prueba con este sencillo programa cómo suena el zumbador. Actividad de ampliación: cambia ligeramente el programa introduciendo tiempos diferentes en la duración de las notas y en las esperas para observar las diferencias que aparecen en la ejecución del programa. 7.3.2 Escalas musicales con el zumbador. Vamos a hacer una escala de DO4 a DO5 utilizando un bloque que nos permite introducir directamente la nota sin que tengamos que saber los valores de la tabla de notas y frecuencias. Haremos una pequeña escala musical. Actividad de ampliación: intenta tocar esta melodía utilizando el zumbador. Las notas negras deben tener una duración de 500ms, la negra con puntillo 750ms y la blanca 1000ms. 7.3.3 Melodías con RTTTL Las melodías en formato RTTTL (Ring Tone Text Transfer Language) es un lenguaje muy simple, creado por Nokia, con el objetivo inicial de definir de forma sencilla partituras musicales en formato texto para móviles. Estas melodías RTTTL se pueden introducir de forma sencilla desde ArduinoBlocks y sólo se necesitan dos bloques. Realiza este programa y elige una de las melodías que hay disponibles en el menú desplegable del bloque RTTTL. Actividad de ampliación: prueba con diferentes melodías RTTL.Reto A06. La fotocélula LDR Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoAhora que ya sabemos usar el Puerto Serie para leer los valores de los sensores, vamos a utilizarlo para ver el valor de una fotocélula (LDR). Una LDR (Light Dependent Resistor) es un resistor que varía su valor de resistencia eléctrica dependiendo de la cantidad de luz que incide sobre él. El valor de la resistencia disminuye con el aumento de intensidad de luz incidente. En la placa Imagina TDR STEAM la fotorresistencia está denominada como “Light” y viene conectada en el Pin analógico A1. En el menú TDR STEAM de ArduinoBlocks hay un bloque específico para el uso de este sensor. En este bloque también se puede seleccionar el tipo de lectura del valor del sensor en % o en unidades de 0 a 1023. 7.6.1 Encender y apagar un led según el nivel de luz En esta actividad vamos a simular en el encendido automático de una farola cuando se hace de noche. Utilizando la LDR y el led azul vamos a hacer que cuando la LDR esté a oscuras se ilumine el led azul. El programa es muy sencillo. Hay que generar una variable que la llamaremos “nivel_luz” y la estableceremos al sensor LDR. Recuerda seleccionar valor 0…1023. Por último, un condicional en el cual cuando el valor sea menor de 500 que se encienda el led azul y, sino que permanezca apagado. Actividad de ampliación: haz un programa que muestre los valores de la LDR por el puerto serie.Reto A07 Sensor de temperatura LM35D Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoEn el siguiente reto vamos a medir la temperatura de una habitación utilizando el sensor de temperatura LM35D. El LM35D tiene un rango de temperatura de 0º a 100º ℃ y una sensibilidad de 10mV/ºC. La placa Imagina TDR STEAM dispone de este sensor LM35D y está conectado en el Pin analógico A2. En el menú TDR STEAM de ArduinoBlocks hay un bloque específico para el uso de este sensor. 7.7.1 Lectura del valor de la temperatura Para ello vamos a repasar el concepto de variables. Lo vimos inicialmente con la práctica del LED en la que incrementábamos y disminuíamos su brillo utilizando una variable i. En esta ocasión vamos a profundizar un poco más. Las variables son elementos muy comunes en programación. Básicamente, crear una variable es darle un nombre a un dato o a una lectura. Por ejemplo, las mediciones de valores de temperatura las podemos guardar en una variable que se llame “Temperatura” o las del sensor de ultrasonidos en una llamada “Distancia”, etc. No es obligatorio su uso, pero nos permiten trabajar más cómodamente, además, como podemos personalizar su nombre, ayudan a clarificar el código y utilizar un lenguaje más natural. Al trabajar con variables vamos a tener dos tipos de bloques principales: El bloque en el que le damos valor a la variable: Y el bloque de la propia variable creada, para poder insertarla y combinarla con otros bloques: También podemos personalizar el nombre de la variable, de la siguiente forma: Una vez creada la nueva variable, podemos seleccionarla pulsando sobre el desplegable: Hay que tener en cuenta que las variables solo pueden estar formadas por una palabra. Si quieres incluir varias palabras, puedes usar el truco de separarlas con una barra baja “_”, como en el ejemplo, “Valor_Temperatura”. Ahora vamos a realizar el programa que mida la temperatura y la muestre por la consola. Envía el programa a la placa, conecta la Consola y comprueba la información que aparece en el terminal. Actividad de ampliación: haz un programa que muestre datos más rápido y que muestre otro texto. 7.7.2. Alarma por exceso de temperatura Ahora vamos a hacer una alarma sonora y acústica. El programa consistirá en hacer que el led rojo y el zumbador se accionen a la vez cuando el sensor de temperatura detecte una temperatura superior a 28ºC. Para ello vamos a utilizar las Funciones. Las funciones permiten agrupar bloques de código. Esto es útil cuando un bloque de código se repite en varias partes del programa y así evitamos escribirlo varias veces o cuando queremos dividir el código de nuestro programa en bloques funcionales para realizar un programa más entendible. Las funciones nos permiten realizar tareas que se repiten a lo largo del programa. En el menú “Funciones” tenemos el bloque “para () hacer algo”. Lo utilizaremos para crear nuestra función como la siguiente imagen. Debes escribir el nombre de ALARMA dentro de la función. Al hacer esto automáticamente en el menú “Función” aparecerá un nuevo bloque llamado ALARMA. El programa final sería el siguiente:  Actividad de ampliación: haz un programa que varíe el programa anterior para que encienda de color verde el led RGB si la temperatura inferior a los 28ºC y rojo si la temperatura es superior a los 35ºC. En el rango intermedio se indicará de color azul.Reto A08 Sensor de temperatura y humedad DHT11 Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoEn esta actividad vamos a leer los valores de temperatura y humedad utilizando el sensor DHT11. Este sensor mide temperaturas en un rango de acción de 0ºC a +50ºC con un error de +/- 2ºC y la humedad relativa entre 20% y 90% con un error de +/-5%. No es un sensor con una gran sensibilidad, pero cumple nuestros objetivos sobradamente. El sensor de temperatura es un termistor tipo NTC. Un termistor es un tipo de resistencia (componente electrónico) cuyo valor varía en función de la temperatura de una forma más acusada que una resistencia común. Su funcionamiento se basa en la variación de la resistividad que presenta un semiconductor con la temperatura. El término proviene del inglés “thermistor", el cual es un acrónimo de las palabras Thermally Sensitive Resistor (resistencia sensible a la temperatura). Existen dos tipos fundamentales de termistores: Los que tienen un coeficiente de temperatura negativo (en inglés Negative Temperature Coefficient o NTC), los cuales decrementan su resistencia a medida que aumenta la temperatura. Los que tienen un coeficiente de temperatura positivo (en inglés Positive Temperature Coefficient o PTC), los cuales incrementan su resistencia a medida que aumenta la temperatura. La placa Imagina TDR STEAM dispone de un sensor DHT11 conectado al pin D4. En un principio podríamos pensar que se trataría de un sensor analógico o que tuviera dos entradas, una para la temperatura y otra para la humedad. Pero las propias características de diseño del sensor, hace que se puedan realizar todas las lecturas por un solo puerto digital. En ArduinoBlocks en el menú de sensores tenemos el bloque específico para programar este sensor: 7.8.1 Zona de confort con DHT11 Puede definirse confort térmico, o más propiamente comodidad higrotérmica, como la ausencia de malestar térmico. En fisiología, se dice que hay confort higrotérmico cuando no tienen que intervenir los mecanismos termorreguladores del cuerpo para una actividad sedentaria y con una indumentaria ligera. Esta situación puede registrarse mediante índices que no deben ser sobrepasados para que no se pongan en funcionamiento los sistemas termorreguladores (metabolismo, sudoración y otros). Según la imagen adjunta vamos a marcar unos puntos de temperatura y humedad en los que estaremos dentro de la zona de confort térmico, dentro de una zona de medio confort y fuera de la zona de confort. Usando el Led RGB vamos a indicar esas zonas: Led RGB en ROJO; fuera de la zona de confort. Led RGB en NARANJA; dentro de la zona media. Led RGB en VERDE; en la zona de confort. A grandes rasgos estos serían los valores de las tres zonas:  Zona ROJA: Humedad por debajo del 20% y superior al 85%.** Temperatura por debajo de 16ºC o superior a 26,5ºC.** Zona NARANJA: Humedad entre el 20% y el 40% y entre el 65% y el 85%.** Temperatura entre los 16ºC y los 18ºC o entre los 24 y los 26,5ºC.** Zona VERDE: Humedad entre 40% y el 65%. Temperatura entre 18ºC y 24ºC. Para no complicar en exceso el programa de ejemplo, vamos a quedarnos sólo con la zona verde, es decir, el LED brillará en VERDE dentro de los parámetros de la Zona VERDE, para el resto el Led estará parpadeando en color ROJO. Para realizar este programa necesitaremos varios de los bloques del menú de Lógica. Necesitaremos evaluar una condición Lógica y utilizar conjunciones y disyunciones. Y:  se cumple si los dos operandos son verdaderos. O: se cumple si alguno de los dos operandos es verdadero. Antes de evaluar las condiciones debemos establecer las dos variables; la variable Temperatura y la variable Humedad. Recuerda que en el menú desplegable del sensor DHT-11 debes elegir la Temperatura o la Humedad. Usando 3 bloques de conjunciones debes crear el siguiente bloque:    Después ir metiendo las condiciones en cada uno de ellos: Y ve uniendo todo hasta conseguir esta condición final: Por último, debes crear una función, que la puedes llamar ALARMA. Para apagar el led RGB es ponerlo de color negro. Y con todo esto, el programa final quedaría así:  Actividad de ampliación: realiza un programa con las tres zonas por colores. Ten cuidado con las zonas donde se unen los rangos, ya que si el valor es justo (por ejemplo 40) deberás poner el símbolo >= o <=. También puedes mostrar los valores de humedad y temperatura por el puerto serie.Reto A09. Receptor de infrarrojos IR Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoUna gran parte de los electrodomésticos utilizan mandos a distancia de infrarrojos, como los televisores o equipos musicales. El sensor infrarrojo es un dispositivo optoelectrónico capaz de medir la radiación electromagnética infrarroja de los cuerpos en su campo de visión. Todos los cuerpos emiten una cierta cantidad de radiación, esta resulta invisible para nuestros ojos, pero no para estos aparatos electrónicos, ya que se encuentran en el rango del espectro justo por debajo de la luz visible. En el caso del receptor de infrarrojos (IR) de la placa IMAGINA TDR STEAM permite codificar los protocolos de señales de pulsos infrarrojos utilizados por los mandos a distancia. Los protocolos detectados son los siguientes: RC5, RC6, NEC, SONY, PANASONIC, JVC, SAMSUNG, WHYNTER, AIWA, LG, SANYO, MITSUBISHI y DENON. Es decir, detectaría cualquier señal emitida por uno de esos mandos. El mando a distancia contiene un circuito interno, un procesador y un led (Light Emitting Diode) que emite la señal infrarroja. La señal infrarroja transmite el código correspondiente al botón del mando a distancia pulsado y lo transmite al dispositivo en forma de una serie de impulsos de luz infrarroja. Pensemos en el código Morse, que ya vimos en una de las prácticas anteriores, y sus tonos cortos y largos. De forma análoga, los pulsos de luz infrarroja transmitidos son de dos tipos, los llamados 0 y 1. Los 0 podrían verse como los tonos cortos y los 1 como los tonos largos. El receptor IR recibe la serie de impulsos de infrarrojos y los pasa a un procesador que descodifica la serie de 0 y 1 en los bits digitales para después realizar la función que programemos. En la placa IMAGINA TDR STEAM el sensor receptor IR se encuentra conectado al pin digital D11. En el menú de “Sensores” de ArduinoBlocks tenemos dos bloques para programar nuestro receptor IR, uno propio del sensor y otro para el mando. 7.9.1 Recepción de comandos por infrarrojos Vamos a realizar una pequeña actividad en la que utilicemos el receptor IR y el mando emisor de Keyestudio. Primero crearemos una variable de texto a la que llamaremos “codigo” (sin acento, en programación se debe evitar poner acentos y símbolos) y la estableceremos con el bloque del Receptor IR. Con este bloque podemos saber el código que envía nuestro mando a la placa. Realizaremos un pequeño programa para ver que código envía cada botón del mando. A continuación, vamos a hacer otro programa. Consiste en encender el led rojo si pulsamos el botón arriba y que se apague cuando pulsamos el botón abajo. Vigila la versión del mando porque tendrás que cambiar la versión en función del mando. Ahora ya podemos completar el programa que queda de la siguiente forma.  Actividad de ampliación: realiza un programa con el que puedas controlar el color del led RGB con diferentes botones del mando y que se muestre el código enviado por el puerto serie.Reto A10 Puertos I2C: La pantalla LCD. Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoEl estándar I2C (Inter-Integrated Circuit) fue desarrollado por Philips en 1982 para la comunicación interna de dispositivos electrónicos en sus artículos. Posteriormente fue adoptado progresivamente por otros fabricantes hasta convertirse en un estándar del mercado. I2C también se denomina TWI (Two Wired Interface) únicamente por motivos de licencia. No obstante, la patente caducó en 2006, por lo que actualmente no hay restricción sobre el uso del término I2C. El bus I2C requiere únicamente dos cables para su funcionamiento, uno para la señal de reloj (SCL) y otro para el envío de datos (SDA), lo cual es una ventaja frente al bus SPI. Por contra, su funcionamiento es un poco más complejo, así como la electrónica necesaria para implementarla. En el bus, cada dispositivo dispone de una dirección, que se emplea para acceder a los dispositivos de forma individual. Esta dirección puede ser fijada por hardware (en cuyo caso, frecuentemente, se pueden modificar los últimos 3 bits mediante “jumpers” o interruptores, o por software. En general, cada dispositivo conectado al bus debe tener una dirección única. Si tenemos varios dispositivos similares tendremos que cambiar la dirección o, en caso de no ser posible, implementar un bus secundario. El bus I2C tiene una arquitectura de tipo maestro-esclavo. El dispositivo maestro inicia la comunicación con los esclavos, y puede mandar o recibir datos de los esclavos. Los esclavos no pueden iniciar la comunicación (el maestro tiene que preguntarles), ni hablar entre si directamente. El bus I2C es síncrono. El maestro proporciona una señal de reloj, que mantiene sincronizados a todos los dispositivos del bus. De esta forma, se elimina la necesidad de que cada dispositivo tenga su propio reloj, de tener que acordar una velocidad de transmisión y mecanismos para mantener la transmisión sincronizada (como en UART) A este bus de comunicaciones se le pueden conectar múltiples dispositivos: Pantalla LCD. Pantalla OLED. Matriz de leds. Acelerómetros. Giroscopios. Sensores de temperatura. Controladores de servomotores. Sensor de color. Vamos a proponer una serie de retos con algunos elementos I2C que no vienen integrados en la placa Imagina TDR STEAM pero que se pueden incorporar. 7.10.1 Pantalla LCD 16x2 Vamos a realizar la conexión de una pantalla LCD (16x2). La pantalla LCD utilizada es una pantalla de 16 caracteres (por fila) y dos columnas. Esta pantalla tiene 4 conexiones, dos cables (SDA y SCL para el bus de comunicaciones I2C) y los dos cables de alimentación (VCC y GND). Conectaremos la pantalla LCD a la placa Imagina TDR STEAM en el conector indicado: Hemos de tener cuidado y respetar las conexiones, tal y como se indica en la siguiente tabla: TdR STEAM Color Cable LCD GND Negro GND VCC Rojo VCC SDA Amarillo SDA SCL Blanco SCL Conexión de los cables a la pantalla y a la placa Imagina TDR STEAM.  En la pantalla aparecerán correctamente los datos cuando la coloquemos es esta posición, sino se verán al revés: En la configuración de la pantalla hemos de seleccionar la dirección de configuración 0x27. Vamos a realizar un programa que muestre una información por la pantalla LCD. El programa mostrará un texto por la pantalla LCD y un contador de 0 a 255 que se reiniciará en cada ciclo. 710.2 NO INCLUIDO EN EL KIT DE CATEDULa pantalla OLED La pantalla OLED la conectaremos también en el puerto de comunicaciones I2C respetando las conexiones. La pantalla que vamos a utilizar es una pantalla OLED de 0,96 pulgadas de 128x64 pixeles. OLED es la abreviatura de diodo emisor de luz orgánico. En el nivel microscópico, una pantalla OLED es una matriz de leds que se iluminan cuando emiten energía. La tecnología antigua de las LCD (pantalla de cristal líquido) utiliza polarizadores controlados electrónicamente para cambiar la forma en que la luz pasa o no pasa a través de ellos. Esto requiere una luz de fondo externa que ilumine toda la pantalla por debajo. Esto supone un consume alto de energía porque en el momento en que la pantalla está encendida, se debe proporcionar suficiente luz para todos los píxeles. La nueva tecnología OLED solo usa electricidad por cada píxel que queramos encender. Esto hace que la tecnología OLED sea muy eficiente. Además, la forma en que se construyen estos tipos de OLED permite que sean muy delgadas en comparación con la pantalla LCD. Vamos a realizar un programa para poder ver los datos del sensor de humedad y temperatura por la pantalla OLED. Existen una serie de bloques específicos para controlar la pantalla. Primero configuraremos la dirección I2C de la pantalla OLED. En el caso de la pantalla utilizada, tendremos que seleccionar 0x3C. Colocamos el bloque dentro de Inicializar y creamos las dos variables (Temperatura y Humedad). A continuación, podemos hacer diferentes cosas:  Borrar toda la pantalla. Mostrar información, utilizando diferentes tamaños de texto. Hacer figuras geométricas. Encender diferentes leds. Cargar una imagen Bitmap. El programa resultante para ver los datos en la pantalla es el siguiente: Reto A11. Serial plotter Estos contenidos han sido elaboradas por Fernando Hernández García, Ingeniero Técnico Industrial Especialidad Electrónica, formador del profesorado y profesor del Institut Torre del Palau (Terrassa – Barcelona). Enlace de los contenidos. Licencia CC-BY-NC-ND.PermisoVamos a realizar un programa muy sencillo e interesante que nos permitirá ver los datos del potenciómetro en forma de gráfica y los podremos exportar en formato CSV para poder tratarlos posteriormente. Con este programa conseguiremos realizar un sistema de adquisición de datos. Este es el programa en ArduinoBlocks que hemos confeccionado. Enviamos el programa a la placa y activamos el Serial Plotter. Pondremos la velocidad de comunicación (baudrate) a 9600 y después pulsaremos Conectar para empezar a ver los datos. Para poder guardar los datos en CSV hemos de apretar el botón de grabación, adquirir los datos que queremos y apretar el botón de parar grabación. Podremos ver la cantidad de muestras recogidas.  Ahora pulsamos en el botón CSV para guardar los datos en nuestro ordenador y poder trabajar con el fichero de datos creado. Actividad de ampliación: modifica el programa para que muestre los datos ahora de otro sensor.Reto A12. El micrófono El siguiente reto está extraído del LIBRO ACTIVIDADES CON IMAGINA TR STEAM Y ARDUINOBLOCKS VERSION 4.0 Descarga en : Repositorio original en Dropbox Repositorio alternativo DriveConcretamente de la página 89 capítulo 7.11.1 Elaborado por el equipo de Innova Didáctic Robolot Team LICENCIA CC- BY NC ND Permiso Vamos a realizar un pequeño programa en el que veamos por el puerto serie el nivel de sonido. Se puede utilizar cualquiera de los dos bloques de ejemplo. También se pueden mostrar los datos por la pantalla LCD. En este programa vamos a hacer dos ciclos uno de 0 a 255 en el que iremos regulando la intensidad del led y viendo el valor. Después mostramos el nivel de sonido. Después haremos lo mismo pero el ciclo a la inversa, de 255 a 0 y regulando el nivel de iluminación del led a la inversa. Después volvemos a mostrar el nivel del micrófono. Actividad de ampliación: modifica el programa para que muestre los datos tanto por la pantalla LCD como por el puerto serie.Descarga otros retos En la página de ArduinoBlocks http://www.arduinoblocks.com/ en Recursos - Libros&Documentación tenemos la descarga de las actividades a realizar con los alumnos del kit Imagina TdR STEAM Esta documentación está preparada para trabajar con los alumnos. Recomendamos utilizarla menos la parte de comunicaciones IoT Wifi y Bluetooth que lo explicaremos aparte. Son documentos muy vivos por lo tanto es conveniente fijarse en la última fecha y en la última versión. Tenemos varios documentos, parecidos y en la siguiente página comentamos las diferencias. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Comentarios de las descargas de otros retos LIBRO ACTIVIDADES CON IMAGINA TR STEAM Y ARDUINOBLOCKS VERSION 4.0 Descarga en : Repositorio original en Dropbox Repositorio alternativo Drive 1  Reto A01. El led. 1.1  Reto A01.1. ON/OFF led rojo. . 1.2  Reto A01.2. ON/OFF led rojo y azul. 1.3  Reto A01.3. ON/OFF led rojo y azul con repeticiones. 2  Reto A02. El led RGB. 2.1  Reto A02.1. Identificación de colores RGB. 2.2  Reto A02.2. Múltiples colores con el led RGB. . 2.3  Reto A02.3. Control de intensidad del led RGB. . 2.4  Reto A02.4. Regulación de la intensidad del led RGB. . 2.5  Reto A02.5. Más control de la intensidad del led RGB. 3  Reto A03. El zumbador. . 3.1  Reto A03.1. Primeros sonidos con el zumbador. 3.2  Reto A03.2. Escalas musicales con el zumbador. 3.3  Reto A03.3. Notas musicales con el zumbador. . 3.4  Reto A03.4. Melodías con RTTTL. . 4  Reto A04. El pulsador. . 4.1  Reto A04.1. Control ON/OFF de un led con un pulsador I. . 4.2  Reto A04.2. Control ON/OFF de un led con un pulsador II. 4.3  Reto A04.3. Control ON/OFF de un led con un pulsador III. . 5  Reto A05. El potenciómetro 5.1  Reto A05.1. Lectura de valores con el puerto serie. . 5.2  Reto A05.2. Ajuste de valores de entrada y salida: mapear. . 5.3  Reto A05.3. Control del led RGB con el potenciómetro. . 6  Reto A06. La fotocélula (LDR – sensor de luz).  6.1  Reto A06.1. Encender y apagar un led según el nivel de luz. 7  Reto A0 Sensor de temperatura LM35D. 7.1  Reto A01. Lectura del valor de la temperatura. 7.2  Reto A02. Alarma por exceso de temperatura. 8  Reto A0 Sensor de temperatura y humedad DHT11.  8.1  A01. Zona de confort con DHT11. . 9  Reto A09. Receptor de infrarrojos (IR).  9.1  Reto A09.1. Recepción de comandos por infrarrojos. 10  Reto A10. Puertos de expansión I2C: pantalla LCD. 10.1  A10.1. Pantalla LCD 16x2. . 11  Reto A11. El micrófono. . 11.1  Reto A11.1. Nivel de sonido con el micrófono. . 12  Reto A12. Termohigrómetro. Actividades de ampliación con Imagina TDR STEAM. Puerto serie 1.1  Reto A13.1. Serial plotter. 1.2  Reto A14.1. Serial plotter con varios sensores. Sistemas de comunicaciones: Bluetooth y Wifi. . 1  Reto A15.1. Módulo Bluetooth. . 1.1  Reto A15.1.1. AppInventor2. 1.2  Reto A15.1.2. ArduinoBlocks. 1.3  Reto A15.1.3. Programación avanzada con Bluetooth. 2  Reto A16.2. Módulo Wifi. 2.1  Reto A16.2.1. ThingSpeak. 2.2  Reto A16.2.2. ArduinoBlocks. 2.3  Reto A16.2.3. ThingView. Proyectos con la placa Imagina TDR STEAM.  134 Nuestra opinión LIBRO ACTIVIDADES CON IMAGINA TR STEAM Y ARDUINOBLOCKS VERSION 4.0 Consideramos que es el documento más completo, trabaja tanto la pantalla I2C LCD, el módulo micrófono y luego actividades de ampliación. La parte de sistemas de telecomunicación Bluetooth y Wifi lo trataremos aparte en este curso pues la parte de Bluetooth trabaja la pantalla OLED y módulo acelerómetro que no se suministra, y la parte de Wifi no trabaja Adafruits ni Blynk. Aconsejamos pues Trabajar con los alumnos las actividades desde la A01 hasta la A14 de este LIBRO ACTIVIDADES CON IMAGINA TR STEAM Y ARDUINOBLOCKS VERSION 4.0. LIBRO RETOS VERSION 1 Descarga en de retos https://drive.google.com/file/d/1uQdLDhT1UigSFbHkFH5BH_9cO4BrDj-S/view 1  Reto A01. El led.  1.1  Reto A01.1. ON/OFF led rojo. 1.2  Reto A01.2. ON/OFF led rojo y azul. 1.3  Reto A01.3. ON/OFF led rojo y azul con repeticiones. 2  Reto A02. El led RGB. 2.1  Reto A02.1. Identificación de colores RGB. 2.2  Reto A02.2. Múltiples colores con el led RGB. . 3  Reto A03. El zumbador. . 3.1  Reto A03.1. Primeros sonidos con el zumbador. 3.2  Reto A03.2. Escalas musicales con el zumbador. 3.3  Reto A03.3. Melodías con RTTTL. . 4  Reto A04. El pulsador. . 4.1  Reto A04.1. Control ON/OFF de un led con un pulsador I. . 4.2  Reto A04.2. Control ON/OFF de un led con un pulsador II. 4.3  Reto A04.3. Control ON/OFF de un led con un pulsador III. . 5  Reto A05. El potenciómetro 5.1  Reto A05.1. Lectura de valores con el puerto serie. . 5.2  Reto A05.2. Ajuste de valores de entrada y salida: mapear. 5.3  Reto A05.3. Control del led RGB con el potenciómetro. . 6  Reto A06. La fotocélula (LDR – sensor de luz).  6.1  Reto A06.1. Encender y apagar un led según el nivel de luz. 7  Reto A0 Sensor de temperatura LM35D. 7.1  Reto A01. Lectura del valor de la temperatura. 7.2  Reto A02. Alarma por exceso de temperatura. 8  Reto A08. Sensor de temperatura y humedad DHT11.  8.1  A08.1. Zona de confort con DHT11. . 9  Reto A09. Receptor de infrarrojos (IR). 9.1  Reto A09.1. Recepción de comandos por infrarrojos. . 10  Reto A10. Puertos de expansión I2C: pantalla LCD. 10.1  Reto A10.1. Pantalla LCD 16x2. 10.2  Reto A10.2. La pantalla OLED. 11  Reto A11.1. Serial plotter. 12  Sistemas de comunicaciones: Bluetooth y Wifi. . 12.1  Reto A12.1. Módulo Bluetooth. 12.1.1  Reto A12.1.1. AppInventor2. 12.1.2  Reto A12.1.2. ArduinoBlocks. 12.2  Reto A12.2. Módulo Wifi. . 12.2.1  Reto A12.2.1. ThingSpeak. 12.2.2  Reto A12.2.2. ArduinoBlocks. 12.2.3  Reto A12.2.3. ThingView. 8  Proyectos con la placa Imagina TDR STEAM. Nuestra opinión LIBRO RETOS Trabaja la pantalla I2C LCD pero no el módulo micrófono. Luego trabaja la pantalla OLED que no se suministra en el kit. La parte de sistemas de comunicación opinamos igual que en el anterior libro LIBRO ACTIVIDADES Y RETOS Descarga del libro de Actividades y retos https://drive.google.com/file/d/1d0E5d3q5bRT2IFGZSeYi0npw4KE6XMtY/view A01. – El LED A01.1.– On/OFF del LED Rojo (Pin 12) A01.2.– On/OFF del LED Rojo y Azul (Pin 12 y 13) A01.3.– On/OFF del LED Rojo y Azul (Pin 12 y 13). A02. – El LED RGB PINes (D6-D9-D10) A02.1.– Identificación de colores y Pines LED RGB A02.2.– Múltiples colores con el LED RBG. A02.3.– Control PWM del LED RBG I. A02.4.– Control PWM del LED RBG II. A02.5.– Control PWM del LED RBG III. A03. – Generar notas con el Buzzer o Zumbador. A03.1.– Primeros sonidos con el Buzzer. A03.2.– Escala musical I. . A03.3.– Escala musical II. . A03.4.– Melodias RTTTL A04. – Sensor pulsador. A04.1.– ON/OFF LED con Pulsador. A04.2.– ON/OFF LED con Pulsador I. A04.3.– ON/OFF LED con Pulsador II. . A05. – Potenciómetro A05.1.– Lectura valor Potenciómetro por el Puerto Serie. A05.2.– Uso del bloque MAPEAR y el Potenciómetro. A05.3.– Control del LED RGB con el Potenciómetro. A06. – Lectura del valor de la fotocélula (LDR). A06.1.– On/Off de LED según el nivel de luz. A07. – Medición de temperatura de una habitación. A07.1.– Lectura del valor de la temperatura. A07.2.– Alarma por exceso de temperatura. A08. – Temperatura y Humedad. Sensor DHT11 A08.1.– Confort higrométrico con DHT11. A09. – Receptor IR. . A09.1.– Test de receptor IR. A10. – Puertos de expansión. Nuestra opinión LIBRO RETOS No trabaja la pantalla I2C LCD ni el módulo micrófono ni la parte de comunicaciones. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Bluetooth Un poco de teoría Bluetooth ONDAS Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse). Dependen de 3 parámetros principalmente: Amplitud: altura máxima de la onda. Hablando de sonido representaría el volumen. Si nos referimos a una onda eléctrica estaríamos representando normalmente el voltaje. Longitud de onda λ: distancia entre el primer y último punto de un ciclo de la onda (que normalmente se repite en el tiempo). Frecuencia f : Número de veces que la onda repite su ciclo en 1 segundo (se mide en hertzios). Periodo T es simplemente es la inversa de la frecuencia. T=1/f La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda. TRANSMISIÓN INALÁMBRICA: BLUETOOTH.    Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para teléfonos sino para cientos de dispositivos. Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos). Utiliza una parte del espectro electromagnético llamado “Banda ISM”, reservado para fines no comerciales de la industria, área científica y medicina. Dentro de esta banda también se encuentran todas las redes WIFI que usamos a diario. En concreto funcionan a 2,4GHz. (Un G son 109) luego entre FM y Microondas. ¿Sabias que?Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre.  Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar: También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo: Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo.kb = 1.024 b     M = 1.024 k     G = 1.024 M ¿Te atreves a calcularlo …. ? ¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es el periodo de esas ondas? Solución a)  f = 2.4Gb) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06 ¿Te atreves a calcularlo...? ¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth? Un vídeo de 7Mb usando versión 2 clase 2 Una imagen de 2.5Mb usando versión 3 clase 1 Un archivo de texto de 240KB usando versión 1.2 clase 1 Solución 1) 7Mb / 3Mbs = 2.3 seg.2) 2.5Mb / 24Mbs = 0.1 seg.3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg.  Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Conexión del módulo Bluetooth Módulo Bluetooth HC-06 SLAVE El módulo Bluetoth HC-06 tiene 4 pines, funciona SLAVE o sea, esclavo. Si quieres saber más de este módulo, consulta esta página de Arduino con código Módulo Bluetooth HC-05 MASTER-SLAVE Un módulo HC-05 tiene en cambio 6 pines y puede funcionar en dos modos MASTER o SLAVE El HC-05 puede funcionar como maestro y esclavo. La diferencia con el módulo HC-06 que sólo funciona como esclavo. El HC-05 es por lo tanto un módulo técnicamente superior. Físicamente el HC-05 tiene 6 pines mientras que el HC-06 sólo 4. Esto le permite al HC-05 trabajar con distintos modos de funcionamiento más avanzados, (ver https://fgcoca.github.io/BlueTooth-HC-05-y-HC-06/modulos/) En nuestro caso El módulo que se facilita en el kit está fabricado por la empresa KEYSTUDIO, tiene 4 pines por lo tanto es un ... HC-06. Comparte este módulo las líneas de datos D0 y D1 utilizados en la comunicación serie COM !!! 😮😮😮 no podemos a la vez tener el HC06 y comunicarnos con el Arduino con el ordenador. Existe un interruptor para desconectar el módulo bluetooth cuando conectamos el Arduino al ordenador por el puerto serie COM, pero a nuestro criterio crea confusión. Recomendamos pues NO TOCAR ESTE INTERRUPTOR, DEJARLO SIEMPRE EN ON es decir, el interruptor siempre hacia el borde como en la figura, y simplemente conectar el HC06 cuando se utilice, y desconectarlo cuando queremos subir un programa al Arduino Resumiendo Nuestro consejo es : CUANDO ESTAMOS SUBIENDO UN PROGRAMA DEL ORDENADOR AL ARDUINO : CUANDO ESTAMOS USANDO EL BLUETOOTH No se toca el interruptor, siempre en posición ON (pestaña al borde de la placa) Si el HC-06 ESTÁ CONECTADO NO SE PUEDE COMUNICAR CON EL ORDENADOR Esto no es nuevo en los cursos de Arduino, en el curso Arduino con código también hay que tener esa precaución https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/modulo-hc-06 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU APP -> TDR-STEAM - Programa en ArduinoBlocks Este caso es sencillo pues el módulo Bluetooth trabaja como esclavo Si recibe datos, que almacene en una variable tipo texto que le llamaremos codigo el código que recibe de nuestra APP hasta el salto de línea Si recibe una A que encienda el led azul y apague el rojo Si recibe una R que encienda el led rojo y apague el azul La APP tiene que enviar A y salto de línea o R y salto de línea ACUÉRDATE DE SUBIRLO A LA PLACA ARDUINO SIN EL MÓDULO HC06 CONECTADO Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU APP -> TDR-STEAM - La APP La APP en el móvil La comunicación con la placa en este caso es muy sencilla, pues estamos empleando el Bluetooth como esclavo, es decir, será como receptor de datos nuestra placa electrónica (slave) y el móvil (master) como emisor de datos.  En nuestro caso usaremos caracteres (bytes)  que enviaremos desde un master, como un teléfono móvil. Hay muchas aplicaciones gratuitas para enviar datos. Podemos usar cualquier APP que emita un código por Bluetooth. hay muchos, nosotros hemos elegido este : Arduino Bluetooth Control Esta APP es muy completa y configurable, aquí para descargarla de Google Play. El código de programa que tenemos que cargar en la placa se basa en escuchar de forma continua el puerto serie. Cuando llegue el dato, se ejecutará la acción que le indiquemos. ¡¡así de sencillo !! Vincular móvil Hay que vincular nuestro móvil y nuestra APP de Android con el Arduino, para ello sigue este sencillo tutorial: Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU APP -> TDR-STEAM - Resultado Pulsamos en el símbolo de dos flechas circulares arriba a la derecha para vincular al HC06 Sale una pantalla para elegir de todos los elementos Bluetooth vinculados cual elegir, elegimos el HC06 El HC06 deja de parpadear A jugar !! Igual podemos hacer con la voz, decimos rojo o azul y se enciende con la voz los leds También en el terminal podemos escribir R (intro) o A (intro) y se apagan o encienden los leds Retos Utilizar los botones derecha e izquierda para apagar los dos o encender los dos simultáneamente Utilizar otros comandos para usar el RGB Que emita un sonido o una música si se pulsan los botones APP <-> TDR-STEAM - Arduinoblocks En este caso añadiremos más código al bucle, creamos unas variables tipo texto que sean temperatura, humedad y luz y en crearemos texto con los valores de los sensores correspondientes, una vez creado el texto y finalizado con salto de línea '/' enviamos el texto por bluetooth Hacemos una espera de 2 segundos para no saturar a la APP en datos. ¿Un rollo hacerlo? buenoo.. aquí lo tienes http://www.arduinoblocks.com/web/project/796527 ACUERDATEDe quitar el HC-06 para subir este programa al ARDUINO TDR-STEAMAPP <-> TDR-STEAM - APP INVENTOR- DESIGNER La comunicación con la placa en este caso no es tan sencilla como en el caso anterior, no nos vale las APPs que hay en Google Play que envían un código y en paz, ahora tenemos que tener una APP que si reciben un código que hagan algo. Esto ya es exclusivo por lo tanto hay que programar una APP que cumpla los requisitos. En nuestro caso lo hemos hecho en APP INVENTOR https://appinventor.mit.edu/ NO ES EL OBJETIVO DE ESTE CURSO FORMARTE EN APP INVENTORPero si no conoces el programa, te recomendamos que vayas a estos contenidos que de una manera muy fácil aprenderás a crear programas con APP INVENTOR y exportarlos al móvilhttps://libros.catedu.es/books/app-inventor En la parte de DESIGNER APP <-> TDR-STEAM - APP INVENTOR- Blocks En la parte de Blocks ATENCIÓN: A partir de Android 12 hay que dar permisos a la aplicación para que pueda visualizar los dispositivos bluetooth disponibles, para ver la explicación https://www.youtube.com/watch?v=MNLzS-MOXAg Hay que añadir este código: Puedes descargarte la APP en este enlace pero tienes que permitir en el móvil instalar APPs desconocidas. Otra forma es en este código QR utilizando la APP de Google Play MIT AI2 Companion  y poner el código sxbbnv Aquí tienes los pasos de su realización El programa lo tienes aquí https://gallery.appinventor.mit.edu/?galleryid=e4780fa4-3252-4d73-b846-b2a0935c6d01 Llevar la APP creada en APP INVENTOR al móvil Tienes dos opciones EN VIVO CONNECT - AI COMPANION esta opción es la más rápida, y realmente lo simula a través de la APP INVENTOR. Tienes que tener instalada la APP MIT AI2 COMPANION Se le pasa el código de tu APP a la APP CARGAR BUILD- ANDROID APP (.apk) Se descarga el fichero apk Lo llevas a tu móvil pero tiene que permitir instalar APPs de lugares desconocidos OPCIÓN EN VIVO AI COMPANION Instalas la APP MIT AI2 COMPANION En APP INVENTOR Y sale un código y un QR asociado al código Abrimos la APP MIT AI2 COMPANION y metemos el código anterior (o lo escaneamos con el QR) En APP INVENTOR procede a enviar la APP al móvil y a ejecutarlo OPCIÓN CARGAR BUILD- ANDROID APP (.apk) En esta opción, descargamos el fichero con extensión apk Procede a compilarlo Y te da dos opciones para descargar el fichero Si optas por descargarlo, tienes que buscar la manera de llevarlo al móvil (enviándotelo por email a ti mismo, o whatsapp a ti mismo a veces no funciona pues lo bloquean por seguridad) La opción de descargarlo por QR pregunta por abrir el link de descarga Te preguntará permisos para la descarga e instalación de apps de orígenes desconocidos, en mi caso he tenido que permitir los que sean por DuckDuckGo que es el navegador que tengo en el móvil y por donde se ha descargado el enlace anteior Una vez descargado : Si pulsamos, intenta instalarlo pero vuelve a salir un mensaje de bloqueo que tenemos que dar a More details - Install anyway y por fin ya funciona APP <-> TDR-STEAM- Resultado Una vez creado la APP vamos en APP Inventor a Build para crear el APK. Si no deseas crear la APP en APP INVENTOR, en este enlace puedes descargar el APK pero ten en cuenta que para instalarlo tienes que permitir orígenes desconocidos, bajo tu responsabilidad Si el TDR-STEAM tiene el programa cargado, simplemente abrimos la APP, conectamos con el HC-06 y a jugar ! IoT-Wifi ¿Qué es Internet de las cosas IoT? El Internet de las cosas (Internet of Thing IoT) describe objetos físicos —o grupos de estos— con sensores, capacidad de procesamiento, software y otras tecnologías que se conectan e intercambian datos con otros dispositivos y sistemas a través de internet u otras redes de comunicación.​ El Internet de las cosas se ha considerado un término erróneo porque los dispositivos no necesitan estar conectados a la Internet pública. Sólo necesitan estar conectadas a una red y ser direccionables individualmente Fuente Wikipedia IoT Internet de las cosas CC-BY-SA De Drawed by Wilgengebroed on FlickrTranslated by Prades97 CC BY-SA 3.0 Estamos hablando de dispositivos que se conectan a internet de forma desatendida, por vía hardware (o mejor dicho firmware) a diferencia de un ordenador, tablet o móvil, donde tienes que configurar por software el dispositivo y hay un diálogo entre usuario y dispositivo sobre el uso de Internet (el software solicita tal página web, tales datos etc por voluntad del usuario o por diálogo con el usuario) Aquí los dispositivos están ya configurados de los datos que se comunican. Es decir "conectar y olvidar". Piensa en la diferencia entre un enchufe inteligente y un ordenador, el primero es lo que se considera dentro de IoT Las formas "desatendidas" son un avance en la sociedad pero también puede generar problemas muy serios a nivel mundial, ver el caso Mirai Las cosas claras. ¿asíncrono o síncrono? Hay muchas herramientas IoT Blynk: lo que nos gusta de esta herramienta es que es casi "instantánea" o "síncrona". Esto es imprescindible con ciertos robots como el Rover Marciano con Arduino. Necesitamos que "gire" para evitar un obstáculo, no podemos esperar !!!. Veremos con BLYNK un protocolo que entre el dispositivo electrónico (nuestro robot) y nosotros (en ordenador, en una APP en el móvil) la comunicación es instantánea, gracias a un servidor que hará de intermedio, que puede ser local (BLYNK LEGACY) o en Internet (BLYNK IoT). Blynk legacy es la que se va a trabajar en Rover Marciano con Arduino Arduinoblocks en el aula ESP32 en el aula Blynk IoT es la que se va a trabajar con En ESP32 en el aula MQTT  El emisor envía datos, se almacenan en un servidor, y cuando puede, lo vuelca al cliente. Cliente y emisor pueden ser el dispositivo electrónico y nosotros o viceversa. Veremos que esto es lo que hace el protocolo MQTT y está tremendamente extendido por lo barato y fácil que es. Hace que los servidores no estén tan ocupados, por lo tanto hay varios proveedores que ofrecen este servicio gratuitamente. Hay robots como los que tienen la placa TDR STEAM IMAGINA que envía datos de temperatura, humedad, .. y pueden recibir datos pero no precisan de esta exigencia instantánea como un rover. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU ESP8266 o ESP01 Arduino no tiene wifi, y es importante esto para conseguir hacer prácticas IoT. Hay shields que permiten una conexión Ethernet o Wifi pero resultan caras. Otra opción es utilizar la versión del Arduino MKR1000 pero también resulta cara. Lo mejor es utilizar el ESP8266 para que a través de él nuestro Arduino pueda volcar o recibir datos a través de una Wifi. Resumiendo brevemente, el ESP8266 es un chip microcontrolador, es decir, no es un sensor, no es un actuador, no es una entrada/salida del Arduino sino que es, igual que el Arduino, es una placa electrónica montado en un módulo que tiene un microcontrolador (Tensilica L106 de 32bits) capaz de hacer cosas pero que tiene una característica importante: Que tiene Wifi, pero no lo veas como un módulo Wifi para Arduino, sino como una placa electrónica completa, como el Arduino, incluso es su competencia. El chip ESP8266 se vende montado en un módulo, el más vendido es el ESP01 y es el que se proporciona en el kit del curso  Arduinoblocks en el aula de CATEDU. Fuente Luis Llamas CC-BY-NC-SA ver Por eso se habla indistintamente ESP8266 o el ESP01 Sus entradas y salidas son comunicaciones por puerto serie que está ocupado en el Arduino con las comunicaciones a nuestro ordenador, esto hay que tenerlo en cuenta en la programación añadiendo un nuevo puerto serie. Arduinoblocks lo hace automáticamente por nosotros. Si quieres saber más de este chip y su zócalo te recomendamos https://www.luisllamas.es/esp8266/ Su bajo precio y su software libre permitió al mundo maker utilizar este chip. No sólo se puede utilizar para que el Arduino tenga acceso a Internet, sino también se han desarrollado multitud de módulos con el ESP8266, como veremos más adelante, el más interesante en su evolución es el módulo ESP-12E o el ESP32. Pero sigamos con el ESP8266 montado en el módulo ESP01. Tiene unas pegas...  no se diseñó para montarlo en el Arduino : PRIMERO La alimentación es 3V a 3.6V con picos de 200mA por lo que no puede conectarse directamente a la alimentación 3.3V y 50mA de Arduino. SEGUNDO Consecuencia del máximo de 3.6V es que las entradas y salidas del ESP8266 no conviene conectarlas directamente a las entradas y salidas del Arduino que van a 5V. En conclusión, NO SE PUEDE CONECTAR DIRECTAMENTE. Verás en Internet muchos tutoriales que conectan el ES01 directamente al Arduino pero a mi personalmente no me ha funcionado ninguno. En conclusión: tenemos que usar una alimentación externa como se aconseja aquí o utilizar un zócalos específico como el proporcionado en el kit de Arduino en el Aula del fabricante Keyestudio. Fuente página web del fabricante Keyestudio NUESTRO CONSEJO Si piensas trabajar con Internet y el Arduino, es mejor usar otras placas que puedan usar el lenguaje IDE de Arduino, pero que tengan integrada una versión del ESP8266 con un  módulo adaptado a su integración NodeMCU que utiliza el módulo El ESP-12E y se ha utiliza en el curso ROVER MARCIANO CON ARDUINO. Módulo ESP-12E Fuente Luis Llamas CC-BY-NC-SA ver ESP32 en el Aula que utiliza la placa ESP32 de Innovadidactic y es un serio competidor al Arduino: Más barato y más potente y se utiliza en el curso ESP32 EN EL AULA Módulo ESP32 Fuente Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/esp32/ ARDUINO UNO R4 WIFI lanzado en junio23 integra un ESP32 dentro del Arduino para obtener la Wifi, curioso, metes a tu competidor dentro: si no puedes con tu enemigo... ¿lo veis en la foto? Incorpora Bluetooth y una matriz de leds Arduino UNO R4 Wifi Fuente Luis Llamas CC-BY-NC-SA  https://www.luisllamas.es/arduino-uno-r4-minima-wifi/ Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Conexión ESP8266 Vamos a conectar el ESP8266 con nuestro KIT TDR STEAM IMAGINA. Si no tuvieras la shield TDR STEAM tienes que conectarlo directamente en el Arduino, en esta página tienes un esquema de cómo se hace. En primer lugar insertamos el ESP8266 con el zócalo que nos facilitará la conexión al Arduino tal y como hemos visto anteriormente. Luego utilizamos el cable de 3 hilos que proporciona el Kit al zócalo del ESP8266 de tal forma que : Cable negro a GND Cable rojo a Vcc Cable azul a TX del zócalo ESP8266 El otro extremo del cable de 3 hilos a la Shield TDR Imagina, tenemos dos posibilidades, lo conectaremos al slot del D3 Luego utilizaremos un cable extra: Dupont Hembra - Hembra (en la foto de color marrón) que lo conectaremos un extremo al RX del zócalo ESP8266 y el otro extremos al D5. De esta manera tenemos alimentado el zócalo ESP8266 y RX a D5 TX a D3 Otra posibilidad es al revés, utilizar el otro slot D5 en el cable de tres hilos y conectar el Dupont H-H al D3 pero en este libro utilizaremos el criterio expuesto por elegir uno. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Comprobar que el ESP8266 está a 9600 baudios por defecto Tal y como se aconseja aquí, el ESP8266 permite trabajar la wifi a velocidades de 9600 a 115200 baudios pero para evitar problemas se aconseja bajar a 9660. Esta comprobación no es necesario hacerlo siempre, con una sola vez es suficiente, el ESP8266 se queda grabado a esa velocidad. Comunicarnos con el ESP8266 El ESP8266 se comunica con nuestro Arduino por un puerto serie. Nosotros ya utilizamos un puerto serie en el Arduino, el que nos permite la comunicación de Arduino con nuestro ordenador por el puerto COM de nuestro ordenador y por D0 y D1 de nuestro Arduino. Con la librería SoftwareSerial.h es posible crear otro puerto serie adicional. Luego vamos a grabar este código extraído de https://docs.arduino.cc/tutorials/communication/SoftwareSerialExample y nos permitirá una vez creado el puerto serie adicional, comunicarnos con él Tenemos que: descargar el programa Arduino IDE de https://www.arduino.cc/en/software Instalarlo y ejecutarlo seleccionar la placa Arduino Uno seleccionar el puerto donde está conectado Para estos 4 pasos, te recomendamos que vea esta página. Pega este código #include SoftwareSerial mySerial(3, 5); // Esto crea un nuevo puerto serie en RX, TX en los pines 3 y 5 void setup() { Serial.begin(9600); // pone la velocidad a 9600 baudios DEL PUERTO SERIE COM no el que vamos a crear nuevo Serial.println("Cónsola serie. Teclear el comando AT en la línea de arriba y pulsa Enviar... a ver si sale OK"); // set the data rate for the SoftwareSerial port mySerial.begin(9600); //esto fija a 9600 la comunicación entre ESP01 y tu ordenador, no la velocidad wifi del ESP01 } void loop() { // run over and over if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { mySerial.write(Serial.read()); } } Y lo subimos al Arduino Este programa NO NOS HA CONFIGURADO EL ESP8266 A 9600 BAUDIOS simplemente este programa nos permite comunicarnos con el ESP8266 por la consola serie Luego abrimos la monitorización del puerto serie: Y nos sale esta pantalla, una zona de entrada de comandos hacia el Arduino y la zona de respuesta del Arduino: Asegúrate que tienes la comunicación a 9600 baudios Apretamos el botón reset del ESP8266 Si en el monitor serie aparece al final la palabra ready es que la comunicación con el ESP8266 se realiza sin problemas Si no sale la palabra ready tendrás que configurarlo a 9600 con los comandos AT: Configurando a 9600 Si no te sale la palabra ready, carga este programa que ejecuta la instrucción AT+UART_DEF=9600,8,1,0,0 para configurar tu ESP8266 a 9600 baudios #include SoftwareSerial mySerial(3, 5); // Esto crea un nuevo puerto serie en RX, TX en los pines 3 y 5 void setup() { Serial.begin(9600); // pone la velocidad a 9600 baudios DEL PUERTO SERIE COM no el que vamos a crear nuevo Serial.println("Cónsola serie. Teclear el comando AT en la línea de arriba y pulsa Enviar... a ver si sale OK"); // set the data rate for the SoftwareSerial port mySerial.begin(9600); //esto fija a 9600 la comunicación entre ESP01 y tu ordenador, no la velocidad wifi del ESP01 delay(1000); Serial.print("Modo 3 ....\n"); mySerial.write("AT+CWMODE=3\r\n"); delay (1000); mySerial.write("AT+RST\r\n"); delay (1000); Serial.print("Configurando a 9600 baudios ....\n"); mySerial.write("AT+UART_DEF=9600,8,1,0,0\r\n"); delay (1000); mySerial.write("AT+RST\r\n"); delay (1000); } void loop() { // run over and over if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { mySerial.write(Serial.read()); } } Te tiene que salir algo así: Experimenta con los comandos AT Los comandos AT son simplemente instrucciones de texto que se envían por el puerto serie, En este caso utilizando Arduino y el puerto creado con SoftwareSerial.h como intermediarios entre tu ordenador y el ESP8266. OJO, los comandos AT necesitan que terminen con los caracteres nueva línea y carry return para eso, tienes que tener activo que se envían estos caracteres en esta lista desplegable de la ventana del monitor serie Teclea AT y pulsa Enviar, te tiene que salir OK esto significa que hay comunicación con el ESP8266 con los comandos AT Verás en Internet programas específicos en Arduino IDE para ejecutar los comandos AT. NO ES NECESARIO como ves se puede hacer desde la consola del monitor serie. Pero en el Arduino tiene que estar el programa cargado de crear el nuevo puerto y de visualizar los comandos. Ponlo en modo normal 3 = station+softAp es la más versátil AT+CWMODE=3 Luego reinicialo o con el botón de reset o con el comando AT+RST Teclea AT+CWLAP y verás las wifis disponibles La instrucción AT+UART_DEF=9600,8,1,0,0 configura tu ESP8266 a 9600 baudios Conectarse a una red wifi concreta AT+CWSAP="ssid","password",3,0 Ver la IP del 8266 AT+CIFSR Para saber más comandos AT visita esta página de Luis Llamas Mentirijillas He dicho que esto sólo se hace una sóla vez, que no es necesario hacerlo en la programación habitual con ESP8266 añadir puertos serie. Es una mentirijilla. Realmente siempre hay que usar el  SoftwareSerial.h  y crear un nuevo puerto con SoftwareSerial mySerial(3, 5) para poder manejar el ESP8266, pero esto lo hace Arduinoblocks por nosotros de forma transparente. Cuando ponemos en Arduinoblocks la instrucción para conectarnos a la wifi con el ESP8266 : Si vemos en el código, ya pone estas instrucciones : #include #include "ABlocksIOTMQTTESP8266.h" String s_LED_TXT;boolean b_conectado;const char mqtt_broker[]="io.adafruit.com";const int mqtt_port=1883;const char mqtt_user[]=".......";const char mqtt_pass[]=".....";const char mqtt_clientid[]="cualquiercosa";const char mqtt_wifi_ssid[]="...";const char mqtt_wifi_pass[]="......";SoftwareSerial mqtt_esp8266_serial(3,5);ESP8266 mqtt_esp8266_wifi(&mqtt_esp8266_serial); etc.... Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT-Wifi-MQTT MQTT MQTT es un protocolo dentro de los protocolos entre máquina a máquina M2M. MQ significa Message Queue, son mensajes que se publican y otros se suscriben. Llegan a un servidor que también se llama Broker o Router, los va almacenando en una cola y se eliminan cuando son entregados. Un ejemplo fácil de entender son los mensajes SMS, que mientras no estas conectado, tus mensajes están en un servidor, y cuando te conectas, se descargan tus mensajes en tu móvil. Las últimas siglas TT significa Telemetry Transport Fuente Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/ Los clientes inician una conexión TCP/IP con el broker, el cual mantiene un registro de los clientes conectados. Esta conexión se mantiene abierta hasta que el cliente la finaliza. Por defecto, MQTT emplea el puerto 1883 y el 8883 cuando funciona sobre TLS. Fuente Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/ TCP/IP son los protocolos de comunicación en Internet. TLS Transport Layer Security es un protocolo que se añade para asegurar la privacidad y seguridad de los datos. Por eso hay que enviar un usuario y una contraseña para conseguir esta seguridad. En los mensajes, se añade un texto que haga de filtro, que se llama topic, este topic permite al broker filtrar de todos los mensajes que se reciben a qué clientes hay que entregar estos mensajes. Estos topic suelen estar jerarquizados, por ejemplo Casa/Cocina/Temperatura y un cliente puede estar suscrito a Casa/+/Temperatura por lo que recibiría los datos de Casa/Cocina/Temperatura pero también los de Casa/Salon/Temperatura, etc... Si quieres saber más de los tópic te recomendamos la página https://www.luisllamas.es/que-son-y-como-usar-los-topics-en-mqtt-correctamente/ El MQTT se ha hecho muy popular en los dispositivos electrónicos, porque: Es libre, al principio en 1999 era un protocolo propietario y se usaba para la industria petrolera, pero desde el 2010 se liberó y su consecuente popularidad que se ha convertido en un estándar de comunicación electrónica. Es sencillo, esto es importante para no pedir mucho ancho de banda Consume poca potencia, esto es importante pues la mayoría están conectados todo el tiempo. Un protocolo con una capa de seguridad, robusta y largamente testada. Para saber más te recomendamos la página de Luis Llamas https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/ Y el broker ¿de donde? Puedes montarte tu propio broker en un ordenador, pues es código abierto, por ejemplo instalar Mosquitto https://mosquitto.org/ en una raspberry. O bien usar brokers MQTT gratuitos y públicos en Internet, con sus limitaciones de anchos de banda o número de conexiones... como HIVEMQ Info: http://www.mqtt-dashboard.com/ con la dirección Broker.hivemq.com o también el propio Mosquito https://mosquitto.org/ con la dirección test.mosquitto.org Tenemos que tener en cuenta que los servidores MQTT públicos gratuitos no son seguros, cualquiera puede suscribirse a nuestros mensajes y publicar en ellos por lo tanto enviar órdenes. Evitar usar estos brokers en sistemas que no sean educativos y de pruebas. El protocolo MQTT también se usa en Domótica, por ejemplo aquí en el curso de Raspberry apartado domótica Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT - Wifi- MQTT - ADAFRUIT Esta compañía de circuitos electrónicos se hizo famosa por sus LEDS NEOPIXEL que lo vimos en el curso de mClon con nanoArduino, dedica parte de su producción a la didáctica y vamos a utilizar los servicios MQTT que ofrece gratuitamente. (Esto es típico, por ejemplo en los cursos de mBot utilizamos el software mBlock de la compañía Makeblock.) Registro Nos registramos dentro del plan gratuito de su plataforma https://io.adafruit.com/ El registro es típico, pidiendo un nombre de usuario, una contraseña y un correo electrónico para recuperar la contraseña. Utiliza un nombre de usuario lo más sencillo posible, pero a la vez original, pues se convertirá parte de la URL del resto de acciones que vas a realizar. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT-Wifi-MQTT-ADAFRUIT-FEED Vamos primero a definir las variables que vamos a utilizar, o como lo llama ADAFRUIT la "comida" FEED, en estos FEED se almacenarán las salidas de nuestro Arduino que utilizaremos el sensor de humedad y temperatura y también se almacenará la entrada para encender un led. Esto lo tenemos que interpretar según el protocolo MQTT que hemos visto, como colas de mensajes que el proveedor almacena y el cliente se suscribe. En el caso de los canales de humedad y temperatura, el proveedor será nuestro Arduino y el cliente será un dashboard que crearemos dentro de Adafruit. En el caso del led, el proveedor será el dashboard y el cliente será el Arduino. Entramos en feed, creamos un grupo que le ponemos un nombre acorde al conjunto de feeds que tendrá (esto es útil si tenemos diferentes placas o el lugar donde están esas placas: cocina, salón, ... y dentro de cada grupo los diferentes sensores y actuadores: temperatura, persianas, luz.... Una vez creado el grupo, procedemos a crear 3 feeds : hum, temp y led Como se puede ver, la URL es personalizada con el nombre de usuario, que para mi caso es https://io.adafruit.com/javierquintana/feeds (no intentes entrar, tú no verás nada, yo sí) Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT-Wifi-MQTT- ADAFRUIT-Dashboard Ahora vamos a crear un panel, para ello entramos en IO - DASHBOARD y creamos un panel Editando el Dashboard Dentro del panel podemos hacerlo público, el mio es este https://io.adafruit.com/javierquintana/dashboards/panel Y podemos crear los bloques que nosotros utilizaremos los de tipo gauge y tipo switch (marcados en la figura) Cada vez que creas un bloque, pide a qué feed lo asocias : Los bloques puedes definir que sean públicos: Bloques de los sensores de visualización (El Arduino como proveedor, el Dashboard como cliente) Vamos a crear dos bloques: Humedad tipo de bloque gauge asociado al feed hum Temperatura tipo de bloque gauge asociado al feed temp Y pondremos las propiedades de los bloques HUMEDAD Y TEMPERATURA acordes a las características de los sensores: Bloques de acción (El Arduino como cliente, el Dashboard como proveedor) Ahora vamos a crear un bloque LED AZUL tipo switch asociado al feed led Definimos en las propiedades de este bloque que vamos a enviar: Cuando está OFF vamos a enviar la palabra "apagado" Cuando esta ON vamos a enviar la palabra "encendido" Los bloques de acción si los haces públicos se pueden ver pero no se pueden tocar, para que gente no autorizada actúen sobre las placas. Por eso en https://io.adafruit.com/javierquintana/dashboards/panel NO PUEDES ACCIONARLO Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT-Wifi-MQTT-ADAFRUIT-ARDUINOBLOCKS En ARDUINOBLOCKS seleccionamos Comunicaciones -IoT.MQTT y el bloque de Iniciar ESP01 Con estos datos: Definir RX al pin D5 y TX al pin D3 a 9600 baudios como lo hemos visto anteriormente El nombre de nuestra red wifi y su contraseña El broker será el servidor de adafruit io.adafruit.com El puerto, será el 1883 tal y como hemos visto anteriormente Como cliente ID puedes poner cualquier cosa Usuario : el usuario de nombre de usuario de adafruit, que en mi caso es javierquintana La clave lo tienes aquí Así tiene que quedar: El programa buble hacemos: Creamos un buble que se ejecute cada 10 segundos, luego explicamos el por qué. Leemos el sensor de humedad y temperatura y lo almacenamos en una variable tipo numérica Hum y Temp Las variables Hum y Temp las publicamos en el tema asociado a tu usuario y a tu feed Creamos una variable texto LED-TXT Nos suscribimos al feed led y lo almacenamos en la varieble texto creada Si la variable texto tiene la palabra encendido pues encendemos el led, apagamos en caso contrario Lo grabamos en el Arduino con la placa TDR-STEAM y el ESP01 conectado como hemos definido anteriormente y si entramos en nuestro panel, veremos que visualiza la temperatura y humedad de ese momento. Si tenemos un poco de paciencia, pues sólo nos hace caso cada 10 segundos, actuamos sobre el switch y vemos que enciende o apaga el led. ¿Por qué cada 10 segundos? Si entramos en nuestro perfil contratado, el plan gratuito permite sólo 30 datos por minuto, si no tocamos el switch de encender el led, podríamos bajar esos 10 segundos a 4 segundos pues 2 gauges temperatura y humedad * (60/4) = 30 datos por minuto pero en el momento que toquemos el switch te penalizará a esperarte pues te has pasado de 30 datos por minuto. Para poder accionar sobre el switch, subimos esos 4 segundos a 10, esto nos da 2 gauges temperatura y humedad * (60/10) = 12 datos por minuto, luego podemos accionar el switch 30-12=18 veces por minuto. Puedes bajar de 10 pero cuanto más bajes, menos puedes tocar el switch, tú mismo. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU IoT-Wifi-Blynk ¿Qué es Blynk? Bliyk pertenece al mundo del Internet de las cosas IoT que has visto anteriormente. Hay dos opciones en IoT. Aquí utilizaremos Blynk para comunicarnos casi instantáneamente. Con el Rover con Arduino esto es imprescindible ¡¡no queremos que se estrelle!! con TdR STEAM no es tan imprescindible, pero si queremos interactuar con él (encender sus leds, hacer un pitido... ) con MQTT puede ser desesperante. Blynk nos posibilita la conexión de un hardware conectado a Internet: Arduino, Raspberry, NodeMCU, ESP32 ... con la APP Blynk (hay dos APPs que vermos IoT y Legacy) que puedes poner diferentes elementos de control. O sea, se necesitan tres cosas: Un dispositivo para poner la APP por ejemplo un móvil Smartphone o una tableta, la APP hay dos tipos: Blynk IoT  Blynk Legacy  El dispositivo o robot que esté preparado para conectarse por Internet IoT Hardware En el caso del Rover con Arduino es el NodeMCU En el caso de Arduinoblocks en el aula es un Arduino con el ESP01 o ESP8266  En el caso de ESP32 en el aula es un ESP32 que tiene la wifi integrada. Una conexión entre los dos En el caso de Blynk IoT lo proporciona la empresa, con un servidor remoto en Internet En el caso de Blynk Legacy lo proporcionamos nosotros con una Raspberry que hará de servidor local en nuestra red local. (en los cursos de Catedu para que no te entretengas con esto, te proporcionamos un servidor nuestro). Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Blynk legacy y Blynk IoT Antes de junio 2022 existía Blynk legacy en los servidores de Blynk Inc pero a partir de esa fecha, ha dejado de funcionar pasando a Blynk IoT (ver noticia) esto crea varios inconvenientes: VENTAJAS E INCONVENIENTES DE USAR BLYNK LEGACY Compatible con todas las placas en Arduinoblocks Muchos centros y proyectos utilizan en sus servidores locales BLYNK LEGACY por lo que ARDUINOBLOCKS mantendrá en el futuro su compatibilidad con Blynk legacy. La APP se instala en en Google Play (pero con riesgo que ya no dejen de ofertarlo) o fuera de Google Play El servidor hay dos opciones En tu centro hacer un SERVIDOR LOCAL lo más fácil es con una Raspberry, en el curso se enseña cómo hacerlo. En un servidor de CATEDU SÓLO PARA LOS CURSOS DE ROBOTICA Al utilizar BLYNK LEGACY con tu propio servidor tiene la ventaja que no tiene ninguna limitación de widgets y tienes el control de los alumnos, pero si el servidor es local, no se puede utilizar por ejemplo desde casa. VENTAJAS E INCONVENIENTES DE USAR BLYNK IoT BLYNK IoT tiene limitaciones, la mayoría de widgets son de pago pero los esenciales: switch, slider, led, label, gauge son gratuitos. Es una buena opción para que los alumnos puedan trabajar en casa con su robot, estamos a la espera que ARDUINOBLOCKS sea compatible con BLYNK IoT ACTUALMENTE SÓLO ES POSIBLE CON LA PLACA ESP32 STEAMAKER (OJO hay que tener Arduinoconnector actualizado) Ya puedes probar los bloques para el nuevo Blynk IoT @blynk_app con la placa #esp32steamakers de @Innovadidactic y @ArduinoBlocks 🤖👩‍🎓🧑‍🎓📡🌐#iot #blynk #esp32 #steamakers #steam #dashboard pic.twitter.com/kzPNkSpbAV — ArduinoBlocks (@ArduinoBlocks) November 19, 2022 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Conseguir la App BLYNK LEGACY La APP de BLYNK LEGACY no la encontramos en el buscador de Google Play de forma tradiccional, pues está sin mantenimiento, tenemos varias opciones para descargar la APP. OJO no confundir Blynk (legacy) que es el que vamos a trabajar con Bynk IoT que sí que lo encuentras en el buscador de Google Play OPCIÓN A Desde Google Play En este enlace aún tiene la APP antigua, pero es de propiedad de Blynk Inc luego no es de extrañar que desaparezca. https://play.google.com/store/apps/details?id=cc.blynk OPCION B Fuera de Google Play OPCIÓN B: ANTES DE LA INSTALACIÓN No nos tenemos que fiar de descargar APK de repositorios fuera de Google Play, luego una vez descargado, pasamos el fichero por una página de Antivirus, por ejemplo  https://www.virustotal.com/gui/home/upload No nos tiene que dar ningún virus Para instalarlo en tu móvil: Primero, tenemos que llevar el fichero .apk a tu dispositivo, recomendamos usar email, por ejemplo enviándote a ti mismo un correo electrónico y lo consultas desde el móvil. Segundo, tenemos que instalarlo y para ello hay que decirle que confiamos con apps instaladas fuera del repositorio oficial (Google Play), como depende las pantallas del modelo de tu móvil, puedes encontrar cualquier tutorial en internet cómo se hace pero prácticamente es llegar a la misma pantalla en seguridad/privacidad- permitir apps de orígenes desconocidos. Tercero instalarlo Cuarto, deshacer el segundo paso OPCIÓN B DESCARGA  Puedes buscar en un navegador esta APP, encontraras varios sitios para descargarla, por ejemplo aquí:  https://blynk.uptodown.com/android/descargar  https://blynk.en.uptodown.com/android/download/3921223 Github: https://github.com/BlynkMobile Desde este repositorio nuestro Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Servidor local Blynk Ya que Blynk Inc ha dejado sin soporte a Blynk legacy, tenemos que conseguir un SERVIDOR BLYNK LOCAL que haga de puente entre nuestro robot y nuestra App. Se puede hacer en: Una Raspberry fácil, barato y poco consumo. En un ordenador con Windows En un ordenador con Linux EL CURSO DE CATEDU FACILITA UN SERVIDOR BLYNK en Internet. ES DECIR NO ES LOCAL SI TU CENTRO ES UN CENTRO VITALINUX seguramente tendrá un servidor local. Ponte en contacto con nosotros soportecatedu@educa.aragon.es y te lo instalamos remotamente. Desventajas de usar un servidor local Nuestro equipo robot y nuestro móvil tiene que estar en la misma red local esto imposibilita que el alumno pueda trabajar en casa, necesita el servidor local. Energía y control Los alumnos tienen TODA la energía para hacer sus proyectos por lo tanto pueden usar tantos gadgets como quieran Además de tener control vía web de todos usuarios, pues tú eres el administrador. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Crear cuentas Antes se creaban cuentas en Blynk usando el correo electrónico: Cada usuario en la APP de Blynk podía crearse una cuenta, enviando un email. El servidor local Blynk puede enviar correos electrónicos si tiene configurado un fichero que se llama mail.properties y se envía el correo con las credenciales. No obstante esta opción de crear cuenta ha desaparecido de la APP (En CATEDU ya barruntábamos esto, que Blynk Inc al quitar crear nuevos usuarios es que pensaba quitar este servicio Blynk legacy). No obstante, la creación de usuarios mediante emails era un problema pues menores de 16 años no pueden tener emails ni redes sociales, ni whatsapps (¿oigo risas?). En el curso vas a utilizar los servidores de CATEDU luego tendrás asignado 12 cuentas de alumnos + un profesor Recibirás un email con los nombres de usuario y las contraseñas ¿Y fuera del curso?  En este caso necesitarás tener un servidor Blynk legacy local que tal y como lo explicamos en los siguiente capítulos, montado en una Raspberry. Entramos en la carpeta de Blynk en nuestra Raspberry, ya sea por VNC, o con una pantalla, teclado y ratón o por SSH y lo que hay que hacer es crear unos ficheros texto que se llamen emailusuario.Blynk.user los emails de los usuarios pueden ser inventados, por ejemplo en la figura puedes ver que en la raspberry hay dos usuarios user1@yo.es user2@yo.es luego los ficheros textos son user1@yo.es.Blynk.user y el otro es user2@yo.es.Blynk.user. Entrando por VNC o pantalla, teclado y ratón: Entrando por SSH El contenido por ejemplo del fichero user2@yo.es.Blynk.user es: {"name":"user2@yo.es","email":"user2@yo.es","appName":"Blynk","region":"local","ip":"ip_local_raspberry","pass":"uffzlHwvejaeZZz2PzqmKuB22OACUDRLWvKEl7RCDQI=","lastModifiedTs":1663010486621,"lastLoggedIP":"192.168.1.73","lastLoggedAt":1635057921978,"profile":{},"isFacebookUser":false,"isSuperAdmin":false,"energy":99600,"id":"user2@yo.es-Blynk"} Luego lo único que tienes que hacer para crear nuevos usuarios es crear ficheros texto que se llamen userx@yo.es.Blynk.user y con contenido igual que el anterior pero cambiando el numero 2 por x (si quieres respetar userx@yo.es pero puedes inventarte cualquier email ficticio) ¿Por qué puede ser que el contenido de  un fichero pueda tener más información o menos que otros?Porque en esos ficheros txt tiene la información de los proyectos creados por el usuario  ¿Entonces si el fichero user1@yo.es.Blynk.user tiene toda la información del usuario y todas sus proyectos... si ese usuario quiere llevarse sus proyectos a otro servidor Blynk sólo tiene que copiar y pegar es fichero texto?Respuesta : SI , así de sencillo, ese fichero texto (por lo tanto libre de virus) tiene toda la información. ¿En la APP no se almacena ningún proyecto?Ninguno, todos los proyectos están almacenados en esos ficheros txtsi no hay conexión con el servidor, en la APP no aparece NADA Vale, ya sé crear los nombres de usuarios ¿Y las contraseñas?En teoría están encriptadas en el fichero texto, como puedes ver, sale uffzlHwvejaeZZz2PzqmKuB22OACUDRLWvKEl7RCDQI= eso significa alcorisaPero tranquilo, luego veremos en el panel de control cómo se pueden poner las contraseñas sin encriptar +información aquí Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Entrando en el Blynk local: El panel de control Como entro en el panel de control En el curso de CATEDU Habrás recibido un email con la URL para entrar en la administración web del Blynk Legacy, con usuario y contraseña Fuera del curso de CATEDU usando tu servidor local Desde cualquier ordenador conectado en la misma red local que la raspberry, ejecutas en un navegador la siguiente dirección: Si la IP de la Raspberry es 192.168.1.112 entonces entramos en: https://192.168.1.112:9443/admin Vale, ya estoy ¿y ahora qué? Seguramente te saldrá la siguiente advertencia por el certificado SSL, dale a Configuración avanzada y luego a Acceder a (la IP del servidor Blynk Legacy) sitio no seguro Luego entramos con el usuario y contraseña que nos han proporcionado Cambiando las contraseñas de los alumnos Y podemos ver los usuarios creados con los ficheros textos mencionados anteriormente Entrando en un usuario PODEMOS GENERARLE UNA CONTRASEÑA, por supuesto la pones normal, sin encriptarTambién puedes borrar el usuario si no nos interesa este usuario. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU En la APP Conectar con el nuevo usuario Entramos en la APP de Blynk que hemos visto anteriormente como descargarla e instalara y entramos en Log In  Y ponemos el nombre de usuario que hemos creado anteriormente, y la contraseña, la que hayamos definido en el panel de controlIMPORTANTE: Entra en CUSTOM y pon LA DIRECCIÓN IP DEL SERVIDOR BLYNK LEGACY Si es dentro del curso de CATEDU habrás recibido un email de las IPs y de los puertos que hay que poner en esta APP de Blynk Legacy Si es fuera del curso, la IP DE LA RASPBERRY, O SEA DEL SERVIDOR LOCAL BLYNK y puerto 9443 Crear un nuevo proyecto Podemos ver los proyectos que hay ya almacenados, vamos a crear un nuevo proyecto: Nos preguntará por el DEVICE: En Arduinoblocks en el Aula, la placa es el TDR STEAM colocado en un Arduino con el ESP01 conectado, luego DEVICE Arduino Uno CONNECTION TYPE Wifi En Rover con Arduino, la placa es un NodeMCU v2, luego DEVICE NodeMCU CONNECTION TYPE Wifi En ESP32 en el Aula, la placa es un ESP32 con el Imagina TDR STEAM, luego DEVICE ESP32 DevBoard CONNECTION TYPE Wifi Empieza un nuevo proyecto, tienes un montón de energía y widgets para hacerlo: Crea un nuevo proyecto, y así se crea en el servidor Blynk local un TOKEN que ahora veremos qué es Aquí tienes la captura de un proyecto o dashboard creado para el kit Imagina TDR Steam Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Poner el TOKEN en ARDUINOBLOCKS ¿Cómo conseguir el TOKEN? OPCION A: QUE LO HAGA EL ALUMNO En la APP Es la opción más sencilla, entrar en Devices pulsar en el Token y se copiará en el portapapeles del móvil, luego ir a cualquier aplicación para poder enviarla al PC (email, whatsapp...) y pegarla en Arduinoblocks en la instrucción que luego veremos. OPCION B: QUE LO HAGA EL PROFESOR En el panel de control Entramos en el panel de control del servidor Blynk y podemos ver en los usuarios creados los tokens Entrando en un usuario PODEMOS VER SUS PROYECTOS Y LOS TOKENS RECUERDA: UN PROYECTO UN TOKEN ¿Qué se hace con ese TOKEN? Se pone en ARDUINOBLOCKS: Entramos en ArduinoBlocks y vamos al bloque de comunicaciones IoT - Blynk legacy ATENCIÓN:  ARDUINOBLOCKS CONNECTOR tiene que estar actualizado, al menos v5 (octubre 2022) Tenemos que poner los datos de la IP servidor BLYNK LOCAL, y el TOKEN del proyecto DENTRO DEL CURSO CATEDU Habrás recibido un email con las IPs y los puertos a poner en Arduinobloks SI ES EN TU SERVIDOR BLYNK LOCAL  Hay que poner la IP de la Raspberry o tu servidor local y EL PUERTO 8080 En el caso de que es un proyecto con ARDUINO o TDR-STEAM- ARDUINO con ESP01 sale : En el caso de sea un proyecto con NodeMCU o ESP32 como en el curso del Rover con Arduino o IoT en el aula sale : Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Primer programa: Encender los pines rojo y verde Vamos a ver un primer programa de la APP al TDR STEAM Una vez dentro del proyecto de la App aparece todo un panel si nada, añadimos controles apretando al + que hay en la parte superior Seleccionamos el botón Nos aparece el botón Pulsamos sobre él para entrar en sus propiedades, le decimos que vaya de 0 a 1 (es decir que cuando se apriete, que envíe un 1) que sea tipo switch (no pulsador, sino interruptor), le ponemos un color rojo para indicar que es el led rojo, y como el TDR-STEAM el led rojo lo tiene en el D12 le decimos que el pin es DIGITAL y D12 Hacemos lo mismo con el azul pero D13 En ARDUINO BLOCKS En Arduinoblocks dejamos el token tal y como hemos aprendido anteirormente ¿Nada más? Nada más !! así de sencillo. Le damos a subir (teniendo el programa Arduinoblocks conector minimizado, eso lo podemos ver enseguida pues detecta en que COM está conectado, en la figura sale COM5) Vamos a la APP de BLYNK, Pulsamos al botón de play ▶ de arriba arriba y vemos el estado NO TIENE QUE APARECER UN PUNTO ROJO si aparece es que nuestra placa no está conectada Hay que tener algo de paciencia hasta que se comunica con la Raspberry, cuando no aparece el punto rojo, pulsamos en los botones y tienen que encenderse y apagarse correctamente los leds rojo y azul de nuestro TDR Steam Para usuarios del servidor Blynk de CATEDU y la placa ARDUINO CON ESP32 WIFINo sabemos por qué pero al darle al Play, el icono de la placa de arriba sale en rojo, como si no estuviera conectado, pero el proyecto funciona perfectamente. Si sabes por qué por favor ponte en contacto con nosotros https://catedu.es/informacion/ Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Segundo programa RGB y el potenciómetro LED RGB En la APP de Blynk ponemos el gadget "Cebra" Y lo configuramos según sus pines. El led RGB en el TDR Steam está conectado a los siguientes pines Red D6 Green D9 Blue D10 Potenciómetro El potenciómetro está conectado en A0 podemos insertar un gadget Label y lo configuramos como tal: ¿En Arduinoblocks no hay que añadir nada?Nada !!! cuando son gadgets que leen directamente de los pines (digitales o analógicos) NO HACE FALTA MÁS CÓDIGO que el de conectar el servidor Blynk Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Tercer programa Medir la luz del LDR Nuestro segundo programa será al revés del TDR Steam a la APP Ahora añadimos otro control level H Elegimos de PIN el analógico,  el LDR está conectado al pin analógico A1 y como el LDR aumenta según la oscuridad vamos a poner que vaya de 1023 en formato negro. Sin modificar nada del programa de ARDUINOBLOCKS vamos a darle al PLAY y ¡¡ Y FUNCIONA !!! Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Cuarto programa: Medir Temperatura y Humedad con el DHT11 Este caso es distinto, pues En el Rover marciano con Arduino el DHT22 está conectado al pin D5 digital del NodeMCU En el Arduinobloks en el aula, el DHT11 de la placa Imagina TDR Steam está conectado al pin D4 digital del Arduino En el IoT en el Aula  el DHT11 de la placa Imagina TDR Steam está conectado al pin D4 digital del ESP32 Pero los dos miden dos variables Temperatura Y Humedad 🤔😳¿Cómo hacemos para medir dos variables en un sensor que está conectado a un sólo PIN?🤔😳 Solución PINES VIRTUALES: si, has leído bien, vamos a utilizar pines virtuales. En ARDUINOBLOCKS Vamos a ARDUINOBLOCKS y establecemos dos pines virtuales, uno para la temperatura y otro para la humedad, arbitrariamente he puesto V2 y V3 pero puede ser cualquiera. Para el kit de ROVER MARCIANO CON ARDUINO poner pin D5  Si el sensor es AZUL entonces DHT11 si el sensor es BLANCO entonces DHT22 Para el kit que tenga la placa TDR STEAM IMAGINA  es decir los cursos ARDUINO BLOCKS EN EL AULA y ESP32 EN EL AULA poner pin D4  Si el sensor es AZUL entonces DHT11 si el sensor es BLANCO entonces DHT22 Fíjate que hay dos maneras de programar estos eventos:- en el primero, utilizamos un bucle propio de Blynk que simplemente cada segundo lee el sensor y los almacenan los pines virtuales V2 y V3- en el segundo no se ha utilizado ese bucle propio de Blynk sino simplemente dentro de Bucle hemos puesto otro bucle que se ejecuta cada 2 segundos, y dentro una funciona que se llama LECTURAS. dentro de lecturas esta la lectura de los pines virtuales V2 y V3Da igual. Nosotros tenemos preferencia por el segundo método, nos parece más elegante y más controlable. En la APP de Blynk Y en Blynk incorporamos un Gauge que sea al PIN VIRTUAL V2. Modificamos también los límites, pues por defecto sale 0 a 1023 y se vería muy bajo la temperatura, ponemos -10 a 30. Si es para el Rover marciano de Arduino, allí se puede llegar a -50ºC y si es para el TDR Steam será en Aragón, el récord lo tiene Fuentes Claras con -30ºC. Para la humedad hacemos lo mismo: Pin virtual V3 Límites 0% a 100% Resultado : Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Quinto programa: Lectura sensor LM35 y receptor infrarrojos Podríamos hacer una lectura de estos sensores, sin necesidad de tratamiento ninguno, tal y como hemos hecho en la lectura de la luz con LDR, simplemente se añade un gadget a la APP de Blynk que : Lea el pin D11 que es donde está el sensor de infrarrojos Lea el pin A2 que es donde está el sensor de temperaturas LM35 Los resultados serían totalmente incorrectos !!! El sensor de infrarrojos lanza un código que al leerlo el pin D11 en la APP aparecería encendidos y apagados sin poder leer qué código es lo que dice En el sensor de temperaturas, es un sensor conectado al A2 por lo que en la APP mediría desde 0 hasta 1023, y esto no sólo habría que mapearlo a temperaturas, sino tratarlo correctamente pues el LM35 da lecturas de dos decimales. En Arduinoblocks tenemos dos bloques específicos para tratar estas lecturas, las llevamos a pines virtuales y que los gadgets de la APP visualicen los valores de estos pines virtuales. Otro uso de los pines virtuales. En Arduinobloks Ponemos dentro de la función LECTURAS los siguientes dos bloques : Como vemos, Arduinoblocks procesa la lectura de estos dos sensores, y simplemente se almacenan en los pines virtuales V7 y V8 En la APP de Blynk Ponemos para la lectura de la temperatura, un display que visualice el número V7 Para el sensor de infrarrojos igual pero que visualice V8 Lo subimos el programa Arduinoblocks al Arduino TDR Steam, pulsamos el play en la APP, esperamos a que se conecte y el sensor de temperatura muestra su valor perfectamente Curiosamente dan unas lecturas algo diferentes el DHT11 y el LM35, el correcto es el LM35 pues el DHT11 no es un sensor muy preciso. Para ver los códigos que se leen en Infrarrojos, hay que pulsar los números del mando a distancia. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Sexto programa Leer eventos del TDR Steam Hasta ahora hemos enviado eventos al TDR Steam, y leer sensores del TDR Steam pero .... ¿y leer un evento? por ejemplo leer si se pulsa los pulsadores D2 y D7 En la APP de Blynk Añadimos un gadget que se llama LED y leerá de un pin virtual pin V4 y otro gadget para V5 En ARDUINOBLOCKS Pondremos el siguiente código, simplemente lee que si se pulsa pues que encienda el led en el APP Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Séptimo programa: El timbre El timbre es algo especial, si ponemos una música, el Arduino está tan ocupado y el código engorda que da muchas desconexiones, si es el ESP32 lo aguanta bien. En la APP ponemos un slider asociado a un pin virtual, por ejemplo a V9 Y en Arduinoblocks añadimos un bucle que lea ese pin virtual V9 y que lo almacene en una variable numérica, que lo hemos llamado timbre Si esta variable, ha cambiado el valor, que haga un tono. si te fijas el valor máximo del slider se ha puesto a 2000, el máximo tono audible es 20.000, pero el slider no lo permite, por lo tanto, el truco es multiplicarlo por 10 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU ¿Todo junto? Si que se puede pero con la placa Arduino alguna vez se desconecta, pues no tiene un microprocesador muy potente. Con ESP32 sí que lo aguanta bien. En la APP el dashboard o proyecto queda: Y en ARDUINOBLOCKS Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU CÓMO MONTAR UN SERVIDOR BLYNK LEGACY LOCAL OJO ESTO NO TIENES QUE HACERLO Este apartado es para tu conocimiento NO LO TIENES QUE HACER, sólo para que sepas como CATEDU ha montado el servidor en la RASPBERY por si te interesa seguir los mismos pasos Como CATEDU ya te proporciona un servidor Blynk legacy NO ES NECESARIO PARA EL CURSO Pero fuera del curso de Catedu, tienes que hacerlo. Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Qué hay que hacer para empezar Lo primero que tenemos que conseguir es: Tener una Raspberry con el sistema operativo propio de la raspberry instalado, antes se llamaba Raspbian, ahora Raspberry Pi OS Comunicarnos con la Raspberry por comandos SSH Una vez hecho esto que es lo básico instalaremos el servidor Blynk Ahora vamos a ver unas páginas para Instalar un sistema operativo en una Raspberry Una vez instalado hay que conectarlo a la red wifi y ponerle una IP FIJA Para comunicarse vía comandos SSH, aconsejamos hacerlo de forma remota, pues lo contrario implica tener siempre una pantalla, teclado y ratón conectado en la Rasperry ¿Qué Rasberry habría que comprar?Aconsejamos una que tenga la Wi-fi incorporada, nosotros hemos hecho pruebas con la Raspberry Pi 3B+ y con la Raspberry Pi4 y no encontramos diferencias de velocidad para estos propósitos de robótica, luego por la mitad de precio aconsejamos la Raspberry Pi 3B   Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Rasbperry: Poner un Sistema Operativo ¿Es el único sistema operativo que se puede instalar? No, podemos instalar otros sistemas operativos en nuestra Raspbery (evidentemente uno sólo cada vez, poner dos a la vez en la rasp sería forzarlo demasiado). Por ejemplo: Podemos instalar un Linux-Ubuntu ligero pero que se puede usar en una aula de informática (ver libro del curso de Aularagon Monta tu aula de informática con Raspberry). Si no podemos vivir sin Windows, hay un Windows 10 especial gratis (sí has leído bien, los de Microsoft van entendiendo eso de si no puedes con ellos únete a ellos, pero no te hagas ilusiones, sólo vale para la Raspberry y no esperes una máquina que sustituya a tu PC va lentísimo). Sistemas operativos para aplicaciones concretas: Video juegos: Recalbox. Dómótica y control Home Assitant Nuestro sistema operativo de este curso (y el mejor que "rula en la Rasp") pues está adaptado a la arquitectura ARM de la Raspberry es RASPBIAN o actualmente lo llaman RASPBERRY PI OS Hay dos opciones, elige la que quieras (nuestra preferida es la A): Opción A Instalar el sistema operativo en la tarjeta sin NOOBS Con esta opción no tienes que encender la Rasbperry. Opción B Instalar la Raspbian en la tarjeta con NOOBS Con esta opción SI que tienes que encender la Rasbperry con pantalla, teclado y ratón Esto es válido para cualquier ordenador: Descargar la ISO de un Sistema Operativo, grabarlo en un pincho de forma autoarrancable, pero por curiosidad, no es tan fácil como en la RASPBERRYSe añade esta presentación como curiosidad: Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Conectarlo a la red Opción A La Raspberry con pantalla, teclado y ratón Esta es más fácil, pero tienes que encender la Raspberry con teclado, pantalla y ratón: Opción B La Raspberry sin pantalla, teclado y ratón Con esta opción es más difícil, pero no tienes que encender la Rasbperry para la configuración, sólo manipular los ficheros de la tarjeta micro SD. Texto que hay que poner en interfaces auto wlan0 iface wlan0 inet static address 192.168.1.xxx gateway 192.168.1.1 netmask 255.255.255.0 wpa-ssid el_nombre_tu_red_wifi wpa-psk la_contraseña_de_tu_wifi dns-nameservers 8.8.8.8 188.244.82.1 Texto que hay que poner en wpa_supplicant.conf # /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="nombre de tu router o SSID" psk="tu contraseña del wi-fi" key_mgmt=WPA-PSK } Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspbery: Conexión SSH Controlar Raspberry pi de forma remota y de forma textual es muy rápido y eficaz, sobre todo para la robótica con AlphaBot. SSH (Secure Shell) según Wikipedia es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder servidores privados a través de una puerta trasera. Te recomiendo visitar esta página de Luis Llamas. Recuerda que lo que hemos hecho es: Hemos conectado la Raspberry a la Wifi Hemos activado el protocolo SSH y VNC en la raspberry Hemos fijado una IP y la sabemos para poder acceder a él. Ya podemos trabajar por SSH con la Raspberry, no nos hace falta que conectemos la raspberry a una pantalla, teclado, etc.... YA PODEMOS ENCENDER LA RASPBERRY si has elegidos las opciones A de 3.-Raspbian y 4.-Conectando aún no habrás encendido la Raspberry. Si trabajas con Windows No lo tiene nativo, tenemos que instalar Putty Y rellenamos los campos de la IP (la que hayas determinado, en la imagen es 192.168.1.111), puerto y el protocolo SSH, es recomendable grabar la sesión para tenerlo en futuras entradas. Se abre una ventana pidiendo el usuario pi y contraseña por defecto rasbperry Si trabajas con Linux Linux tiene de forma nativa el protocolo SSH, lo activamos en el icono en negro que es el Terminal: Supongamos que la IP fija que le hemos asignado a la Rasbperry la IP 192.168.1.131 Tecleamos ssh pi@192.168.1.131 Te pide usuario y contraseña, por defecto es usuario pi y la contreseña raspberry, la tecleas no la puedes ver, te tiene que salir algo así en la pantalla: Cuando te sale pi@raspberrypi: es que ya está preparado para recibir órdenes cat@cat-Aspire-E5-571 ~ $ ssh pi@192.168.1.131 pi@192.168.1.131's password: Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Mar 23 18:03:09 2018 from 192.168.1.131 pi@raspberrypi:~ $ Nota por si te pasa Si después de un intento fallido, o realizar la conexión con otra computadora.... te sale este error al intentar conectarte por ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host isPlease contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:1 RSA host key for ras.mydomain.com has changed and you have >requested strict checking. Host key verification failed. Entonces antes de intentar conectarte por ssh, hay que obligar a la Raspberry que reinicie las claves de conexión de ssh, ejecuta esta orden : Supongamos que la IP fija que le hemos asignado a la Rasbperry en el punto 4 es 192.168.1.131 Tecleamos ssh-keygen -R 192.168.1.131 Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Cambiar usuario y contraseña El usuario por defecto es pi y su contraseña es raspberry pero lo podemos cambiar perfectamente Opción A remota con SSH Entramos por SSH como hemos aprendido, y tecleamos sudo passwd pi y nos pide enseguida la contraseña, la tenemos que insertar dos veces no se puede ver. Opción B local por pantalla Entramos por VNC o conectamos una pantalla, teclado y ratón a la raspberry y en Preferencias- RaspberryPi configuration Y entramos en System Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Apagar Apagar de forma caliente (es decir simplemente quitando de la fuente de alimentación la corriente) daña al sistema operativo Rasbpian dejando ficheros corruptos. 7.1 Opción de forma remota con SSH Muy fácil, teclea sudo poweroff 7.2 Opción local de forma gráfica Igual que en otros sistemas operativos Windows o Linux tenemos que apagar desde el menú Shutdown Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: VNC VNC es un programa que nos permite la conexión remota con los servidores pero de forma gráfica. Es el sistema elegido por RASPBIAN pues ya lo tiene incorporado, pero no activado. Hay que tener claro que son dos programas: * VNC SERVER que es el programa que se ejecuta en la RASPBERRY y que aunque viene instalado, hay que activarlo. Es el programa que lanza el escritorio para que lo lea: * VNC VIEWER es el programa que tenemos que tener en nuestro ordenador para ver lo que lanza VNC SERVER. En la imagen podemos ver un pantallazo de mi ordenador, el escritorio negro es mi escritorio y el de la careterra es el de la Raspberry: Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Instalar Java 8 Una vez que tenemos la Raspberry funcionando y accesible por SSH o por VNC es el momento de instalar el servidor Blynk, primero hay que, para instalar Blynk, se necesita la versión 8 de Java Seguimos las instrucciones de https://github.com/Peterkn2001/blynk-server#blynk-server Entramos en la ventana de comandos SSH y ejecutamos las siguientes órdenes, si en algún momento nos pide confirmación [Y/n] es porque faltan descargar paquetes o confirmación de instalación, por lo tanto aceptamos. Con esta orden busca las actualizaciones sudo update y ya ejecutamosque instala la versión 8 de java (curiosamente no funciona con la versión 64 bits de Raspberry OS sino con la de 32 bits) sudo apt install openjdk-8-jdk Por último una vez finalizado, comprobamos la versión que coge por defecto java –version Tiene que salir Openjdk version 1.8.0 etc... Si no sale esa versión... Suele pasar que tenga ya instalado la versión 11, tenemos que obligar a que sea la 8 por defecto, para ello ejecutamos sudo update-alternatives --config java Si seleccionamos el 2 nos lo pondrá como por defecto (sale con un (*). Podemos comprobar que ya nos sale la versión con la orden : java –version Pero esto no nos sirve, pues al reiniciar la Raspberry volverá a la versión 11. Para ponerlo por defecto, edita el fichero environment sudo nano /etc/environment Y si en la orden sudo update-alternatives --config java salía que la carpeta donde está la versión 8 es /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java luego tenemos que poner en el fichero environment : JAVA_HOME="/usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java" Guardar, reiniciar sudo reboot Y comprueba java –version Y tiene que salir : Para más cosas Por ejemplo, desinstalarlo, volver a la 11, etc.. visitar esta página : https://phoenixnap.com/kb/install-java-raspberry-pi Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU Raspberry: Instalar y ejecutar el servidor Blynk local 1 Descarga Blynk Crea una carpeta en tu directorio home, por ejemplo Blynk mkdir Blynk Y descarga Blynk :   wget "https://github.com/Peterkn2001/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar" El enlace https://github.com/Peterkn2001/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar conviene actualizarlo, recomendamos visitar la página https://github.com/Peterkn2001/blynk-server#blynk-server y coger la última versión de aquí 2 Configurar server.properties Necesitamos crear un fichero de configuración para las diferentes opciones que queremos en nuestro servidor Blynk. Entra en la carpeta creada Blynk y crea el fichero server.properties. cd Blynk sudo nano server.properties A continuación se muestra un posible contenido de server.properties. initial.energy=1000000 allow.reading.widget.without.active.app=false user.message.quota.limit=100 logs.folder=./logs user.dashboard.max.limit=100 lcd.strings.pool.size=6 server.ssl.key=./server_embedded.key webhooks.response.size.limit=96 hardware.mqtt.port=8440 table.rows.pool.size=100 terminal.strings.pool.size=25 admin.email=admin@blynk.cc admin.rootPath=/admin user.widget.max.size.limit=20 listen.address= blocking.processor.thread.pool.limit=6 stats.print.worker.period=60000 enable.db=false force.port.80.for.csv=false enable.raw.db.data.store=true restore.host=blynk-cloud.com csv.export.data.points.max=43200 restore=false user.profile.max.size=256 allow.store.ip=true allowed.administrator.ips=0.0.0.0/0,::/0 net.interface=eth webhooks.frequency.user.quota.limit=1000 http.port=8080 web.request.max.size=524288 user.devices.limit=50 async.logger.ring.buffer.size=2048 user.tags.limit=100 server.ssl.key.pass= admin.pass=admin hard.socket.idle.timeout=10 product.name=Blynk data.folder=/Path map.strings.pool.size=25 profile.save.worker.period=60000 https.port=9443 log.level=info server.ssl.cert=./server_embedded.crt force.port.80.for.redirect=true notifications.queue.limit=2000 notifications.frequency.user.quota.limit=5 server.host=192.168.137.1 app.ssl.port=8443 hardware.default.port=8442 hardware.ssl.port=8441 hardware.mqtt.port=8440 Para la explicación de cada línea, aconsejo consultar esta página en el apartado Configuración avanzada del servidor local 3 Ejecutar el servidor Blynk local En la Raspberry por comandos SSH, entramos en la carpeta donde hemos creado el servidor Blynk cd Blynk Y ejecutamos el servidor Blynk instalado, pero que cargue la configuración de server.properties que en nuestro caso como el la Raspberry el usuario se llama catedu la carpeta es catedu: java -jar server-0.41.16-java8.jar -dataFolder /home/catedu/Blynk -serverConfig /home/catedu/Blynk/server.properties Curiosamente la primera vez que ejecutas esta instrucción te sale los datos del usuario admin@blynk.cc y su contraseña sin encriptar que por defecto es admin. Si no has tomado nota, ejecutar la instrucción anterior no sirve de nada pues ya ha creado el fichero texto de este usuario.  La única forma de que te vuelva a mostrar la contraseña es borrar el fichero texto y ejecutar otra vez la orden java -jar server....  4 Que la orden de ejecución se haga automáticamente cada vez que se reinicie la Raspberry Para no repetir estos dos comandos cd Blynk y java -jar server-0.41.16-java8.jar -dataFolder /home/catedu/Blynk -serverConfig /home/catedu/Blynk/server.properties cada vez qye reiniciamos la Raspberry puedes generar un script para que lo ejecute automáticamente, puedes ver buenos tutoriales en Internet. En internet puedes ver varios métodos: Método1 es entrar en /etc y editar el fichero rc.local y añadir esta línea java -jar server-0.41.16-java8.jar -dataFolder /home/catedu/Blynk -serverConfig /home/catedu/Blynk/server.properties & Método 2 usar el comando crontab -e y poner al final la siguiente línea @reboot java java -jar server-0.41.16-java8.jar -dataFolder /home/catedu/Blynk -serverConfig /home/catedu/Blynk/server.properties 5 Probarlo Si la IP de la Raspberry es 192.168.1.112 entonces entramos en: https://192.168.1.112:9443/admin Vale, ya estoy ¿y ahora qué? Seguramente te saldrá la siguiente advertencia por el certificado SSL, dale a Configuración avanzada y luego a Acceder a (la IP del servidor Blynk Legacy) sitio no seguro   Si quieres generar certificados SSL propios para que no salga la anterior pantalla consulta aquí Tienes que entrar con el usuario y contraseña fijada en server.properties : # Default admin name and password. Will be created on initial server start admin.email=admin@blynk.cc admin.pass=admin Si quieres cambiar la contraseña, tienes que hacerlo como un usuario normal en la página de administración tal y como hemos visto en el capítulo Entrando en el Blynk local: El panel de control 6 Para saber más : https://github.com/Peterkn2001/blynk-server#blynk-server Intalación de Blynk : How to Install a Blynk Local Server on Raspberry Pi Configuración de server.properties. 7 Para saber más : Configurar mail.properties Este aparatado ya comentamos que no lo aconsejamos, pues los alumnos no suelen tener email y la APP ya no permite crear usuarios con email, pero si queremos que envíe los tokens por email, hay que crear este fichero para que el servidor envíe por email los tokens de los proyectos Entra en la carpeta creada Blynk y crea el fichero mail.properties. cd Blynk sudo nano mail.properties A continuación se muestra una muestra del posible contenido de mail.properties : mail.smtp.auth=true mail.smtp.starttls.enable=true mail.smtp.host=smtp.gmail.com mail.smtp.port=587 mail.smtp.username=Your EMAIL ID mail.smtp.password=Password Utilizando Your EMAIL ID y Password los datos de una cuenta de gmail tuya. En esa cuenta tienes que permitir accesos no seguros. Aquí se muestra dónde está en la pantalla de configuración de Gmail : Para saber más  Configuración mail Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU En Windows Instalar Java 11 Entramos en la web de Oracle - Java - Technologies - JavaSE y descargamos e instalamos el servidor Java 11, si nuestro ordenador no es viejo, seguro que soportará la versión 64 https://www.oracle.com/es/java/technologies/javase/jdk11-archive-downloads.html Seguramente para la descarga Oracle nos pide que nos registremos. No entendemos el por qué pero efectivamente es necesario proporcionar un email y a ese email envía un enlace para el registro, Una vez registrado ya permite la descarga Instalamos el servidor Java descargado. Para que Windows encuentre la ruta del Java instalado cuando ejecutemos comandos, le tenemos que decir en qué camino está la carpeta del java instalado está. Para ello vamos a C -> Archivos de programa -> Java -> Jdk11...-> carpeta bin  y copiamos la ruta : Nos vamos al sistema Y configuración avanzada del sistema - variables de entorno- path - editar - nueva y pegamos la ruta que hemos copiado anteriormente Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU En Windows Instalar Blynk local Descargamos el servidor Blynk server desde https://github.com/blynkkk/blynk-server/releases o desde https://drive.google.com/file/d/1nPZxn-9Q9q0ceUhCiZGd4WRC1c8pufEQ/view?usp=sharing y lo pegamos en una carpeta, por ejemplo en c:\Blynk_server Creamos mail.properties y server.properties como ficheros nuevos, los editamos con un procesador de texto y pegamos el código que hemos explicado aquí  Ojo: Ten en cuenta que Windows le gusta colocar sus propias extensiones. Si editas un fichero con un procesador de textos, por ejemplo el bloc de notas, le añadirá .txt, si lo editas con Word le añadirá la extensión .docx, tienes que asegurarte que no se añada ninguna extensión, que los nombres de los ficheros sean mail.properties y server.properties y no otros. Ten activo la visualización de las extensiones para asegurarte que windows no añada las suyas Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU En Windows Ejecutar Blynkserver Entramos en comandos de windows como administrador Y ejecutamos esta instrucción java -jar server-0.41.17.jar -dataFolder /Path de esta manera se crean las carpetas logs y static que nos dicen los errores que podemos encontrar La primera pantalla nos dirá el nombre la url, el nombre de usuario y la contraseña para entrar en el servidor blynk Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU En Linux Seguimos las instrucciones de https://github.com/Peterkn2001/blynk-server#blynk-server Pero si tu centro tiene Vitalinux, ponte en contacto con nosotros soportecatedu@educa.aragon.es para instalar en un ordenador Vitalinux el servidor Blynk de forma local Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU TAREA A ENTREGAR Muro Créditos