• No se han encontrado resultados

"StrandBoTic" : una plataforma educativa basada en robótica de bajo costo para introducir al mundo de la ciencia de la computación

N/A
N/A
Protected

Academic year: 2020

Share ""StrandBoTic" : una plataforma educativa basada en robótica de bajo costo para introducir al mundo de la ciencia de la computación"

Copied!
100
0
0

Texto completo

(1)

Universidad Nacional del Centro

Facultad de Ciencias Exactas

Trabajo Final de Grado

para la Carrera de

Ingeniería de Sistemas

“StrandBoTic”

Una Plataforma Educativa basada en robótica de bajo

costo para introducir al mundo de la

Ciencia de la Computación

Autores

: José Benítez - Lautaro Defelippe - Juan Sebastián Duana

(2)

RESUMEN

La robótica educativa es una estrategia de aprendizaje interdisciplinaria que emplea robots para potenciar el desarrollo de habilidades y competencias de los estudiantes como el pensamiento computacional y la programación. De esta manera, permite a las personas controlar objetos concretos y, a través de éstos, observar la materialización de los comandos dados por ellas en la computadora, es decir, que facilita experimentar el paso de las creaciones de lo abstracto a lo concreto.

Por este motivo, en este trabajo se desarrolló la plataforma StrandBotic, la cual está basada en robótica de bajo costo, utilizando hardware y software libre para que estudiantes aprendan a pensar algorítmicamente. Esta plataforma consiste en un prototipo de robot con el mecanismo de Theo Jansen, un framework para facilitarle a los estudiantes el desarrollo de programas de alto nivel y secuencias didácticas destinadas a estudiantes del segundo ciclo de Educación Primaria, para enseñarles los conceptos básicos de la programación e introducirlos en el pensamiento computacional.

Palabras Clave: ​Robótica Educativa, Pensamiento Computacional, Enseñanza de programación, Lenguaje de Programación Visual, Software Libre, Hardware Libre,

(3)

AGRADECIMIENTOS

La presente tesis se la dedicamos a nuestras familias que gracias a su apoyo pudimos concluir nuestra carrera. A nuestros padres y hermanos por su apoyo y confianza, gracias por ayudarnos a cumplir nuestros objetivos como personas y estudiantes.

En especial, queremos agradecer a nuestros directores de tesis Mg. Carmen Leonardi e Ing. José Marone por la confianza que depositaron en nosotros, su constante apoyo, sus indicaciones y sus orientaciones indispensables en el desarrollo de este trabajo.

A todos nuestros compañeros y compañeras con los que cursamos quisiéramos darles las gracias por los buenos momentos que hemos compartido. Creo que todos hemos aprendido y aprendemos continuamente de todos y de nosotros mismos, tanto profesional como personalmente

Quisiéramos dejar escrito nuestro agradecimiento a aquellas personas muy especiales en nuestra vida que ya no están y que queremos con toda nuestra alma.

Por último, quisiéramos agradecer a quiénes nos han ayudado a sortear obstáculos con mayor facilidad, permitiéndonos llegar al final de esta etapa profesional.

(4)

ÍNDICE GENERAL

RESUMEN 2

AGRADECIMIENTOS 3

ÍNDICE GENERAL 4

ÍNDICE DE FIGURAS 6

INTRODUCCIÓN 8

MOTIVACIÓN 10

OBJETIVOS 11

ESTRUCTURA DE LA TESIS 11

CAPÍTULO 1: ESTADO DEL ARTE 13

1.1 PENSAMIENTO COMPUTACIONAL 13

1.2 ROBÓTICA EDUCATIVA EN EL MUNDO 14

1.3 ROBÓTICA EDUCATIVA EN ARGENTINA 16

1.4 ENSEÑANZA DE PROGRAMACIÓN EN LA ESCUELA 18

1.5 LENGUAJES DE PROGRAMACIÓN VISUAL 19

1.6 SOFTWARE Y HARDWARE LIBRES 21

1.7 USO DE SECUENCIAS DIDÁCTICAS EN EL PROCESO DE ENSEÑANZA APRENDIZAJE 22

CAPÍTULO 2: DISEÑO Y CONSTRUCCIÓN DEL PROTOTIPO 24

2.1 MECANISMO DE THEO JANSEN 24

2.2 DESARROLLO DEL PROTOTIPO 26

2.2.1 PRIMER PROTOTIPO 26

2.2.2 SEGUNDO PROTOTIPO 30

2.2.3 TERCER PROTOTIPO 31

2.3 COSTO DE LOS MATERIALES UTILIZADOS 33

CAPÍTULO 3: DESARROLLO DEL FRAMEWORK EDUCATIVO 34

3.1 ELECCIÓN DE LAS HERRAMIENTAS PARA LA CONSTRUCCIÓN DEL FRAMEWORK 34

3.2 DESCRIPCIÓN DE FUNCIONALIDAD E INTERFAZ 36

3.3 CONSTRUCCIÓN DE BLOQUES 43

CAPÍTULO 4: COMUNICACIÓN ENTRE ARDUINO Y STRANDBOTIC 47 4.1 COMUNICACIÓN VÍA USB ENTRE FRAMEWORK DE STRANDBOTIC Y LA PLACA

ARDUINO 47

4.2 COMUNICACIÓN VÍA WIFI ENTRE STRANDBOTIC Y PLACA 48

4.2.1 DESCRIPCIÓN DE LOS MODOS DE ESP8266: STATION Y ACCESS POINT 50

(5)

4.2.2.1 SEGURIDAD 51

4.2.2.2 PROCESO DE ACTUALIZACIÓN 52

4.2.2.3 VISTA DE MEMORIA EN EL PROCESO DE ACTUALIZACIÓN 53

4.3 ANÁLISIS DE LA COMUNICACIÓN 53

4.3.1 User Datagram Protocol (UDP) 54

4.3.2 Transmission Control Protocol (TCP) 55

4.4 CONFIGURACIÓN DE COMUNICACIÓN Y ENVÍO DE PROGRAMA PARA ACTUALIZAR 56

CAPÍTULO 5: DISEÑO DE LAS SECUENCIAS DIDÁCTICAS 58

5.1 OBJETIVOS GENERALES DE LAS SECUENCIAS 58

5.2 METODOLOGÍA Y DIDÁCTICA PROPUESTA 59

5.3 DESARROLLO DE LAS SECUENCIAS 61

CAPÍTULO 6: CONCLUSIONES Y TRABAJOS A FUTURO 63

ANEXO A (PLANOS) 65

ANEXO B (INSTRUCCIONES PARA ENSAMBLAR STRANDBOTIC) 68

B1. MATERIALES PARA LA CONSTRUCCIÓN 68

B2. ARMADO DE LA ESTRUCTURA DEL ROBOT 69

B2.1. ARMADO DE CUERPO CENTRAL 69

B2.2. ENSAMBLE DE PATAS 69

B2.3. ARMADO DE ENGRANAJE DE PATAS 70

B2.4. ENSAMBLE DE PATA CON CUERPO DE ENGRANAJES 70

B2.5. UNIÓN ENGRANAJES DE PATAS 71

B2.6. UNIÓN MOTOR, CUERPO DE PATAS Y ENGRANAJE DE MOTOR 71

B3. CONEXIONES CON LA PLACA ARDUINO 72

ANEXO C (SECUENCIAS DIDÁCTICAS) 73

C1. SECUENCIA DIDÁCTICA 1: PRIMEROS PASOS CON STRANDBOTIC 74

C2. SECUENCIA DIDÁCTICA 2: REPETICIÓN 80

C3. SECUENCIA DIDÁCTICA 3: COMPORTAMIENTO CONDICIONAL 85

C4. SECUENCIA DIDÁCTICA 4: INTEGRADORA 90

(6)

ÍNDICE DE FIGURAS

Fig. 1​ Robots Educativos más comunes en Argentina 10 Fig. 2​ Seymour Papert con su Robot Tortuga (LOGO) en el año 1967 14

Fig. 3​ Robots Educativos en el mundo 15

Fig. 4​ Proyecto “Enseñando a programar con Robots” de la UNLP 16 Fig. 5​ Proyecto “UNC++” de la Universidad Nacional de Córdoba 17 Fig. 6​ Lenguaje de Programación Visual “Scratch” 20

Fig. 7​ Arduino UNO 22

Fig. 8​ Nomenclatura y longitudes de los 13 números sagrados 25 Fig. 9​ Dibujo y recorte en papel del primer diseño 26

Fig. 10​ Nomenclatura Barras del Primer Diseño 27

Fig. 11​ Pieza 1: Barras B-D-E 27

Fig. 12​ Pieza 2: Barras F 27

Fig. 13​ Pieza 3: Barras C 28

Fig. 14​ Pieza 4: Barras G-H-I 28

Fig. 15​ Pieza 5: Barras J 28

Fig. 16​ Pieza 6: Barras K 28

Fig. 17​ Pata del primer prototipo 28

Fig. 18​ Pata completa 29

Fig. 19​ Montaje final del primer prototipo 29

Fig. 20​ Piezas cortadas por láser para el segundo prototipo 30

Fig. 21​ Montaje final del segundo prototipo 31

Fig. 22​ Montaje final del tercer prototipo de frente 32 Fig. 23​ Perspectiva lateral del tercer prototipo 32 Fig. 24 Componentes del Robot Educativo con sus respectivos precios en Diciembre

2018 33

Fig. 25​ Diagrama de Casos de Uso 37

Fig. 26 Diagrama de la principal secuencia de actividades realizada por los niños en una

secuencia de programación con StrandBoTic 38

Fig. 27​ Visualización general de la Interfaz de StrandBoTic 39 Fig. 28​ Área de trabajo y bloques de la categoría “Acciones” 39 Fig. 29 Área para la visualización del programa textual (Wiring) correspondiente al

programa creado con los bloques 40

Fig. 30​ Barra de Navegación 40

(7)

Fig. 32​ Ventana de “Opciones” 42

Fig. 33​ Ventana retráctil para mostrar los mensajes del compilador Arduino 42

Fig. 34​ Bloque de la categoría “Iniciales” 43

Fig. 35​ Bloques de la categoría “Acciones” 43

Fig. 36​ Bloques de la categoría “Alternativas” 44

Fig. 37​ Bloques de la categoría “Repeticiones” 44

Fig. 38​ Bloques de la categoría “Condiciones 44

Fig. 39​ Comunicación vía USB entre StrandBotic y Arduino 48 Fig. 40​ WeMos D1 arduino compatible basado en esp8266 wifi 48 Fig. 41​ Comunicación vía WiFi entre StrandBoTic y Arduino 49 Fig. 42​ Visualización de la Memoria cuando se actualiza el Sketch 53 Fig. 43 Visualización comunicación entre dispositivos cuando se envía un programa a la

placa 54

Fig. 44​ Paquete UDP enviado en comunicación 55

Fig. 45​ Paquete TCP enviado en comunicación 56

(8)

INTRODUCCIÓN

Hoy en día, la alfabetización digital de los jóvenes está principalmente orientada a que sean buenos usuarios de las aplicaciones tecnológicas. En los últimos años, sin embargo, ha crecido el interés por ampliar esta formación tecnológica, educando a los jóvenes en la comprensión de cómo funcionan las tecnologías, de manera de convertirlos en usuarios creativos del mundo digital y no solamente en sus consumidores [22]. Existen diferentes argumentaciones para justificar la necesidad de educar a los jóvenes en Ciencias de la Computación (CC) y en particular en programación. Las más comunes refieren a los beneficios que tendría para las personas una mejor comprensión del mundo digital, así como desarrollar la habilidad de resolver problemas aprovechando las potencialidades de las tecnologías digitales, y comprender sus posibles alcances y limitaciones [24]. Teniendo en cuenta que aprender a programar es una habilidad que todos pueden desarrollar, es fundamental promover e integrar la enseñanza de las CC, y en particular programación, a la educación formal. En este sentido, desde el Consejo Federal de Educación se ha declarado de importancia estratégica a la enseñanza y el aprendizaje de la Programación en todas las escuelas durante la escolaridad obligatoria (Resolución Consejo Federal de Educación 263/15). En el año 2018, se ha incluido en el Diseño Curricular para la educación primaria 1 de la Provincia de Buenos Aires, las TICs como eje transversal a las distintas áreas, así como también se han agregado contenidos específicos de las CC como Programación Orientada a Objetos. “Cuando uno programa, ejercita ciertas habilidades que podríamos llamar ladrillos de la cognición, en el sentido de que luego sirven para los más variados órdenes de la vida” [32], es decir, que enseñar programación y CC hace que los estudiantes adquieran habilidades transversales que son aplicables a la vida en general. Entre ellas, se pueden mencionar la abstracción; la división de un problema en problemáticas más pequeñas y manejables; la generalización, para en vez de resolver un problema en particular resolver la clase de problemas que lo contiene, y en general, la identificación de problemas y la formulación y validación de soluciones como una serie de pasos manejables a través de un algoritmo.

A nivel mundial, la evolución educativa que supone la Educación STEM (del acrónimo en inglés Science, Technology, Engineering y Mathematics) en el siglo XXI es que la Ingeniería y

1

(9)

sus métodos se abren paso también en el currículo de la Educación Primaria y Secundaria de igual modo que la Ciencia y el método científico se incorporaron al currículo en el siglo XX [35]. Actualmente la robótica educativa ofrece ambientes favorables para el desarrollo de proyectos de programación cuyos productos salen de las pantallas para dar vida a artefactos concretos que se mueven y toman datos del ambiente para realizar ciertas acciones [9] [1]. Observar como un robot puede esquivar obstáculos hasta llegar a su meta en el rincón de una habitación, e interactuar con nosotros a través de nuestro celular, tiene más impacto emocional que ver como un personaje u objeto deambula en nuestro monitor, esquivando obstáculos virtuales hasta llegar a su meta [22].

Algunos de los productos de robótica educativa más relevante en el mundo son LEGO Mindstorms , Bee-Bot , Fischertechnik , VEX EDR kit y robot Moway . La mayoría de los2 3 4 5 6 productos mencionados anteriormente son creados por compañías en países desarrollados con niveles y condiciones de vida diferentes a los de las economías de países de Latinoamérica. A su vez, en el campo técnico, las tres desventajas más comunes de estos kits son su alto costo, el número de piezas definido y el comportamiento de los sensores que componen el sistema de “percepción” de los robots, los cuales en muchos casos son complejos en el uso y programación [15]. Estos factores impiden que los estudiantes desarrollen algunas competencias básicas como el fortalecimiento de habilidades creativas y de diseño. En Argentina, por ejemplo, se destacan alternativas como el Proyecto Icaro , 7 RobotDuino , los productos de RobotGroup como el N6 Max y proyectos de Universidades8 9 como “Enseñando a programar con Robots” 10 de la Universidad Nacional de La Plata, el proyecto “UNC++” de la Universidad Nacional de Córdoba y “FrankLab” [8] una plataforma11 Web de robótica educativa desarrollada por el Grupo de Investigación en Lenguajes e Inteligencia Artificial de la Universidad Nacional del Comahue. En la ​fig. 1 se pueden observar algunos de estos robots.

(10)

Fig. 1 Robots Educativos más comunes en Argentina

Considerando que los productos de robótica educativa más relevantes en el mundo implican un alto costo y en su mayoría son difíciles de usar o están destinadas a un público en particular, debemos pensar en una plataforma educativa basada en robótica que se adapte a las necesidades locales.

MOTIVACIÓN

Teniendo en cuenta lo mencionado anteriormente en la introducción, nuestro propósito principal es realizar bajo el concepto de innovación abierta una plataforma educativa que sea accesible, tanto desde lo funcional como lo económico, y proveer de una secuencia didáctica que acompañe y guíe al docente en sus actividades áulicas. De esta manera, el uso de la robótica educativa en el proceso de aprendizaje de los estudiantes, podría facilitar el desarrollo de distintas experiencias en el proceso de enseñanza-aprendizaje, promoviendo la motivación de los estudiantes a estudiar carreras de Informática, además de contribuir a la enseñanza de programación tanto de principiantes como avanzados desarrollando capacidades de pensamiento lógico y computacional.

(11)

OBJETIVOS

En este trabajo se propone desarrollar una plataforma (StrandBoTic) con fines educativos basada en robótica de bajo costo, utilizando hardware y software libre para que estudiantes aprendan a pensar algorítmicamente, así como también poder motivarlos a estudiar carreras relacionadas a CC.

A su vez, se construirá un prototipo con el mecanismo de Theo Jansen [37], el cual poseerá distintos sensores y protocolos de comunicación para realizar todas las pruebas necesarias para el correcto funcionamiento del framework.

Como parte de la plataforma se desarrollará un framework para facilitarle a los estudiantes el desarrollo de programas de alto nivel. Además, se realizarán secuencias didácticas destinadas a estudiantes del segundo ciclo de Educación Primaria, para enseñar a programar de forma sencilla, los movimientos a realizar por el robot introduciéndolos en los conceptos básicos de programación e incentivándolos a participar en clase, generando interesantes ambientes de aprendizaje donde pueden poner en práctica todos los temas vistos. Las mismas están diseñadas para ser utilizadas dentro de materias relacionadas al área de Informática y Tecnología.

ESTRUCTURA DE LA TESIS

(12)

(13)

CAPÍTULO 1: ESTADO DEL ARTE

En este primer capítulo se realiza una introducción a la enseñanza del pensamiento computacional a través de robótica educativa y el uso de la programación visual por bloques. Para una mejor comprensión del tema y cómo abordarlo, se han revisado numerosos trabajos y se han considerado los diversos enfoques de la robótica educativa en el mundo, y en Argentina en particular. Se ha profundizado en los movimientos de hardware y software libre, así como también el uso de secuencias didácticas en el proceso de enseñanza-aprendizaje para poder utilizarlos en el desarrollo de esta tesis.

1.1 PENSAMIENTO COMPUTACIONAL

El pensamiento computacional (PC) se viene situando en el foco de la innovación educativa como un conjunto de habilidades de solución de problemas que debe ser adquirido por las nuevas generaciones de estudiantes. Jan Cuny, Larry Snyder y Janet Wing definen el Pensamiento Computacional como “el proceso de pensamiento involucrado en la formulación de problemas y de sus soluciones de manera que esas soluciones estén representadas para poder ser efectivamente ejecutadas por un agente procesador de información” [39]. Para Hemmendinger [18], el objetivo del desarrollo del Pensamiento Computacional no es el de hacer que todos pasen a pensar como científicos de la computación, sino habilitar a las personas a aplicar esta manera específica de razonar en la búsqueda de nuevos cuestionamientos y en la solución de diversos tipos de problemas en las más variadas áreas del conocimiento [3].

(14)

estudiar sobre las posibles maneras de trabajar el PC en las escuelas y de qué forma el aprendizaje de programación, en los primeros años de la Enseñanza Fundamental, puede contribuir a su desarrollo. Se espera que esta tesis pueda ayudar en la búsqueda de estos descubrimientos, y ofrecer también herramientas que colaboren con la enseñanza y aprendizaje del PC a través de la programación.

1.2 ROBÓTICA EDUCATIVA EN EL MUNDO

La idea del uso de la Robótica en educación se basa fuertemente en la Teoría Construccionista de Seymour Papert, que une la Teoría Constructivista de Jean Piaget al uso de la computadora en la educación [15]. La Robótica Educativa permite a las personas controlar objetos concretos y, a través de éstos, observar la materialización de los comandos dados por ella en la computadora, proceso a partir del cual, tomando como base la teoría constructivista de Jean Piaget [26], se establece la construcción del conocimiento. En este contexto, Papert creó el LOGO ( ​fig. 2​), un software que permite a los usuarios, a través de líneas de código, mover una "tortuga", un animal cibernético que puede ser tanto un objeto virtual (presente en la pantalla del ordenador) como un objeto físico manipulable [25][33]. Esta tortuga deja un rastro (una línea dibujada) por donde "camina" permitiendo al usuario tener una retroalimentación inmediata de los comandos dados por él a la computadora. En este proceso, de reflexión del usuario sobre los resultados concretos de los comandos dados por él al ordenador a partir de la observación de los elementos gráficos construidos por medio de los movimientos de la tortuga es que se establece la construcción del conocimiento.

(15)

Desde su creación por Papert hasta los días de hoy, el LOGO, en todas sus implementaciones, viene siendo la principal herramienta de aplicación del "modo de pensar" construccionista, y trae en sí una semilla del uso de la robótica en la educación a través del uso de su tortuga robot. Sin embargo, aunque las primeras versiones del LOGO hacían uso de una tortuga robot real que se movía sobre una hoja de papel [25], las versiones comúnmente utilizadas son puramente virtuales, ofreciendo una "arquitectura robótica" pobre y algunas limitaciones, como imposibilidad de observar los posibles efectos del ambiente real sobre los experimentos realizados.

Sin embargo, hasta hace poco tiempo, el uso de la robótica en la educación quedaba imposibilitado por la falta de acceso a robots, o a los componentes necesarios para su construcción, debido principalmente a su alto costo. Pero, recientes avances en relación al precio, tamaño, rendimiento y capacidad de los componentes utilizados para la construcción y manipulación de robots hicieron surgir en el mercado una serie de Kits de Robótica Educativa (​fig. 3​), algunos propietarios, como LEGO Mindstorms (400 Euros), Bee-Bot (79 Euros), Fischertechnik (105 Euros) y otros basados ​​en Software y Hardware Libre (ver sección 1.6), resultando en un gran crecimiento del uso de la robótica en el área educativa.

Fig. 3 Robots Educativos en el mundo

(16)

hace que trabajos como éste se presenten como de gran importancia en lo que se refiere al uso de la robótica en la educación.

1.3 ROBÓTICA EDUCATIVA EN ARGENTINA

En diferentes escuelas de nuestro país se impulsan diferentes iniciativas tendientes a enseñar a programar, llevadas adelante principalmente por docentes del área de NTICx en el nivel de enseñanza secundaria o del nivel primario. Es así que en algunas escuelas se desarrollan algunos proyectos mezclando aspectos de programación con robótica, promoviendo en los jóvenes el interés en la programación, entendiendo que aprender a programar es el fundamento del pensamiento computacional.

En el ámbito público, se pueden destacar algunos proyectos de Universidades como “Enseñando a programar con Robots” de la Universidad Nacional de La Plata ( ​fig. 4 ​) y el proyecto “UNC++” de la Universidad Nacional de Córdoba (​fig. 5​) y “FrankLab” de la Universidad Nacional del Comahue.

El primero nació en el año 2009, integrado por alumnos y docentes de la Facultad de Informática y el LINTI (Laboratorio de Investigación en Nuevas Tecnologías Informáticas). Está basado en la iniciativa RobotEducation12 presentada en el evento “Latinamerican Academic Summit 2008”, organizado por Microsoft Research en la ciudad de Panamá. Tiene como objetivos incentivar el interés de los niños y jóvenes en el uso de la tecnología con fines educativos; difundir y trabajar con software libre e introducir a docentes y jóvenes al mundo de la programación.

Fig. 4 Proyecto “Enseñando a programar con Robots” de la UNLP

12

(17)

El segundo, nace en el año 2013, integrado por docentes y egresados de Computación, Educación, Psicología y Trabajo Social. Es un programa de enseñanza de las Ciencias de la Computación que aborda tres ejes: formación docente, desarrollo de materiales didácticos y diseño y realización de pruebas piloto de experiencias de enseñanza de las CC en escuelas primarias y secundarias. En el año 2015 se agregó “UNC++Duino”, una plataforma que permite programar robots [4]

Fig. 5 Proyecto “UNC++” de la Universidad Nacional de Córdoba

El tercero, consiste en una plataforma web de robótica educativa desarrollada por el grupo de Investigación en Lenguajes e Inteligencia Artificial de la UNCo. Actualmente están desarrollando el primer prototipo de la plataforma con licencia open source, y esperan validar a FrankLab en actividades de extensión que se llevan a cabo con estudiantes de diferentes niveles educativos.

Otro proyecto muy interesante que nace en la Provincia de Córdoba y ha tenido un proceso amplio de implementación en colegios técnicos en Tucumán es el proyecto ICARO . Se trata 13 de un desarrollo de software y hardware libre para la enseñanza de robótica en colegios primarios y secundarios, tratando de acercar de forma sencilla los fundamentos de la robótica simplificando conceptos técnicos complejos para que los docentes necesiten conocimientos mínimos para poder trabajar en el aula.

En el ámbito privado, una de las empresas que más destacadas es “RobotGroup” , una 14 empresa que nace en el año 2000 ofreciendo cursos y talleres de robótica, y en el año 2008, emprende como nuevo reto la fabricación de robots, entre los que se destacan el N6 Max y

13https://roboticaro.org/

(18)

Duino. Otra empresa, pionera en la fabricación de kits robóticos educativos de bajo costo compatibles con tecnología Arduino es “RobotDuino” de General Pico, La Pampa.

El uso en las aulas de los proyectos mencionados anteriormente, son iniciativas aisladas y sólo sistematizadas por el grupo de docentes que las llevan adelante, las cuales se replican o extienden en otras instituciones sólo a través de la capacitación propia de los mismos docentes. En los últimos tiempos, ha comenzado un programa con el objeto de institucionalizar el uso de robot en las escuelas. En Agosto de 2016, el Ministerio de Ciencia, Tecnología e Innovación Productiva de la Nación (MINCYT) a través del Consejo Federal de Ciencia y Tecnología (COFECYT) ha impulsado el “Programa Robótica y Tecnología para Educar”. Este programa tiene como objetivo promover el uso de robótica en las aulas y de las herramientas que ofrecen las nuevas tecnologías en toda la Argentina.

1.4 ENSEÑANZA DE PROGRAMACIÓN EN LA ESCUELA

La creciente y cada vez más acelerada inserción de las TIC en la vida cotidiana de las

personas, ha generado una nueva dimensión en el aprendizaje de programación para niños:

“​saber programar se ha vuelto tan esencial como saber escribir​” [27]. Para Resnick, una

persona no aprende a escribir porque va a convertirse en un escritor profesional, pero sí,

porque saber escribir es algo útil en todos los aspectos de nuestra vida, ya que la escritura

promueve nuevas formas de pensar​. ​Al escribir aprendemos a organizar, refinar y reflejar nuestras ideas.De la misma manera, aprender a programar no es solamente útil para quien se convertirá en un Programador o un Ingeniero de Sistemas, sino que dichos conocimientos

(19)

Este entendimiento que el aprendizaje de la programación de computadoras es algo

esencial en la sociedad actual ha desencadenado una serie de iniciativas para que este

aprendizaje sea posible y accesible a cualquier persona desde los primeros años de la vida

escolar hasta la vida adulta. En este sentido, en el año 2014, el Estado Nacional lanza la

iniciativa Program.Ar junto con la Fundación Sadosky buscando acercar a los jóvenes al15 16

aprendizaje de las ciencias de la computación y concientizar a la sociedad en general sobre

la importancia de conocer estos conceptos [14]. También, desde el Consejo Federal de

Educación se ha declarado de importancia estratégica a la enseñanza y el aprendizaje de la

Programación en todas las escuelas durante la escolaridad obligatoria (Resolución Consejo

Federal de Educación 263/15). En consecuencia con esto, en Octubre de 2018, en la

Provincia de Neuquén, se aprobó un nuevo diseño curricular para el nivel secundario que

incluye la enseñanza de la disciplina a los fundamentos de la Ciencia de la Computación, en

estrecha relación epistemológica con la Matemática (Resolución 1463/18, Consejo de

Educación, Ministerio de Educación, Prov. de Neuquén) 17

StrandBoTic se inserta exactamente en este contexto, como una plataforma gratuita de

apoyo a la enseñanza de programación para niños y jóvenes basada en software libre y

asociada a hardware de bajo costo ​(ver sección 1.6)

1.5 LENGUAJES DE PROGRAMACIÓN VISUAL

Junto con las primeras computadoras personales (PCs), a finales de los años setenta, surgió también un gran interés de utilizar computadoras en las escuelas para el aprendizaje de programación. Así, en esa época, innumerables escuelas en los Estados Unidos enseñaron a miles de niños a escribir pequeños programas en lenguajes como LOGO (ver sección 1.2) o BASIC . Sin embargo, aunque muchos estudiantes y profesores se entusiasmaron con esa18 idea, a lo largo de los años, la mayoría de las escuelas pasó a utilizar las computadoras para otros fines distintos de la enseñanza de programación [28]. Una de las razones por las cuales las iniciativas de enseñanza de programación para niños, como el uso del LOGO, propuesto por Papert, no funcionaron fue el hecho de que los lenguajes de programación de la época

15http://program.ar/

16http://www.fundacionsadosky.org.ar/

17https://www.neuquen.edu.ar/wp-content/uploads/2018/12/r_1463_18-parte-VI.pdf

18Siglas de Beginner's All-purpose Symbolic Instruction Code (Código simbólico de instrucciones de propósito general para principiantes),

(20)

eran muy difíciles, de manera que muchos niños simplemente no podían aprender su sintaxis . 19

En el transcurso del tiempo, algunas iniciativas surgieron en el sentido de intentar vencer esas dificultades. En lo que se refiere al entendimiento de la sintaxis de los lenguajes de programación textual, una alternativa encontrada fue el uso de Lenguajes de Programación Visual (Visual Programming Language - VPL), es decir, lenguajes en los que la sintaxis incluye expresiones visuales [5]. En base a este paradigma, el MIT (Massachusetts Institute of Technology), inició en 2003 el desarrollo de Scratch ( 20 ​fig. 6​), un lenguaje de programación que tenía por objetivo permitir que cualquier persona, de cualquier edad, pudiera programar. Uno de los principales conceptos utilizados para el diseño de Scratch fue el uso de “bloques”. Scratch es actualmente la principal referencia en lo que se refiere a la enseñanza de programación para niños, permitiendo que desarrollen la creatividad, el pensamiento computacional y la habilidad de trabajar en grupo [28].

Fig. 6 Lenguaje de Programación Visual “Scratch”

Además de Scratch, otros proyectos de gran volumen, orientados a la enseñanza de programación para niños, y que también adoptan el concepto de la programación visual por medio de bloques son Code.org21 o PilasBloques , los cuales poseen sus propias22 herramientas de enseñanza de la programación. Como consecuencia de todos estos proyectos, nos pareció que los ambientes de programación por bloques, son un enfoque

19 En lenguajes de programación, se refiere al conjunto de reglas que define la forma de un lenguaje, estableciendo como están

compuestas sus estructuras básicas, es decir, qué palabras y símbolos forman parte de este lenguaje y de qué forma pueden ser combinado

(21)

bastante acertado en lo que se refiere a la enseñanza de programación para niños, lo cual motivó el uso de este mismo paradigma en el desarrollo de la plataforma educativa “StrandBoTic”.

1.6 SOFTWARE Y HARDWARE LIBRES

El movimiento del software libre tiene como objetivo obtener y garantizar las libertades que permiten a los usuarios de software ejecutarlo, estudiarlo, cambiarlo y redistribuir copias del mismo con o sin cambios. Surge de forma oficial y organizada en 1985 con la creación de la Free Software Foundation23 (FSF), una organización sin fines de lucro dedicada al desarrollo de software libre. La FSF tuvo su origen con el descontento de Richard Stallman 24 con la práctica del desarrollo de software propietario, que impedía que el código fuente de un software pudiera ser accedido y utilizado libremente para el desarrollo de nuevas aplicaciones [34].

Actualmente, este movimiento cuenta con miles de colaboradores y ofrece a toda la comunidad global una cantidad significativa de softwares con código abierto de gran calidad, entre ellos, sistemas operativos, como algunas versiones del sistema operativo Linux , lenguajes de programación como Pyhton y Java , entre otros.25 26 27 ​Además de estos proyectos, existen también, disponibles en repositorios de Software Libre como GitHub , un28

número incalculable de software, cuyos códigos pueden ser libremente descargados,

utilizados, modificados y redistribuidos, permitiendo a cualquier persona la mejora de los

softwares que se encuentran disponibles, así como desarrollar, individual o colectivamente,

nuevos programas basados ​​en los códigos de esos softwares.

También, el movimiento Software Libre cuenta con algunas organizaciones internacionales responsables de promover y preservar la libertad de esos softwares, definiendo, entre otras cosas, los términos relativos a las licencias de los mismos. Una de las licencias más conocida es la GNU GPL (General Public License), definida por la FSF. Esta licencia mantiene los derechos de autor del desarrollador del programa, pero da una serie de libertades a los

23

https://www.fsf.org/

24

Comenzó su trabajo en los laboratorios del MIT como programador y arquitecto desarrollando software de sistemas operativos. Ha desarrollado su carrera en la vida pública como programador y arquitecto fundando un movimiento por la libertad en un mundo cada vez más definido por el código.

25https://www.getgnulinux.org/es/home/ 26https://www.python.org/

(22)

usuarios, entre las cuales, el derecho de estudiar, cambiar, copiar y redistribuir el software [25].

Otro movimiento relacionado con la democratización del acceso a la tecnología es el Movimiento Hardware Libre. El hardware libre toma las mismas ideas que el Software Libre para aplicarlas en su campo, es decir, hardware cuyas especificaciones y diagramas esquemáticos son de acceso público [16]​.

Un ejemplo de hardware de este tipo es Arduino ( 29 ​fig. 7​), un proyecto desarrollado por un grupo de cinco investigadores de diferentes nacionalidades en el Interaction Design Institute Ivrea. Su objetivo fue la creación de una plataforma de prototipado electrónico que fuera simple de usar por cualquier estudiante, incluso niños, de manera que ellos pudieran fácilmente crear "cosas" que funcionen sin la necesidad de asistir a un curso completo de electrónica [2]. Por ser un hardware de código abierto, todos los archivos con los esquemas de los circuitos están disponibles para descargar. Además, toda la documentación y las metodologías de enseñanza también están disponibles y pueden ser utilizadas libremente.

Fig. 7 Arduino UNO

Cabe destacar que su bajo costo, calidad, flexibilidad y facilidad de uso, han hecho de las placas de prototipado electrónico Arduino una excelente opción para el desarrollo de proyectos en el área de Robótica Educativa.

1.7 USO DE SECUENCIAS DIDÁCTICAS EN EL PROCESO DE ENSEÑANZA APRENDIZAJE

Un material didáctico es aquel elaborado con la finalidad de ser utilizado en el contexto de

un proceso de enseñanza y aprendizaje. Moreira, define secuencia didáctica como

secuencias de enseñanza potencialmente facilitadoras de aprendizaje significativo, de temas

(23)

específicos de conocimiento conceptual o procedimental, que pueden estimular la

investigación aplicada en la enseñanza diaria de las clases [23]. Según el autor, solo se

puede hablar de enseñanza cuando hay aprendizaje, y para que el aprendizaje pueda ser

considerado como tal, debe ser significativo.

La elaboración de una secuencia didáctica es una tarea importante para organizar

situaciones de aprendizaje que se desarrollarán en el trabajo con los estudiantes para crear

situaciones que les permitan desarrollar un aprendizaje significativo.

En el contexto del aprendizaje de ciencia, tecnología, ingeniería y matemáticas (STEM)

Subramaniam y otros (2012) presentan una propuesta del uso de secuencias didácticas para

atraer a jóvenes estudiantes [36]. Más específicamente en lo que se refiere a Robótica

Educativa, Rusk y otros (2008) ven en el uso de secuencias didácticas una manera de atraer

a más niños para ese tipo de actividad [29].

Los beneficios traídos por el uso de las secuencias en el proceso de enseñanza-aprendizaje,

tanto en un sentido amplio como de manera particular en la enseñanza de STEM y Robótica

Educativa (conforme se puede observar en los trabajos aquí citados) sugieren el uso de

éstas como una estrategia bastante interesante a ser adoptada para la enseñanza de

programación y el pensamiento computacional con la plataforma StrandBoTic. Sin embargo,

(24)

CAPÍTULO 2: DISEÑO Y CONSTRUCCIÓN DEL PROTOTIPO

En este capítulo se analiza el proceso de construcción del robot. Se hará un análisis de las diferentes etapas en el desarrollo, comenzando por la situación inicial de decidir el mecanismo, pasando por los bocetos hasta la fabricación de varios prototipos en varios materiales. Aquí se detallan paso a paso cada una de las piezas que compondrán el dispositivo en su totalidad. Cabe destacar que en este apartado sólo se detallarán las especificaciones de diseño de cada uno de los elementos. Las dimensiones, medidas, etc., de los planos se especifican en el ​ANEXO A ​, mientras que las instrucciones para armar el robot educativo se encuentran en el ​ANEXO B​.

2.1 MECANISMO DE THEO JANSEN

Los mecanismos son una gran oportunidad para hacer geometría, sus construcciones involucran una gran cantidad de factores que no siempre son tan visibles. El mecanismo de Theo Jansen, que es el escogido para la realización de este proyecto, simula el movimiento de la pata de un animal.

Theo Jansen, es un inventor holandés que ha creado una multitud de máquinas capaces de moverse libremente bajo la acción del viento. La simple energía potencial de este elemento genera la energía suficiente para dar movimiento a sus diversos mecanismos, como si fuera el proceso de darle vida a seres vivos. Puede decirse que los desarrollos de este tipo de mecanismo entrelazan la “ingeniería y el arte”. [28]

(25)

ruedas es que elimina la desventaja principal que supone el uso de éstas, no es necesario tocar cada centímetro del suelo a lo largo del camino a recorrer, con lo cual ganamos facilidad de movimiento en todo tipo de terrenos.

Todas las creaciones del autor comparten un secreto matemático, los trece “números sagrados” que Jansen calculó hace 25 años con un ordenador Atari. Estos indican la longitud de las barras que componen las patas y definen la forma particular que tienen los animales de playa al caminar. El artista usó un programa informático que generaba, seleccionaba y mejoraba cientos de patas diferentes. El proceso se repitió sin descanso durante meses hasta que Jansen obtuvo las medidas ideales para las patas.

La ​fig. 8​ recoge las longitudes de los 13 números sagrados.

Fig. 8 Nomenclatura y longitudes de los 13 números sagrados

(26)

2.2 DESARROLLO DEL PROTOTIPO

Tras definir por completo las pautas a seguir para el diseño del mecanismo llega el momento de establecer las normas principales para llevar a cabo el diseño y construcción del dispositivo a desarrollar. Hay que tener claro cómo diseñar el mecanismo, con qué materiales, dimensiones, entre otras cuestiones. Considerando los mecanismos desarrollados de Theo Jansen como inspiración, se desarrolló un modelo que a diferencia de los que Theo Jansen consta de 4 patas delanteras y 4 traseras, o 4 pares de patas, esto con la finalidad de reducir el número de patas.

2.2.1 PRIMER PROTOTIPO

En un primer momento, la idea pasaba por utilizar los planos de una tesis de fin de grado en Ingeniería en Diseño Mecánico [6], los cuales tomaban como unidad de medida el mm, y escalaban las medidas proporcionadas por el artista al doble de las indicadas en los 13 números sagrados.

Definidas por completo las medidas a utilizar, pasamos a dibujar lo que será un primer diseño en papel. El resultado del primer diseño es el que se muestra en la ​fig. 9​.

Fig. 9 Dibujo y recorte en papel del primer diseño

(27)

a que las utilizadas para la construcción de este modelo poseen unas medidas que se asemejan a las adoptadas por Theo Jansen, pero no llegan a ser totalmente fieles a los 13 números sagrados que propuso Theo Jansen.

Una vez descartado este intento fallido de imitar el movimiento del mecanismo Theo Jansen, se procedió a hacer uso de la información obtenida tras el estudio realizado sobre el artista, y en conjunto con los planos nombrados anteriormente, se comenzó a hacer el recorte de las piezas de forma artesanal en madera MDF de 3 mm.

En la sucesión de imágenes se aprecia la evolución desde el cambio en el diseño general del modelo de pata, pasando por el rediseño de una de las piezas hasta su aspecto final.

En la ​fig. 10 se detalla la nomenclatura a utilizar para cada una de las piezas. Como se puede observar, varios componentes están formados por varias barras, lo que supone reducir el número total de barras al diseño original de Theo Jansen, lo cual se cree proporcionará al diseño de mayor robustez y estabilidad.

Fig. 10 Nomenclatura Barras del Primer Diseño

A continuación, mostramos en las ​fig. 11 a 16​ las piezas en su forma definitiva:

(28)

Fig. 13 Pieza 3: Barras C Fig. 14 Pieza 4: Barras G-H-I

Fig. 15 Pieza 5: Barras J Fig. 16 Pieza 6: Barras K

Tras finalizar con el recorte individual y artesanal de cada una de las piezas que componen cada una de las patas, procedimos con la construcción de una de ellas. El resultado es el que se muestra en la ​fig. 17​.

(29)

En la ​fig. 18​ observamos el conjunto de que componen dos patas.

Fig. 18 Pata completa

Con el diseño de las piezas definido y la secuencia de movimiento establecida para que trace la trayectoria deseada, llega el turno de plantear el resto de piezas que componen el mecanismo, tales así como soportes, bases y demás piezas que proporcionen al mecanismo final para que forme el robot completo (​fig. 19​).

Fig. 19 Montaje final del primer prototipo

(30)

barra central que debe unir todo el conjunto, aspecto muy difícil de construir a bajo costo, lo cual era una de las premisas a la hora de construir nuestro robot. Por lo tanto, como los cigüeñales representaban piezas muy complejas, se decidió hacer otro diseño para no tener que utilizarlos.

2.2.2 SEGUNDO PROTOTIPO

A partir de lo explicado sobre los cigüeñales, pasamos al diseño de un segundo prototipo. En este caso, tomamos los planos que aparecen en la edición alemana de la revista Make Magazine, número 1/201630 ya que cambiaba el sistema del cigüeñal por un sistema de engranajes que era alimentado por una varilla roscada que conectaba los motores Futaba S300331 en el medio del robot. Se tuvo que desarmar los motores y modificarlos internamente para lograr un giro de 360°.

Se rediseñó las piezas del prototipo, dándole un diseño y estilo original, pero siempre respetando a los 13 números sagrados que propuso Theo Jansen. Para obtener las piezas deseadas, se llevó un archivo con los planos en formato CDR a una “Artística” de la ciudad 32 de Tandil para que realice los cortes láser correspondientes en madera fibrofacil de 3 mm. Al usar el corte por láser se consiguió un acabado muy profesional como se puede observar en la ​fig. 20​.

Fig. 20 Piezas cortadas por láser para el segundo prototipo

30

https://www.heise.de/select/make/2016/1/1456381329021210

31https://servodatabase.com/servo/futaba/s3003 32

(31)

Se emplearon tornillos y tuercas autofrenantes de metal con diferentes longitudes en función de cada zona del robot para hacer el montaje final (​fig. 21​).

Fig. 21 Montaje final del segundo prototipo

Luego de armar el segundo prototipo, se procedió a la revisión y evaluación del mismo. Se detectaron diferentes elementos susceptibles de corrección. A continuación, se detallan algunos de los más significativos:

● La tornillería empleada supone un aumento de peso a la estructura. Al usar tornillos y tuercas autofrenantes de metal, supone mucho peso.

● El movimiento giratorio que deben realizar determinadas piezas conlleva a que las tuercas autofrenantes pierdan la posición inicial, lo cual conduce al cierre de las mismas provocando que la estructura pierda su resistencia y fijación inicial.

● Los motores Futaba S3003 son las piezas de mayor costo del robot, y además, requieren que se los modifique internamente para lograr un giro de 360°.

2.2.3 TERCER PROTOTIPO

Tras corregir los errores detectados, se pasó al tercer prototipo. Se investigó un sistema alternativo a la tornillería con el propósito de reducir el peso, y a su vez, con esta posible mejora, intentar subsanar el inconveniente del giro de las piezas. Una empresa en la ciudad de Buenos Aires llamada “Fornis - Centro de Anclajes” fabrica tornillos con tuerca Guía en 33

(32)

plástico polipropileno blanco. Con este nuevo sistema se consiguió que el giro especificado se produzca sin complicaciones y a su vez no pierda la forma original. Además, se pudo reducir el peso de la estructura.

Por último, quedaba solucionar el problema del costo de los motores para lo cual se compraron dos Motores DC de 3v a 6v con caja Reductora 34 y un eje bilateral. Para colocarlos, se tuvo que rediseñar el prototipo quitando la varilla roscada. De esta forma, el motor alimenta con su propio eje bilateral los engranajes ocasionando menos conflictos a la hora del rozamiento y la transmisión. En las ​fig. 22 y 23​podemos observar el montaje final del tercer prototipo

Fig. 22 Montaje final del tercer prototipo de frente

Fig. 23 Perspectiva lateral del tercer prototipo

(33)

Se decidió utilizar dos sensores para ayudar al Robot Educativo en su trayectoria. En primer lugar, un sensor ultrasónico de distancia Hc-sr04 cuyo funcionamiento se basa en el envío de un pulso de alta frecuencia, no audible por el ser humano, el cual rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia. El sensor elegido además de ser barato, es sencillo de usar. En segundo lugar, se utilizó el módulo sensor de color TCS230 que puede detectar una gran cantidad de colores capturando los datos RGB de una fuente de luz y convirtiéndolos en una señal cuadrada en el pin de salida.

Finalmente, es importante destacar el módulo controlador de motores Puente H L298N que permite controlar la velocidad y la dirección de los dos motores de corriente continua o un motor paso a paso de una forma muy sencilla.

2.3 COSTO DE LOS MATERIALES UTILIZADOS

Los materiales utilizados han sido seleccionados teniendo en cuenta su costo y disponibilidad en la zona de Tandil o la Pcia. de Bs. As.

El Robot Educativo cuenta con los siguientes componentes (​fig. 24​):

(34)

CAPÍTULO 3: DESARROLLO DEL FRAMEWORK EDUCATIVO

En este capítulo se va a describir la funcionalidad e interfaz del framework educativo de 35 StrandBoTic que permite a los estudiantes el desarrollo de programas de alto nivel, detallar los principales aspectos de diseño y técnicos del desarrollo, así como también presentar la justificación de las herramientas que elegimos para la construcción del mismo.

3.1 ELECCIÓN DE LAS HERRAMIENTAS PARA LA CONSTRUCCIÓN DEL FRAMEWORK

Como se mencionó en la sección 1.5 del Capítulo 1, u ​n lenguaje de programación visual (VPL) es un lenguaje de programación que permite al usuario crear programas a través de la

manipulación gráfica. Muchos VPL todavía usan texto o combinan texto con

representaciones visuales. Algunos modelos de interacción comunes en VPL son: ● Arrastrar bloques alrededor de una pantalla, por ejemplo Scratch

● Uso de diagramas de flujo, diagramas de estado y otros componentes, por ejemplo,

Pure Data

● Uso de iconos o representación no textual, por ejemplo, Kodu

Los ambientes de programación por bloques, son un enfoque bastante acertado en lo que se refiere a la enseñanza de programación para niños, lo cual motivó el uso de este mismo paradigma en el desarrollo de la plataforma educativa “StrandBoTic”.

El desarrollo del entorno de programación visual en bloques “StrandBoTic” tuvo como inspiración el S4A - Scratch for Arduino , un entorno de programación en bloques 36 desarrollado por el equipo de Smalltalk del Citilab en el año 2010, diseñado específicamente para el control de plataformas de prototipado electrónico Arduino y totalmente basado en Software libre. El S4A es una modificación de Scratch 37 que permite la programación de placas Arduino a partir de bloques diseñados específicamente para ese fin. Además de tratarse de una extensión de Scratch, el S4A interactúa con Arduino enviando el estado de los actuadores y recibiendo el estado de los sensores. Estas dos características hicieron del S4A un fuerte candidato a ser utilizado como base para el desarrollo de StrandBoTic.

35 Un framework es un entorno de desarrollo completo, que suele facilitar herramientas como el compilador y el editor de código.

También, cuenta con un poderoso conjunto de bibliotecas y con funciones útiles previamente implementadas, que ahorran tiempo y esfuerzo al desarrollador.

(35)

Sin embargo, el S4A utiliza en su código fuente el lenguaje Squeak , un entorno de 38

programación de código abierto basado en el lenguaje SmallTalk . Squeak no es un lenguaje 39

orientado al desarrollo de aplicaciones WEB, por lo cual sería necesario dedicar un tiempo

razonable para su aprendizaje de manera tal de hacer las adaptaciones necesarias de los

bloques Arduino del S4A, así como también otras cuestiones que sólo podrían verificarse

tras un estudio más profundo del ambiente. Ante este escenario, se buscaron nuevas

alternativas.

Se llegó entonces, después de algunas investigaciones, a Blockly , una librería de código 40

abierto desarrollada por Google Developers41 ​en mayo de 2012 y que se mantiene en desarrollo activo a partir de 2017. Está b ​asada en tecnología WEB, y orientada a la construcción de ambientes de programación visual. Su código está representado por

bloques, que pueden arrastrarse por la pantalla, y tienen diferentes puntos de conexión

donde pueden unirse a otros bloques y encadenarse entre sí. ​Proporciona una interfaz de usuario de editor de bloques y un marco para generar código en lenguajes basados ​​en texto. Incluye generadores para JavaScript, Lua, PHP, Dart y Python, además de que se pueden crear generadores personalizados para otros lenguajes de texto.

Además de ser una biblioteca pensada exactamente para servir de base al desarrollo de

ambientes de Programación Visual en Bloques, y de soportar los requisitos fundamentales

de la plataforma StrandBoTic, es decir, ser basada en Software Libre y poder usar tecnología

web, la librería Blockly posee una serie de características que responden a otros requisitos

importantes:

● Posibilita la utilización de imágenes en los bloques.

● Permite la generación y visualización de código textual a partir de los bloques.

● Los entornos creados con la biblioteca Blockly se pueden utilizar tanto en un servidor

WEB como en el lado cliente (es decir, fuera de línea).

● Posibilita la inserción de comentarios en el código a partir de los bloques

● Es compatible con los navegadores Chrome, Firefox, Safari, Opera e Internet

Explorer, y también con diversos sistemas operativos, incluyendo Android e IOS, lo

que permite su utilización en una diversidad de dispositivos móviles.

38http://squeak.org/ 39http://smalltalk.gnu.org/

(36)

La biblioteca Blockly posee también una extensa documentación, tutoriales para el uso de todas sus funcionalidades, una biblioteca de ejemplos y un grupo de discusión bastante activo, lo que facilita mucho la obtención de soporte por parte del desarrollador, y fue a través de ese grupo de discusión que se llegó a Ardublockly , un ambiente de programación 42 en Bloques para Arduino desarrollado a partir de la biblioteca Blockly. Ardublockly agregó a las ventajas ya existentes en el uso de Blockly, los siguientes atributos:

● El paquete Python "ArdublocklyServer" inicializa un servidor local para poder

compilar y cargar el código Arduino usando el IDE de Arduino.

● La utilización, en su interfaz, de la biblioteca Materialize , una biblioteca de estilos 43

CSS, también disponible por Google Developers, que apoya la creación de interfaces

responsive de gran impacto visual. 44

● Funciones de apoyo a la generación de código Wiring . 45

● El envío directo de los programas creados a una placa Arduino conectada a la PC.

Este amplio conjunto de características positivas hizo de Ardublockly la opción definitiva de

ambiente sobre el cual desarrollar StrandBoTic.

3.2 DESCRIPCIÓN DE FUNCIONALIDAD E INTERFAZ

Como ya se mencionó, el framework de StrandBoTic permite realizar programas sencillos en

alto nivel. El diagrama de caso de uso de la ​fig. 25​muestra sus principales funcionalidades, siendo destacadas con el color azul las más comúnmente utilizadas por los niños.

42https://github.com/carlosperate/ardublockly 43https://materializecss.com/

44 Este concepto hace referencia a la adaptabilidad de la interfaz, es decir, a su capacidad para adaptarse a los diferentes dispositivos

desde los que puede ser consultado (PCs, Tablets, Smartphones, etc.)

45

(37)

Fig. 25 Diagrama de Casos de Uso

(38)

Fig. 26 Diagrama de la principal secuencia de actividades realizada por los niños en una secuencia de programación con StrandBoTic

(39)

Fig. 27 Visualización general de la Interfaz de StrandBoTic

El acceso a los bloques se realiza desde el menú de bloques presente en el escritorio ( ​fig. 28​). Cada elemento de este menú representa una categoría de bloques y da acceso a un submenú donde están disponibles los bloques correspondientes a esta categoría. Se puede observar en la ​fig. 35 cómo se presentan para el usuario los bloques de la categoría “Acciones”. También están presentes en el escritorio un botón para enviar el programa a la placa Arduino, una papelera para eliminar bloques y un conjunto de tres botones que permiten aplicar zoom (positivo y negativo) a los bloques.

(40)

Además del área de trabajo para la construcción de los programas con los bloques, para que el usuario pueda tener acceso al lenguaje textual Wiring asociado a cada bloque de StrandBoTic, se decidió poner a disposición en la interfaz, un área para la visualización del programa textual correspondiente al programa en bloques ( ​fig. 29​). Esta área también está presente en la interfaz de Ardublocky y se ha implementado a través de una ventana retráctil (es decir, su contenido puede ser exhibido u ocultado).

Fig. 29 Área para la visualización del programa textual (Wiring) correspondiente al programa creado con los bloques

La interfaz tiene también una barra de navegación (​fig. 30​) donde es posible nombrar, guardar, abrir y crear un nuevo programa

Fig. 30 Barra de Navegación

Además, desde la barra anterior, se puede acceder a un menú "retráctil" ( ​fig. 31​), que ofrece a los usuarios los siguientes elementos:

● Abrir: abrir el código Wiring en el IDE del Arduino.

(41)

● Borrar Todo: permite borrar todo el código Wiring correspondiente al programa en bloques creado en StrandBoTic

● Opciones: abre una ventana (​fig. 32​) donde se puede configurar la ubicación del compilador Arduino, el puerto serie que se utilizará para la comunicación con la placa Arduino, el modelo de placa Arduino conectado al puerto serie y la carpeta del Sketch.

● Documentación ● Reportar Fallos

● Ejemplos: da acceso a algunos ejemplos de programas simples como

(42)

Fig. 32 Ventana de “Opciones”

En la base de la interfaz, el sistema proporciona una ventana retráctil ( ​fig. 33​) por medio de la cual es posible visualizar mensajes enviados por el software Arduino durante el proceso de compilación del programa creado.

(43)

3.3 CONSTRUCCIÓN DE BLOQUES

Dado que la plataforma está pensada para dar soporte a un proceso de enseñanza y aprendizaje de los conceptos básicos de la programación, los bloques de StrandBoTic fueron diseñados para dar soporte a las estructuras de control como repetición y decisión, así como también las principales acciones del robot. Las ​fig. 34 a 38 presentan todos los bloques disponibles en StrandBoTic organizados en categorías: iniciales, acciones, alternativas, repeticiones y condiciones

Fig. 34 Bloque de la categoría “Iniciales”

(44)

Fig. 36 Bloques de la categoría “Alternativas”

Fig. 37 Bloques de la categoría “Repeticiones”

(45)

Al igual que Scratch Jr46 y Lego Mindstorms , se optó por utilizar en el framework de47 StrandBoTic, una representación textual para describir las "funciones" de los bloques. En cuanto a los colores utilizados en el ambiente, en contraposición a los colores neutros utilizados en la barra de navegación y en las barras de títulos de las ventanas retráctiles, se decidió adoptar colores para que todos los bloques y sus respectivos elementos de menú compartan una paleta cohesiva. El uso del valor de saturación de tono (HSV) con saturación y valor fijo para todos los colores de bloque permitió seleccionar fácilmente un color para cada bloque.

Con StrandBoTic se aprovecharon muchos de los elementos de la interfaz de Ardublockly, aunque algunas características se han incluido o modificado. Los bloques utilizados para la construcción de los programas, fueron totalmente rediseñados y programados con Block Factory, una de las partes de la herramienta de desarrollo web Blockly Developer Tools . 48 La definición de un bloque describe cómo se ve y se comporta, incluido el texto, el color, la forma y a qué otro bloque se puede conectar. Block Factory tiene dos formas de definir bloques: objetos JSON y funciones de JavaScript. El formato JSON es multiplataforma, de modo que se puede usar el mismo código para definir bloques en la web, Android e iOS. Además, el formato JSON está diseñado para simplificar el proceso de localización al desarrollar idiomas con diferentes ordenamientos de palabras. Sin embargo, este formato no puede definir directamente funciones avanzadas como mutadores o validadores. Estos deben estar escritos en el código nativo de la plataforma, JavaScript, Java o Swift, generalmente como extensiones.

En la plataforma web, el formato JSON se carga mediante la función ​initJson​. Esto también permite mezclar los dos formatos en las páginas web de Blockly. Para crear los bloques, fue preferible definir los bloques con JSON siempre que sea posible, y usar JavaScript sólo para partes de definiciones de bloque que JSON no admite.

Los bloques generados se guardan en el almacenamiento local del navegador. Al borrar el almacenamiento local del navegador, se eliminarán los bloques. Para guardar los bloques

46https://www.scratchjr.org/

47https://www.lego.com/es-ar/mindstorms

(46)

(47)

CAPÍTULO

4:

COMUNICACIÓN

ENTRE

ARDUINO

Y

STRANDBOTIC

En este capítulo se describe la comunicación y análisis de transmisión de datos entre StrandBoTic y una placa Arduino como una propuesta que hicimos de trabajo final a la cátedra de Comunicación de Datos II, materia de 4° año de la carrera de Ing. de Sistemas. En la propuesta inicial de esta tesis la comunicación se realizaba mediante un cable usb, que si bien es factible resulta incómodo tener que conectar los dispositivos de esta forma cada vez que se deseaba cambiar el programa para que el robot educativo realice otra actividad. A partir de la realización del trabajo final de la cátedra, se decide cambiar el mecanismo de comunicación, que se realizará vía WiFi (802.11), para poder actualizar el firmware del dispositivo sin necesidad de un cable USB. A continuación, se especifican las características principales de los protocolos, el contexto en el que se realiza la experiencia y los resultados del análisis.

4.1 COMUNICACIÓN VÍA USB ENTRE FRAMEWORK DE STRANDBOTIC Y LA PLACA ARDUINO

El framework educativo utiliza el puerto serie mediante una conexión USB para poder actualizar el firmware de la placa Arduino, de esta manera se pueden cargar los nuevos programas.

El framework de StrandBoTic genera un servidor local HTTP para poder comunicarse con el IDE Arduino a través de comandos CLI . Por medio de estos tipos de comandos se puede 49 enviar el código generado para que se pueda realizar la compilación y la carga de un nuevo programa en la placa por medio del cable USB (​fig. 39​).

49Es un método que permite a los usuarios dar instrucciones a algún programa informático por medio de una línea de texto simple. Las CLI

(48)

Fig. 39 Comunicación vía USB entre StrandBotic y Arduino

4.2 COMUNICACIÓN VÍA WIFI ENTRE STRANDBOTIC Y PLACA

Para poder establecer esta conexión se buscó un módulo que sea capaz de poder comunicarse vía WiFi con una computadora donde se pueda acceder a la plataforma. Fue así que se llegó al módulo WiFi ESP8266 cuyas características son ideales para poder integrarlo en el proyecto ya que su integración con la placa Arduino se puede realizar con una configuración sencilla.

Siguiendo con la investigación se encontró un fabricante (WeMos ) que produce el50 dispositivo “WeMos D1” (​fig. 40​) el cual integra directamente dicho módulo en la placa “Arduino UNO” mejorando sus capacidades de adaptabilidad, sin cambiar la programación Arduino.

Una de las características más interesantes que tienen los ESP8266 es la capacidad de cargar remotamente un firmware concreto, es decir, programación vía OTA (Over The Air).

Fig. 40 WeMos D1 arduino compatible basado en esp8266 wifi

(49)

La primera carga de firmware debe realizarse a través de un puerto serie. Si las rutinas OTA se implementan correctamente en un sketch , entonces todas las subidas subsiguientes se51 pueden realizar por aire. Tener en cuenta que para poder cargar su sketch una y otra vez utilizando OTA, debe insertar rutinas OTA dentro del mismo.

Se debe configurar el sistema en el setup() del programa Arduino usando el método ArduinoOTA.begin(), y en cada iteración del bucle de eventos, se comprueba si hay algún programador intentando cargar un nuevo sketch con el método ArduinoOTA.handle(). La librería se encarga de todos los detalles relacionados con la programación. Esta librería incluye varios métodos para establecer callbacks, que serán invocados en diferentes partes del proceso: al iniciar (onStart), durante el progreso de carga (onProgress), al finalizar (onEnd) y en caso de ocurrir algún error (onError).

Para hacer la carga de un nuevo firmware, es necesario saber la IP del nodo, y el puerto por el cual se escucha (por defecto, 8266). Además, obviamente, será necesario estar conectados de alguna forma a la misma red que el nodo (no es necesario estar en el mismo segmento de red). La ​fig. 41 muestra el nuevo mecanismo de comunicación establecido entre StrandBoTic y la placa.

Fig. 41 Comunicación vía WiFi entre StrandBoTic y Arduino

(50)

4.2.1 DESCRIPCIÓN DE LOS MODOS DE ESP8266: STATION Y ACCESS POINT

ESP8266 funciona en dos modos: Estación (STA) y Punto de acceso (AP). En resumen, el modo AP le permite crear su propia red y tener otros dispositivos (su teléfono) conectados a ella y el modo STA le permite al ESP8266 conectarse a una red WiFi (una creada por su enrutador inalámbrico). Por lo tanto, una característica importante del ESP8266 es que puede funcionar como un cliente o como un punto de acceso o incluso ambos.

Un punto de acceso (AP) es un dispositivo que proporciona acceso a la red WiFi a otros dispositivos (estaciones) y los conecta aún más a una red cableada. ESP8266 puede proporcionar una funcionalidad similar, excepto que no tiene interfaz con una red cableada. Tal modo de operación se llama punto de acceso suave (soft-AP). El número máximo de estaciones conectadas al soft-AP es cinco.

Para llevar a cabo esta implementación se tomó la decisión de optar por el modo Access Point debido a que los usuarios se pueden conectar directamente a la placa sin necesidad de un router de por medio. Se realizó una configuración de red preestablecida para que los usuarios no tengan que preocuparse por la conectividad cuando se actualiza el firmware de la placa Arduino.

4.2.2 CONFIGURACIÓN DEL MODO AP

Para configurar una red protegida por contraseña se usa el siguiente comando. WiFi.softAP (ssid, contraseña, canal, oculto)

Se requiere el primer parámetro de esta función, los tres restantes son opcionales. ➢ ssid​: cadena de caracteres que contiene SSID de red

➢ contraseña - cadena de caracteres opcional con una contraseña. Para la red WPA2-PSK, debe tener al menos 8 caracteres de longitud.

➢ canal​: parámetro opcional para configurar el canal WiFi, de 1 a 13. Canal predeterminado = 1.

➢ oculto​: el parámetro opcional, si se establece en verdadero, ocultará el SSID para configurar la interfaz de red del punto de acceso.

softAPConfig (local_ip, puerta de enlace, subred)

(51)

➢ puerta de enlace​: dirección IP de la puerta de enlace ➢ subred​: máscara de subred

Código ejemplo

#include <ESP8266mDNS.h> #include <WiFiUdp.h> #include <ArduinoOTA.h>

const char ssid[] = "StrandBoTic"; const char password[] = "12345678"; const char* ota_hostname = "StrandBoTic"; IPAddress apIP(192, 168, 8, 1);

//starts an access point

void beginAP(const char* ssid, const char* password, IPAddress ip){ WiFi.mode(WIFI_AP);

WiFi.softAPConfig(ip, ip, IPAddress(255, 255, 255, 0)); WiFi.softAP(ssid, password);

}

//starts OTA server

void beginOTA(const char* hostname){ ArduinoOTA.setHostname(hostname); ArduinoOTA.onStart([]() {});

ArduinoOTA.onEnd([]() {});

ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {}); ArduinoOTA.onError([](ota_error_t error) {});

ArduinoOTA.begin(); }

void setup() {

beginAP(ssid, password, apIP); beginOTA(ota_hostname); }

void loop() {

ArduinoOTA.handle(); }

4.2.2.1 SEGURIDAD

Referencias

Documento similar