Programación y robótica en Secundaria

Introducción

Programación y Robótica, asignatura de libre elección de 3º ESO

Introducción

Programación y Robótica. Asignatura libre configuración autonómica 3º ESO

A continuación detallamos las 5 competencias específicas que el alumnado debe alcanzar en esta asignatura. Para cada una de ellas a lo largo del curso propondremos situaciones de aprendizaje y las relacionaremos con los saberes básicos así como los criterios de evaluación asociados. 

Competencia específica de la materia Programación y Robótica 1:

CE.PR.1. Abordar problemas tecnológicos con autonomía y actitud creativa, aplicando conocimientos interdisciplinares y trabajando de forma cooperativa y colaborativa, para diseñar y planificar soluciones a un problema o necesidad de forma eficaz, innovadora y sostenible.

Vinculación con el Perfil de salida

Esta competencia específica se conecta con los siguientes descriptores del Perfil de salida: CCL1, STEM1, STEM3, CD3, CPSAA3, CPSAA5, CE1, CE3.

Competencia específica de la materia Programación y Robótica 2:

CE.PR.2. Aplicar de forma apropiada y segura distintas técnicas y conocimientos interdisciplinares utilizando operadores, sistemas eléctricos y electrónicos y herramientas, teniendo en cuenta la planificación y el diseño previo, para construir o fabricar soluciones tecnológicas sostenibles que den respuesta a necesidades en diferentes contextos.

Vinculación con el Perfil de salida

Esta competencia específica se conecta con los siguientes descriptores del Perfil de salida: STEM2, STEM3, STEM5, CD5, CPSAA1, CE3, CCEC3.

Competencia específica de la materia Programación y Robótica 3:

CE.PR.3. Describir, representar e intercambiar ideas o soluciones a problemas tecnológicos o digitales, utilizando medios de representación, simbología y vocabulario adecuados, así como los instrumentos y recursos disponibles y valorando la utilidad de las herramientas digitales, para comunicar y difundir información y propuestas.

Vinculación con el Perfil de salida

Esta competencia específica se conecta con los siguientes descriptores del Perfil de salida: CCL1, STEM4, CD3, CCEC3, CCEC4.

Competencia específica de la materia Programación y Robótica 4:

CE.PR.4. Desarrollar algoritmos y aplicaciones informáticas en distintos entornos, aplicando los principios del pensamiento computacional e incorporando las tecnologías emergentes, para crear soluciones a problemas concretos, automatizar procesos y aplicarlos en sistemas de control o en robótica.

Vinculación con el Perfil de salida

Esta competencia específica se conecta con los siguientes descriptores del Perfil de salida: CP2, STEM1, STEM3, CD5, CPSAA5, CE3.

Competencia específica de la materia Programación y Robótica 5:

CE.PR.5. Hacer un uso responsable y ético de la tecnología, mostrando interés por un desarrollo sostenible, identificando sus repercusiones y valorando la contribución de las tecnologías emergentes, para identificar las aportaciones y el impacto del desarrollo tecnológico en la sociedad y en el entorno.

Vinculación con el Perfil de salida

Esta competencia específica se conecta con los siguientes descriptores del Perfil de salida: STEM2, STEM5, CD4, CC4.


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Introducción

Orientaciones didácticas y metodológicas

El enfoque para la creación de los contenidos y situaciones de aprendizaje de este curso ha sido el que impera en la propia Orden del currículo aragonés:

La finalidad de la materia Programación y Robótica es estimular la capacidad creadora del alumnado, poniéndole enfrente de situaciones problemáticas reales, y facilitándole los conocimientos y las herramientas técnicas necesarias para su resolución mediante los principios del pensamiento computacional y la programación.

Por su naturaleza eminentemente práctica combina gran cantidad de ingredientes, todos ellos indispensables en un tipo de aprendizaje que implica al alumnado y lo vuelve un agente activo: metodología de proyectos, resolución de problemas basados en situaciones reales, desarrollo del pensamiento computacional para modelizar y prediseñar, creación de prototipos, trabajo en equipo, aproximación multidisciplinar a problemas complejos, capacidad de comunicar procesos y resultados con lenguajes adecuados y aprendizaje-servicio en la búsqueda de soluciones constructivas para la comunidad.

Todo ello con la finalidad de, por un lado, ayudar al alumnado a comprender mejor el mundo que le rodea, conocer los principios de funcionamiento de los dispositivos digitales de su entorno, para configurarlos mejor e incluso modificarlos para adaptarlos a sus necesidades tal y como establecen los principios del software libre .

Por otro lado, ayudarle a contribuir a la transformación del entorno desde habilidades como la creación de software y sistemas físicos que, extrayendo información del mismo, produzcan los comportamientos que se deseen, siempre sin olvidar la perspectiva de adquirir competencias útiles que le permitan analizar críticamente la realidad y transformarla, uniendo el aprendizaje con el compromiso social (Aprendizaje-Servicio)

En cuanto al desarrollo del curso, la evolución en los contenidos conllevará a una movilización de los contenidos previos. Si realizamos un diagrama de flujo, habrá que tener en cuenta esas habilidades del pensamiento que nos ayudan a resolver problemas. Si realizamos un programa en Scratch, se aconseja realizar en primer lugar el diagrama de flujo antes de ponerse a programar. Y así sucesivamente... Se espera que de esta forma se consoliden los conocimientos y aprendizajes.

Todas las prácticas aquí planteadas han sido ideadas para poder llevarlas a clase para trabajar con el alumnado. Tienen que servir para conocer en primera instancia los diferentes software que se van a utilizar para realizar las actividades y como consecuencia que vayan adquiriendo las competencias específicas de cada bloque de contenido.

Se han planteado situaciones de aprendizaje que resuelvan problemas del mundo real, con software de código libre para que así mismo dichas soluciones puedan ser abiertas y compartidas con otros. Las soluciones planteadas pueden estar abiertas a otra interpretación y de hecho esto ayudará a estimular la creatividad de nuestros alumnos, dejándoles cierto margen para afrontarlas. Son actividades que favorecen el trabajo en grupo y también el trabajo individual a lo largo de las diferentes fases de cada actividad o proyecto.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

1. Introducción al Pensamiento Computacional

1. Introducción al Pensamiento Computacional

1.1 Definiciones previas: conceptos básicos asociados

En un momento donde vivimos rodeados de lo digital, surgen nuevas formas de inteligencias (inteligencia digital) y la aparición de nuevas habilidades como es la codigoalfabetización (codeliteracy) (Zapata-Ros, 2015). Según el autor, podemos definir la codigoalfabetización como el proceso de enseñanza-aprendizaje de la lectoescritura con los diferentes lenguajes de programación, donde lo importante no será el lenguaje de programación en sí mismo, sino la capacidad de realizar estas creaciones independientemente del propio lenguaje de programación. Una persona está códigoalfabetizada cuando es capaz de entender y crear con un lenguaje que los dispositivos programables entiendan. Según el autor, las personas que desarrollan y evolucionan esta capacidad se dice que piensan computacionalmente, que al fin y al cabo no es más que un proceso cognitivo que nos permite resolver problemas, y que finalmente será expresado de una forma códigoalfabetizada. 

González ahonda en la concreción y diferenciación de conceptos importantes en la codigoalfabetización como son algoritmo y programa. Un algoritmo es una secuencia ordenada de instrucciones u operaciones cuya ejecución en ese correcto orden nos va a dar lugar la solución deseada para un problema. La construcción de estos algoritmos se produce en nuestra mente tras un espacio de tiempo variable de reflexión personal (Moschovakis, 2001). Para facilitar la creación de estos algoritmos y estandarizar propuestas universales independientemente de los lenguajes usados por los humanos, surgieron herramientas que nos van a ayudar en la construcción visual de estos algoritmos como pueden ser los diagramas de flujo: unos símbolos o dibujos que van a representar las operaciones básicas de cualquier algoritmo: secuencia, condición, repetición e iteración (Barrera, 2013).

El paso para convertir un algoritmo en un programa es el arte de codificar. La codificación tiene que ver con crear un código fuente en un determinado lenguaje de programación partiendo de un algoritmo previamente creado (González-González, 2019). La codificación nos permite la comunicación entre los humanos que crean esos algoritmos y el lenguaje que entiendan las máquinas. Para que los dispositivos puedan ser programados y realizar las funciones que deseamos que hagan, necesitamos convertir ese algoritmo que resuelve el problema en un “programa” con un lenguaje que sí pueda ser entendido por esta máquina, para que pueda ser procesado y finalmente ejecutado (Zapata-Ros, 2015). A esta variedad de lenguajes se les denomina lenguajes de programación, de los cuales podemos encontrar cientos de ellos con diferentes propósitos (Chatley, Donaldson y Mycroft 2019). Chatley argumenta que cada lenguaje de programación, al tener sus propias reglas de sintaxis y sus propios conjuntos de instrucciones, evolucionarán en un futuro a otros miles de lenguajes de programación que surgirán a partir de estos.

Bers (2017) argumenta que mientras el pensamiento computacional tiene que ver con habilidades del pensamiento para resolver problemas, la “codificación” se puede ver como una herramienta para enseñar el pensamiento computacional. La codificación es considerada según la Agenda Digital europea como una habilidad clave ya que ayuda a poner en práctica habilidades del siglo XXI tales como la resolución de problemas, el pensamiento analítico y el trabajo en equipo (Bocconi, Chioccariello, Dettori, Ferrari y Engelhardt, 2016).

Así pues, podemos concluir que cualquier programa estará asociado a un algoritmo que habrá resuelto el problema subyacente, de la misma forma que no todos los algoritmos podrán ser expresados como un programa. Además, es importante resaltar que un mismo programa podrá ser escrito por diferentes personas, con diferentes lenguajes de programación utilizando diferente código. Todas estas definiciones y precisiones terminológicas se espera que contribuyan a una lectura más ágil y precisa de las páginas que siguen a continuación, donde nos adentramos de lleno en las diferentes formas que existen para definir el pensamiento computacional.

Todos los conceptos y literatura comentadas en este capítulo están extraídos del trabajo de revisión sistemática sobre métodos de evaluación del pensamiento computacional (Ruiz y Bustamente, 2021).

Bibliografía

Barrera, Lizardo (2013). Algoritmos y programación para la enseñanza y aprendizaje de la matemática escolar. En SEMUR, Sociedad de Educación Matemática Uruguaya (Ed.), VII Congreso Iberoamericano de Educación Matemática (pp. 6680-6687). Montevideo, Uruguay: SEMUR.

Bers, M. U. (2017). Coding as a playground: Programming and computational thinking in the early childhood classroom. Routledge.

Bocconi, S., Chioccariello, A., Dettori, G., Ferrari, A., & Engelhardt, K. (2016). Developing computational thinking in compulsory education-Implications for policy and practice (No. JRC104188). Joint Research Centre (Seville site).

Chatley, R., Donaldson, A., & Mycroft, A. (2019). The next 7000 programming languages. In Computing and Software Science, 250-282

González-González, C. S. (2019). Estado del arte en la enseñanza del pensamiento computacional y la programación en la etapa infantil. Education in the Knowledge Society, 2019, Vol. 20, n. 1, 35

Moschovakis, Y. N. (2001). What is an algorithm?. In Mathematics unlimited—2001 and beyond (pp. 919-936). Springer, Berlin, Heidelberg.

Ruiz Reinales, C., & Bustamante, J. C. Pensamiento computacional en educación infantil y primaria: una revisión sistemática.

Zapata-Ros, M. (2015). Pensamiento computacional: Una nueva alfabetización digital. Revista de Educación a Distancia (RED), (46).



Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

1. Introducción al Pensamiento Computacional

1.2 Pensamiento computacional:  evolución conceptual

La primera referencia formal de pensamiento computacional la podemos encontrar en el artículo de Wing (2006), donde define el pensamiento computacional como la habilidad que implica resolver problemas, diseñar sistemas, y entender el comportamiento humano a partir de los conceptos fundamentales de la informática, y que incluye una gama de herramientas mentales que reflejan la amplitud del campo de la informática. La autora argumenta no sólo lo que es el pensamiento computacional, sino también lo que no es:

  1. “Conceptualizing, not programming” (conceptualizar, no programar’).  Pensar como un programador de dispositivos va mucho más allá de estar capacitado para programar un ordenador, ya que ello requiere tener la capacidad de pensar en múltiples capas de abstracción.
  2. “A way that humans, not computers, think” (‘una manera en que los humanos piensan, no las computadoras’). El pensamiento computacional es una habilidad que las personas usamos para resolver problemas, no para simular el pensamiento de un ordenador. Las máquinas están a nuestra disposición y su forma de realizar las cosas es predecible. Sin embargo, las personas, tenemos la capacidad de ser creativos, inteligentes y espontáneos.  Por lo tanto, somos los humanos los que creamos estas máquinas para que nos ayuden, utilizando para ello nuestra inteligencia para acometer y resolver problemas que seguramente seríamos incapaces de poder realizar antes de inventar las máquinas.
  3. “Fundamental, not rote skill” (habilidad básica, no puramente mecánica). Se considera una habilidad básica aquella que cualquier ser humano tiene que poseer para poder desenvolverse en esta sociedad actual.
  4. “Complements and combines mathematical and engineering thinking” (se complementa y se combina con el pensamiento matemático e ingeniero). El pensamiento computacional tiene una relación en su origen con el pensamiento matemático, como el resto de ciencias. De la misma forma, tiene una relación con el pensamiento desarrollado en estudios de ingeniería puesto que lo que se crean son construcciones de sistemas informáticos para interactuar con nuestro mundo físico.
  5. “Ideas, not artifacts” (ideas, no artefactos). El pensamiento computacional no sólo está relacionado con las creaciones hardware o software que el ser humano sea capaz de diseñar, sino que también es una habilidad que podemos usar siempre para resolver problemas tan cotidianos como preparar un plato en la cocina o para gestionar mejor nuestra agenda personal.
  6. “For everyone, everywhere” (para cualquiera, en cualquier parte). El pensamiento computacional será una realidad cuando lo tengamos tan integrado en nuestras formas de abordar tareas, que lo más lógico sea que desaparezca como término y filosofía explícitos.

La Doctora Wing actualizará su propia definición argumentando que el pensamiento computacional incluye los procesos de pensamiento implicados en la formulación de problemas y de sus soluciones, de tal modo que éstos estén representados de una manera que pueda ser abordada efectivamente por un agente-procesador de información (Wing, 2008).

A partir de este momento, se suceden en el tiempo diferentes aportaciones, todas ellas enfocadas a enriquecer los currículos educativos. Fruto del trabajo colaborativo de la “Computer Science Teachers Association” (CSTA, 2011) y la “International Society for Technology in Education” (ISTE) de los Estados Unidos surge su propia aportación: un enfoque para resolver un problema concreto que ayuda a la inclusión de tecnologías digitales con ideas humanas. Todo ello no reemplaza el énfasis en creatividad, razonamiento o pensamiento crítico pero refuerza esas habilidades al tiempo que realza formas de organizar el problema de manera que el ordenador pueda ayudar (CSTA & ISTE, 2011).

En 2012 la Royal Society (Reino Unido) crea su primera definición al respecto, donde se argumenta que el pensamiento computacional es el proceso de reconocimiento de los aspectos computables en el mundo que nos rodea, y de aplicar las herramientas y técnicas de las Ciencias de la Computación para comprender y razonar sobre sistemas y procesos, tanto naturales como artificiales (Royal Society, 2012). 

Otra aportación interesante ha sido la que realizaron Grover y Pea (2013), quienes proponen los principales conceptos que ellos piensan que han generado el mayor consenso, y que por lo tanto, deberían estar presentes en cualquier currículo educativo:

  1. Abstracción y generalización de patrones (incluyendo modelos y simulaciones)
  2. Procesamiento sistemático de la información
  3. Sistemas de símbolos y representación
  4. Noción algorítmica de control de flujo
  5. Descomposición estructurada de problemas
  6. Pensamiento iterativo, recursivo y paralelo
  7. Lógica condicional
  8. Limitadores de eficiencia y rendimiento
  9. Depuración y detección sistemática de errores

Kafai y Burke (2014) amplían las definiciones anteriores con un concepto innovador, definiéndolo como un tipo de pensamiento basado en procesos ejecutados por una persona o una máquina utilizando métodos y modelos que permiten resolver problemas así como diseñar sistemas que por sí solos no podrían hacerlo.

El equipo de desarrollo de Scratch (Lamb y Johnson, 2011) el software educativo más utilizado en el mundo (Zhang y Nouri, 2019), aportó su visión definiendo el pensamiento computacional como un conjunto de conceptos, prácticas y perspectivas que está fundamentado en el ámbito de la informática. Para ellos, aprender a programar y compartir sus propias creaciones provoca en los estudiantes que se desarrollen como pensadores computacionales, aprendiendo conceptos básicos a la vez que son capaces de desarrollar estrategias de resolución de problemas, diseño y formas de colaboración (ScratchEd Team, 2015). En la misma línea, es visto como una metodología que implementa conceptos básicos de la computación que ayudan a resolver cualquier clase de problemas, forjar estrategias y ejecutar tareas de tal forma que nos permita afrontar los problemas con eficacia y posibilidades de éxito. (Olabe, Basogain y Basogain, 2015).

Para finalizar este apartado de definiciones, hilaremos la primera de las definiciones realizada por Wing (2006, 2008) con la postura de Bers (2017), la cual destaca que aunque la resolución de problemas tiene su importancia dentro de la definición más operacional del pensamiento computacional, le otorga especial relevancia al hecho de que el principal potencial es la posibilidad de expresar y crear ideas mientras programamos, argumentando que la programación, al igual que la escritura, es una forma de expresarse. Así, si con el lenguaje somos capaces de concretar múltiples y variadas representaciones, con los lenguajes de programación somos capaces también de expresarnos y crear productos (del Mar Sánchez-Vera, 2019).

Todos los conceptos y literatura comentadas en este capítulo están extraídos del trabajo de revisión sistemática sobre métodos de evaluación del pensamiento computacional (Ruiz y Bustamente, 2021).


Bibliografía

Bers, M. U. (2017). Coding as a playground: Programming and computational thinking in the early childhood classroom. Routledge.

CSTA (2011). K–12 Computer Science Standards (Level 2) [Documento en línea]. Recuperado de http://csta.acm.org/Curriculum/sub/CurrFiles/CSTA_K12_CSS.pdf

CSTA & ISTE (2011). Operational Definition of Computational Thinking for K–12 Education [Documento en línea]. Recuperado dehttp://csta.acm.org/Curriculum/sub/CurrFiles/CompThinkingFlyer.pdf

del Mar Sánchez-Vera, M. (2019). El pensamiento computacional en contextos educativos: una aproximacion desde la Tecnologia Educativa/Computational Thinking in Educational Environments: An Approach from Educational Technology/El pensament computacional en contextos educatius: una aproximado des de la Tecnologia Educativa. Research in Education and Learning Innovation Archives (REALIA), (23), 24-40.

Grover, S., & Pea, R. (2013). Computational thinking in K–12: A review of the state of the field. Educational researcher, 42(1), 38-43.

Kafai, Y. B., & Burke, Q. (2014). Connected code: why children need to learn programming. MIT Press.

Olabe, X. B., Basogain, M. Á. O., & Basogain, J. C. O. (2015). Pensamiento Computacional a través de la Programación: Paradigma de Aprendizaje. Revista de Educación a Distancia (RED), (46)

Royal Society (Great Britain). (2012). Shut down or restart?: The way forward for computing in UK schools. Royal Society.

Ruiz Reinales, C., & Bustamante, J. C. Pensamiento computacional en educación infantil y primaria: una revisión sistemática.

ScratchEd Team [Portal Web] (2015). Computational Thinking webinars. Recuperado 2 de Junio de 2015, de http://scratched.gse.harvard.edu/content/1488 

Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.

Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 366(1881), 3717-3725.

Wing, J. M. (2017). Computational thinking’s influence on research and education for all. Italian Journal of Educational Technology, 25(2), 7–14.

Zhang, L., & Nouri, J. (2019). A systematic review of learning computational thinking through Scratch in K-9. Computers & Education, 141, 103607.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

1. Introducción al Pensamiento Computacional

1.3 Componentes del Pensamiento Computacional 

El pensamiento computacional es un término que sirve para aglutinar una serie de habilidades del pensamiento, imprescindibles para cualquier estudiante del siglo XXI (Kong, Lai y Sun, 2020). El Reino Unido, a través de su currículum en Ciencias de la Computación (DFE.U, 2013), y en el que nos vamos a apoyar principalmente como base para la realización de los ejercicios de este capítulo, detalla que el pensamiento computacional lo forman 6 conceptos (lógica, algoritmos, descomposición, patrones, abstracción, y evaluación sistemática) y 5 aproximaciones (experimentación, creación, depuración, perseverancia y colaboración). Los conceptos explicados serían los siguientes:

  1. Lógica: el razonamiento lógico nos ayuda a explicar por qué algo sucede. Por esta razón, podemos utilizar el razonamiento lógico para determinar lo que queremos que haga un algoritmo de forma exacta.
  2. Algoritmos: un algoritmo está escrito para ser entendido por humanos y es una secuencia de instrucciones o conjunto de reglas para solucionar un problema. 
  3. Descomposición: la capacidad que tenemos para poder fraccionar un problema en partes más pequeñas a través de las cuales podamos resolver problemas complejos y  gestionar proyectos grandes.
  4. Patrones: estamos rodeados de patrones. Ser capaces de identificar patrones nos permitirá hacer predicciones, crear reglas y resolver problemas más generales
  5. Abstracción: la abstracción tiene que ver con simplificar las cosas; identificando qué es importante sin preocuparnos demasiado por lo anecdótico o irrelevante. La abstracción nos permite manejar la complejidad.  
  6. Evaluación sistemática: la evaluación es sistemática y rigurosa; tiene que ver con juzgar la calidad, la efectividad y la eficiencia de las soluciones, sistemas, productos y procesos. La evaluación comprueba que las soluciones aportadas resuelven el problema que nos planteábamos inicialmente no solo de una forma exitosa, sino además la más optimizada. Esto tiene mucho que ver con enseñar a nuestros alumnos que el error no tiene que generar frustración, sino que la programación nos da la maravillosa oportunidad de solucionar un error al estar en nuestras manos, en nuestra comprensión. 

Y a continuación las aproximaciones:

  1. Experimentación (‘Tinkering’): significa probar ... haciendo. En los más pequeños es la forma más natural de probar los juegos, de una forma espontánea mediante la exploración y el descubrimiento. Para los más mayores tiene que ver más con el concepto de ensayo-error-mejora.
  2. Creación (‘Creating’): Programar es un proceso creativo que implica tanto originalidad como la generación de un producto final valioso.
  3. Depuración (‘Debugging’): los errores en un algoritmo, programa o código y el proceso de encontrarlos y arreglarlos se denomina ‘debugging’. Algunos ‘bugs’ son errores lógicos, otros son errores sintácticos.
  4. Perseverancia (‘Persevering’): programar puede ser una tarea ardua y compleja en la que también vamos a necesitar de nuestra predisposición a perseverar en momentos frustrantes. 
  5. Colaboración (‘Collaborating’): colaborar significa trabajar con otros para asegurar un mejor resultado. Para la creación de un producto final, en el mundo real no lo crea una sola persona, sino que son varias personas, incluso con diferentes perfiles, las que van creando su propia parte del código para cerrar la solución final. En un caso más sencillo, también se programa por parejas validando la expresión coloquial “cuatro ojos ven más que dos”.

Estados Unidos fue otro de los países pioneros en crear un curriculum Computer Science. A través de su  Fundación Nacional para la Ciencia de los Estados Unidos (“National Science Foundation) pone en marcha una serie de acciones formativas para la comunidad educativa, como por ejemplo la iniciativa “CS Principles” (Astrachan y Briggs, 2012), cuyo objetivo es fijar y transmitir las bases de las Ciencias de la Computación al alumnado de Bachillerato y primeros años de universidad. Se destacan las siguientes ideas principales relacionadas con procesos cognitivos y operacionales previa a la que fue su primera definición del pensamiento computacional:

  1. Formular problemas de un modo que se haga posible utilizar un ordenador y otras máquinas en su resolución
  2. Automatizar soluciones a través del pensamiento algorítmico (una serie de pasos discretos y ordenados)
  3. Organizar lógicamente y analizar datos
  4. Identificar, analizar e implementar posibles soluciones con el objetivo de lograr la combinación más efectiva y eficiente de pasos y recursos
  5. Representar datos a través de abstracciones tales como modelos y simulaciones
  6. Generalizar y transferir este proceso de solución de problemas a una amplia variedad de situaciones

Otra aproximación distinta es la que realizó el grupo Google for Education (2014), detallando cuales son los 4 fases de procesos cognitivos que trabajan como una rueda circular :

  1. Descomposición de un problema o tarea en pasos discretos
  2. Reconocimiento de patrones (regularidades)
  3. Generalización de dichos patrones y abstracción (descubrir las leyes o principios que causan dichos patrones)
  4. Diseño algorítmico (desarrollar instrucciones precisas para resolver el problema y sus análogos)

En el mismo artículo se argumenta que el pensamiento computacional implica una serie de habilidades, incluyendo:

  1. Formular problemas de una manera que nos permita usar un ordenador y otras herramientas para ayudar a resolverlos
  2. Organizar y analizar de forma lógica un grupo de datos.
  3. Representación de datos a través de abstracciones como modelos y simulaciones
  4. Soluciones automatizadas a través del pensamiento algorítmico (una serie de pasos ordenados)
  5. Identificar, analizar e implementar posibles soluciones con el objetivo de lograr la combinación más eficiente y efectiva de pasos y recursos
  6. Generalizar y transferir este proceso de resolución de problemas a una amplia variedad de problemas

Lo realmente novedoso en su propuesta es que declaran que estas habilidades están respaldadas y mejoradas por una serie de disposiciones o actitudes que incluyen:

  1. Confianza al desenvolverse bien en la complejidad
  2. Persistencia al trabajar con problemas difíciles
  3. Ser más tolerante con respecto a la ambigüedad
  4. Capacidad de hacer frente a problemas abiertos (sin una solución concreta y evidente)
  5. Capacidad de comunicarse y trabajar con otros para llegar a una meta-solución común

Y aún van más allá asegurando que los conceptos de pensamiento computacional no son solo los procesos mentales (por ejemplo, abstracción, diseño de algoritmos, descomposición, reconocimiento de patrones, etc.) sino que también producen resultados tangibles (por ejemplo, automatización, representación de datos, generalización de patrones, etc.) asociados con la resolución de problemas en computación. Estos se definen de la siguiente manera:

  1. Abstracción: identificación y extracción de información relevante para definir las ideas principales
  2. Diseño de algoritmos: creación de una serie ordenada de instrucciones para resolver problemas similares o para realizar una tarea
  3. Automatización: Tener computadoras o máquinas para hacer tareas repetitivas.
  4. Análisis de datos: dar sentido a los datos mediante la búsqueda de patrones o el desarrollo de ideas 
  5. Recopilación de datos: Recopilación de información
  6. Representación de datos: representación y organización de datos en gráficos, cuadros, palabras o imágenes apropiados
  7. Descomposición: desglosar datos, procesos o problemas en partes más pequeñas y manejables 
  8. Paralelización: procesamiento simultáneo de tareas más pequeñas de una tarea más grande para alcanzar de manera más eficiente un objetivo común
  9. Generalización de patrones: creación de modelos, reglas, principios o teorías de patrones observados para probar los resultados previstos
  10. Reconocimiento de patrones: observación de patrones, tendencias y regularidades en los datos
  11. Simulación: Desarrollando un modelo para imitar procesos del mundo real

Bers (2017) amplía los elementos relacionados con el pensamiento computacional, concretándolo como un proceso expresivo organizado en siete habilidades de pensamiento computacional: algoritmos, modularidad, estructuras de control, representación, hardware / software, el proceso de diseño, y la depuración.

Para finalizar, partiendo de la propuesta original de Wing (2006), Olabe, Basogain y Basogain (2015) resumen las principales habilidades del pensamiento asociados al pensamiento computacional:

  1. Reformular un problema a uno parecido que sepamos resolver por reducción, encuadrarlo, transformar, simular
  2. Pensar Recursivamente
  3. Procesar en Paralelo
  4. Interpretar código como datos y datos como código
  5. Generalizar análisis dimensional
  6. Reconocer ventajas y desventajas del solapamiento
  7. Reconocer coste  y potencia de tratamiento indirecto  y llamada a proceso
  8. Juzgar un programa por simplicidad de diseño
  9. Utilizar   Abstracción   y   descomposición   en   un   problema complejo o diseño de sistemas complejos
  10. Elegir una correcta representación o modelo para hacer tratable el problema
  11. Seguridad  en  utilizarlo,  modificarlo  en  un  problema  complejo sin conocer cada detalle
  12. Modularizar ante múltiples usuarios
  13. Prevención, protección, recuperarse de escenario peor caso
  14. Utilizar razonamiento heurístico para encontrar la solución
  15. Planificar y aprender en presencia de incertidumbre
  16. Buscar, buscar y buscar más
  17. Utilizar muchos datos para acelerar la computación
  18. Límite tiempo/espacio y memoria/potencia de procesado

Estas tres primeras páginas han servido como base teórica para comprender los procesos de pensamiento computacional con respecto a la resolución de problemas y procesos cognitivos asociados.  Dada esta realidad, no es sorprendente que haya aparecido un interés en muchos países por introducir el pensamiento computacional como un conjunto de habilidades de resolución de problemas que los nuevos estudiantes deberían adquirir. 

Todos los conceptos y literatura comentadas en este capítulo están extraídos del trabajo de revisión sistemática sobre métodos de evaluación del pensamiento computacional (Ruiz y Bustamente, 2021).

Bibliografía

Astrachan, O., & Briggs, A. (2012). The CS principles project. ACM Inroads, 3(2), 38-42.

Bers, M. U. (2017). Coding as a playground: Programming and computational thinking in the early childhood classroom. Routledge.

DFE, U. (2013). National curriculum in England: computing programmes of study. Retrieved July, 16, 2014.

Google for Education. (2014). Exploring Computational Thinking. Recuperado 15 de octubre de 2018, de Google for Education website: https://edu.google.com/resources/programs/exploring-computational-thinking/  

Kong, S. C., Lai, M., & Sun, D. (2020). Teacher development in computational thinking: Design and learning outcomes of programming concepts, practices and pedagogy. Computers & Education, 151, 103872.

Olabe, X. B., Basogain, M. Á. O., & Basogain, J. C. O. (2015). Pensamiento Computacional a través de la Programación: Paradigma de Aprendizaje. Revista de Educación a Distancia (RED), (46)

Ruiz Reinales, C., & Bustamante, J. C. Pensamiento computacional en educación infantil y primaria: una revisión sistemática.

Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

1. Introducción al Pensamiento Computacional

1.4 Saberes básicos, competencias específicas y criterios de evaluación del bloque de pensamiento computacional

Para favorecer la creación de la programación didáctica y la unidad didáctica correspondiente, realizamos una selección de los saberes básicos, competencias específicas y criterios de evaluación que se trabajarán de forma específica en este bloque de contenidos.

Relación con los saberes básicos:

Relación con las competencias específicas:

Relación con los criterios de evaluación:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

1. Introducción al Pensamiento Computacional

Situación de aprendizaje 1. ¿Cómo pensamos de forma computacional?

Tras haber realizado al alumnado una presentación sobre el término de pensamiento computacional y las habilidades del pensamiento relacionadas, se propone un primer ejercicio  para que  puedan ser capaces de reconocerlas a la hora de afrontar la resolución de un problema. En esta primera situación de aprendizaje, no se trata de resolver el problema, sino solo de que el alumnado sea capaz de visibilizar y detectar estas habilidades del pensamiento. Se busca que el alumno afronte mejor la resolución de problemas detectando todas las claves, que como no puede ser de otra manera se encontraran dentro del enunciado.

Vamos a basarnos en el modelo británico y en las siguientes habilidades del pensamiento relacionadas con el pensamiento computacional que ya han sido comentadas en el apartado 1.3razonamiento lógico, pensamiento algorítmico, descomposición, patrones, abstracción y evaluación sistemática.

A continuación planteamos el enunciado del problema a resolver, teniendo en cuenta que sólo hay que identificar algunas de estas habilidades del pensamiento. En el capítulo posterior diseñaremos el diagrama de flujo para este problema, y en el siguiente lo programaremos. Estas serán nuestras 3 fases a la hora de resolver cualquier problema de programación:

  1. Interpretación del enunciado 
  2. Diagrama de flujo
  3. Codificación en lenguaje de programación

Enunciado

María es una alumna de 3º ESO que está muy interesada en simular el comportamiento de su calculadora y para ello quiere crear un programa que simule el funcionamiento de una calculadora básica donde introducimos 2 números y 4 operaciones posibles (+, -, /,*) teniendo en cuenta que la división tiene un caso especial (el segundo número no puede ser un cero). Tras cada operación matemática exitosa, la calculadora volverá a su estado inicial esperando realizar una nueva operación.

El trabajo a realizar es partiendo del enunciado, identificar todas las habilidades del pensamiento computacional vistas en clase para empezar a poner la solución como paso previo a la creación del diagrama de flujo.

Solución:

Seguramente no hay una única solución posible, pero una posible solución sería la siguiente:

Descomposición. El problema general tiene unos cuantos subproblemas a resolver:

Patrones. Operaciones que se van a repetir dentro de nuestro código:

Abstracción. Información no relevante para resolver el problema

Pensamiento algorítmico. Secuencia de órdenes para resolver el problema en un orden en concreto:

  1. Pedir primero número y asegurarnos de que sea un número
  2. Pedir segundo número y asegurarnos de que sea un número
  3. Pedir una operación y asegurarnos de que sea una de las permitidas
  4. Si es una suma, realizo la operación de suma de los dos números y saco resultado por pantalla
  5. Si es una resta, realizo la operación de resta de los dos números y saco resultado por pantalla
  6. Si es una multiplicación, realizo la operación de multiplicación de los dos números y saco resultado por pantalla
  7. Si es una división, compruebo que el segundo número no sea un cero y en tal caso vuelvo a pedir segundo número hasta que sea distinto de cero. A continuación visualizo el resultado de la división
  8. Vuelvo al comienzo para esperar una nueva operación

Como podemos suponer, no hay una única solución muchas veces para el mismo problema, y es genial que el alumnado pueda darse cuenta de ello e incluso se pueda debatir en la pizarra y que cada uno argumente pros y contras. En este caso, una posible solución alternativa sería que antes de pedir el segundo número podría pedir la operación y a continuación pedir el segundo número de tal forma que puedo controlar en ese paso si es un cero o es un número correcto para realizar la división. 

Por último, en esta serie de pasos para resolver un problema, podremos a su vez descomponerla en otras órdenes tal y como hemos visto en la parte de descomposición, llegando a hacer esta secuencia de órdenes más detallada.

Evaluación. Antes de ponernos a dar los siguientes pasos, asegurarnos que no nos hemos dejado nada clave en la resolución del problema

Lógica. Habremos aplicado razonamiento lógico para la detección de entender el enunciado, sus requisitos, las salidas esperadas, y por último, los aspectos a controlar y tener en cuenta.


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

2. Diagramas de Flujo

2. Diagramas de Flujo

2.1 Qué son y cómo crear diagramas de flujo

Un algoritmo es una sucesión de pasos que se deben realizar para resolver un problema.

Un diagrama de flujo es una forma de representar un proceso o algoritmo de manera visual, estructurada y organizada. Es una herramienta muy útil para organizar y estructurar una tarea de programación antes de entrar directamente con el código.

Ejemplo de diagrama de flujo:

image-1654533440823.png

Aunque existen diversos programas informáticos para la realización de diagramas de flujo, en este curso utilizaremos una funcionalidad de PSeInt que lo permite. No obstante, y atendiendo a la cada vez más abundante evidencia científica al respecto, recomendamos que los diagramas de flujo se aborden con el alumnado en primer lugar con papel y boli, y si es pertinente de forma colaborativa, dejando para el software simplemente su edición final para incluir como documentación del programa.

Elementos del diagrama de flujo

Un diagrama de flujo está formado fundamentalmente por los siguientes elementos:

image-1654535499072.png

image-1654535632765.png

image-1654535451517.png

image-1654535421186.png

image-1654535543002.png

Ejemplos sencillos de diagramas de flujo

Ejemplo 1: Diagrama de flujo de un programa que a partir de dos números los suma y muestra el resultado en pantalla

SOLUCIÓN:

Diagrama de flujo:

image-1654535965816.png

Ejemplo 2: Diagrama de flujo de un programa que a partir de dos números compara cuál es mayor y lo muestra en pantalla.

Diagrama de flujo:

image-1654536227461.png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Esta explicación se ha extraído del curso de Aularagón: Fundamentos de programación estructurada con Pseint y Scratch

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

2. Diagramas de Flujo

2.2 Cómo nos van a ayudar en nuestra asignatura de 3º ESO

Los diagramas de flujo son piezas clave en la enseñanza de programación ya que nos van a ayudar a representar de forma gráfica la solución a un problema.

Para favorecer la creación de la programación didáctica y la unidad didáctica correspondiente, realizamos una selección de las competencias específicas, criterios de evaluación y saberes básicos que se trabajarán de forma específica en este bloque de contenidos.

Relación con las competencias específicas y criterios de evaluación

Competencia específica de la materia Programación y Robótica 1 y criterios de evaluación implicados:

Competencia específica de la materia Programación y Robótica 3 y criterios de evaluación implicados:

Competencia específica de la materia Programación y Robótica 4 y criterios de evaluación implicados:

Relación con los saberes básicos:

Bloque A. Proceso de resolución de problemas

El proceso de resolución de problemas es la búsqueda de soluciones tecnológicas a una necesidad o a un determinado problema, siguiendo una serie de pasos. Si bien se da una gran importancia a las fases de investigación, ideación, diseño y fabricación, también se incluye un adecuado tratamiento de la fase de presentación y comunicación de resultados como aspecto clave para la difusión de los trabajos realizados, hecho que relaciona los saberes básicos de los bloques A y B.

Bloque B. Comunicación y difusión de ideas

En el mundo en el que nos movemos, tan importante es hacer las cosas, como difundirlas de forma correcta. Nuestro alumnado utilizará técnicas de representación en dos y tres dimensiones para la elaboración de nuestros proyectos, además de generar, publicar y difundir la información mediante herramientas digitales.

Bloque C. Pensamiento computacional, programación y robótica

Aplicaremos el pensamiento computacional para plantear procedimientos, la abstracción, la descomposición en tareas más simples con el objetivo de llegar a una solución del problema que pueda ser ejecutada por un sistema informático. Además, usaremos la programación y la robótica como medio de comunicación y herramienta de aprendizaje con el fin de mejorar la autonomía y creatividad a la hora de resolver problemas.


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

2. Diagramas de Flujo

Situación de aprendizaje 2 . Pon un diagrama de flujo en tu vida cotidiana

Como ya hemos visto en las dos páginas anteriores, los diagramas de flujo nos ofrecen un método visual para la resolución de problemas siguiendo una serie de pasos con una simbología visual universal.

Tras explicar los símbolos al alumnado, se recomienda comenzar con una actividad distendida que les ayude a comprender la forma de trabajo de los diagramas de flujo. Para ayudar a crearlos más fácilmente os compartimos una diapositiva de Google Presentaciones con todos los símbolos necesarios para crear diagramas de flujo. Solo tendrás que hacerte una copia (iniciar sesión con cuenta de Gmail y Archivo-Crear una copia ) y a partir de aquí ir haciendo copias de los símbolos que necesites para ir generando tu diagrama de flujo. Puedes ver el original en este ENLACE

Símbolos básicos con diagramas de flujo - Presentaciones de Google.png


Planteamiento: dado un problema a resolver, mediante el uso de los símbolos típicos de los diagrama de flujo, utilizar los necesarios para visualizar la resolución del problema. Este problema a resolver se recomienda que sea elegido por los propios alumnos que pueden trabajar solos en grupos de 2 o 3 alumnos. Cada grupo encontrará su propia motivación para representar su idea en un diagrama de flujo.

Algunas de las ideas que se pueden facilitar podrían ser: ¿qué hago desde que me levanto por la mañana hasta que llego al colegio? ¿cómo cocinar mi plato favorito? ¿qué hago en mi tiempo libre?

Ejemplo 1. Representar el proceso de prepararse una taza de té. 

Tenemos que dar la opción de preguntar si lo desea con leche, con azúcar, y finalmente, si quiere preparar otro más.

FLOWCHARTS - COMPUTATIONAL THINKING - Presentaciones de Google.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

2. Diagramas de Flujo

Situación de aprendizaje 3. ¿Cómo funciona una calculadora básica?

En esta situación de aprendizaje ya sí nos metemos en un actividad en la que en primer lugar resolveremos su diagrama de flujo y en el capítulo siguiente la programaremos. Esta forma de trabajo de incluir todo lo necesario para realizar un proyecto es la que se recomienda utilizar al menos en los proyectos a realizar por el alumnado. Se menciona en la siguiente competencia específica de la asignatura:

Así como en el siguiente criterio de evaluación:

Y por último, también lo podemos encontrar en la concreción de los saberes básicos:

Enunciado de situación de aprendizaje 3

Realizar un diagrama de flujo que simule el funcionamiento de una calculadora básica donde introducimos 2 números y 4 operaciones posibles (+, -, /,*) teniendo en cuenta que la división tiene un caso especial (el segundo número no puede ser un cero). Tras mostrar en pantalla el resultado final se ofrecerá la posibilidad de seguir realizando operaciones.

Mostramos dos soluciones. En la de izquierda el usuario se limita simplemente a sacar un mensaje de error si el segundo operando de una división es cero y en la de la derecha se vuelve a pedir el número y se comprueba constantemente que sea distinto de cero, y en tal caso, realizará la operación de la división.

PENSAMIENTO COMPUTACIONAL y LOMLOE - Asociación Psicopedagogía de Aragón - Presentaciones de Google.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

2. Diagramas de Flujo

Situación de aprendizaje 4. Adivinando el número secreto

Para terminar con el capítulo de diagramas de flujo vamos a plantear el típico ejercicio de adivinar el número secreto. Los condicionantes son los siguientes:


SOLUCIÓN

FLOWCHARTS - COMPUTATIONAL THINKING - Presentaciones de Google (1).png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

3. Programación

3. Programación

Scratch - Entorno de programación por bloques

Scratch es un entorno de programación de programación por bloques muy visual que fue diseñado por el MIT (Massachusetts Institute of Technology), especialmente orientado a que los niños puedan aprender a programar, creando videojuegos, arte o contando historias que puedan afianzar las habilidades del pensamiento computacional así como estimular su creatividad. 

Está muy basado en el sistema de bloques encajables al estilo de LEGO que pueden ser arrastradas a la pantalla de creación de código, lo cual lo convierte en un entorno de programación sencillo e intuitivo ya que tienes al alcance de la vista todas las instrucciones que puedes utilizar, agrupadas por temáticas y cada uno con su propio código de colores.

Para programar en Scratch, tendremos que ir a su página y a partir de aquí tendremos dos opciones:

Scratch - Scratch Offline Editor.png

En la página Web de Scratch hay muchos otros recursos para ayudar a aprender Scratch:

Para conocer más sobre Scratch puedes acudir a los siguientes enlaces, pertenecientes al libro Enseña Pensamiento Computacional con Scratch de CATEDU


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

3. Programación

Situación de aprendizaje 5. Programando la calculadora básica

Vamos a programar el ejercicio planteado en los diagramas de flujo sobre cómo programar una calculadora básica. Recordamos que solo puede haber las 4 operaciones básicas (+ - * /) y que tenemos que controlar que el segundo número no sea un cero si se ha elegido la división como operación. Tras mostrar el resultado, preguntaremos si quiere seguir jugando.

Como primera solución poco rigurosa, al detectar que el segundo número es un cero o si no introduce una de las 4 operaciones deseadas, simplemente sacará un mensaje de error y a continuación preguntará si quiere seguir jugando. El diagrama de flujo sería algo parecido a lo siguiente:

FLOWCHARTS - COMPUTATIONAL THINKING - Presentaciones de Google (2).png

La experiencia de juego debería ser como la siguiente:

Esta primera resolución del problema tendría un código fuente parecido al siguiente:

Situación de aprendizaje 5. Programando la calculadora básica v1 on Scratch.png


Si lo que queremos es asegurarnos que el segundo número no sea un cero en una división y programar la solución para que  la ejecución del programa no continue hasta que se introduzca algo diferente a un cero, habría que cambiar el código por lo siguiente:

Situación de aprendizaje 5. Programando la calculadora básica v2 on Scratch.png


Y la experiencia de juego sería así:

EJERCICIO EXTRA PROPUESTO:

Modificar el código propuesto para que el programa solo pueda aceptar como válidas una de las 4 operaciones deseadas y en el caso de la división el programa no continua hasta que el segundo dígito sea distinto de un cero. El programa tampoco continua hasta que se introduzca una operación válida

La experiencia de juego del programa quedaría de la siguiente forma:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

3. Programación

Situación de aprendizaje 6. Programando las tablas de multiplicar

Esta práctica nos viene genial para practicar el uso de bucles junto con variables que se van a tener que ir incrementando para lograr nuestros objetivos. 

Podemos plantear dos ejercicios referidos a las tablas de multiplicar:

  1. Pedir el número de la tabla de multiplicar que queramos sacar por pantalla. Lo podemos complicar para que el usuario solo pueda meter números del 1 al 10 ambos inclusive y también para que introduzca S o N como únicas respuestas posibles ante la pregunta de si quiere seguir jugando.
  2. Crear un programa que automáticamente nos visualice en pantalla las 10 tablas de multiplicar. Este ejercicio nos viene muy bien para practicar el concepto de meter un bucle dentro de otro, algo que al alumnado novel en programación le cuesta entender un poco al principio

Opción 1. Mostrando una tabla de multiplicar elegida por el usuario

El diagrama de flujo que resuelve este problema sería algo parecido a lo siguiente:

FLOWCHARTS - COMPUTATIONAL THINKING - Presentaciones de Google (3).png

Se recomienda siempre que el alumnado no intente programar el ejercicio en su totalidad, sino que vayan identificando las cosas que tienen que hacer, comiencen por el problema a resolver y posteriormente las particularidades. En este caso, se recomienda que los pasos a la hora de afrontar el algoritmo sean los siguientes:

  1. Programar la lógica referente a pedir un número, visualizar su tabla de multiplicar y finalmente preguntar si quiere seguir jugando, todo ello dentro de un bucle principal.
  2. Programar el requisito de que el número esté comprendido entre 1 y 10, ambos inclusive
  3. Programar que el usuario solo pueda introducir una S o una N ante la pregunta de si quiere seguir jugando.

El programa en su fase 1 tendría un código parecido al siguiente:

Situación de aprendizaje 6. Tablas de multiplicar on Scratch (1).png

Cuando ya sabemos que nuestro programa funciona en líneas generales, podríamos incluir la programación de la limitación de que hasta que el usuario no introduzco un número entre 1 y 10 ambos inclusive, el programa no continua:

Situación de aprendizaje 6. Tablas de multiplicar on Scratch (1).png

Finalmente, introducimos la programación de que la respuesta final del usuario solo puede ser S o N. Es el mismo tipo de bucle que en la anterior limitación:

Situación de aprendizaje 6. Tablas de multiplicar on Scratch (3).png

Un aspecto importante a destacar es que si bien es cierto que en la programación de ambas limitaciones hemos utilizado el mismo tipo de bucle con dos condiciones a tener en cuenta, en el primero hemos utilizado una unión de esas dos condiciones con el bucle AND, puesto que necesitábamos que ambas se cumplieran, y en el segundo hemos utilizado un operador OR porque nos bastaba con que se cumpliera una de las dos. Estaría bien enseñar a los alumnos (si es que aún no lo saben) como son las tablas lógicas del AND y del OR.

img4.png (640×480).pngFuente: https://www.monografias.com/trabajos104/simplificacion-circuitos-logicos-algebra-conmutacion/img4.png

Este ejercicio, aunque parezca sencillo en su formulación, contiene en su programación unos cuantos aspectos básicos en el aprendizaje de programación que deben quedar bien asentadas para futuros aprendizajes más profundos.

Finalmente, la experiencia de juego sería algo parecida a lo siguiente:




Propuesta Extra Opción 2. Visualizando todas las tablas de multiplicar del 1 al 10

¿Te atreves a realizar este programa por tu cuenta? Y la experiencia de juego sería como se puede ver a continuación: 

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

3. Programación

Situación de aprendizaje 7. Programando el juego de adivina el número secreto

Vamos a realizar un programa donde la máquina va a generar números aleatorios y nosotros lo tenemos que adivinar. Condicionantes del programa:

Para crear un número aleatorio tenemos la instrucción PICK RANDOM (inglés) o NÚMERO ALEATORIO ENTRE (español)

Situación de aprendizaje 7. Adivina el número secreto v1 on Scratch (1).pngSituación de aprendizaje 7. Adivina el número secreto v1 on Scratch.png
SOLUCIÓN COMENTADA

A continuación la solución al programa con una serie de aclaraciones:

  1. Hay que iniciar la variable RESP (variable para controlar si queremos seguir jugando o no) con un valor inicial que al menos nos permita entrar la primera vez 
  2. Antes de comenzar a intentar adivinar el número, tendremos que resetear el contador de INTENTOS a 0
  3. Instrucción para generar el número aleatorio
  4. Resetear la variable ACERTADO a N, ya que la pondremos a S cuando hayamos acertado
  5. Comenzamos con los tres IF para preguntar si es mayor, menor o hemos acertado y dar información al usuario
  6. Poner a S la variable ACERTADO en caso de acertar, para romper el bucle de seguir intentándolo
  7. Sacar el mensaje al usuario para decirle cuántos intentos ha tardado en adivinar el número. Esto lo haremos al acabar el bucle anterior
Situación de aprendizaje 7. Adivina el número secreto v1 on Scratch (2).png

Y a continuación la experiencia del juego:


PROPUESTA DE MEJORA

Introduce las siguientes mejoras al programa:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

3. Programación

Situación de aprendizaje 8. Art coding

En este programa vamos a dibujar figuras geométricas que se van a ir desplazando por la pantalla para crear formas geométricas que van cambiando de colores.

Para realizar este programa, en primer lugar tenemos que sacar cómo dibujar una figura geométrica. Para ello utilizaremos un grupo concreto de instrucciones del bloque LÁPIZ:

Situación de aprendizaje 8. Art Coding v1 on Scratch.png

Las instrucciones BAJAR LÁPIZ y SUBIR LÁPIZ hacen que la herramienta de pintar mientras nos movemos aparezca y desaparezca. Por lo tanto, si nos movemos en el escenario y tenemos puesta la instrucción de BAJAR LÁPIZ, se irá pintando una línea al mismo tiempo que nos movemos. 

Lo primero que deberíamos realizar en nuestro programa es preguntarle al usuario cuántos lados tiene la figura geométrica que desea visualizar en pantalla. Dicho resultado lo guardaremos en una variable porque será la clave para poder generalizar la solución a cualquier número de lados. Hasta este momento, nuestro código debería tener algo parecido como lo siguiente:

Situación de aprendizaje 8. Art Coding v1 on Scratch (1).png

Aclaraciones en este punto:

Las instrucciones básicas para dibujar una figura geométrica serían:

Como en este curso lo que nos interesa es trabajar las habilidades del pensamiento, tendríamos que buscar una solución que nos sirva para generalizar nuestras instrucciones de programación para que nos sirva para cualquier número de lados. Y para ello tendríamos que ejecutar un bucle que nos sirva para tal propósito, teniendo en cuenta que se deberá de repetir tantas veces como LADOS hayamos elegido, y que en su interior tendrá las dos instrucciones indicadas anteriormente. Concretamente, la instrucción del giro, para generalizar, tendremos que incluir la variables LADOS como divisor del número 360.

Debería ser un bucle como el siguiente:

Situación de aprendizaje 8. Art Coding v1 on Scratch (2).png

En este punto del programa ya habremos sido capaces de dibujar una figura geométrica con el número de lados que a nosotros nos haya interesado. A partir de aquí vamos a complicarlo un poco más. Vamos a intentar hacer algo como lo siguiente:

Situación de aprendizaje 8. Art Coding v1 on Scratch (3).png

En este caso, se ha pintado un triángulo con un tamaño pequeño (5 pasos de movimiento). Nuestro objetivo será ir pintando esta figura geométrica de tal manera que vaya llenando toda nuestra pantalla. Para ello serán necesarias las siguientes acciones:

Para ir realizando esta figura que va aumentando su tamaño, la clave va a estar en ir aumentando el número de pasos que damos tras pinta nuestra figura. Para ello, podemos crear una variable con valor inicial por ejemplo de 1, y cuyo valor vaya aumentando en 1 después de que haya sido pintada la figura. Todo esto debería estar incluido dentro de un bucle POR SIEMPRE. Quedaría algo como se puede ver a continuación:

Situación de aprendizaje 8. Art Coding v1 on Scratch (5).png

El programa tendría una ejecución parecido a lo siguiente:


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

4. Robótica: Software + Hardware

4. Robótica: Software + Hardware

Robótica: Software + Hardware

El origen etimológico de la palabra robótica lo encontramos en el checo. En concreto, en la unión de dos términos: robota que puede definirse como “trabajo forzado” y en rabota que es sinónimo de “servidumbre”. De la misma forma, hay que subrayar que la primera vez que empieza a hacerse referencia más o menos a ella fue en el año 1920 en la obra del escritor Karel Capek titulada “Los robots universales de Rossum”.

La robótica es la ciencia y la técnica que está involucrada en el diseño, la fabricación y la utilización de robots. Un robot es, por otra parte, una máquina que puede programarse para que interactúe con objetos y lograr que imite, en cierta forma, el comportamiento humano o animal.

Dicho esto, y tomando las palabras "programación, diseño y fabricación" de la definición de robótica, podemos ver con claridad que todos nuestros proyectos van a ser el resultado de la unión de todas ellas, y por tanto serán una composición de hardware más software. 

EL hardware que en este curso vamos a utilizar es Arduino Uno, y va a ser el "cerebro" que se ocupará de ejecutar las instrucciones que en él programemos. En el siguiente capitulo, se describen las principales características de este microprocesador, y como veremos, dispone de una serie de pines donde conectaremos nuestras entradas y salidas (sensores y actuadores). 

En función de nuestro proyecto, definir las entradas y salidas involucradas, determinar las correctas conexiones teniendo en cuenta las especificaciones de cada sensor o actuador, puede convertirse en una tarea más o menos compleja, por lo que es fundamental que para ello diseñemos con anterioridad nuestro circuito. Esta tarea podemos realizarla sobre papel, o utilizar cualquiera de las herramientas digitales que existen para ello. En concreto, para este curso utilizaremos EasyEDA, la cual entre otras, permite representar nuestro esquema de conexiones de una forma sencilla y posee una biblioteca muy extensa a la hora de buscar nuestros componentes. 

Finalmente, una vez diseñado  y montado nuestro prototipo, será el momento de pensar la programación y grabarla en nuestro Arduino. Para ello, en este caso utilizaremos ArduinoBlocks que es una herramienta de programación por bloques que facilitará en gran medida este trabajo. 

A continuación, en los siguientes temas por tanto, veremos qué es Arduino, como realizar nuestros diseños con EasyEDA y finalmente como programar nuestro conjunto con ArduinoBlocks  para poder observar los resultados. 

!Vamos a ello!

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

5. Arduino

5. Arduino

Microcontrolador: Arduino

Visitando la web de Arduino, podemos leer: 

"Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador re-programable y una serie de pines hembra. Estos permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla "

Todos los proyectos que se van a desarrollar en este curso, lo harán sobre la placa de Arduino UNO, por tanto, esta placa va a contener el cerebro de nuestros proyectos y hará de interfaz de entrada/salida de nuestros sensores y actuadores.  

A lo largo de los siguientes ítems, abordaremos qué es y cómo podemos utilizar esta placa para adentrarnos en el mundo de la robótica.

Un poco de historia

Hoy en día existen numerosas plataformas, con microprocesadores similares al de Arduino que pueden ser utilizadas en el aula. Todas ellas son compatibles con el IDE de Arduino, y esto no es casual, sino más bien obligatorio. El IDE es el entorno de desarrollo integrado que ofrece dicha plataforma y en este caso, la de Arduino es la más completa y compatible con otros lenguajes de programación.  

Esto es así porque Arduino fue la primera plataforma que se creó en el año 2005 el Instituto de Diseño Interativo de Ivrea (Italia). Arduino apareció por la necesidad de contar con un dispositivo para utilizar en aulas que fuera de bajo coste. La idea original fue, fabricar una placa para uso interno de la escuela.

Por último, es obligatorio mencionar en este apartado a David Cuartielles, uno de los cofundadores de Arduino, por ser el único español en el equipo, en concreto, Zaragozano. 

Arduino desde la mirada del alumnado


ArduinoUno.png

Una definición simple de robótica podría ser el resultado de combinar sensores y actuadores para que en su conjunto hagan determinadas acciones. En este sentido, para que una alarma se dispare cuando detecta una intrusión, un robot de limpieza gire al detectar un obstáculo, o un limpiaparabrisas se active al caer las primeras gotas de lluvia, requieren además de los sensores y actuadores que componen estos sistemas, una unidad central capaz de procesar el algoritmo lógico que va desencadenando las acciones. 

Arduino reúne todas estas características. Cuenta con una serie de pines que serán configurados como entradas, en el caso de querer leer información procedente de los sensores, o serán  configuradas como salidas en el caso de querer accionar un actuador.  Más adelante explicaremos en profundidad los sensores y actuadores. 

Además, cuenta con un microprocesador reprogramable sobre el cual vamos a poder subir o cargar nuestro programa y se encargará de leer la información de los sensores conectados en los pines de entrada, y activar (poner en estado ALTO o 5 voltios) o desactivar (poner en estado BAJO o 0 voltios) los pines de salida.

Dicho de otro modo, y tomando uno de los ejemplos anteriormente mencionados, podríamos configurar nuestro Arduino para crear un sistema de seguridad simple, del siguiente modo: 

Definiremos el Pin2 de nuestro Arduino como una entrada. En dicho pin, conectaremos nuestro sensor de presencia que siempre se encuentra a 0 voltios, excepto cuando detecta una presencia y entonces se eleva a 5 voltios. Por tanto es muy sencillo: únicamente tenemos que leer repetidamente (en bucle) el valor del Pin2 de nuestro Arduino, y preguntarnos si vale 5 voltios, o en su defecto se encuentra en estado alto. Si esta condición se cumple es que hay una intrusión y por tanto deberemos activar la sirena para alarmar de ello. 

La sirena se comporta como un actuador. Se activa cuando se cumple la condición de haber una intrusión. Para conseguir esto, únicamente debemos definir el Pin3 de nuestro Arduino como salida y mediante la programación la activaremos en el momento correspondiente. 

Como puedes ver, el mayor peso va a estar siempre en nuestra programación. Debemos tener mucho cuidado con la secuenciación y contemplar toda la lógica que va a definir el comportamiento, y por tanto buen funcionamiento de nuestros proyectos. También va a ser de suma importancia como definimos en cada uno de ellos, los pines de nuestro Arduino, para lo cual tendremos que tener siempre claro cuales vamos a utilizar, y si van a ser de entrada o de salida. En el último punto, trabajaremos unos ejercicios sencillos que comenzarán a abrir tu imaginación y creatividad que junto a la del alumnado serán los únicos limites de vuestros proyectos, pero antes de llegar ahí, veamos en profundidad los sensores y actuadores y como programar nuestro Arduino desde un entorno gráfico. 

Para conocer más sobre Arduino puedes acudir a los siguientes enlaces, pertenecientes al libro Programa Arduino Mediante Código de CATEDU

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

5. Arduino

Sensores

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

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

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

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

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

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

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

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

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

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

Ejemplo: el sensor DHT11 que mide temperatura y humedad.

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

Sensores modulares más comunes.

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

Sensor pulsador

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

Un ejemplo de uso

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

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

image-1650097141548.pngimage-1650097157889.png

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

logicainvertida.png

Sensor Táctil Capacitivo. 

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

Un ejemplo de uso en

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

Potenciómetro y joystick

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

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

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

Ejemplos de uso:

 Sensor Fotocélula LDR. 

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

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

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

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

image-1650370178627.png

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

2022-04-19 14_05_05-ArduinoBlocks.png

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

sensorluzarduinodigital.jpg

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

sensorluzarduino.jpg

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

Sensor de Ultrasonidos.

Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. El más común es el HC-SR04. Para saber+

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

Ejemplos de uso:

Pines de conexión:  VCC   Trig (Disparo del ultrasonido)   Echo (Recepción del ultrasonido) y  GND

La distancia se calcula con esta fórmula:
Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2
 - Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo.
  - Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti.

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

Sensor DHT11 (Temperatura y Humedad).

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

Ejemplos de uso:

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

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

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

dht11-pines.png

Ejemplo de uso de un DHT11 sin encapsular:

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

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

lm35.jpg

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

Sensor IR

Es un sensor para distancias cortas hasta 2cm y no da la distancia, simplemente si hay o no hay obstáculo, pero son muy baratos, unos 0.30€. Aquí tienes un ejemplo de evita obstáculos en un rover marciano con Raspberry Para saber más te recomendamos esta página de Luis Llamas

IR Sensor Module for Arduino Projects | 3D Model by Veer AI on Sketchfab

Sensores modulares menos comunes.

Sensor llama

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

Un ejemplo de su uso:

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

Sensor de humedad de suelo.

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

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

Sensor de humedad.

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

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

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

Sensor de efecto Hall.

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

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

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

De Luis Llamas CC-BY-NC

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

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

Sensor inclinación

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

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

Sensor de golpe

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

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

Sensor de pulso cardíaco.

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

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

Sensor de Alcohol.

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

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

Sensor de CO2

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

CCS811-KEYSTUDUUDIO.png


Sensor de Gas (MQ2).

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

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

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

Resistencia Flex

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

Datasheet Sparkfun

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

Es decir:

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

Sensor de movimiento con Microondas

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

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

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

image-1650097316026.png

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

image-1650097889205.png

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

 

Los contenidos de está página están extraídos del curso Programa Arduino mediante Código de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

5. Arduino

Actuadores

Los contenidos de está página están extraídos del curso Programa Arduino mediante Código de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

6. Diseño 2D de circuitos electrónicos: EasyEDA

6. Diseño 2D de circuitos electrónicos: EasyEDA

Diseño de circuitos electrónicos: EasyEDA

Las herramientas EDA (Electronic Design Automation) son herramientas diseñadas específicamente a proyectos y producción de sistemas electrónicos, abarcando desde la creación del circuito integrado hasta el desarrollo de placas de circuito impreso. 

Para el diseño de los circuitos electrónicos de nuestros proyectos en este curso te proponemos la utilización de EasyEDA.

La principal característica de EasyEDA es que gracias a las bibliotecas disponibles, tendremos la posibilidad de diseñar nuestros esquemas de forma fácil y rápida. Además es gratuita, no requiere instalación y es online.

Para utilizar EasyEDA no es necesario disponer de una cuenta, lo cual es siempre beneficioso cuando trabajamos con alumnado. No obstante, si queremos que nuestros proyectos se queden guardados en nuestro perfil,  tenemos que crearnos una cuenta accediendo a a este link, pulsando sobre Register. 

EasyEDA - Online PCB design & circuit simulator.png

Una vez hayamos registrado nuestro usuario, accederemos a la plataforma. Si lo preferimos, también podemos acceder desde una cuenta de Google, y seleccionaremos desplegando Products, Standard Online Editor.

accesoEasyEDA.jpg

Es el momento de crear un nuevo proyecto (File-->New-->Project) donde indicaremos el titulo del proyecto y una breve descripción.

NewProjectEasyEDA.jpg

Una vez realizados estos pasos, estamos ya ante nuestro espacio de trabajo. En él, iremos buscando los componentes que tenemos que utilizar y una vez situados en la pantalla, comenzaremos las conexiones de cada componente. 

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (1).png

Por ejemplo, para realizar un semáforo adaptado para personas invidentes, vamos a necesitar incorporar: un Arduino UNO, una tira de leds Neopixel y un zumbador. 

Por tanto para añadir los componentes, accederemos al icono de la lupa (Lybrary) y los buscaremos. Empezamos por el Arduino Uno. Introducimos en el campo de búsqueda "Arduino Uno". Nos deja elegir entre varias librerías y una de ellas, es la que se alimenta de las contribuciones de los usuarios. En ella es habitual encontrar lo que necesitamos, aunque siempre deberemos verificar que se trata de nuestro componente. Como se ve en la imagen, al realizar la búsqueda aparecen muchos diseños, y seleccionaremos el que más nos convenga fijándonos en la previsualización verificando de este modo que es el diseño que buscamos. 

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (2).png

Una vez hayamos pinchado con el ratón en el icono "Place", la ventana de búsqueda desaparece y nos deja posicionar el elemento seleccionado. Bastará con buscar el lugar donde queremos dejarlo y volver a hacer clic con el ratón. Para dejar de poner elementos, utilizaremos la tecla ESC.

El siguiente paso será añadir la tira led de Neopixel. Una vez que la depositamos en nuestra área de trabajo, es posible cambiar la orientación de los elementos pulsando la tecla "R" de rotar. 

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (3).png

Y por último el Zumbador (buzzer)

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (4).png

Con todos los componentes en el área de trabajo solo nos falta cablearlos. Para ello utilizaremos las herramientas de cableado y uniremos los pines correspondientes obteniendo el siguiente circuito:

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (5).png

Por último decir que también existen otras herramientas para el diseño de circuitos electrónicos como Tinkercad o Fritzing (esta última con versión offline disponible)

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

7. ArduinoBlocks

7. ArduinoBlocks

¿Qué es Arduino Blocks?

Esto no pretende ser un tutorial exhaustivo de ARDUINOBLOCKS, sino una guía rápida.
ARDUINOBLOCKS es un programa que tiene muchas posibilidades. Si quieres saber más sobre ARDUINOBLOCKS tutoriales, ejemplos, foro.... te recomendamos http://arduinoblocks.didactronica.com/ o el libro Arduino blocks - libros y tutoriales

¿Por qué una programación con bloques?

Arduino se programa en lenguaje C++ (con algunas variaciones  para  simplificarlo).  Para  programar normalmente  se  utiliza  el  IDE  (“Integrated  Development Environment"/"Entorno  de  Desarrollo  Integrado")  de Arduino,  que  permite  escribir  el  código,  compilar  el programa  (crear  el  programa  binario  para  el  procesador Arduino) y grabarlo en la placa Arduino a través del puerto USB.  El  IDE  de  Arduino  se  puede  descargar  desde  la  web oficial.  Es totalmente libre (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

2022-04-13 12_45_21-PROYECTO 00 CONOCEMOS ARDUINO. - PDF-XChange Viewer.png 
(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

Sin embargo pensando en edades más tempranas se han desarrollado formas más sencillas e intuitivas de programar Arduino como son los lenguajes de programación por bloques. De todos estos lenguajes cabe destacar ARDUINOBLOCKS

Gracias a este lenguaje visual podemos programar las placas Arduino sin necesidad de escribir ni una sola línea de código, de esta forma podemos empezar a realizar proyectos con Arduino de una forma muy rápida y a edades más tempranas.  La única desventaja es que el lenguaje por código tiene todo el potencial que requiere la programación de un experto.

Mismo programa creado con el IDE de Arduino en C++ (imagen de la izquierda) y con Arduinoblocks (imagen de la derecha).
  (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

2022-04-13 12_47_24-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

  (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

  Para trabajar con Arduinoblocks debemos ir a su página web http://www.arduinoblocks.com/ desde cualquier navegador y para cualquier sistema operativo (Windows, Linux, Mac). (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

ArduinoBlocks

Arduinoblocks  es  un  programa  creado  por  el  profesor  Juanjo  López.  Gracias  a  su  entorno gráfico  facilita  la  programación  de  placas  Arduino  a  todos  los  niveles.  Esta  herramienta  permite programar a personas sin conocimientos previos de programación, pero su versatilidad y potencia es tan grande que expertos programadores también pueden utilizarlo. (José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

De Juan José López Almendros CC-BY-SA

La programación  en ArduinoBlocks  se realiza  con bloques  al  estilo AppInventor  o Scratch, se puede utilizar a partir de 8 años.  No  tenemos  que  escribir  líneas  de  código  y  no  nos  permitirá  unir  bloques  incompatibles evitando  así  posibles  errores  de  sintaxis.  La  plataforma  ArduinoBlocks  genera,  compila  y  sube  el programa a la placa Arduino por medio de la conexión USB. Una vez subido el programa, la placa el Arduino no necesitará de la conexión al PC para funcionar pudiendo alimentarla con baterías o una fuente de alimentación para que funcione de forma autónoma.  

ArduinoBlocks actualmente funciona con todos los navegadores de última generación: Mozilla Firefox, Google Chrome, Opera, Safari,... 

(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)

Por otro lado, tal y como se describe en la Wiki de Vitalinux,  ArduinoBlocks funciona perfectamente con todos los sistemas operativos, pudiendo ser fácilmente instalable en equipos individuales y a nivel de centro dentro del soporte de Vitalinux.

Ayuda en Arduinoblocks

Además hay chat de Telegram con una comunidad de profesores y técnicos de la empresa que apoya Arduinoblocks donde puedes encontrar proyectos, enlaces interesantes y lo más importante:  Puedes preguntar tus dudas o problemas

https://t.me/innovadidactic_comunidad

logogrupotelegramarduinoblocks.jpg

 

Los contenidos de esta página se han extraído del curso Rover Marciano con Arduinoblocks e Internet de las Cosas (IoT) de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

7. ArduinoBlocks

Crear cuenta

Registrándonos  como  usuarios  de  la  plataforma  ArduinoBlocks  podemos  aprovechar  todas estas posibilidades: 

Entramos en http://www.arduinoblocks.com/ e iniciamos sesión

Y rellenamos el formulario

Los contenidos de esta página se han extraído del curso Rover Marciano con Arduinoblocks e Internet de las Cosas (IoT) de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

7. ArduinoBlocks

Cuentas alumnado

Tal y como dice el tutorial de Juanjo López :

Permite a un usuario registrado con email, crear y administrar nuevas cuentas de usuario dentro de una organización, centro educativo o institución.

Si lo quieres en papel, te recomendamos el tutorial de Juanjo López son 12 diapositivas muy bien explicados https://github.com/arduinoblocks/documentacion/blob/master/usuarios_gestionados.pdf

El contar con esta funcionalidad es especialmente interesante en el caso de alumnado menor de 14 años, de forma que no sea necesario ceder ningún tipo de datos de ellos, ni recabar consentimientos parentales para la utilización de la plataforma. En general por criterios de protección y privacidad de datos, siempre es preferible trabajar con aplicaciones que solo requieren registro por parte del profesorado.

Los contenidos de esta página se han extraído del curso Rover Marciano con Arduinoblocks e Internet de las Cosas (IoT) de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

7. ArduinoBlocks

Arduino blocks connector

Espera !!! Aún no conectes tu placa (Arduino, ESP32, NodeMCU, KeyStudio TDR STEAM...)

PRIMER PASO Descargar e instalar ArduinoBlocks Connector

Para poder usar la herramienta Arduinoblocks tenemos que ejecutar antes Arduinoblocks conector. Lo descargamos de la misma página de ArduinoBlocks según el sistema operativo que usemos: Windows (W7 E INFERIORES NO FUNCIONA), Linux ....

Lo descargamos y lo instalamos.

En el caso de tener equipos Vitalinux, es fácilmente accesible e instalable desde la aplicación Vitalinux Play o si se desea una instalación masiva en el centro a través de su página de soporte:

image-1667329017653.png


SEGUNDO PASO: INSTALAR LOS DRIVERS

Si no hacemos estos pasos, cuando conectamos la placa, siempre sale en el COM1, le damos a subir y sale erro

En http://www.arduinoblocks.com/web/site/abconnector5 tenemos abajo ARDUINO SERIAL DRIVERS

RECOMENDAMOS EL PRIMER ENLACE Y EL TERCERO

2024-06-26 11_27_26-Coding with blocks ;).png

En el primero el instalador está en este enlace https://cdn.sparkfun.com/assets/learn_tutorials/7/4/CDM21228_Setup.exe

2024-06-26 11_28_55-How to Install FTDI Drivers - SparkFun Learn.png

El segundo sólo si quieres utilizar Arduinos no oficiales, de fabricantes chinos, que tiene el CH340g y hay que leerse la página, paciencia

El tercero es necesario el 2102 si utilizas el ESP32 el instalador esta en este enlace, es una carpeta comprimida, la descomprimes y está el ejecutable instalador https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers.zip

2024-06-26 11_38_15-CP210x USB to UART Bridge VCP Drivers - Silicon Labs.png

COMPROBAR QUE DETECTA LA PLACA

Ahora conectamos la placa (Arduino, NodeMCU, KeyStudio TDR STEAM...) a nuestro ordenador, y observamos si lo detecta, en Windows entramos en Administrador de dispositivos:

administradordispositivos.png

Y vemos que en los puertos COM se ha detectado correctamente la placa:

puertos.png

En el caso de que no aparezca, es que no se han instalado correctamente los drivers de Arduino. Entonces vamos a la página oficial de Arduino y descargamos el programa ARDUINO IDEhttps://www.arduino.cc/en/software y lo instalamos. Al instalar este programa se instalan los drivers en nuestro ordenador. No hace falta ejecutarlo.

En el caso de equipos con sistema operativo Linux (como Vitalinux) el puerto serie tiene la forma /dev/XXXX

YA PUEDES EJECUTAR ARDUINOBLOCKS CONNECTOR

Ahora buscamos el programa ArduinoBlocks connector que hemos descargado e instalado en el primer paso y lo ejecutamos.

2024-06-26 12_36_52-AB-Connector v5.3.png

ATENCIÓN No podemos cerrar la ventana mientras utilizamos Arduinoblocks, la minimizamos simplemente.

En caso contrario, Arduinoblocks no se puede comunicar con nuestra placa Arduino, NodeMCU, KeyStudio, etc ....

YA PUEDES EJECUTAR ARDUINOBLOCKS

Entramos en la web ARDUINOBLOCKS http://www.arduinoblocks.com/ nos logueamos e iniciciamos un proyecto, Vemos que en el editor que aparece ya los puertos COM (si no te aparece, dale a la rueda actualizar)

Aparecen varios COM,  elegir el último que tiene que coincidir con el que has visto en el segundo paso, no necesariamente es el COM más alto.
Si se queda una ruleta de espera demasiado tiempo, entonces, actualizar la página o darle a actualizar el botón 1 de la figura :

arduinoblocks-com.jpg

Una vez elegido el COM ya puedes darle al botón amarillo SUBIR cuando has realizado tu proyecto pero antes de subir, por si acaso dale a guardar el proyecto que has realizado.

En el caso de equipos con Linux veremos algo así:

image-1667328938836.png

¿Tengo que hacer los cuatro pasos cada vez?
No, sólo la primera vez para asegurar los drivers del Arduino, las siguientes veces que te conectes lo único que tienes que hacer  es el tercer y cuarto paso

IMPORTANTE: TENER EL SOFTWARE ARDUINOBLOCKS ACTUALIZADO para que funcionen los nuevos bloques que se incorporan en Arudinoblocks

Los contenidos de esta página se han extraído del curso Rover Marciano con Arduinoblocks e Internet de las Cosas (IoT) de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

7. ArduinoBlocks

Empezando un proyecto

Entramos en Proyectos y podemos ver nuestros proyectos creados como también empezar uno.

Y nos aparece tres opciones :

En esta ventana podremos elegir que tipo de proyecto vamos a realizar: 

Adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Lo primero que tenemos que elegir es para qué tipo de placa se hace el proyecto.

placa-a-elegir-arduinoblocks.png

ATENCIÓN luego NO se puede cambiar. Es decir, un proyecto realizado para un tipo de placa, no se puede cambiar a otro tipo de placa (la razón es simpe: las instrucciones cambian)

Luego el nombre y el resto de campos es optativo pero importante y buena costumbre rellenarlos, sobre todo si el proyecto lo compartimos:

Área de programación del proyecto

Este es el área sobre el que se trabaja en Arduinoblocks. En esta área arrastraremos y colocaremos los bloques que vamos a utilizar para crear nuestro programa.

En el área de trabajo hay un Zoom (2) para ampliar o reducir la imagen, un icono para centrar
(1) y un icono donde podremos borrar los bloques que no utilicemos (3).

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

Adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Las principales secciones del área de programación son las siguientes :

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

Adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Ver el código

ArduinoBlocks genera el código de Arduino a partir de los bloques. El programa se puede compilar y subir directamente a la placa Arduino gracias a la aplicación ArduinoBlocks-Connector, sin embargo si deseamos ver o descargar el código podemos realizarlo desde el área de bloques.

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

Adaptado de este enlace. José Andrés Echevarría @cantabRobots CC-BY-NC-SA

Siempre, desde un lenguaje de programación en bloques podemos obtener su equivalente a Código de Arduino IDE (de hecho es lo que hacen los programas), y luego con las funciones de Código de Arduino IDE el software lo pasa a lenguaje máquina que es la que se graba el Arduino, pero no al revés es decir, no existen programas que dado un código máquina o código Arduino IDE lo pasen a bloques gráficos, (igual que no hay programas que lean el código máquina que hay grabado en un Arduino y lo pasen a código Arduino IDE). Esto no es del todo 100% verdadero pues la Ingeniería inversa en informática trata pues de eso: obtener la fuente aunque sea parcial, pues si obtienes el código legible, puedes alterar lo que quieras.
Cuando compras un programa comercial, te dan el lenguaje máquina ilegible. Mientras que los programas de software libre se publica el código fuente legible para que todo el mundo pueda mejorarlo.

Por ejemplo en la siguiente figura, el programa gráfico mBlock que se utiliza en Arduino, mBot, etc... pasa sus instrucciones de lenguaje de programación de bloques parecido a Scratch a lenguaje de Código de Arduino IDE y Arduino IDE graba instrucciones binarias de lenguaje máquina al Arduino.

embedded-image-j3gKXHlj.png

¡¡A disfrutar!! 
Consejo: Te recomendamos visitar el canal de Youtube de Arduinoblocks https://www.youtube.com/c/ArduinoBlocks

 

Los contenidos de esta página se han extraído del curso Rover Marciano con Arduinoblocks e Internet de las Cosas (IoT) de Aularagón.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

8. Robótica Educativa

Objetivos y contenidos

Esta parte del curso pretende aplicar la parte teórica (programación) en clases prácticas (robótica) a través de proyectos transversales que incluso pueden permitir la realización de proyectos STEAM interdisciplinares con otras materias como la Física, Biología, Matemáticas, Arte, etc…

Una vez adquiridos los contenidos, el alumnado desarrollará la creatividad y el emprendimiento ya que aporta técnicas y herramientas al alumnado para idear y diseñar soluciones a problemas definidos que tienen que cumplir una serie de requisitos, y lo orienta a  la organización de las tareas que deberá desempeñar de manera personal o en grupo. 

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Materiales

Para la realización de esta parte del curso, se requieren los siguientes materiales, incluidos en el kit de préstamo de CATEDU.

Recibidos (440) - raguado@juandelanuza.org - Correo de Colegio Juan de Lanuza.png

Para simplificar las conexiones, se han incluido los cables necesarios para realizar las conexiones directamente de los sensores/actuadores al Arduino. Igualmente, en cada kit de préstamo, se incluyen dos adaptadores para Gnd y 5v que multiplican estos pines, para que en aquellas practicas en las que se requieren más tomas de las que dispone Arduino, evitar de  la utilización de protoboards que complican las conexiones. 

En la siguiente fotografía, observamos como al utilizar estos conectores, obtenemos 4 tomas a 5v y otras 4 para Gnd

20221119_072027.jpg 

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Ejercicios propuestos

A continuación se proponen una serie de ejercicios (situaciones de aprendizaje) que van a permitir al alumnado tener una visión real de como aplicar la programación a la robótica y de este modo resolver situaciones reales. Desde el punto de vista de la LOMLOE, se describen a continuación los saberes básicos, competencias específicas y criterios de evaluación que se van a ver implicados en el desarrollo de los mismos.

Saberes básicos, competencias específicas y criterios de evaluación del bloque de robótica

Objetivos didácticos:


Elementos curriculares involucrados (Saberes básicos):

Bloque A: Proceso de resolución de problemas.

Bloque B: Comunicación y difusión de ideas.

Bloque C: Pensamiento computacional. Programación y robótica.

Bloque D: Tecnología sostenible.

Relación con las competencias específicas:

Relación con los criterios de evaluación:

1.1. Idear y diseñar soluciones eficaces, innovadoras y sostenibles a problemas definidos, aplicando conceptos, técnicas y procedimientos interdisciplinares, así como criterios de sostenibilidad, con actitud emprendedora, perseverante y creativa.
1.2. Seleccionar, planificar y organizar los materiales y herramientas, así como las tareas necesarias para la construcción de una solución a un problema planteado, trabajando individualmente o en grupo de manera cooperativa y colaborativa.

2.1. Fabricar objetos o sistemas robóticos mediante la manipulación y conformación de materiales, empleando herramientas y máquinas adecuadas, aplicando los fundamentos de estructuras, mecanismos, electricidad y fundamentalmente electrónica, respetando las normas de seguridad y salud correspondientes.

3.1. Representar y comunicar el proceso de creación de un producto desde su diseño hasta su difusión, elaborando documentación técnica y gráfica con la ayuda de herramientas digitales, empleando los formatos y el vocabulario técnico adecuados, de manera colaborativa, tanto presencialmente como en remoto.

4.1. Describir, interpretar y diseñar soluciones a problemas informáticos a través de algoritmos y diagramas de flujo, aplicando los elementos y técnicas de programación de manera creativa.
4.2. Programar aplicaciones sencillas para distintos dispositivos (ordenadores, dispositivos móviles y otros) empleando los elementos de programación de manera apropiada y aplicando herramientas de edición, así como módulos de inteligencia artificial que añadan funcionalidades a la solución.
4.3. Automatizar procesos, máquinas y objetos de manera autónoma, con conexión a internet, mediante el análisis, construcción y programación de robots y sistemas de control.

5.1. Reconocer la influencia de la actividad tecnológica en la sociedad y en la sostenibilidad ambiental a lo largo de su historia, identificando sus aportaciones y repercusiones y valorando su importancia para el desarrollo sostenible.
5.2. Identificar las aportaciones de las tecnologías emergentes al bienestar, a la igualdad social y a la disminución del impacto ambiental, haciendo un uso responsable y ético de las mismas.


Situación de aprendizaje 9: Semáforo adaptado.

Programación con Arduino y posterior prototipado de un semáforo que incluya una señal auditiva cuando el semáforo esté en rojo (verde para peatones), para adaptarlo a personas con deficiencia visual.


Situación de aprendizaje 10: Montando un sistema de aparcamiento

Programación con Arduino y posterior prototipado de un sistema de aparcamiento por ultrasonidos con avisador visual y sonoro.


Situación de aprendizaje 11: Creando un sistema de alarma

Programación con Arduino y posterior prototipado de un sistema de  alarma con sensor de presencia, avisador visual y sonoro y pulsador para detener la alarma.


Situación de aprendizaje 12: Creando un túnel de lavado con sensores

Programación con Arduino y posterior prototipado de un túnel del lavado, con semáforo por detección de ultrasonidos para regular la entrada y barrera automática de salida, dotado a su vez de un pulsador de emergencia para detener el proceso por medio de interrupción.

.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Situación de aprendizaje 9: Semáforo adaptado

Programación con Arduino y posterior prototipado de un semáforo que incluya una señal auditiva cuando el semáforo esté en rojo (verde para peatones), para adaptarlo a personas con deficiencia visual.

semaforo.jpg

COMPONENTES

Arduino Uno

ArduinoUno.png

Tira leds NeoPixel

TIraNeopixel.jpg

Zumbador

rZumbadorrecortado.png


Conectores 5v y Gnd

Recibidos (442) - raguado@juandelanuza.org - Correo de Colegio Juan de Lanuza.png

Trabajo de indagación: En cualquier proyecto debemos investigar sobre el funcionamiento y comportamiento esperado para nuestro prototipo. En este caso, sabemos que los semáforos adaptados emiten un tono discontinuo cuando los peatones pueden cruzar, posibilitando de este modo a personas con dificultades de visión el paso de un lado a otro de forma segura. Los semáforos mediante código de colores (rojo, ámbar y verde), indican a los conductores/peatones si es momento de esperar o avanzar. La secuencia que siguen los semáforos de conductores es: rojo, verde y ámbar.  Cuando esta rojo para coches, el de peatones esta en verde y al contrario. En el caso que nos toca, tendremos entonces que contemplar emitir los tonos, cuando el semáforo de coches este en rojo

Para todos nuestros prototipos, vamos a utilizar una herramienta de diseño 2D con la que representaremos nuestro esquema de conexiones.

Diseño 2D

Es conveniente utilizar alguna herramienta para diseñar nuestro circuito antes de proceder al montaje. De este modo evitaremos cometer errores con el cableado. Existen muchas herramientas online para este propósito y algunas de ellas como Tinkercad incluso permiten su simulación, pero tienen mayor limitación en las librerías de componentes, por lo que en este caso utilizaremos EasyEDA. 

Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool.png

Como podemos observar en nuestro esquemático, vamos a conectar dos actuadores a nuestro Arduino. Ambos tienen  un pin a GND y otro a 5V, y cada uno de ellos tiene un pin de datos que asignaremos a los pines 2 y 3

La placa de Arduino tiene 3 pines conectados a GND y uno a 5v, por lo que haremos uso del adaptador incluido en el kit para la conexión a 5v o en su defecto se podría utilizar una placa de prototipado. 


Para abordar la programación de este proyecto, en primer lugar inicializaremos los componentes y crearemos 4 funciones: "encender verde"," encender ámbar"," encender rojo" y "sonido". De este modo, será tan sencillo como llamar a cada una de ellas en el bucle principal, las cuales se repetirán indefinidamente. 

Construcción

Arduino tiene únicamente 1 pin a 5v y 3 a Gnd. 

En esta práctica, utilizamos el Zumbador que tiene 3 pines (5v, Gnd y Señal) y la tira led Neopixel que igualmente tiene otros 3 pines (5v, Gnd y datos). 

Para alimentar a 5v ambos actuadores, necesitaremos utilizar el conector multiplicador (1 a 4).  El pin de datos de la tira led irá según nuestra programación al Pin2 de Arduino y el del zumbador al Pin3 de Arduino. El Gnd del zumbador y el de la tira led, los conectaremos a cualquiera de los 3 pines habilitados para ello en Arduino sin necesidad de utilizar el multiplicador. 

20221119_074429.jpg

Programación - Inicialización de componentes

Representamos lo primero de todo un diagrama de flujo que nos ayude a comprender el comportamiento de nuestro proyecto:

Bitbloq Robotics - Documento sin título.png

El siguiente paso, una vez hemos diseñado nuestro circuito es programarlo. Para ello abrimos el editor web de ArduinoBlocks y nos conectamos con nuestro usuario. Partiendo de un proyecto en blanco eligiendo como placa Arduino Uno, lo primero que haremos será sacar en pantalla nuestros componentes. 

En primer lugar arrastraremos al área de trabajo el Zumbador, que lo encontraremos dentro del bloque de actuadores. 

ArduinoBlocks.png

y haremos lo mismo con la tira led de NeoPixel, que la encontraremos en Visualización, NeoPixel.

ArduinoBlocks (1).png

Con esto ya tenemos todos los componentes que intervienen en nuestro circuito.

Ahora debemos asignarle a cada uno de ellos el Pin al que, en el paso anterior, hemos decidido que debe ir conectado. Para el Zumbador tendremos que modificarlo al Pin3 y deberemos asegurarnos que la Inicialización de la tira Led la hacemos sobre el Pin2. Además, podemos observar que la tira Led tiene otros 3 parámetros a los que debemos prestar atención. El primero de ellos es la codificación de colores que tiene nuestro componente. En nuestro caso "GRB" (green, red, blue). El segundo de ellos es la frecuencia, que fijaremos en 800Khz, y el tercero, indica el número de leds que compone la tira. En nuestro caso 8, pero debemos tener en cuenta que la posición del primer led se cuenta como 0, por tanto deberemos indicar 7.

Todas las opciones que podemos realizar con la tira de leds, las podemos encontrar  al seleccionar en "Visualización" el apartado "NeoPixel":  Las que vamos a utilizar son: iniciar, establecer brillo, limpiar, mostrar y establecer pixel # a un determinado color. 

Todos estos valores, los  actualizaremos y pondremos en el bloque  de "Inicializar", para que de este modo, Arduino sepa que en el Pin2 va a tener conectada una tira NeoPixel de 8 leds.  

ArduinoBlocks (5).png


Para crear funciones, debemos abrir el menú de funciones y arrastrar el bloque al área de trabajo:

ArduinoBlocks (5).png

Programación - Funciones

Vemos el código para las funciones. Todas se van a comportar igual salvo la diferencia de los colores, los leds que encendemos y el tiempo de espera para cada color. Definimos los pines 1 y 2 para encender en color verde. Los pines 3 y 4 para el color ámbar y por último, los pines 5 y 6 para el color rojo. El tiempo que permanece la luz de color roja y verde lo definimos en 10  segundos, (10.000 milisegundos) y el de la luz en ámbar lo fijamos en 3 segundos (3.000 milisegundos). 

Hay que tener en cuenta que la posición del vector de Leds para BitBlock comienza en 0. Por tanto, el primer led ocupa la posición 0, el segundo la posición 1, y así sucesivamente. 

Como nuestra tira tiene 8 pines, en nuestro ejercicio no utilizaremos ni el primero ni el último. 

encender verde: Esablecemos pixeles de las posiciones 2 y 3 a color verde, los mostramos y lo mantenemos así durante 10 segundos. 

ArduinoBlocks (6).png

encender ámbar : Esablecemos pixeles de las posiciones 3 y 4 a color ámbar, los mostramos y lo mantenemos así durante 3 segundos. 

ArduinoBlocks (7).png

encender rojo: Esablecemos pixeles de las posiciones 5 y 6 a color rojo, los mostramos y lo mantenemos así durante 10 segundos. 

ArduinoBlocks (8).png

sonar zumbador: Teniendo el zumbador conectado al Pin3 de Arduino, emitimos un sonido con frecuencia de 500Hz durante 1 segundo y al finalizar, esperamos 1 segundo. 

ArduinoBlocks (10).png


Teniendo ya definidas nuestras funciones, tan solo nos quedaría incluirlas en el Bucle principal para que se repitan indefinidamente, pero para cumplir con las especificaciones del programa, debemos realizar algunas modificaciones para que mientras el semáforo esta en rojo se escuche el sonido del zumbador. Por tanto, tenemos que hacer un llamamiento a la función "sonar zumbador" desde la función "encender rojo". Si observamos bien, para mantener las luces rojas, hemos tenido que utilizar una espera de 10 segundos, que ahora podremos sustituir por la espera que se produce cada vez que se produce un sonido por el zumbador (suena 1 segundo y espera en silencio otro segundo). En concreto, cada vez que llamamos a la función del zumbador, transcurren 2 segundos, por lo que si la repetimos 5 veces, estaremos empleando 10 segundos que son los que queremos que la luz roja permanezca encendida mientras escuchamos un "beep" de manera intermitente. La función modificada quedaría de la siguiente manera:

encender rojo actualizada

ArduinoBlocks (11).png

Con esta actualización ya estariamos cumpliendo los requisitos del enunciado, y nuestro programa finalmente quedaría del siguiente modo: 

ArduinoBlocks (6).png





Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Situación de aprendizaje 10: Sistema de aparcamiento para coches

Programación con Arduino y posterior prototipado de un sistema de aparcamiento para coches que incluya un avisador acústico que advierta al conductor del peligro de colisión por cercanía. 

sistema de aparcamiento - Búsqueda de Google.png

COMPONENTES

Arduino Uno

ArduinoUno.png


Zumbador

Zumbadorrecortado.png


Sensor Ultrasonidos

ultrasonido.png


Conector 5v

Recibidos (442) - raguado@juandelanuza.org - Correo de Colegio Juan de Lanuza.png

Trabajo de indagación: Gracias a los sensores de ultrasonidos, podemos averiguar la distancia que hay a un objeto. Estos emiten un ultrasonido, reciben el rebote y miden el tiempo que ha transcurrido desde la emisión hasta la recepción permitiéndonos calcular la distancia con la formula velocidad=espacio*tiempo. Utilizando un ultrasonido en la parte trasera de un vehículo, podemos emitir un sonido cuando detectemos una distancia prudencial al objeto y evitar de este modo chocar con él. 

Diseño 2D

Es conveniente utilizar alguna herramienta para diseñar nuestro circuito antes de proceder al montaje. De este modo evitaremos cometer errores con el cableado. Existen muchas herramientas online para este propósito y algunas de ellas como Tinkercad incluso permiten su simulación, pero tienen mayor limitación en las librerías de componentes, por lo que en este caso utilizaremos EasyEDA. 

Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.

Incorporamos el Arduino, buzzer y sensor ultrasónico a nuestro proyecto resultando del siguiente modo:


EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (7).png

Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.Como podemos observar, en nuestro esquemático, vamos a conectar un actuador (buzzer) y un sensor (sensor ultrasónico). Ambos tienen un pin a GND y otro a 5V, El zumbador tiene un pin de salida que conectaremos al número 2 de nuestra placa y en cambio, el sensor de ultrasonidos, tiene 2 pines, uno de salida o Trigger (le pide al sensor que envíe un tono ultrasónico)  que conectaremos al pin 3, y otro de entrada o echo (por el que se recibe el aviso de haber recibido el rebote del disparo inicial) que conectaremos al pin 4 de nuestra placa.

Para abordar la programación de este proyecto, en primer lugar inicializaremos el puerto serie que nos servirá para ver en pantalla las medidas del sensor, y crearemos 3 funciones "lejos", "cerca" y "muy_cerca". De este modo será tan sencillo como llamar a cada una de ellas en el bucle principal en función de los rangos de distancia que determinemos para cada uno de estos supuestos.

Construcción

Arduino tiene únicamente 1 pin a 5v y 3 a Gnd. 

En esta práctica, utilizamos el Zumbador que tiene 3 pines (5v, Gnd y Señal) y el sensor de ultrasonidos, que tiene 4 pines (2 de datos, uno para Gnd y el otro para 5v).

Para alimentar a 5v ambos, necesitaremos utilizar el conector multiplicador (1 a 4). Utilizaremos cualquiera de los 3 pines Gnd del Arduino para conectar los Gnd del sensor y del zumbador.  El pin de datos del zumbador lo conectaremos al número 2 de nuestra placa y los dos pines (trigger y echo) del sensor de ultrasonidos irán respectivamente al 3 y 4 de la placa de Arduino. 

20221119_084032.jpg

Programación - Inicialización del puerto serie y asignación de pines

Como venimos haciendo hasta ahora, representamos un sencillo diagrama de flujo que nos ayude a comprender la ejecución del bucle: 

Bitbloq Robotics - Documento sin título (1).png

El siguiente paso, una vez hemos diseñado nuestro circuito es programarlo. Para ello abrimos el editor web de ArduinoBlocks y nos conectamos con nuestro usuario. Partiendo de un proyecto en blanco eligiendo como placa Arduino Uno, lo primero que haremos será sacar en pantalla nuestros componentes. 

En primer lugar arrastraremos al área de trabajo el Zumbador que lo encontramos dentro del bloque de "actuadores".

Zumbador.png

y haremos lo mismo con el sensor ultrasónico.

ArduinoBlocks.png

. Ahora debemos asignarle a cada uno de ellos los Pines que hemos planteado en nuestro esquema electrónico. Para el zumbador tendremos que asignarle el Pin2,  el Pin3 y Pin4 respectivamente para los pines Trig y Echo del sensor de ultrasonidos.

ArduinoBlocks (3).png

El puerto serie del Arduino sirve para poder comunicarse con el ordenador y de este modo, además de poder grabar en su procesador nuestros programas, nos sirve para visualizar en pantalla los valores de entradas y salidas que configuremos. 

En el caso que nos afecta, dentro del bucle principal, crearemos una variable que contendrá en cada momento el valor del sensor de distancia, que se verá modificada en función de la distancia a la que se encuentre un objeto de este. Aprovecharemos que este valor se actualiza en esta variable para mostrar su valor por pantalla gracias a la comunicación del puerto serie. 

Para inicializar el puerto serie, lo haremos directamente sobre el bloque de Inicializar, de ArduinoBlocks del siguiente modo:

ArduinoBlocks (2).png  ArduinoBlocks (1).png



Para crear funciones, debemos abrir el menú de funciones y arrastra el bloque al área de trabajo:

funciones.png

Programación de las funciones

En el planteamiento de nuestra solución, decidimos implementar 3 rangos de actuación determinados por la distancia a la que se encuentra el objeto. Cuando el objeto esta en la zona "lejos" el zumbador emitirá un tono grave y con una pausa de un segundo, si se encuentra en la zona "cerca", aumentará la frecuencia del tono y disminuirá la pausa a medio segundo y por último, si el objeto se encuentra "muy cerca", el zumbador deberá emitir tonos sin apenas pausa (50 milisegundos) y un tono lo suficientemente agudo como para advertir del peligro. 

Por ello configuramos 3 funciones que llamaremos desde el programa principal en función de que se cumplan dichas condiciones y que quedarán del siguiente modo: 

ArduinoBlocks (4).png


Antes de incluir las funciones en nuestro programa principal, vamos a configurar la lógica de actuación del sensor. Para ello, como indicábamos anteriormente, definimos una variable que contenga el valor de las medidas del sensor y la mostramos por el puerto serial para ver su valor. 

Para crear variables, seleccionamos en el menú lateral "Variables" y seleccionamos el bloque "Crear variable". Estas pueden ser numéricas, de texto o lógicas (verdadera/falsa).

ArduinoBlocks (17).png

Seleccionaremos "Crear variable....(Número)" y le introduciremos por nombre "distancia". A partir de este momento, en el mismo menú lateral, al elegir la opción Variables, podremos ver bloques para establecer o tomar el valor de nuestra variable recién creada. 

Para asignarle un valor a nuestra variable "distancia" elegimos el bloque "Establecer [distancia]" y lo asociamos al sensor de ultrasonidos que tenemos definido con los pines 3 Trigger y 4 Echo. De este modo, la información del sensor quedará almacenada en la variable y al estar dentro del bucle principal, cada vez que haya un cambio, quedará almacenado el nuevo valor. 

ArduinoBlocks (7).png

En estos momentos podemos subir el programa a nuestro Arduino y conectar el puerto serial para ver los resultados del siguiente modo: 

ArduinoBlocks (8).png

ArduinoBlocks (9).png

En estos momentos podemos observar como alejando y acercando un objeto al sensor, los valores de medida cambian. Estos sensores no son muy precisos y es aconsejable determinar cual es la máxima y la mínima distancias en las que es capaz de medir correctamente, para determinar los rangos de actuación. 

En el desarrollo de esta practica, con los valores obtenidos se definieron los siguientes rangos: 

muy_cerca--> entre 0 y 10 centímetros

cerca--> de 11 a 30 centímetros

lejos--> de 31 a 60 centímetros

Por último solo nos falta programar las condiciones para cada rango y llamar a cada función según proceda. 

Para crear las condiciones, utilizamos los bloques que encontramos en Lógica.

ArduinoBlocks (12).png

Si el valor del sensor (distancia) es mayor que cero y además es menor o igual que 10, debe activarse la función "muy_cerca":

Si distancia es mayor que 10 y menor o igual que 30 entonces debe activarse la función "cerca".

Si distancia es mayor que 30 y menor o igual que 60 entonces deberá advertirnos de la existencia de un objeto lejano.

ArduinoBlocks (13).png

y finalmente nuestro programa completo quedaría del siguiente modo: 

ArduinoBlocks (14).png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Situación de aprendizaje 11: Sistema de alarma (con interrupción)

Programación con Arduino y posterior prototipado de un sistema de alarma para un espacio mediante un sensor PIR, un avisador acústico y un botón de desactivado por medio de interrupción. 

alarmaPIr.webp

COMPONENTES

Arduino Uno

ArduinoUno.png


Sensor PIR

PIR.webp


Zumbador

Zumbadorrecortado.png


Botón/Pulsador

pushbutton.webp


Conectores 5v y Gnd

Recibidos (442) - raguado@juandelanuza.org - Correo de Colegio Juan de Lanuza.png

Trabajo de Indagación: Un sistema de alarma se basa en la detección del movimiento de la persona que accede a un lugar cerrado y que previamente había sido armado. Si esto sucede, se dispara la alarma que pone en marcha un plan de emergencia que pasa por el aviso a los servicios de emergencia, si tras haber contactado con el propietario este denuncia no ser él quien esta accediendo al recinto. En caso de ser un error por parte del propietario, este dispone de unos segundos para poder introducir su clave de seguridad y de este modo desarmar la alarma. 

La detección del movimiento se obtiene gracias a los sensores piroélectricos o sensores PIR.  Un sensor  PIR o funciona comparando la temperatura que desprende un objeto con la de su alrededor, de forma que puede detectar con precisión una presencia en un lugar determinado. Se tratan de sensores que son los encargados de medir las variaciones de radiaciones infrarrojas que se reciben.

En este reto, utilizaremos por tanto un sensor PIR que será el encargado de enviar una señal al Arduino en caso de detectar movimiento. Si esto ocurre, el zumbador comenzará a sonar y solo se detendrá en caso de que el propietario desactive la alarma introduciendo su código secreto. En nuestro caso, simularemos la introducción del número secreto pulsando un botón conectado al sistema de alarmado. 

Diseño 2D

Es conveniente utilizar alguna herramienta para diseñar nuestro circuito antes de proceder al montaje. De este modo evitaremos cometer errores con el cableado. Existen muchas herramientas online para este propósito y algunas de ellas como Tinkercad incluso permiten su simulación, pero tienen mayor limitación en las librerías de componentes, por lo que en este caso utilizaremos EasyEDA. 

Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.

El botón que vamos a utilizar tiene integrada una resistencia, lo cual facilita nuestro cableado. Tiene 3 pines (-,+ y S) y para la realización del esquemático, hemos buscado "button pull down", del cual utilizaremos el Pin1 como Vin (5v) el Pin3 como Gnd y el Pin2 como señal de entrada. 

En este proyecto contamos con 2 entradas, la señal de activación que proviene del sensor de movimiento que la conectaremos al Pin2 de nuestra placa y la que proviene del botón que irá conectada al Pin3 del Arduino. 

Como en los proyectos anteriores, el zumbador, en este caso conectado al Pin4, será una salida. 

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (8).png

Como en los ejercicios anteriores, hemos añadido el resto de componentes y una vez cableado queda de la siguiente manera:

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (9).png

Para la realización de este proyecto vamos a utilizar Interrupciones. Tomado de esta entrada de Luis LLamas, 

los microprocesadores incorporan el concepto de interrupción, que es un mecanismo que permite asociar una función a la ocurrencia de un determinado evento. Esta función de callback asociada se denomina ISR (Interruption Service Rutine).

Cuando ocurre el evento el procesador “sale” inmediatamente del flujo normal del programa y ejecuta la función ISR asociada ignorando por completo cualquier otra tarea (por esto se llama interrupción). Al finalizar la función ISR asociada, el procesador vuelve al flujo principal, en el mismo punto donde había sido interrumpido.

Como vemos, las interrupciones son un mecanismo muy potente y cómodo que mejora nuestros programas y nos permite realizar acciones que no serían posibles sin el uso de interrupciones.

Dentro de las interrupciones de hardware,  Arduino es capaz de detectar los siguientes eventos.

Nuestro pulsador se encuentra conectado a 5v y al pulsarlo es cuando cae a 0 voltios. Por tanto, si utilizamos la interrupción RISING, podremos observar el flanco de subida de 0 a 5 voltios en el momento de dejar de presionar el botón.

Construcción

El botón que vamos a utilizar tiene integrada una resistencia, lo cual facilita nuestro cableado. Tiene 3 pines (-,+ y S) y para la realización del esquemático, hemos buscado "button pull down", del cual utilizaremos el Pin1 como Vin (5v) el Pin3 como Gnd y el Pin2 como señal de entrada. 

En este proyecto contamos con 2 entradas, la señal de activación que proviene del sensor de movimiento que la conectaremos al Pin2 de nuestra placa y la que proviene del botón que irá conectada al Pin3 del Arduino. 

Recibidos (445) - raguado@juandelanuza.org - Correo de Colegio Juan de Lanuza.png

Como en los proyectos anteriores, el zumbador, en este caso conectado al Pin4, será una salida. 

 Finalmente, como ha ocurrido en los ejercicios anteriores, necesitaremos utilizar el conector 1 a 4 de 5v para poder alimentar el zumbador, el sensor PIR y el botón. En cuanto a las tomas de tierra (Gnd) podemos utilizar las 3 disponibles en la placa. 

Programación - Inicialización de variables e Interrupción

Una vez más representamos en un diagrama de flujo nuestro reto para simplificar su programación. 

Bitbloq Robotics - Documento sin título (2).png Bitbloq Robotics - Documento sin título (3).png

Utilizaremos la variable "alarma" para almacenar en ella el momento en el que la alarma se dispara por intrusión. Para crear la variable, recuerda que debes acceder en el menú lateral de ArduinoBlocks a la sección "Variables" y en este caso elegiremos una variable booleana (verdadera o falsa). La inicializaremos como falsa, y  obligaremos a que cambie a verdadera si el sensor de presencia informa de una intrusión. Así mismo, estableceremos la Interrupción RISING en el Pin3. Arduino Uno tiene únicamente dos pines que admiten interrupciones. Estos solo pueden ser el 2 y el 3.  

ArduinoBlocks (15).png


Cuando la alarma se active por una intrusión, el zumbador comenzará a sonar mientras la variable "alarma" sea verdadera. AL entrar en la interrupción, la pondremos nuevamente en estado falso y esto hará que el sonido se pare. 

Veamos como implementamos esto con los bloques de ArduinoBlocks.

ArduinoBlocks (16).png

Como habíamos mencionado, el sensor PIR lo tenemos conectado en el Pin2. Si éste, detecta movimiento, enviará una señal (HIGH) al Arduino, y la almacenamos en la variable "movimiento": Al igual que con la variable "alarma", definiremos la variable "movimiento" como booleana. El valor de esta, dependerá de si el sensor envía estado alto, lo cual la establecerá a verdadera, o si por el contrario, no hay movimiento y se encuentra siempre en estado bajo, configurándola como falsa

Con esta información, bastará con utilizar un bloque "Si <condición> es verdadera, entonces hacer..." que lo podemos encontrar en el menú que se despliega al pinchar en "Lógica".  Para nosotros la condición es sencilla: Si movimiento es verdadero, entonces modificamos el valor de la variable "alarma" de falso a "verdadero". 

En la siguiente instrucción, introduciremos otro bloque lógico, de manera que: Si la variable "alarma" es verdadera, entonces el zumbador comenzará a emitir un tono

Cuando el programa vuelve a la primera instrucción del bucle principal, ya no importa si el sensor sigue notando movimiento o no, puesto que la variable "alarma" queda ya en estado verdadero y siempre se cumplirá la última condición, por lo que el zumbador no dejará de sonar a menos que "alarma" cambie a "falso" y esto solo sucederá si se activa la interrupción pulsando el botón que simula que introducimos la contraseña para desarmar la alarma. Si el botón es pulsado, "alarma" pasa a almacenar nuevamente el valor "false" y por tanto, si no hay movimiento en el interior, no se cumplirá la última condición y por tanto el zumbador no emitirá ningún sonido. Visionando todos los bloques, quedarían del siguiente modo:

ArduinoBlocks (18).png

Antes de dar por terminado este ejercicio, nos planteamos una mejora, y es que tal y como lo hemos configurado, una vez armada la alarma, cuando volvamos a nuestro local, nada más entrar la alarma se disparará. Vamos a modificar nuestro código para que al detectarse una intrusión, durante unos segundos emita unos tonos de advertencia y si en ese intervalo no se desarma, entonces es cuando comenzará a sonar la sirena. 

Para ello, si el sensor detecta una intrusión, a parte de establecer "alarma" como verdadero, utilizaremos un bloque de repetición para emitir un tono muy corto, y si en ese intervalo se pulsa el botón, nuestra variable "alarma" volverá a ser falsa y no sonará la alarma. Por el contrario, si se trata realmente de un intruso, al no saber la contraseña, finalizado el bucle de repetición de sonidos cortos, la alarma comenzará a emitir dos tonos similares a los de una sirena. 

ArduinoBlocks (19).png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

8. Robótica Educativa

Ejercicio Final: Túnel de lavado con sensores

Programación con Arduino y posterior prototipado de un sistema de lavado automático para coches.

tunellavado.png

COMPONENTES

Arduino UNO

image-1668252879858.jpg


Sensor de Ultrasonidos

ultrasonido.png


Tira leds NeoPixel

zoomNeopixel.jpg


ServoMotor

servocurso.jpg

El acceso al túnel estará regulado por un semáforo (2 leds de la tira Neopixel) que permanecerá en verde hasta que el vehículo se acerque justo a la posición donde debe parar. En este instante el semáforo cambiará a rojo, y comenzará el proceso de lavado. 

Durante el tiempo de lavado (6 segundos), el resto de leds de la tira, se irán encendiendo en color azul, uno a uno cada segundo, indicando de este modo el progreso del servicio. 

Finalizado el proceso de limpiado y secado, la barrera de salida (un servomotor en posición 0 grados), se abrirá (posición 90 grados) para dejar salir al vehículo, y el semáforo volverá a ponerse en verde.


Al tratarse del ejercicio final, únicamente vamos a ver como accionar un servomotor, ya que se pretende ver como el alumnado ha adquirido los conocimientos, y el resto de componentes han sido ya tratados en las experiencias anteriores.

Diseño 2D

Es conveniente utilizar alguna herramienta para diseñar nuestro circuito antes de proceder al montaje. De este modo evitaremos cometer errores con el cableado. Existen muchas herramientas online para este propósito y algunas de ellas como Tinkercad incluso permiten su simulación, pero tienen mayor limitación en las librerías de componentes, por lo que en este caso utilizaremos EasyEDA. 

Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.

En este caso, como indicaba al principio, vamos a implementar únicamente el diseño de las conexiones del servomotor. El resto del diseño forma parte de la tarea evaluable de este curso. 

Los servomotores tienen 3 Pines. Positivo, Gnd y datos. A continuación muestro el servo que he utilizado y como quedan las conexiones. 

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (10).png

EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool (11).png


A continuación vemos como programar el movimiento de un servo con ArduinoBlocks.

Programación - Servomotor

Los servomotores pueden mover su posición de 0 a 180 grados.  En ArduinoBlocks, hay un apartado de "Motores" donde podremos encontrar los servos. Lo arrastramos al campo de trabajo y asignamos su pin de datos. 

ArduinoBlocks (20).png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Créditos

Curso creado en Octubre  de 2022 por:

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

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

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Programación, robótica y accesibilidad

1.- Introducción

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

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

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

opensource.png

Software libre

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

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

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

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

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

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

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

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

2.- ARDUINO o LA ROBÓTICA ACCESIBLE

Arduino es una plataforma de hardware y software libre.

Hardware libre

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

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

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

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

arduinosecundaria.png

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

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

blogRobotiqueamos.jpg

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

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

Filosofía del Arduino ver vídeo

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

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

Scratch: software libre para el desarrollo del pensamiento computacional

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

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

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

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

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

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

Teoría del cambio y más sobre microbit

Teoría del cambio puede resumirse en tres principios:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Versiones y características de micro:bit

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

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

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

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

Valores GNU
 Compartir

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

Responsabilidad social

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

Independencia

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

Aprendizaje

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

Ahorro

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

Calidad

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

Para saber más

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

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

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

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



Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png