# Domotica Con Arduino

Utilizaremos las posibilidades del Arduino para crear esta maqueta de domótica. La programación será de dos maneras: Gráfica con bloques para primaria. Textual por código para secundaria. Contenidos …

# Introducción

Utilizaremos las posibilidades del **Arduino** para crear esta maqueta de domótica. La programación será de dos maneras:

- **Gráfica** con bloques para primaria.
- **Código** para secundaria.

<p class="callout danger">**Elige la opción que quieras, las dos son válidas**</p>

## <span style="color:rgb(22,145,121);">**Conocimientos previos**</span>

Para la parte de programación en bloques, **ES NECESARIO QUE SEPAS LOS CONCEPTOS BÁSICOS DE SCRATCH**: [Scratch](https://libros.catedu.es/books/ensena-pensamiento-computacional-con-scratch)

Para la parte de programación en código **ES NECESARIO QUE SEPAS LOS COMANDOS BÁSICOS DE : [Código Arduino](https://libros.catedu.es/books/programa-arduino-mediante-codigo)**[.](https://libros.catedu.es/books/programa-arduino-mediante-codigo)

No obstante, si no lo tienes reciente, te recordaremos lo esencial.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-72angdwy.jpeg)

[Vector de fondo creado por macrovector - www.freepik.es](https://www.freepik.es/fotos-vectores-gratis/fondo)

# Pensamiento computacional

Como se puede ver en esta hoja de ruta, esta propuesta de **DOMOTICA CON ARUINO** es una propuesta barata, y muy flexible pues se puede trabajar con lenguaje gráfico como con código

Guía orientativa

<iframe height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vQHiZvv1cGHet7eXVy-QcECY4Lj0k0l7ntDi8MevRWHQX-9myA0bfR5IofMeuGZkWD0Hw-Ob-MGoco_/embed?start=true&loop=true&delayms=3000" style="border:0;" width="960"></iframe>

<p class="callout success">Tenemos un **grupo Telegram Robótica Educativa en Aragón**, [https://t.me/roboticaeducativaaragon](https://t.me/roboticaeducativaaragon)</p>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7qvnrzdh.jpeg)

# Robótica y accesibilidad

#### **<span style="color:#169179;">1.- Introducción</span>**

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

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

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

**[![opensource.png](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/opensource.png)](https://libros.catedu.es/uploads/images/gallery/2022-12/opensource.png)**

<details id="bkmrk-software-libre-cuand"><summary>Software libre</summary>

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](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 ](https://youtu.be/nlDVZ816zoI)para entender mejor el concepto.

<iframe height="314" src="https://www.youtube.com/embed/nlDVZ816zoI" width="560"></iframe>

</details>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.

#### **<span style="color:#169179;">2.- ARDUINO o LA ROBÓTICA ACCESIBLE</span>**

Arduino es una **plataforma de hardware y software libre**.

<details id="bkmrk-hardware-libre-esto-"><summary>Hardware libre</summary>

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<span style="font-size:13.5pt;font-family:sans-serif;"> </span>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.

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

[![arduinosecundaria.png](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/arduinosecundaria.png)](https://libros.catedu.es/uploads/images/gallery/2022-12/arduinosecundaria.png)

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

A este respecto, recomendamos la lectura de [este interesante blog](https://dgafprofesorado.catedu.es/2019/09/25/robotiqueamos-experiencia-de-aproximacion-a-la-robotica-en-educacion-especial-cpee-angel-riviere/), 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](http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA)

[![blogRobotiqueamos.jpg](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/blogrobotiqueamos.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-12/blogrobotiqueamos.jpg)

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

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

<details id="bkmrk-filosof%C3%ADa-del-arduin"><summary>Filosofía del Arduino ver vídeo</summary>

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

<span style="font-weight:400;">Para entender bien la filosofía de Arduino y el hardware libre, os recomendamos este documental de 30 minutos.[ Arduino the Documentary](http://www.vimeo.com/18390711)</span>

<iframe height="360" src="https://player.vimeo.com/video/18390711?h=b5844e7753" style="border:0;" width="640"></iframe>

</details><details id="bkmrk-scratch%3A-software-li"><summary>Scratch: software libre para el desarrollo del pensamiento computacional</summary>

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

</details>#### **<span style="color:#169179;">3. BBC micro:bit y la Teoría del Cambio</span>**

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

[![e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp)](https://libros.catedu.es/uploads/images/gallery/2023-03/e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp)*Tarjeta BBC micro:bit V1. Fuente: [https://microbit.org](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](https://archive.microbit.org/es/about/). La fundación basa sus actuaciones en su Teoría del Cambio,

<details id="bkmrk-teor%C3%ADa-del-cambio-y-"><summary>Teoría del cambio y más sobre microbit</summary>

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.

<p class="callout info">Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo.</p>

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](https://makecode.microbit.org/).

[![MakeCode.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/makecode.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/makecode.png)*Captura de pantalla del editor MakeCode, [https://makecode.microbit.org/#](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](https://python.microbit.org/v/3), creada por Python Software Foundation, otra organización sin ánimo de lucro.

[MicroCode](https://microsoft.github.io/microcode/#H4sIACVEGGQAAwEAAP//AAAAAAAAAAA=) 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.

</details><details id="bkmrk-versiones-y-caracter"><summary>Versiones y características de micro:bit</summary>

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.

</details>#### **<span style="color:#169179;">4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN</span>**

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:

<details id="bkmrk-valores-gnu-%C2%A0compart"><summary>Valores GNU</summary>

##### <span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"> </span></span></span>**Compartir**

<span style="font-family:OpenSymbol;"><span> </span></span>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**

<span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"> </span></span></span>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<span> </span>que toma decisiones unilaterales que nadie más puede cambiar.

##### **Independencia**

<span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"> </span></span></span>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**

<span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"><span style="font-family:OpenSymbol;"> </span></span><span style="font:7pt 'Times New Roman';"> </span></span></span>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**

<span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"><span style="font-family:OpenSymbol;"> </span></span><span style="font:7pt 'Times New Roman';"> </span></span></span>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**

<span style="font-family:OpenSymbol;"><span><span style="font:7pt 'Times New Roman';"><span style="font-family:OpenSymbol;"> </span></span><span style="font:7pt 'Times New Roman';"> </span></span></span>Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación.

</details><details id="bkmrk-etiqueta-en-los-a%C3%B1os"><summary>Para saber más</summary>

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:

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

</details>

# 1. Fundamentos Domótica con Arduino

# ¿Qué es la Domótica con Arduino?

Como este curso se ofrece realizar las prácticas en lenguaje gráfico o en lenguaje por bloques. Se puede utilizar tanto en primaria como en secundaria incluso bachillerato.

## <span style="color: rgb(22, 145, 121);">**¿Cuál es el objetivo?**</span>

Nuestra propuesta es utilizar el Arduino con módulos adaptados que permitan recrear una casa inteligente y utilizando las dos posibilidades.

Mira el siguiente vídeo para que veas qué es lo que se va a hacer en este curso:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--4" src="//www.youtube.com/embed/-6dxwYZUgFQ" width="560"></iframe>

## <span style="color: rgb(22, 145, 121);">**¿El objetivo es crear la casa?**</span>

**No**, el objetivo es aprender las diferentes posibilidades que tiene el Arduino utilizando módulos de bajo coste. La casa domótica es la excusa para llegar a este objetivo.

Luego puedes utilizar estos mismos materiales para hacer muchas cosas diferentes, por ejemplo:

- Con el sensor de humedad y el servo puedes hacer [un riega macetas](https://youtu.be/xm27jGEysfI)
- Con el sensor de ultrasonidos y el buzzer puedes hacer un [piano invisible](https://catedu.github.io/ensena-pensamiento-computacional-con-arduino/piano_invisible_con_ultrasonidos.html)
- Con el LDR y el láser puedes hacer [otro tipo de alarma con piezas de lego](https://catedu.github.io/programa-arduino-con-echidna/5_extensiones/53-laser.html)
- Con el sensor de ultrasonidos y el led RGB puedes hacer un [semáforo-distancia](https://catedu.github.io/programa-arduino-con-echidna/5_extensiones/54-ultrasonidos.html)
- Con el sensor de ultrasonidos, el servo y el diodo RGB puedes hacer un [*tractor entrando en el corral*](https://catedu.github.io/programa-arduino-con-echidna/5_extensiones/56-tractor-entrando-al-corral.html)
- Más opciones, o si encuentras alguno, lo puedes colgar tú mismo en el [muro que te proponemos](https://libros.catedu.es/43-muro.md).

## <span style="color: rgb(22, 145, 121);">**¿Tengo que montarlo todo?**</span>

**No, no..** es flexible: si te asusta tanto cable, puedes ir haciendo los retos por separado, desmontando los anteriores y así queda más limpia la maqueta.

Pero ánimo, no seas un gallina !!

<iframe allowfullscreen="allowfullscreen" class="giphy-embed" frameborder="0" height="337" id="bkmrk--5" src="https://giphy.com/embed/xjUGCnG53aCBbfokdS" width="480"></iframe>

[via GIPHY](https://giphy.com/gifs/maker-gallina-xjUGCnG53aCBbfokdS)

## <span style="color: rgb(22, 145, 121);">**¿Tengo que montar la maqueta?**</span>

**Tampoco** es necesario, de hecho, en el módulo 2 Programación en bloques las fotos y vídeos son sin montar la casa domótica,   
La maqueta es fácil de hacerla, con dos cartones. Tú mismo.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0hf4d4te.jpeg)

En el módulo 3 con código se explica cómo montar la maqueta, y los vídeos y fotos son con la casa domótica.

## <span style="color: rgb(22, 145, 121);">**¿Qué es eso de una Shield?**</span>

Una Shield , dicho pronto y mal pero claro : **es una placa electrónica para reducir la electrónica**, echa un vistazo si quieres [a esta shield: Echidna](https://libros.catedu.es/books/echidna/page/que-es-echidna).

##### <span style="color: rgb(22, 145, 121);">**Sin Shield :**</span>

![Autor: spencer](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-q7ly1lsm.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Con Shield :**</span>

Realmente utilizaremos una pequeña Shield, (no sé si realmente llamarla así, pues no tiene electrónica integrada) y es una pequeña placa Protoboard, pero perfectamente puedes utilizar una placa Protoboard normal sin esta Shield.

La utilizamos por cuestión de ahorro de espacio.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lcgykyxd.jpeg)

# Conocer Arduino

{{@2936}}

# Hardware de Arduino

{{@2937}}

# Software de Arduino

{{@7552}}

# Sensores

{{@7009}}

# Actuadores y otras salidas

{{@11506}}

# Kit de préstamo de CATEDU

Nuestra propuesta es utilizar componentes electrónicos que se pueden adquirir en muchas tiendas de electrónica, incluso online, no es necesario ir a los gigantes Amazon o AliExpress, las tiendas electrónicas españolas ofrecen venta online con mejores precios y servicios que los anteriores.

Nuestra propuesta cuesta alrededor de 30€ y sinceramente es muy completo y más barato frente a otros packs de domótica que ofrecen otras empresas. Los kits que se venden son bastante caros, y es mejor comprar los componentes por separado [ver opinión de Luis Llamas](https://www.luisllamas.es/kit-de-iniciacion-barato-para-empezar-en-arduino/)

<iframe id="bkmrk--3" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSY-jpciZJHgxnG8k22S6__EBUiRZPvE3zM_3qmO4-UVfRlO8p6SE77CDhnMTwkX3wDQ1O7CoaMs9Cz/pubhtml?widget=true&headers=false"></iframe>

Aunque para empezar puedes hacerlo con este kit de iniciación, por unos 20€, y luego ir ampliando:

<iframe id="bkmrk--4" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vRDFFr4WBUFjn9DpX7gt2Acja_OVNIB1PECFAVL3e05aCuQmBKofhtkpGtbxn5rK5VnoGkaGQvSlO5c/pubhtml?widget=true&headers=false"></iframe>

La descripción de cada componente lo tienes aquí:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--5" src="https://docs.google.com/presentation/d/e/2PACX-1vQ-7pY6BW0pltkIZkoov3Cv5LBAZ1dCgRb7r65_tC0CdvHTOhWjQgtv8awlEGuSyWzWLA_GCj8l2nkM/embed?start=false&loop=false&delayms=3000" width="960"></iframe>

![](https://docs.google.com/drawings/d/e/2PACX-1vThve9GB0eMS9SXCyt_8qbxyfp4M0o8KNpScg1yaFbFCp3N6dXipy9FmhVu0eDM_6p6QymEhI7IojPY/pub?w=960&h=720)

**Y el cable USB de conexión del Arduino al ordenador**

Y lo iremos conectando a las diferentes entradas y salidas de Arduino:

<table border="1" id="bkmrk-componente-conexi%C3%93n-" style="border-collapse: collapse; width: 100%; height: 268.125px;"><tbody><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">COMPONENTE</td><td style="width: 49.9383%; height: 29.7917px;">CONEXIÓN EN EL ARDUINO</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">LDR</td><td style="width: 49.9383%; height: 29.7917px;">A0</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">EJE X JOYSTICK</td><td style="width: 49.9383%; height: 29.7917px;">A1</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">EJE Y JOYSTICK</td><td style="width: 49.9383%; height: 29.7917px;">A2</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">SWITH JOYSTICK</td><td style="width: 49.9383%; height: 29.7917px;">A3</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">PULSADOR ALARMA</td><td style="width: 49.9383%; height: 29.7917px;">A4</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">PULSADOR TACTIL</td><td style="width: 49.9383%; height: 29.7917px;">D2</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">BUZZER ACTIVO</td><td style="width: 49.9383%; height: 29.7917px;">D3</td></tr><tr style="height: 29.7917px;"><td style="width: 49.9383%; height: 29.7917px;">SERVO</td><td style="width: 49.9383%; height: 29.7917px;">D4</td></tr><tr><td style="width: 49.9383%;">RGB AZUL</td><td style="width: 49.9383%;">D5</td></tr><tr><td style="width: 49.9383%;">RGB ROJO</td><td style="width: 49.9383%;">D6</td></tr><tr><td style="width: 49.9383%;">RGB VERDE</td><td style="width: 49.9383%;">D7</td></tr><tr><td style="width: 49.9383%;">SENSOR AGUA</td><td style="width: 49.9383%;">D8</td></tr><tr><td style="width: 49.9383%;">SENSOR LLAMA</td><td style="width: 49.9383%;">D9</td></tr><tr><td style="width: 49.9383%;">LASER</td><td style="width: 49.9383%;">D10</td></tr><tr><td style="width: 49.9383%;">TX DE BLUETOOTH</td><td style="width: 49.9383%;">D11</td></tr><tr><td style="width: 49.9383%;">RX DE BLUETOOTH</td><td style="width: 49.9383%;">D12</td></tr><tr><td style="width: 49.9383%;">LED VERDE</td><td style="width: 49.9383%;">D13</td></tr><tr><td style="width: 49.9383%;">SENSOR ULTRASONIDOS TRH</td><td style="width: 49.9383%;">D12</td></tr><tr><td style="width: 49.9383%;">SENSOR ULTRASONIDOS ECHO</td><td style="width: 49.9383%;">D13</td></tr></tbody></table>

Evidentemente cuando usemos el sensor de ultrasonidos prescindiremos del Bluetooth y del LED verde

# Otros Kits de domótica

##### <span style="color: rgb(22, 145, 121);">**Placa compatible Arduino de Innovadidactic**</span>

<iframe allow="autoplay" height="480" src="https://drive.google.com/file/d/16AdSer8hlhscDs3qw4PiISg2tEMdFRqp/preview" width="640"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Keyestudio con Microbit**</span>

- [Tutorial para programar con Makecode o con Python](https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/KS4027-KS4028.html#introduction)
- [Proyectos en inglés](https://www.manualslib.com/products/Keyestudio-Ks4028-12984183.html)
- [Manual](https://www.manualslib.com/manual/2889112/Keyestudio-Ks4028.html)
- [Enlace manual en catalán en grupo Telegram arduinoblocks](https://t.me/innovadidactic_comunidad/8939)

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/C7-UzQyuAQQ" width="560"></iframe>

# 2 Programación en bloques mBlock

# Instalando mBlock

{{@13341}}

# Dos formas de programar en mBlock

#### <span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;">**DOS FORMAS DE PROGRAMAR EN MBLOCK** </span></span></span>

<span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;"><span style="color: rgb(0, 0, 0);">Como vemos, mBlock permite dos formas de programar :</span></span></span></span>

<span style="color: rgb(0, 0, 0);"><span style="font-size: 23.324px;">{{@7552#bkmrk-}}</span></span>

#### <span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;">**OPCIÓN**</span></span> **Programación en vivo**</span>

El programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador.

- **VENTAJAS** 
    - Te permite interactuar el robot y el ordenador, por ejemplo podemos hacer que cuando el detector de humedad detecte agua, que salga por pantalla un fondo acuático, o que pulsando una tecla del teclado se encienda un LED en la placa...
- **DESVENTAJAS**
    - **hay que cargar dentro del robot el Firmware exclusivo de mBlock** para que Arduino haga caso a mBlock
    - Hay que tener **nuestro ordenador como intermediario**, **se come los recursos** y puede que nuestro programa vaya lento
    - Por supuesto necesita tener ordenador conectado al robot, o sea, trabaja como un esclavo del ordenador.

#### <span style="color: rgb(22, 145, 121);">**OPCIÓN Programación cargar a la placa**</span>

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

<p class="callout success">{{@7552#bkmrk-en-vivo-%C2%BFqu%C3%A9-es-eso%3F}}</p>

# Métodos para interactuar los objetos y el robot (dispositivo)

Si queremos que nuestro robot se pueda comunicar con el objeto o objetos que tenga mBlock, antes con mBlock 3.0 la comunicación era inmediata, fíjate en este script de una alarma:

[![embedded-image-xGEexnUg.jpeg](https://libros.catedu.es/uploads/images/gallery/2022-02/scaled-1680-/embedded-image-xgeexnug.jpeg)](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-xgeexnug.jpeg)

Mezcla en el mismo script:

- órdenes específicas de la placa arduino (set digital...)
- órdenes específicas del objeto que exista en mBlock (por defecto el oso panda) say .... switch costume to ....
- órdenes del fondo switch backdrop to ...

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

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO UTILIZAR VARIABLES GLOBALES**</span>

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

<p class="callout warning">**<span style="text-decoration: underline;">Este método se utiliza con la opción EN VIVO</span>**</p>

[![variablesglobales.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/variablesglobales.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/variablesglobales.jpg)

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

[![frase3.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/frase3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/frase3.jpg)

Podemos usarla en el robot

[![frase1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/frase1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/frase1.jpg)

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

[![frase2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/frase2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/frase2.jpg)

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO UTILIZAR MENSAJES**</span>

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

<p class="callout warning">**<span style="text-decoration: underline;">Este método se utiliza con la opción EN VIVO</span>**</p>

[![mensajes.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/mensajes.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/mensajes.jpg)

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO EXTENSIÓN BROADCAST = TRANSMITIR MENSAJES**</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**Este método se utiliza con la opción EN CARGA**</span></p>

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

[![arduino-pelotahinchadistancia3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia3.png)

Buscar la extensión "Broadcast" e instalarla

[![broadcast.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast.jpg)

Se instala primero descargándola con el + aquí

[![broadcast1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast1.png)

Y luego añadir una vez descargada

[![broadcast2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast2.png)

Entonces aparecen unas nuevas instrucciones

[![broadcast3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast3.png)

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

- En el mismo mensaje podemos transmitir valores asociados
- Funciona **EN MODO CARGA**
    - Esto es muy útil pues hay instrucciones que sólo se pueden utilizar en modo CARGA, de esta manera podemos pasar valores de la placa electrónica a los objetos del ordenador (oso panda o lo que sea) simplemente teniendo conectado la placa con el ordenador.

<p class="callout success">El resto de objetos trabajan en modo vivo, es decir, si cambias un bloque, automáticamente se ven los efectos</p>

<p class="callout success">A lo otros objetos TAMBIÉN hay que instalar la extensión BROADCAST</p>

<p class="callout warning">**DESVENTAJA** no se pueden transmitir mensajes de objetos a la placa. Sólo de la placa a los objetos</p>

# Preparando mBlock y Arduino

Hay que hacer dos cosas

- Cuando te descargas **mBlock** por defecto está preparado para utilizarlo con los robots (mBot), hay que decirle que no vamos a conectar un robot, que la placa será **Arduino UNO**
- Nuestro **ARDUINO** no pueden entender mBlock por lo que hay que grabarle un software dentro (un software que se graba en una placa hardware se llama **FIRMWARE**, no se borra cuando se apaga) y este firmware entiende lo que le manda mBlock, es decir, si conectamos otro Arduino y no le hemos grabado el firmware, no entenderá a mBlock.

Lo mejor un tutorial muy breve:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--1" src="https://docs.google.com/presentation/d/e/2PACX-1vRLqEoJCT355xMCeCXsd0Wc7JcJRk9JkwLCyzEPb_h1S2IbYKK7OdUf33yWRIXq216Zgh9Da7-gIOq1/embed?start=false&loop=false&delayms=3000" width="960"></iframe>

# INTERRUPTOR CREPUSCULAR

## <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

#### **<span style="color: rgb(22, 145, 121);">SENSOR DE LUZ LDR</span>**

  
El LDR es una resistencia que varía su valor con la luz, cuanto <span style="text-decoration: underline;">más OSCURO más grande es su valor</span>, por lo tanto por la ley de Ohm V= I\*R este módulo nos da una señal analógica (voltios) que aumenta con la oscuridad. Para saber más del LDR te recomendamos [esta página de Luis Llamas.](https://www.luisllamas.es/medir-nivel-luz-con-arduino-y-fotoresistencia-ldr/)

Los valores analógicos en el Arduino van desde 0 a 1023, luego hay que elegir un valor umbral, el cual, a partir de ese valor es un valor digital 1 o un 0, nosotros hemos elegido 500.

Por hardware puedes regular el potenciómetro que tiene el módulo para que produzca el cambio cuando lo desees:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-oqwqe1w7.jpeg)

#### <span style="color: rgb(22, 145, 121);">**MODULO LED RGB**</span>

Este módulo tiene 4 pines que podemos proporcionar valores analógicos desde 0V a 5V para conseguir diferentes colores:  
  
Pines B = Blue G = Green R = Red (-) = GND  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-tiesxuv1.jpeg)

<p class="callout warning">Recuerda que Arduino tiene entradas digitales, entradas analógicas, salidas digitales, **pero no tiene salidas analógicas.** En vez de ello tiene salidas PWM ¿Qué no sabes lo que es? 🤔 eso es porque te has saltado un capítulo anterior.  
</p>

De momento conectaremos el pin G (Green) a una salida digital normal (pin 7), luego sólo se puede encender o apagar.  
  
Más adelante usaremos los colores Blue y Red a salidas PWM  
  
En [esta página](https://tkkrlab.nl/wiki/Arduino_KY-016_3-color_LED_module) puedes encontrar más detalles de este módulo y un ejemplo curioso de utilización sin cables.

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

- Cuando el sensor LDR detecte oscuridad
    
    
    - El led RGB se enciende verde
    - Cambiamos a fondo tipo "noche"
- En caso contrario
    
    
    - el led RGB está apagado
    - el fondo es día

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- El módulo LDR lo conectamos al pin analógico A0
- El LED RGB lo conectamos
    
    
    - Pin 5 digital - Blue
    - Pin 6 digital - Red
    - Pin 7 digital - Green

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-cojet41i.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Video**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--2" src="//www.youtube.com/embed/c_eyV8aCdvk" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255351](https://planet.mblock.cc/project/3255351)

Utilizaremos la técnica variables globales [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

**Objeto placa arduino**

Nota: el pin digital 3 bajo es por si tienes puesto el buzzer, para que no suene, lo veremos más adelante.

[![interruptor-crepuscular1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/interruptor-crepuscular1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/interruptor-crepuscular1.jpg)

**Objeto panda**

[![interruptor-crepuscular2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/interruptor-crepuscular2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/interruptor-crepuscular2.jpg)

# APERTURA PUERTA

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### <span style="color: rgb(22, 145, 121);">**SERVOMOTORES**</span>  


Visita [esta página](https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/control-de-servomotores) para que veas dos vídeos y entiendas la diferencia entre:

- *Servos convencionales*
- Servos de rotación contínua

[![servo.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/servo.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/servo.jpg)  
![](https://libros.catedu.es/assets/servo.jpg)Tranquilo, que el servo que nos interesa es un **servo convencional** donde simplemente se fija el ángulo con la instrucción en mBlock  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-mvq4mgta.jpeg)  
  
Si quieres saber más sobre servos te aconsejamos visitar [esta página de Luis Llamas.](https://www.luisllamas.es/controlar-un-servo-con-arduino/)

#### <span style="color: rgb(22, 145, 121);">**INTERRUPTOR** </span><span style="color: #169179;">**TÁCTIL**</span>

  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-jr7x0ry2.jpeg)  
  
No tiene mucho misterio: detecta una acumulación de carga y dispara un pulso positivo. Si quieres saber más mira [esta página de Luis Llamas.](https://www.luisllamas.es/interruptor-touchless-con-arduino-y-sensor-capacitivo/)

##### <span style="color: rgb(22, 145, 121);">**BUZZER ACTIVO**</span>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-r3w7vric.jpeg)  
  
La diferencia con el pasivo es que no es necesario enviarle pulsos para que emita una frecuencia, sólo tenemos que dar la orden y él reproduce un tono.  
  
**Ojo que funciona con lógica negativa** es decir:

- *si queremos que **suene** tenemos que enviar un **LOW**.*
- si queremos que **no suene** tenemos que enviar un **HIGH**

Si quieres saber más de este componente visita [esta página](https://www.luisllamas.es/arduino-buzzer-activo/)

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

Cuando se pulse el interruptor táctil ....

- Se abre la puerta
- Al cabo de 5 segundos, tiempo suficiente para entrar
    
    
    - Se avisa que la puerta se va a cerrar con 3 pulsos buzzer y cambiando el color el sprite del Panda de mBlock
    - Se cierra la puerta

(sería como una llave táctil)

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- pin 2 digital: El interruptor táctil touchless.
- pin 3 digital: El buzzer activo.
- pin 4 digital: Servo de la puerta.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-l8ml7eri.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Video**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--3" src="//www.youtube.com/embed/bBA3GEhLmRg" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3251877](https://planet.mblock.cc/project/3251877)

Se utiliza la técnica de envío de mensajes [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

**El dispositivo ARDUINO**

[![domotica-aperturapuerta1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/8zKdomotica-aperturapuerta1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/8zKdomotica-aperturapuerta1.png)

**El objeto OSO PANDA**

[![domotica-aperturapuerta2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/nbzdomotica-aperturapuerta2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/nbzdomotica-aperturapuerta2.png)

El objeto **puerta** tiene este sencillo programa:

[![domotica-aperturapuerta3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-aperturapuerta3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-aperturapuerta3.png)

# ALARMA AGUA

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### <span style="color: rgb(22, 145, 121);">**SENSOR DE AGUA**</span>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-1eo71lti.jpeg)  
  
Es un sensor muy sencillo: Al mojar los conductores, aumenta la conductibilidad y se traduce en una salida HIGH en su pin de salida **S**.   
Si quieres saber más de este sensor visita [esta página de Luis Llamas.](https://aprendiendoarduino.wordpress.com/2018/10/17/sensor-deteccion-de-agua-para-arduino/)  
  
Con sólo tener los dedos húmedos ya lo detecta.  
  
Hay que tener en cuenta que sólo queremos detectar AGUA o NO AGUA, o sea digital. Hay otros sensores de humedad que están indicados para medir la humedad del suelo, (tienen forma de dos pinchos para clavarlos) en estos casos que queremos medir la cantidad de humedad la señal es más precisa y analógica. [Ver](https://www.luisllamas.es/arduino-humedad-suelo-fc-28/)

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

Si detecto agua : Aviso de agua en el fondo y en el objeto Panda y cierro la puerta pues entra el agua de la lluvia con el mismo procedimiento que en apartado anterior.

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- Pin D8 : Sensor de agua

El esquema el sensor de agua es uno de humedad, pero no había otro en Fritzing 😳

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-l4yr2xgc.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/VqUBA445Two" width="560"></iframe>

<span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255438](https://planet.mblock.cc/project/3255438)

Se utiliza la técnica de variables globales [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

Dispositivo ARDUINO

[![domotica-agua1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-agua1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-agua1.png)

Objeto Oso panda

[![domotica-agua2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-agua2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-agua2.png)

# JOYSTICK

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### **<span style="color: rgb(22, 145, 121);">JOYISTICK</span>**

Yo no sé qué tiene este componente que llama la atención a los chavales  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2crh6z96.jpeg)

  
  
Así que vamos a aprovecharlo: Tiene 2 potenciómetros según los ejes X e Y y un interruptor central. Las dos primeras salidas son analógicas, el *microruptor (cuando presionas el joystick)* lo trataremos también analógico, pues nos faltarán entradas y salidas digitales cuando lleguemos al final y queramos poner un Bluetooth.  
  
Si quieres saber más de este componente visita [esta página. de Luis LLamas](https://www.luisllamas.es/arduino-joystick/)

<span style="color: rgb(22, 145, 121);">**SALIDAS PWM**</span>  
  
Como Arduino no tiene valores de salida analógicos, utilizaremos los pines PWM (~) para simular tensiones variables de salida.   
  
De esta manera la luz Roja y Azul serán variables pudiendo crear el ambiente que queramos.

<p class="callout success">**¿No sabes lo que es PWM (~)?**  eso es que no te has leído los capítulos anteriores  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-tsoqgcru.png)  
</p>

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

- Si muevo en el eje X el Joystick la luz RGB se enciende AZUL proporcionalmente a la inclinación del mando Joystick.
- Si muevo en el eje Y el Joystick la luz RGB se enciende ROJO proporcionalmente a la inclinación del mando Joystick.
- Si pulso el Switch central
    
    
    - Si la puerta estaba cerrada la abre
    - Si la puerta estaba abierta, la cierra, con los avisos correspondientes.
- Además vamos a complicar el reto Y TIENE QUE INCLUIR 
    - Lo visto en interruptor crepuscular: 
        - Si es luz&lt;500 se hace de noche, tanto en el fondo com el oso panda
        - se enciende la luz verde del led RGB
    - Lo visto en la apertura y cierre de la puerta con el sensor táctil exterior 
        - - si se pulsa el sensor táctil exterior, se abre la puerta, tanto la real, como la del objeto
            - se mantiene abierta durante 5 segundos
            - avisa que va a cerrar la puerta con tres avisos, el led13 parpadeando y el objeto avisando
            - se cierra la puerta, tanto la real como la del objeto
    - Lo visto en alarma agua, pero modificado 
        - si hay agua objeto gotera aparece y suena pitido

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

Al ser un componente analógico lo conectaremos en las entradas analógicas: \* La salida eje X que gradúa la luz azul en A1 \* La salida eje Y que gradúa la luz roja en A2 \* La salida Switch central en A3 ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-wlt65hwc.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/jPvQin9iFTE" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255492](https://planet.mblock.cc/project/3255492)

Se ha utilizado el truco DE ENVIOS MENSAJES BROADCAS ver [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

<p class="callout warning">Elegimos esta opción pues el programa es muy complejo para ejecutarlo EN VIVO es mejor cargar, y que la placa Arduino envíe los mensajes correspondientes. Si se realiza EN VIVO da problemas</p>

Para ir simplificando se ha utilizado la creación de bloques, y cada mensaje que envía la placa Arduino lo recogerá un objeto

<span style="text-decoration: underline;">**DISPOSITIVO ARDUINO**</span>

Ejecuta siempre los 4 bloques

[![DOMOTICA-JOYSTICK1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/cd3domotica-joystick1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/cd3domotica-joystick1.png)

Bloque NOCHE

[![DOMOTICA-JOYSTICK2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick2.png)

Bloque AGUA

[![DOMOTICA-JOYSTICK3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick3.png)

Bloque PULSADOR

[![DOMOTICA-JOYSTICK4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick4.png)

Bloque ABERPUERTA-Y-DESPUESICERRA

[![DOMOTICA-JOYSTICK5.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick5.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick5.png)

Finalmente bloque JOYSTICK -RGB que lee los pines de entrada A2 y A3.

Son valores desde 0 hasta +1024 pero la posición central del Joystick está en 500, luego tenemos que contar desde 500 hasta 1024, luego hay que convertirlos a 0-255

Esos valores ya normalizados transmitirlos a los pines digitales donde está conectado el pin rojo y azul del led RGB por PWM

[![DOMOTICA-JOYSTICK6.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick6.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick6.png)

<span style="text-decoration: underline;">**OBJETO OSO PANDA** </span>

recoge la LUZ

[![DOMOTICA-JOYSTICK7.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick7.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick7.png)

<span style="text-decoration: underline;">**El OBJETO PUERTA**</span>

Que recoge los mensajes del sensor táctil

[![DOMOTICA-JOYSTICK9.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick9.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick9.png)

<span style="text-decoration: underline;">**OBJETO WATER**</span>

recoge el mensaje gotera y aparece si hay

[![DOMOTICA-JOYSTICK10.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick10.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick10.png)

# ALARMA LASER

## <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2elvyhy0.png)

Si quieres saber más de este componente, te recomendamos [esta página de Luis Llamas](https://www.luisllamas.es/diodo-laser-arduino/). Si tienes que comprar uno, te recomendamos que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo \[[+info](https://cuidatuvista.com/punteros-laser-juguetes-ojos/)\]. El modelo que te proponemos es de 1mW, no obstante, **EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS** especialmente con niños.

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

- **ALARMA**
    - Si activo la alarma el láser tiene que encenderse 
        - Una vez activada si se corta el láser, por lo tanto el valor del LDR sube, la alarma se dispara.
    - Si desactivo la alarma 
        - La alarma se apaga si se ha disparado, también por pantalla
        - El laser de apaga.
- Mantenemos la alarma **agua**
    - Si se detecta agua, suena un aviso, también por pantalla
- Mantenemos el **pulsador exterior**
    - Si se pulsa, la puerta se abre y se mantiene 5seg
    - Se cierra automáticamente pero antes avisa, con un led y por pantalla
- Mantenemos el **Joystick**
    - Si se mueve, se visualiza el led RGB colores azul y verde
    - si se pulsa se abre la puerta

No mantenemos la programación del interruptor crepuscular pues necesitamos el LDR para la alarma

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-n93i2glp.png)

#### <span style="color: rgb(22, 145, 121);">**Solución maqueta**</span>

En este caso **hay que tener cuidado con la fijación del láser y el LDR para que apunte al LDR** y otra cuestión son los cables: al instalarse fuera de la casa hay que utilizar cables largos o añadir dos M-H consecutivos.

- Hemos utilizado dos fijaciones con alambre el LDR para que quede fijo.
- En el láser hemos fijado con una chincheta para fijar el láser además de alambre
- Truco, si la maqueta va a estar fija, una buena gota con la pistola de pegamento es mano de santo para que se quede fijo

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-z6pifppp.jpeg)

#### **<span style="color: rgb(22, 145, 121);">Solución conexiones eléctricas</span>**

- La alimentación del láser y el del LDR igual que en los casos anteriores
- El control del LÁSER a la salida digital D10
- La lectura del LDR a la entrada analógica A0
- El resto: Joystick, detector fuego, sensor de agua, igual que las páginas anteriores

#### **<span style="color: rgb(22, 145, 121);">Solución vídeo</span>**

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/3O7UwfKRlrI" width="560"></iframe>

#### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255982](https://planet.mblock.cc/project/3255982)

Principalmente el difícil es el bloque Alarma

[![DOMOTICA-ALARMA.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma.png)

Los otros objetos

Objeto puerta

[![DOMOTICA-ALARMA2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma2.png)

Objeto gota

[![DOMOTICA-ALARMA3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma3.png)

Objeto Policia

[![DOMOTICA-ALARMA4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma4.png)

## <span style="color: rgb(22, 145, 121);">**Otra opción**</span>

En vez de un láser, con un SENSOR DISTANCIA POR ULTRASONIDOS  
![](https://catedu.github.io/programa-arduino-mediante-codigo/img/Captura_de_pantalla_2015-04-01_a_las_22.48.19.png)  
  
Este sensor mide las distancias utilizando el eco:  
  
 *Un* ojo *marcado con la T es un altavoz: Emite un sonido ultrasónico fuera de lo audible*  El otro *ojo* marcado con una R es un micrófono que detecta el pulso emitido por T.  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-pv9zy9hg.jpeg)  
  
Por software hay que calcular la distancia utilizando la fórmula v=e/t donde v es la velocidad del sonido.  
  
Si quieres saber más de este sensor mira esta página de [Luis Llamas.](https://www.luisllamas.es/medir-distancia-con-arduino-y-sensor-de-ultrasonidos-hc-sr04/)

 su código en mBlock es muy sencillo:  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lyr8ivs9.jpeg)  
  
Podríamos usar uno más profesional, por ejemplo [DETECTOR DE MOVIMIENTO CON ARDUINO Y SENSOR PIR](https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/), pero su ángulo de sensibilidad es tan abierto que todo el rato se dispara. (un rollo si se utiliza en clase).

Reto alternativo

- Si se pulsa el botón de activación
    
    
    - Si la alarma no está activada
        
        
        - **Activa** la alarma, es decir *está vigilando*.
    - Si la alarma está activada
        
        
        - **Desactiva** la alarma, *deja de vigilar*.
    - Si la alarma está disparada
        
        
        - Anula el disparo y desactiva la alarma
- Si la alarma está activada:
    
    
    - Está encendido el led verde para indicar que *está vigilando*.
    - Si detecta un *intruso* a menos de 10 cm
        
        
        - Se **dispara** la alarma, es decir se enciende la luz roja y el buzzer de forma intermitente, no se apaga hasta que se pulsa el interruptor.

Conexiones

- Entradas y salidas digitales
    
    
    - D3 Buzzer
    - D5 Blue de led RGB
    - D6 Red de led RGB
    - D7 Green de led RGB
    - D12 Echo del sensor de ultrasonidos
    - D13 Trg del sensor de ultrasonidos
- Entradas y salidas analógicas
    
    
    - A4 Pulsador

Video

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--8" src="//www.youtube.com/embed/RB7K16FhHlg" width="560"></iframe>

El programa lo puedes descargar [aquí](https://drive.google.com/open?id=1bV5VehaV7vf1eMwBAjru-LZ0Wh9E75Wq) pero realizado en mBlock3

# BLUETOOTH pasos previos

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

{{@3000#bkmrk-tienes-que-visitar-l}}

{{@3000#bkmrk-%C2%BFqu%C3%A9-es-el-hc-06%3F-la}}

{{@3000#bkmrk-aprende-a-configurar}}

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--1" src="https://docs.google.com/presentation/d/e/2PACX-1vT0vG1z61MuZXKmdiw4ga7z15FlQfeussqDNYzMauJSZUU2G2NlL7M-JjXb4PFT4YTigj9Yal8PzHmR/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

{{@3000#bkmrk-configuraci%C3%B3n-avanza}}

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--0" src="https://docs.google.com/presentation/d/e/2PACX-1vSCv2j25rIQxh6pHjMM4n4AXttDDetQPL93qMrYfQO2p-BVC6tSzeRVgU7nVq4_pXEnLedrvF7LTM4V/embed?start=false&loop=false&delayms=3000" width="960"></iframe>

##### <span style="color: rgb(22, 145, 121);">**En mBlock INSTALAR LA EXTENSIÓN HC-06**</span>

Entramos en Extensión

[![DOMOTICA-BLUETOOTH1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth1.png)

Y ponemos en el buscador HC-06 nosotros hemos elegido esta, pero podría ser otra, es cuestión de experimentar

[![DOMOTICA-BLUETOOTH2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth2.png)

IMPORTANTE

- SOLO FUNCIONA CARGANDO EL PROGRAMA en vivo no
- NO PUEDES USAR ESTAS INTRUCCIONES DENTRO DE UN BLOQUE no entiendo por qué, si alguien lo consigue que me lo diga

[![DOMOTICA-BLUETOOTH3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth3.png)

##### <span style="color: rgb(22, 145, 121);">**Un ejemplo: Apertura simple de la puerta**</span>

Conectamos:

- RX del HC-06 en 12
- TX del HC-06 en 11
- El servo de la puerta en D4

y el código es:

[https://planet.mblock.cc/project/3481632](https://planet.mblock.cc/project/3481632)

[![mblock-bluetooch-simpleapartura.png](https://libros.catedu.es/uploads/images/gallery/2024-02/scaled-1680-/mblock-bluetooch-simpleapartura.png)](https://libros.catedu.es/uploads/images/gallery/2024-02/mblock-bluetooch-simpleapartura.png)

.

# BLUETOOTH

### <span style="color: rgb(22, 145, 121);">**Reto**</span>

{{@3000#bkmrk-controlar-nuestra-ca}}

{{@3000#bkmrk-comando-voz-dato-des}}

{{@3000#bkmrk-lo-tienes-que-hacer-}}

##### <span style="color: rgb(22, 145, 121);">**Solución conexiones eléctricas**</span>

{{@3000#bkmrk-conectaremos-vcc-y-g}}

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/UGP6Oq95dfE" width="100%"></iframe>

##### **<span style="color: rgb(22, 145, 121);">Solución programa</span>**

El programa lo tienes aquí : [https://planet.mblock.cc/project/3259600](https://planet.mblock.cc/project/3259600)

Todo este código, si lo pongo en un bloque, NO FUNCIONA, no sé por qué, así que a lo bruto en el bloque principal

[![DOMOTICA-BLUETOOTH4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth4.png)

Total que el programa del <span style="text-decoration: underline;">dispositivo Arduino </span>queda bastante monstruoso

[![DOMOTICA-BLUETOOTH5.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth5.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth5.png)

<span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">Objeto puerta</span></span>

[![DOMOTICA-BLUETOOTH6.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth6.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth6.png)

<span style="text-decoration: underline;">Objeto gotera</span>

[![DOMOTICA-BLUETOOTH7.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth7.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth7.png)

<span style="text-decoration: underline;">Objeto policia</span>

[![DOMOTICA-BLUETOOTH8.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/45ydomotica-bluetooth8.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/45ydomotica-bluetooth8.png)

# 3 Programación en código

# Entorno de programación

{{@2938}}

# Maqueta

Compramos una hoja de **cartón piedra** de formato A3 (el doble de un folio) y lo cortamos por la mitad a la larga, y en dos cuadrados la otra mitad. En uno de esos cuadrados recortamos la puerta, en total sólo 3 paredes y el suelo es la otra parte de arriba:

![](https://docs.google.com/drawings/d/e/2PACX-1vT1Y-2t0DIdFtBksej3ap77UnQQnEf9ZRYLDQWpBayjnnSHQGFK7AOKvAmC_xRLmXOQ43eJHoWxrDEk/pub?w=960&h=720)

La mejor forma de pegarlo es con pistola, pero también clavando agujas o las dos a la vez.

Para ir poniendo los componentes lo más fácil y reciclable es perforar, con una simple punta de bolígrafo:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-fppf7dgl.jpeg)

Y atarlo con alambre plastificado típicos de las bolsas de pan de molde:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-wcfle8by.jpeg)

El soporte del servomotor con la puerta es difícil, una opción es pegarlo con una pistola de pegamento.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-pwvwxcbo.jpeg)

Tanto el cartón piedra como el alambre se puede conseguir en cualquier bazar a precios muy económicos.

Otra opción para la apertura de la puerta es usar un palillo :

[![2023-05-12 19_11_44-VID20230510235454.mp4 - Google Drive.png](https://libros.catedu.es/uploads/images/gallery/2023-05/scaled-1680-/2023-05-12-19-11-44-vid20230510235454-mp4-google-drive.png)](https://libros.catedu.es/uploads/images/gallery/2023-05/2023-05-12-19-11-44-vid20230510235454-mp4-google-drive.png)

# APERTURA DE PUERTA

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

Esta vez vamos a centrarnos con la apertura de la puerta, dejaremos el LDR para la alarma

- Cuando se pulse el interruptor táctil (sería como una llave táctil) 
    - Se abre la puerta
- Al cabo de 5 segundos, tiempo suficiente para entrar 
    - Se avisa que la puerta se va a cerrar con 3 pulsos buzzer
    - Se cierra la puerta
- Por la pantalla del ordenador saldrán mensajes de apertura y cierre

##### **<span style="color: rgb(22, 145, 121);">Solución maqueta</span>**

Esta vez en la maqueta ponemos los siguientes elementos 1. Fijación placa Arduino 1. Fijación placa Arduino 1. Interruptor táctil 1. Buzzer 1. Servo 1. Portapilas

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-oyuoa9fi.jpeg)

Detalle por delante

1. Interruptor táctil
2. Fijación servo
3. Fijación servo
4. Puerta \*si, ya sé, un poco chapuza ¿y qué pasa? \*

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lm49c857.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución esquema de conexiones**</span>

Es el mismo mostrado en [APERTURA DE LA PUERTA](https://libros.catedu.es/24-apertura-puerta.md), pero ahora vamos montando la maqueta:

1. Terminales GND
2. Terminales +5V
3. Terminales Servo van aparte (ver nota) con D4 al control del servo
4. Terminales 
    1. D2 Interruptor táctil
    2. D3 Buzzer activo
5. Interruptor táctil
6. Buzzer activo
7. Servo
8. Led el pin largo en D13 y el corto en GND.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ndtc12o9.jpeg)

> Nota: El servo al tener terminales hembra, se ha optado por conectarlo directamente en la placa protoboard utilizando machos machos como el de la figura:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-45lnel4t.jpeg)

> **Nota**: Sí, ya sé que conectar el **LED DIRECTAMENTE EN D13 no es una buena práctica,** pero internamente Arduino tiene unas resistencias en cada entrada/salida de 30k que lo puede aguantar, o sea, no es lo correcto pero no pasa nada (y como es muy cómodo, y necesitamos espacio, optamos por lo práctico). Si lo pones al revés no funcionará (no se estropea nada pero asegúrate el pin largo al D13 y el corto al GND).

##### <span style="color: rgb(22, 145, 121);">**Solución video**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--4" src="//www.youtube.com/embed/uHrZMTJPyRQ" width="560"></iframe>

##### **<span style="color: rgb(22, 145, 121);">Solución código</span>**

<span style="color: rgb(22, 145, 121);">[https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview](https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview)</span><iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

# JOYSTICK

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

Ahora vamos a utilizar el Joystick para dos intenciones:

- Aprovechando el SWITCH central: 
    - Si se hace una pulsación larga:
    - la puerta se abre (si estaba cerrada)
    - o se cierra (si estaba abierta)
- El mando del Joystick nos regulará una luz ambiental
- El eje X en azul
- El eje y el rojo
- Un valor intermedio es un valor de los dos

##### **<span style="color: rgb(22, 145, 121);">Solución maqueta</span>**

Vamos ampliando nuestra casa domótica con la luz RGB y el Joystick:

1. Joystick fijado en la pared
2. Led RGB fijado en la pared
3. Conexiones Joystick en entradas analógicas
4. Conexiones de RGB a las salidas digitales

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-i7jy8g21.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución esquema eléctrico**</span>

Es igual que cuando vimos [Joystick:](https://libros.catedu.es/26-joystick.md)

1. Terminales GND del led RGB y del Joystick
2. Terminal +5V del Joystick
3. Otra opción de conectar el terminal GND
4. Otra opción de conectar +5V

y las demás conexiones igual que antes:

- D5 PWM al Rojo del RGB (tiene que ser PWM)
- D6 PWM al Azul del RGB (tiene que ser PWM)
- D7 al Verde del RGB (luego lo utilizaremos)
- A1 al EJEX JOYSTICK
- A2 al EJEY JOYSTICK
- A3 al SWITCH JOYSTICK

<p class="callout success">Nota: El microruptor del Joystick es digital luego lo apropiado es conectarlo en una entrada salida digital, pero como vamos escasos de entradas y salidas digitales (ya verés como esto se complica), lo trataremos como analógico.</p>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-fyi9z1xe.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--2" src="//www.youtube.com/embed/Cgi4k5cM4I4" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución código**</span>

<span style="color: rgb(22, 145, 121);">[https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview](https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview)</span><iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

# ALARMA AGUA

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

Ahora vamos a utilizar el sensor de agua para prevenir "accidentes" en casa

- Si el sensor de agua detecta líquido 
    - Suena una alarma de 10 pulsos mientras esté funcionando
    - Si la puerta estuviera abierta 
        - La cierra pues entraría agua

##### **<span style="color: rgb(22, 145, 121);">Solución esquema eléctrico</span>**

- Sensor de Agua en D8 igual que vimos en la parte de bloques
- Alimentación GND y +5V del sensor de agua o en 1 y 2 o en 3 y 4

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-een52klw.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/oIf0gFJ20G" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución código**</span>

<span style="color: rgb(0, 0, 0);">[https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview](https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview)</span><iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

# FUEGO

<p class="callout danger">**ATENCIÓN hemos pensado la utilización del sensor de fuego sólo en la parte de CODIGO, pues es para nivel de secundaria.**  
**Implica la utilización de un mechero, con el peligro que conlleva. Utilizar este ejemplo en clase bajo responsabilidad y supervisión del docente.**</p>

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

Tenemos que hacer dos programaciones \* Activar o no la alarma \* cuando hay una pulsación larga en el pulsador escondido, se activa o se desactiva la alarma \* si se ha disparado la alarma tiene que apagarla \* Disparo de la alarma \* Si la alarma está actividad, vigilando y se produce una detección, la alarma tiene que sonar hasta que la desactivamos con una pulsación larga del pulsador.

##### <span style="color: rgb(22, 145, 121);">**Solución maqueta**</span>

Fijaremos en la pared el sensor llama que lo vimos anteriormente en 2.7 y el pulsador de activación o no de la alarma.

1. Sensor llama
2. Pulsador analógico
3. Conexión sensor llama a la entrada digital
4. Conexión del pulsador analógico a la entrada analógica

Las alimentaciones de los dos sensores igual que en las páginas anteriores.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-oktq0abj.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución esquema eléctrico**</span>

- Sensor llama a D9
- Pulsador analógico a A4

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--0" src="//www.youtube.com/embed/51ehH9JvDz4" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución código**</span>

<span style="color: rgb(0, 0, 0);">[https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview](https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview)</span><iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

# LÁSER

{{@2992#bkmrk-el-diodo-l%C3%A1ser-es-un}}

{{@2992#bkmrk-}}

{{@2992#bkmrk-si-quieres-saber-m%C3%A1s}}

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

- Si activo la alarma el láser tiene que encenderse 
    - Una vez activada si se corta el láser, por lo tanto el valor del LDR sube, la alarma se dispara.
- Si desactivo la alarma 
    - La alarma se apaga si se ha disparado
    - El laser de apaga.

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--2" src="//www.youtube.com/embed/pmb_weSjZ04" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución maqueta**</span>

<span style="color: rgb(0, 0, 0);">{{@2992#bkmrk-en-este-caso-hay-que}}</span>

<span style="color: rgb(0, 0, 0);">{{@2992#bkmrk-hemos-utilizado-dos-}}</span>

<span style="color: rgb(0, 0, 0);">{{@2992#bkmrk--1}}</span>

##### <span style="color: rgb(22, 145, 121);">**Solución conexiones eléctricas**</span>

- La alimentación del láser y el del LDR igual que en los casos anteriores
- El control del LÁSER a la salida digital D10
- La lectura del LDR a la entrada analógica A0

<span style="color: rgb(22, 145, 121);">**Solución código**</span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">Aquí lo tienes  
[https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview](https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview)</span><iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

</p>

# BLUETOOTH APP->ARDUINO

## Conocimientos previos

Tienes que visitar las siguientes páginas de la [Unidad 4 Comunicaciones con Arduino](https://catedu.github.io/programa-arduino-mediante-codigo/arduino_y_mvil.html):

- ¿Qué es el [HC-06](https://catedu.github.io/programa-arduino-mediante-codigo/mdulo_bluetooth.html)?
- [La APP](https://catedu.github.io/programa-arduino-mediante-codigo/la_app.html) que tienes que intalarte
- [Vincular tu móvil con el HC-06](https://catedu.github.io/programa-arduino-mediante-codigo/vincular_mvil.html) con tu móvil

<p class="callout success">Aprende a configurar los botones de la APP !! diapositiva 12 pero en vez de Up, Down, Right y Left los que se establezcan en el reto</p>

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--1" src="https://docs.google.com/presentation/d/e/2PACX-1vT0vG1z61MuZXKmdiw4ga7z15FlQfeussqDNYzMauJSZUU2G2NlL7M-JjXb4PFT4YTigj9Yal8PzHmR/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

<p class="callout warning">[Configuración avanzada](https://catedu.github.io/programa-arduino-mediante-codigo/configuracion_avanzada.html) pues **nosotros somos pitos, y conectaremos el HC-06 en los pines digitales D11 y D12** y no en D0 y D1 pues están ocupados con la comunicación del ordenador.  
El RX del HC-06 en 11 y el TX del HC-06 en el 12</p>

### <span style="color: rgb(22, 145, 121);">**RETO BÁSICO: Apertura de puerta y encendido láser.**</span>

<span style="color: rgb(22, 145, 121);">**Enunciado reto básico**</span>

Vamos a realizar :

- Que desde la APP -&gt;Placa 
    - Con el comando A abre la puerta
    - Con el comando R que cierre la puerta
    - Con el comando L que se encienda o se apague el láser (es decir, si estaba encendido, que se apague, y viceversa)

<span style="color: rgb(22, 145, 121);">**Conexiones reto básico**</span>

- Bluetooth HC-06 RX al 12 y TX al 11
- Puerta servo D4
- Láser al D10

[![domotica-simple-laser.png](https://libros.catedu.es/uploads/images/gallery/2024-02/scaled-1680-/domotica-simple-laser.png)](https://libros.catedu.es/uploads/images/gallery/2024-02/domotica-simple-laser.png)

El programa es este [https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview](https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview)

<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<span style="color: rgb(22, 145, 121);">**Reto básico Resultado**</span>

[https://www.youtube.com/shorts/vSjZBe\_iEIQ](https://www.youtube.com/shorts/vSjZBe_iEIQ)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="602" src="https://www.youtube.com/embed/vSjZBe_iEIQ" title="reto básico app a arduino" width="338"></iframe>

### <span style="color: rgb(22, 145, 121);">**Reto avanzado**</span>

Controlar nuestra casa con el móvil, para ello vamos a definir los siguientes comandos:

<table id="bkmrk-comando-voz-dato-des"><thead><tr><th>COMANDO</th><th>VOZ</th><th>DATO</th><th>descripción</th></tr></thead><tbody><tr><td>Comando 1</td><td>abrir</td><td>A</td><td>abrir la puerta y cierra automáticamente</td></tr><tr><td>Comando 2</td><td>puerta</td><td>P</td><td>abrir/cerrar la puerta</td></tr><tr><td>Comando 3</td><td>alarma</td><td>L</td><td>activar/desactivar la alarma</td></tr><tr><td>Comando 4</td><td>pit</td><td>T</td><td>hace un pit</td></tr><tr><td>Comando 5</td><td>rojo</td><td>R</td><td>enciende luz interior roja</td></tr><tr><td>Comando 6</td><td>azul</td><td>B</td><td>enciende luz interior azul</td></tr><tr><td>Comando 7</td><td>apaga</td><td>O</td><td>apaga luces interiores</td></tr></tbody></table>

Lo tienes que hacer así:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--0" src="https://docs.google.com/presentation/d/e/2PACX-1vSCv2j25rIQxh6pHjMM4n4AXttDDetQPL93qMrYfQO2p-BVC6tSzeRVgU7nVq4_pXEnLedrvF7LTM4V/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución conexión eléctrica**</span>

- Conectaremos Vcc y GND del HC06 igual que antes en la placa protoboard *sí ya sé que casi no queda sitio, es el último, lo prometo*
- TX de HC06 al pin D11
- RX de HC06 al pin D12

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--8" src="//www.youtube.com/embed/MUUruBQtnWQ" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución código**</span>

[https://create.arduino.cc/editor/javierquintana/e14ca107-67ba-4508-a5a0-6012213b4c1d/preview](https://create.arduino.cc/editor/javierquintana/e14ca107-67ba-4508-a5a0-6012213b4c1d/preview)<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/e14ca107-67ba-4508-a5a0-6012213b4c1d/preview?embed" style="height:510px;width:100%;margin:10px 0"></iframe>

# BLUETOOTH APP<->ARDUINO

##### <span style="color: rgb(22, 145, 121);">**Nos preguntamos...**</span>

P: ¿Y pasar datos de nuestra maqueta a la APP ?   
R: Se puede pero tendremos que hacer la APP a medida  
P: ¿Podríamos tener libertad de poner botones?   
R: Por supuesto,

<p class="callout info">Recuerda que con la APP que existen en GOOGLE PLAY como la utilizada en el capítulo anterior [https://libros.catedu.es/books/domotica-con-arduino/page/bluetooth](https://libros.catedu.es/books/domotica-con-arduino/page/bluetooth-app-arduino-I6y) la comunicación es PLACA&lt;-APP</p>

### <span style="color: rgb(22, 145, 121);">**RETO BÁSICO** </span>

<span style="color: rgb(22, 145, 121);">**Enunciado reto básico**</span>

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Vamos a realizar :</span></span>

- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Que desde la APP -&gt;Placa</span></span>
    - Con el comando A abre la puerta
    - Con el comando R que cierre la puerta
    - Con el comando L que se encienda o se apague el láser (es decir, si estaba encendido, que se apague, y viceversa)
- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Que desde la Placa -&gt;APP</span></span>
    - <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Si detecta ladrón que avise</span></span>

<span style="color: rgb(22, 145, 121);">**Conexiones reto básico**</span>

- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Bluetooth HC-06 RX al 12 y TX al 11</span></span>
- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Puerta servo D4</span></span>
- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Láser D10 apuntando al LDR</span></span>
- <span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Sensor LDR D9</span></span>

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">[![ARDUINO-DOMOTICA-BASICO-BIDIRECCIONAL-BLUETOOTH_bb.png](https://libros.catedu.es/uploads/images/gallery/2024-02/scaled-1680-/arduino-domotica-basico-bidireccional-bluetooth-bb.png)](https://libros.catedu.es/uploads/images/gallery/2024-02/arduino-domotica-basico-bidireccional-bluetooth-bb.png)</span></span>

<span style="color: rgb(22, 145, 121);">**RETO BÁSICO LA APP EN APP INVENTOR**</span>

los pasos son parecidos a los tratados en [https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks](https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks)

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vTarhvN0P1AON9aL9gmx95tCT7i09_mbJh_81reCJ2QAHNNTb8UFA9wS5b4Ek82NVu9nxR_Wj9Jc6R0/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

<p class="callout success">Lo tienes en [https://gallery.appinventor.mit.edu/?galleryid=286eb7c2-792d-436c-b7d0-3d9e1e0592aa](https://gallery.appinventor.mit.edu/?galleryid=286eb7c2-792d-436c-b7d0-3d9e1e0592aa)</p>

<span style="color: rgb(0, 0, 0);">Para llevar la APP al móvil mira [https://libros.catedu.es/books/arduino-en-el-aula/page/llevar-la-app-creada-en-app-inventor-al-movil](https://libros.catedu.es/books/arduino-en-el-aula/page/llevar-la-app-creada-en-app-inventor-al-movil)</span>

<span style="color: rgb(22, 145, 121);">**RETO BÁSICO PROGRAMA EN EL ARDUINO CON CODIGO**</span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">El programa lo tienes aquí [https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview](https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview)</span></p>

<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<p class="callout warning">**BUG**: Cuando el laser pasa de APAGADO a ENCENDIDO, el LDR es más lento que el programa Arduino y detecta LADRÓN luego desaparece, pero ya se ha quedado el fondo de pantalla rojo.  
**RETO**: Habría que poner un pequeño retardo delay(500); para solucionar este problema ¿Dónde?</p>

<span style="color: rgb(22, 145, 121);">**Resultado video**</span>

<span style="color: rgb(22, 145, 121);">**[https://www.youtube.com/shorts/RZ\_0EX4OulI?feature=share](https://www.youtube.com/shorts/RZ_0EX4OulI?feature=share)**</span>

<span style="color: rgb(22, 145, 121);">**<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="817" src="https://www.youtube.com/embed/RZ_0EX4OulI" title="BIDIRECCIONAL BLUETOOTH APP INVENTOR RETO BÁSICO" width="460"></iframe>** </span>

### <span style="color: rgb(22, 145, 121);">**RETO AVANZADO**</span>

<span style="color: rgb(0, 0, 0);">Como en la página anterior</span>

##### <span style="color: rgb(22, 145, 121);">**RETO AVANZADO LA APP EN APP INVENTOR**</span>

los pasos son parecidos a los tratados en [https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks](https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks)  
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vQFlnimw99RcGAICOHnRLcSQYpNUw41M-e84ZOOXVbeLS6jT8wuTOVgz_hNbCSMAtMusp-XyBEG-tFu/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

  
Pero en la vista de **Designer**, hemos añadido más botones, imagen, etc...  
[![designer.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/designer.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/designer.jpg)

Y la vista de **Blocks** es más completa

[![blocks.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/mlGblocks.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/mlGblocks.png)

El programa lo tienes aquí :  
[https://gallery.appinventor.mit.edu/?galleryid=b4979892-5df3-4225-90be-538a64d469e0](https://gallery.appinventor.mit.edu/?galleryid=b4979892-5df3-4225-90be-538a64d469e0)

##### <span style="color: rgb(22, 145, 121);">**RETO AVANZADO** </span><span style="color: rgb(22, 145, 121);">**EL PROGRAMA EN EL ARDUINO**</span>

Y hemos modificado el programa en Arduino para que envíe los comandos por bluetooth

<p class="callout success">Busca los comandos **Serial1.print(...);**</p>

[https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview](https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview)<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

##### <span style="color: rgb(22, 145, 121);">**RETO AVANZADO** </span><span style="color: rgb(22, 145, 121);">**RESULTADO**</span>

[https://youtu.be/gtuJzYvTBJM](https://youtu.be/gtuJzYvTBJM)

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/gtuJzYvTBJM" width="560"></iframe>

# 4. Para saber más...

# Muro

Pon si quieres poner ejemplos tuyos o de otros interesantes:

<iframe frameborder="0" src="https://padlet.com/embed/aveh0chckc8l" style="width: 100%; height: 608px; display: block; padding: 0; margin: 0;"></iframe>

<div class="padlet-embed" id="bkmrk--0" style="border: 1px solid rgba(0,0,0,0.1); border-radius: 2px; box-sizing: border-box; overflow: hidden; position: relative; width: 100%; background: #F4F4F4;"><div style="padding: 8px; text-align: right; margin: 0;">[![Hecho con Padlet](https://resources.padletcdn.com/assets/made_with_padlet.png)](https://padlet.com?ref=embed)</div></div>

# Créditos

## Autoría

- Autor Javier Quintana CATEDU 2018
- Actualización a mBlock 5.0 Javier Quintana CATEDU 2024

{{@3195}}

# Lenguajes de programación

El Arduino se puede programar

- Por bloques (mBlock, Echidna, Scratch, SteamMakerblocks, Blocky....)
- Por código principalmente Arduino IDE

**En este curso se puede utilizar por bloques o por código LO QUE QUIERAS**

Guía de los lenguajes de programación para robots

<iframe height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vQb1Dv9wN9QK-F6V7yvwDoyzquqwWlGvIyVJr83Yk56kAoYD7bXLnYDm_tCQkeAgg/pubembed?start=false&loop=false&delayms=3000" style="border:0;" width="960"></iframe>

<p class="callout success">Tenemos un **grupo Telegram Robótica Educativa en Aragón**, [https://t.me/roboticaeducativaaragon](https://t.me/roboticaeducativaaragon)</p>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7qvnrzdh.jpeg)