Explora más de 1,5 millones de audiolibros y libros electrónicos gratis durante días

Al terminar tu prueba, sigue disfrutando por $11.99 al mes. Cancela cuando quieras.

Aprendizaje significativo de sistemas embebidos: De la teoría a la práctica
Aprendizaje significativo de sistemas embebidos: De la teoría a la práctica
Aprendizaje significativo de sistemas embebidos: De la teoría a la práctica
Libro electrónico884 páginas7 horas

Aprendizaje significativo de sistemas embebidos: De la teoría a la práctica

Calificación: 0 de 5 estrellas

()

Leer vista previa

Información de este libro electrónico

Esta obra es una introducción práctica a los sistemas embebidos desde el aprendizaje significativo, un enfoque educativo especial. Este se logra presentando los conceptos de manera gradual y relacionándolos con conocimientos previos para que el aprendizaje sea más duradero y útil.

En Aprendizaje significativo de sistemas embebidos. De la teoría a la práctica, encontraremos la información necesaria para comprender la terminología de la arquitectura de un sistema embebido, los tipos de base numérica, el análisis de circuitos de corriente directa, los conceptos de bit y byte, el diseño de un diagrama de flujo, entre otros temas. Además, se estudian los elementos de programación en lenguaje C++ a través de ejemplos de códigos revisados paso a paso y casos de diseño electrónico utilizando Arduino Uno y Arduino R4 WiFi. Así, el lector desarrollará la metacognición necesaria para crear sus propias soluciones tecnológicas basadas en sistemas embebidos y podrá diseñar desde cero la solución y, una vez implementada, detectar errores típicos.


Este libro está dirigido a estudiantes y profesionales de la ingeniería que deseen incursionar en el mundo de los sistemas embebidos y a los aficionados de la tecnología que quieran lograr una comprensión más profunda.
IdiomaEspañol
EditorialEditorial UPC
Fecha de lanzamiento30 ene 2025
ISBN9786123185510
Aprendizaje significativo de sistemas embebidos: De la teoría a la práctica

Relacionado con Aprendizaje significativo de sistemas embebidos

Libros electrónicos relacionados

Informática para usted

Ver más

Comentarios para Aprendizaje significativo de sistemas embebidos

Calificación: 0 de 5 estrellas
0 calificaciones

0 clasificaciones0 comentarios

¿Qué te pareció?

Toca para calificar

Los comentarios deben tener al menos 10 palabras

    Vista previa del libro

    Aprendizaje significativo de sistemas embebidos - Sergio Salas Arriarán

    Prólogo

    El avance científico y tecnológico incontenible nos pone a prueba a todos aquellos interesados en su seguimiento a través del aprendizaje. Resulta complicado mantenerse al tanto por la variedad de temas y la complejidad característica de los conocimientos especializados. Cuando se generan nuevos conocimientos, usualmente estos se exponen públicamente por primera vez en forma de artículos en congresos y en revistas indizadas, luego de una rigurosa revisión arbitrada. En este nivel, los conocimientos no se encuentran al alcance de la comprensión por parte de todos los públicos, debido al nivel de profundidad en su estudio, evaluación, análisis, pruebas y validación. Posteriormente, otros especialistas y académicos procesan los nuevos conocimientos con subsecuentes investigaciones, ampliándolos y produciendo nuevos resultados, y dando lugar a un nivel más asequible, en modo de libros de pregrado y posgrado. A estas fuentes recurren los estudiantes universitarios durante su formación como futuros profesionales. Sin embargo, no todos los textos logran el objetivo del aprendizaje de una manera motivadora, natural, interesante y práctica. Asimismo, existen muy buenas obras de autores extranjeros, que, sin embargo, no siempre resultan las más adecuadas para el aprendizaje en un entorno local, donde las aplicaciones de ingeniería pueden ser muy específicas debido a las necesidades propias de la realidad.

    En Aprendizaje significativo de sistemas embebidos, Sergio Salas ha logrado una segunda y muy novedosa versión de su primer libro Todo sobre sistemas embebidos. En esta ocasión, introduce la metodología de aprendizaje significativo, creada por David Ausubel en 1963, como herramienta fundamental con la cual acompaña todo el proceso gradual de adquisición de conocimientos. El capítulo 1 comienza con una muy atractiva y amplia invitación al mundo de los sistemas embebidos, en la cual incluye no solamente a los ingenieros de diversas especialidades, sino también a otras tan disímiles como el derecho, las ciencias sociales, la psicología, etcétera. Expone de manera muy clara cómo ha sido la metodología de enseñanza tradicional de los sistemas embebidos, para lo cual ha investigado la experiencia internacional sobre el tema e identificado la problemática del proceso de enseñanza-aprendizaje. Basado en su propia experiencia, analiza los factores que limitan el aprendizaje de los estudiantes. Así, afirma que los conocimientos previos y la motivación, entre otros, son primordiales. Aplicando el aprendizaje significativo, se propone alcanzar, en contraste con la forma memorística y repetitiva, el saber pleno y duradero. En la metodología utilizada, los roles del docente y del estudiante se redefinen, ya que no solo el primero sino también el segundo debe entender bien el nuevo paradigma. Completa y cierra el capítulo con una explicación genérica de los sistemas embebidos y con muchos ejemplos de aplicación práctica, que conforman la vida cotidiana y nos proporcionan bienestar. Cada capítulo siguiente, define los conocimientos previos necesarios, orienta al lector sobre el material contenido, y lo motiva con planteamientos, ejemplos y ejercicios prácticos. En línea con lo antes señalado, el capítulo 2 versa sobre los conocimientos previos para la comprensión cabal de los sistemas embebidos. El capítulo 3 desarrolla los temas de Arduino Uno, la interfaz de software IDE y generalidades sobre el lenguaje de programación C++. Asimismo, el capítulo 4 se dedica a las variables en los lenguajes de programación. Los capítulos del 5 al 11 tratan sobre las operaciones aritméticas y lógicas, operaciones de campo de bit, uso de los condicionales en la programación, bucles iterativos, vectores y punteros, y funciones y librerías del lenguaje C++. El estilo es siempre ameno y mantiene la motivación del estudiante. En el capítulo 12, se trabaja un tema complementario y a la vez importante en los sistemas embebidos: las estructuras y uniones. Finalmente, en el capítulo 13, se desarrolla la programación orientada a objetos en C++.

    Cabe señalar que la publicación de esta obra constituye un importante y oportuno aporte a dos aspectos: (a) la motivación de la Escuela de Ingeniería Electrónica sobre las oportunidades de mejora en la metodología de enseñanza utilizada actualmente por su plana docente; y (b) la orientación de la Universidad Peruana de Ciencias Aplicadas (UPC) hacia la metodología Minerva en todos sus programas. El aprendizaje significativo podrá potenciar las competencias de nuestro modelo formativo, favoreciendo en particular la del pensamiento crítico.

    Por último, esta nueva obra del autor Sergio Salas representa un valioso aporte no solamente al campo de los sistemas embebidos, sino que trasciende a cualquier otra materia formativa de nuestros futuros profesionales. Es un libro que aplica una metodología moderna, que nos invita a la necesaria reflexión sobre la manera en que los docentes enseñamos y transmitimos conocimientos, y sobre los resultados en la esencia de mejores profesionales y, más aún, mejores personas.

    Carlos R. Valdez Velásquez-López, Dr. Ing.

    Director de la Escuela de Ingeniería Electrónica

    Universidad Peruana de Ciencias Aplicadas (UPC)

    Introducción

    Los sistemas embebidos son elementos cruciales de la tecnología moderna, conforman la arquitectura de un sinnúmero de dispositivos en diversos campos como la medicina, la internet de las cosas (IoT), los automóviles, los satélites, los electrodomésticos, etcétera. Cada año, aparecen nuevas tecnologías, muchas de ellas disruptivas, basadas en un sistema embebido. Es importante conocer sobre estos dispositivos debido a que se presentan en todos los ámbitos cotidianos y, usualmente, no somos conscientes de cómo impactan en nuestras vidas. Por esta razón, saber sobre los sistemas embebidos es una necesidad creciente en el siglo xxi, ya que permite entender los avances tecnológicos más recientes y comprender cómo las tecnologías pueden resolver nuevos problemas y, de esta manera, formar parte de esta carrera de innovaciones. De este modo, se puede proponer un nuevo producto o, mejor aún, crearlo si su interés radica en profundizar en los sistemas embebidos. Este libro se dirige a estos últimos.

    Para aprender sobre cómo crear tecnologías basadas en sistemas embebidos, se requiere conocer diversos aspectos, tales como circuitos lógicos digitales, arquitectura de computadoras, un lenguaje de programación (de nivel bajo o intermedio), y nociones de electrónica analógica y de componentes electrónicos (sensores, motores y dispositivos semiconductores). El aprendizaje de sistemas embebidos se caracteriza porque se divide en conceptos teóricos y prácticos. Ambos se interrelacionan entre sí, dado que, para construir una tecnología (práctica), se debe contar con conocimientos teóricos que permitan realizar una propuesta operativa y cuyo funcionamiento sea robusto. Existen libros que se enfocan únicamente en aspectos teóricos, los cuales tienden a ser aburridos y no dedicados a personas que se quieren introducir al campo de los sistemas embebidos. Otros textos se abocan a la parte práctica y presentan ejemplos de aplicación resueltos para que el lector los pueda replicar. Sin embargo, muchos de estos ejemplos no ahondan en la explicación o fundamentación del diseño, y solo aquellos lectores con experiencia lo aprovechan. Asimismo, también se hallan libros introductorios de sistemas embebidos, pero estos, por lo general, presentan una mirada muy superficial del campo, y se centran en las aplicaciones prácticas con recetas hechas de ejemplos sencillos y replicables que no contienen un mayor análisis. Por ello, esta obra se diferencia de otras al explicar los fundamentos necesarios para ingresar al mundo de los sistemas embebidos de una manera gradual. Todo esto con el valor agregado de llevar al lector al análisis, razonamiento y pensamiento crítico; ya que combina ejemplos teóricos, prácticos y ejercicios propuestos que buscan crear los cimientos capítulo a capítulo, posibilitando que el lector construya una competencia sólida en diseño tecnológico con sistemas embebidos.

    Este libro se ha desarrollado pensando en personas interesadas en el mundo de los sistemas embebidos y sin ninguna experiencia previa en el campo. Solo requiere que el lector tenga conocimientos previos de aritmética, razonamiento lógico, paciencia, buen humor y muchas ganas de aprender. Su objetivo consiste en introducirlo a los sistemas embebidos de una forma gradual, empezando desde los conceptos más simples hasta profundizar en otros más complejos. Para ello, se aplica una metodología educativa mundialmente comprobada, como el aprendizaje significativo. Este tipo de estrategia consolida las bases conceptuales para comprender nuevos conceptos. Cuando el aprendizaje es significativo, el aprendiz domina las nociones en su máximo nivel y las comunica de forma clara. Así, lo emplea para crear nuevos proyectos o soluciones y seguir construyendo nuevo conocimiento de manera autónoma y enriquecer lo ya aprendido. Además, cuando el aprendizaje se presenta de modo significativo, motiva al estudiante, pues comprender a fondo un tema genera curiosidad e interés al pasar a una siguiente etapa más compleja y retadora.

    La experiencia del autor con múltiples estudiantes de ingeniería en el campo de la docencia en sistemas embebidos muestra que es necesario explicar los conceptos gradualmente para conseguir una comprensión adecuada. Muchas veces, los alumnos se centran en la parte práctica, sin enfatizar en el análisis teórico por considerarlo aburrido y sobresaturado de conceptos abstractos. Esto provoca que copien y peguen ejemplos de internet para desarrollar un proyecto, el cual entiende medianamente porque carece de nociones fundamentadas en la teoría de sistemas embebidos. De este modo, su capacidad de análisis y diseño tecnológico disminuye. Por ello, este libro se centra en el análisis para demostrarle al lector que toda propuesta tecnológica inicia con una lógica conceptual y, a partir de esta, se desarrolla tanto el diseño del hardware como el software del sistema embebido. Se busca que el alumno desarrolle el diseño desde cero en vez de partir de ejemplos ya creados por terceras personas.

    En el capítulo 1, de forma básica, se explicarán la epistemología educativa y el aprendizaje significativo para entender la lógica de la metodología utilizada. Luego, se mostrará la importancia de los sistemas embebidos en la actualidad para motivar al lector a obtener un aprendizaje significativo sobre estos. Cabe destacar que el libro presentará una serie de ejemplos resueltos mediante un análisis, paso a paso, que se deberá seguir rigurosamente. Asimismo, se propondrán actividades que se desarrollarán con la misma lógica de análisis empleada para demostrar la comprensión del material. Para pasar al siguiente capítulo, es necesario realizar los ejercicios sugeridos del capítulo previo; de lo contrario, se dificultará alcanzar el aprendizaje significativo de lo expuesto. Si bien los capítulos del 4 al 13 aluden a conceptos del lenguaje C++, en ellos se incluirán ejemplos de programación donde se tratarán los elementos periféricos de los sistemas embebidos como los puertos de entrada y salida, la conexión de ledes y pulsadores, el conversor analógico digital, la comunicación serial asíncrona, la generación de señales pulse width modulation (PWM, ‘modulación de ancho de pulso’), entre otros.

    En el capítulo 2, se presentarán cuatro conceptos clave en el aprendizaje de sistemas embebidos: las nociones de electrónica analógica, los conceptos sobre electrónica digital, los fundamentos de arquitectura de computadoras y el planteamiento de soluciones algorítmicas a problemas específicos. Todo esto se abordará desde un enfoque teórico y práctico, donde, en la parte práctica, se desarrollarán ejercicios de análisis que posibilitarán el entendimiento del material. De hecho, se trata de uno de los capítulos más extensos, dada la cantidad de conceptos propuestos y su importancia para el resto de la obra. Por ello, se recomienda no avanzar en el libro si es que no se ha comprendido cabalmente este apartado.

    En el capítulo 3, se desarrollarán los sistemas embebidos que se emplearán en este texto: el Arduino Uno y el Arduino Uno R4 WiFi. Junto con la historia y las características de estos sistemas embebidos, se expondrán la herramienta de software para su programación y también las herramientas de simulación disponibles en internet. El lector puede optar por adquirir una tarjeta física del Arduino Uno para aplicar los ejemplos del libro o usar los simuladores que se mencionarán. Luego, se realizará una presentación muy básica de la sintaxis del lenguaje de programación de Arduino: el C++. Finalmente, se plantearán ejemplos prácticos de utilización del Arduino, los simuladores y el software para implementar los ejemplos de los capítulos siguientes.

    En el capítulo 4, se ahondará en el primer aspecto necesario para comprender el lenguaje de programación C++ en sistemas embebidos: las variables. Se presentará el concepto de variable, todos los tipos y sus características. Además, se diferenciará entre positivas y negativas, decimales o enteras, globales o locales, y se resolverán ejercicios de análisis para comprender la lógica tras la declaración de nuevas variables. Se desarrollará el criterio para definir variables de forma apropiada y de acuerdo con el contexto del problema que se quiere solucionar mediante la programación de un sistema embebido.

    En el capítulo 5, se mostrarán las operaciones aritméticas del lenguaje C++. Estas sirven para elaborar cualquier programa por más sencillo que sea. Son, básicamente, suma, resta, multiplicación y división. Esta última incluye dos instrucciones para obtener el cociente y el residuo. Se presentarán ejemplos de análisis de casos simples y otros más capciosos, así como ejercicios aplicados a plataformas Arduino Uno.

    En el capítulo 6, se desarrollarán las operaciones lógicas del lenguaje C++. Estas se expondrán de forma divertida y comprensible para que el lector domine operadores lógicos. Luego, se presentarán los retardos de tiempo y se generarán retardos específicos a través del manejo de los operadores lógicos. Finalmente, se propondrán ejercicios de análisis, casos prácticos para entender y programar en el Arduino, y problemas.

    En el capítulo 7, se desarrollarán los operadores de campo de bit. Estos tienden a ser uno de los temas más abstractos para quienes estudian el lenguaje C++. Por este motivo, este capítulo iniciará con conceptos sobre el álgebra de Boole y se usarán las nociones de electrónica digital obtenidas en el capítulo 2 para presentar el análisis de los operadores AND, OR, XOR, NOT y de desplazamiento de bits de manera sencilla. Luego, se estudiarán ejemplos de aplicación práctica empleando visualizadores o displays de siete segmentos conectados al Arduino y ejercicios prácticos sobre el cálculo de operaciones de campo de bit para internalizar la utilidad de estos operadores.

    En el capítulo 8, se expondrá un tema muy importante: los condicionales. Para ello, es necesario haber asimilado el capítulo 6 sobre operaciones lógicas. Aquí se verán dos tipos de condicionales: el if-else if-else y el switch-case. Se plantearán ejemplos de análisis para estos dos condicionales y, luego, se presentará el concepto de máquina de estados para la creación de programas que presentan secuencias de pasos ordenados por condiciones y que permite crear programas de forma muy ordenada. Se propondrán ejemplos en el Arduino Uno para generar retardos de tiempo de alta precisión.

    En el capítulo 9, se presentará el concepto de recursividad en C++. Se verán los bucles iterativos for, while, do-while y goto. Se analizarán programas que utilicen estas sentencias para evaluar la cantidad de iteraciones que se producen según ciertas condiciones y se realizarán ejercicios prácticos con el Arduino para mejorar los ejemplos vistos en los capítulos 7 y 8.

    En el capítulo 10, se tratará el tema de vectores y punteros en C++. Además, se presentarán las cadenas de caracteres ASCII. Se desarrollarán ejercicios de análisis de este tipo de datos y, luego, se propondrán ejemplos prácticos de aplicación en el Arduino con dos casos aplicados a un juego de memoria: uno mediante vectores y otro mejorado mediante punteros. Aquí también se empleará la comunicación serial asíncrona y cómo esta sirve para transmitir cadenas de caracteres.

    En el capítulo 11, se presentarán las funciones y librerías de C++. Se mostrará cómo crear una función propia y, luego, una librería. Además, se verá cómo utilizar las librerías estándar y de otros autores en los programas de Arduino. Aquí notaremos su utilidad y se plantearán algunos ejemplos de uso de librerías propias y de terceros aplicadas con componentes electrónicos conectados al Arduino. Además, se realizarán ejercicios de análisis sobre el diseño de funciones.

    En el capítulo 12, se tratarán dos temas obviados en la programación en lenguaje C++, pero que resultan muy útiles en el campo de los sistemas embebidos: estructuras y uniones. Se realizarán análisis de cada uno de estos tipos de datos. Posteriormente, se crearán nuevos tipos de variables, combinando las estructuras y las uniones. Finalmente, se expondrá un ejemplo práctico paso a paso de aplicación en el Arduino para construir un sistema de marcación de asistencia laboral.

    Por último, en el capítulo 13, se desarrollará el paradigma de programación orientado a objetos (POO) de C++. Se explicarán los conceptos de objeto, clase, abstracción, herencia, polimorfismo, entre otros, y se resolverán ejercicios de análisis de casos de creación de objetos. Asimismo, se analizarán objetos usados en capítulos anteriores, dado que la herramienta de programación de Arduino los provee sin que el programador muchas veces lo perciba. Posteriormente, se mostrarán ejemplos de creación de clases propias para controlar diferentes dispositivos electrónicos conectados al Arduino. Este último capítulo será el de mayor nivel de abstracción. Finalmente, se trabajará un ejemplo de aplicación de IoT, utilizando el Arduino Uno R4 WiFi desde el servidor Arduino IoT Cloud.

    Cabe mencionar que, a partir del segundo capítulo en adelante, se encontrarán códigos QR que dirigirán a enlaces de YouTube donde se hallarán soluciones a algunos de los ejercicios propuestos en el libro.

    Capítulo 1

    El aprendizaje significativo y los sistemas embebidos

    ¿A quién no le gustaría saber cómo funciona un respirador artificial que fue crucial para salvar la vida de pacientes enfermos con COVID-19 durante la pandemia?, ¿cómo opera el sistema de airbag en un vehículo moderno que permite salvar la vida de los tripulantes durante un choque a excesiva velocidad? o ¿cómo trabaja el sistema de navegación de un satélite de órbita geoestacionaria para que su posición permanezca constante relativa al planeta Tierra? Para responder a profundidad cada una de estas preguntas, cabe destacar una característica en común: todas estas tecnologías están construidas con base en sistemas embebidos.

    Los sistemas embebidos son dispositivos electrónicos digitales programables de alta escala de integración diseñados para realizar de manera muy precisa y robusta una única tarea específica (De Micco, Vargas & Fierens, 2019). La presentación de un sistema embebido, normalmente, está en forma de un circuito integrado (chip) soldado sobre un circuito impreso o PCB (del inglés printed circuit board), tal como se observa en el gráfico no 1.1. Un sistema embebido se caracteriza por funcionar como una computadora, pero con características físicas limitadas (comparadas con la capacidad de una computadora de escritorio actual) como la baja velocidad de procesamiento y la poca capacidad de memoria. En contraparte, contiene una buena cantidad de circuitos periféricos internos para conectarse a una gran variedad de dispositivos, desde sensores, pantallas alfanuméricas, pantallas gráficas, adaptadores de comunicación (bluetooth, wifi, Ethernet, entre otros), impresoras térmicas, tiras de ledes luminosos y múltiples elementos más. Asimismo, presenta módulos de bajo consumo que les permite operar con baterías de baja energía (y pequeño tamaño) y que estas duren varios meses.

    Gráfico No1.1 Ejemplo de un sistema embebido en un PCB. Este modelo corresponde a la tarjeta Curiosity Nano de la empresa Microchip

    Microchip PIC18F57Q43 curiosity Nano kit -

    Fuente: Arduino Factory, 2023.

    Los sistemas embebidos pueden interactuar con el mundo físico a través de sensores y actuadores, lo cual les permite realizar tareas en tiempo real. Por ejemplo, imagine una alarma de seguridad colocada en la puerta de una casa, tal como se observa en el gráfico no 1.2. Esta se compone de un sensor magnético, una pieza con dos imanes que, al ser separados debido a la apertura de la puerta, producirán una señal de voltaje que se detectará por un sistema embebido. Este se encuentra conectado a una sirena (actuador) que se activará para generar un sonido que alerte al vecindario que se perpetra un robo. Se dice que el sistema embebido opera en tiempo real porque, cuando violenten la puerta, la sirena se accionará como respuesta al evento en una fracción de milisegundo, avisando sobre el evento de hurto cuando ocurra.

    Tradicionalmente, el campo de los sistemas embebidos solo causaba interés en los ingenieros electrónicos, quienes lo comenzaron a estudiar por la década de los ochenta. Dado que la Ingeniería Electrónica siempre se caracterizó por ser una carrera de pocos estudiantes en comparación con otras especialidades de la ingeniería, el campo de los sistemas embebidos nunca fue muy popular a nivel universitario. Sin embargo, en los últimos años, otras especialidades de la ingeniería se interesaron por los sistemas embebidos debido a la relación con sus campos de aplicación. Entre estas carreras, se encuentran las Ciencias de la Computación, la Ingeniería de Computación, la Ingeniería Mecánica, la Ingeniería Mecatrónica, la Ingeniería Biomédica, la Ingeniería Automotriz, entre otras. Pero no solo es un tema que atañe a las ingenierías. Universidades como Bonn-Rhein-Sieg University of Applied Sciences de Alemania (Winzker & Schwandt, 2011) o University of Applied Sciences Technikum Wien de Austria (Brejcha et al., 2012) han impulsado programas de sistemas embebidos para no ingenieros en especialidades como administración de negocios, ciencias sociales, derecho, economía, marketing y psicología. ¿Con qué fin hicieron esto? Se sabe que muchos profesionales de estas áreas presentan una alta probabilidad de trabajar en empresas manufactureras, cuya finalidad radica en la producción de tecnologías basadas en sistemas embebidos. ¿Qué tan buena sería una campaña de marketing de un producto tecnológico liderada por un director de mercado que no comprende qué es un sistema embebido? ¿o qué tan buena sería la defensa legal de un abogado que debe sustentar el cumplimiento de normas de seguridad de la tecnología que produce su empresa, ante una acusación de fallos de esta tecnología, si no entiende cómo funciona un sistema embebido? Por otro lado, un emprendedor de negocios que no sepa de la existencia de los sistemas embebidos podría perder la oportunidad de invertir o proponer una empresa de corte tecnológico, que actualmente es la que más rentabilidad posee. Por ello, la difusión del concepto de sistemas embebidos cada día toma más relevancia en el mundo.

    Gráfico No 1.2 Esquema de una alarma básica de seguridad para una puerta de casa

    Microchip PIC18F57Q43 curiosity Nano kit -

    Fuente: Home Depot, s. f.

    Por otro lado, la enseñanza de los sistemas embebidos siempre ha aplicado una metodología muy tradicional. Dominar el concepto de los sistemas embebidos para la creación de tecnologías por parte de los ingenieros requiere cierta base en tres áreas de conocimiento:

    Dominio de un lenguaje de programación de sistemas embebidos o programación en tiempo real.

    Conocimientos de electrónica analógica y digital, y manejo de instrumentos de medición electrónica como el multímetro, las fuentes de poder y el osciloscopio.

    Conceptos sobre arquitectura de computadoras.

    Un estudio realizado por el autor de este libro sobre la enseñanza de sistemas embebidos basado en la revisión de 138 artículos científicos de diferentes universidades alrededor del mundo muestra que, a pesar del creciente interés de diferentes especialidades de ingeniería, el proceso de enseñanza-aprendizaje presenta dificultades de diversa índole. Entre estos problemas, se encuentran los siguientes:

    Dificultades para entender los conceptos relacionados con los sistemas embebidos debido a limitaciones sobre nociones de arquitectura de computadoras, desconocimiento de aspectos de electrónica e inconvenientes para elaborar programas que operen en tiempo real.

    Desmotivación de los alumnos para continuar con los estudios de sistemas embebidos o dedicar su tiempo a seguir avanzando en este campo.

    Brecha entre universidad y empresa, donde los empleadores (de empresas desarrolladoras de tecnología) se quejan de la falta de formación de los estudiantes universitarios en temas vinculados a sistemas embebidos.

    Aburrimiento de los alumnos por revisar manuales técnicos y libros con alta cantidad de información poco atractiva para la lectura.

    Dificultades para comprender la programación en tiempo real en lenguajes como C y también un escaso entendimiento de lenguajes de bajo nivel como ensamblador (o assembler en inglés). Esto dificulta que los estudiantes creen programas por cuenta propia.

    El autor de este libro cuenta con más de 15 años de experiencia en la docencia universitaria en sistemas embebidos. Los problemas mencionados en el párrafo anterior los ha experimentado en carne propia. Entre las principales causas que llevan a los estudiantes a manifestar varios de los problemas enlistados, se han identificado los siguientes factores:

    Falta de capacidad analítica.

    Tener miedo al error y no considerarlo como un componente clave para el aprendizaje de sistemas embebidos.

    Cultura de la inmediatez y búsqueda del resultado rápido basado en prueba y error.

    Metodología de programación basada en guglear y el copy-paste (hoy en día, el mal uso de la inteligencia artificial [IA], a través del ChatGPT, que puede crear códigos en diferentes lenguajes de programación).

    Desconocimiento o poca base en conceptos previos como electrónica analógica, electrónica digital y arquitectura de computadoras.

    Miedo a los sistemas embebidos debido a estereotipos obtenidos de malas experiencias de terceras personas.

    Temor a los lenguajes de programación de bajo nivel por considerarlos muy abstractos.

    Poco interés por la lectura y problemas de comprensión lectora.

    Desmotivación por aprender sobre tecnología.

    A continuación, se revisará cada uno de los respectivos factores que impiden que los estudiantes tengan un aprendizaje efectivo de sistemas embebidos y se explicarán con claridad las características de cada uno de estos.

    La capacidad analítica se refiere a examinar un problema de forma detallada y sistemática (realizando un proceso). Para ello, se descompone el objeto de estudio en las partes más pequeñas que se puedan entender e interpretar con mayor claridad. La capacidad analítica requiere habilidades como la paciencia, saber prestar atención a los detalles, pensar lógicamente y aplicar el pensamiento crítico. Muchas veces, al enfrentarse a problemas del campo de los sistemas embebidos, el estudiante afronta tareas muy sencillas; por ejemplo, programar un sistema embebido para que muestre la temperatura ambiente en una pantalla alfanumérica a través de un sensor de temperatura (ver el gráfico no 1.3). Para resolver este problema, el proceso se debe descomponer en los elementos involucrados: averiguar la variación de la temperatura del ambiente que se medirá, las características del sensor de temperatura que se utilizará, la forma de conexión entre el sensor y el sistema embebido, el funcionamiento de la pantalla de visualización, la elaboración de un diagrama de flujo que explique el funcionamiento del sistema embebido, la implementación del código y, finalmente, las pruebas de funcionamiento del producto. Entonces, ante un problema de diseño, se pueden construir pequeñas partes y, de la unión de estas, se consigue el objetivo final. Se revisa que cada conexión entre elementos del sistema opere correctamente. Además, se verifica que el diagrama de flujo y el funcionamiento del programa cumplan con realizar las operaciones que están planificadas. De esta manera, se garantiza la funcionalidad de todo el sistema. Si el diseñador del producto no cuenta con capacidad de análisis, no logrará el objetivo, sino que buscará alternativas de solución al problema de forma aleatoria. Sin un procedimiento claro y, peor aún, sin entender lo que está haciendo, se perderá el tiempo, no encontrará una solución y se empezará a frustrar.

    Gráfico No 1.3 Elementos que conforman un producto sencillo con sistemas embebidos: un equipo de medición de temperatura ambiente

    Microchip PIC18F57Q43 curiosity Nano kit -

    Dehaene (2019), en su libro ¿Cómo aprendemos?, estableció que el error es un mecanismo natural del aprendizaje de los seres humanos. Por ejemplo, un deportista en el campo de tiro debe apuntar a un objetivo. Lanza un disparo y observa que la bala se desvía por 5 cm y, basado en esa información, sabe que ha errado el tiro y debe ajustar el rifle 5 cm más hacia una nueva dirección. Luego, volverá a disparar y constatará que el error no continúe; en caso de que persista, ajustará nuevamente hasta que la bala se aloje en el objetivo. De esta misma manera, los errores forman parte del proceso de diseño de una solución tecnológica basada en sistemas embebidos y se producen en diferentes etapas del diseño: en la formulación del problema, en la selección de los sensores, en la interconexión de los elementos electrónicos, en la propuesta de diagrama de flujo, en la implementación del programa y en muchas otras. Es casi imposible que un diseño tecnológico funcione perfectamente la primera vez que se prueba. Muy probablemente, falle varias veces hasta obtenerse un prototipo funcional. El error conforma el proceso de aprendizaje de los sistemas embebidos; de cada uno, se obtiene la retroalimentación necesaria para ganar la suficiente experiencia y no cometer las mismas fallas en aplicaciones futuras. Por lo tanto, cometer errores es algo normal y constituye parte del proceso de aprendizaje. Muchas veces, los estudiantes tratan de ocultar que sus diseños contienen errores e intentan presentar un prototipo que aparenta operar correctamente, pero no está bien. Por otro lado, durante clases, evitan preguntar al docente para ocultar que no se entienden ciertos conceptos. En general, los alumnos temen equivocarse y, sobre todo, a que sus profesores se percaten de ello por temor a que los califiquen mal o exponer sus deficiencias. Esto no debe ocurrir, especialmente, cuando se estudian los sistemas embebidos.

    Yuval Noah Harari, en su famoso libro Sapiens: de animales a dioses (2014), indicó que una de las razones por las cuales el Homo sapiens fue la única especie humana que sobrevivió en la Tierra fue debido a una característica muy importante: la capacidad de pensar de forma colectiva. Este mecanismo les permitió idear en conjunto formas para defenderse de animales salvajes más rápidos y fuertes (como el tigre de bengala o los mamuts), labrar la tierra para obtener cultivos de trigo o utilizar el fuego para cocinar alimentos. Así, el ser humano ha establecido relaciones y sociedades con base en la confianza en el resto de su comunidad (Harari, 2014). De esta manera, en la actualidad, las personas se atienden con un médico que no conocen, confiando en que su receta servirá para curar sus males, o acuden a un abogado, cuyos consejos ayudarán a solucionar un problema legal. Según Harari (2014), este tipo de pensamiento colectivo está enraizado en la personalidad de todos los seres humanos por una herencia evolutiva. Esto provoca que, de forma natural, las personas se traten de apoyar en otras para obtener soluciones simples y rápidas ante los problemas que surjan. Sin embargo, al enfrentarnos a una problemática en la que debemos utilizar los sistemas embebidos, en muchos casos, no conviene buscar soluciones sencillas y rápidas que eviten el análisis de la circunstancia (lo que en muchos casos implica copiar una solución similar de internet de otro autor), sino seguir un procedimiento de evaluación y reflexión que conduzca a una propuesta de solución efectiva. Este proceso de búsqueda de soluciones rápidas y sencillas también lleva a los estudiantes a un proceso de prueba y error, en el cual, en vez de examinar una situación, se pretenden realizar cambios al azar en el diseño, esperando que cada variación aleatoria permita obtener un resultado positivo. Esto se debe a que un sistema embebido es un mecanismo que posibilita la reprogramación y reconexión de circuitos electrónicos, siendo factible efectuar diversos cambios. Por supuesto, si estos no siguen un criterio adecuado, sino uno al azar, además de no funcionar, podrían malograr el sistema embebido o algún elemento electrónico de conexión.

    Uno de los aspectos al trabajar con sistemas embebidos, sobre todo si se utiliza un modelo muy comercial como el ATmega328, que se encuentra en la placa Arduino Uno, es la posibilidad de conseguir programas que solucionan problemas específicos de diseño tecnológico a través de internet o, inclusive, utilizando ChatGPT. Esto es una gran ayuda, ya que examinar soluciones tecnológicas realizadas por terceras personas (o una IA) permite ampliar la visión de diseño, así como mejorar la capacidad de análisis. Sin embargo, copiar tal cual un diseño sin analizarlo presenta dos inconvenientes: primero, que no se resuelva el problema específico encargado y, segundo, que no se entienda lo que se copia de otro autor (al creer que se tiene la solución resuelta se deja de lado el análisis). La cultura del copy-paste consiste en buscar soluciones de terceros a problemas similares en la internet. Si bien, en apariencia, pueden resolver el problema, realmente no se suelen adaptar a las necesidades propias y tienden a presentar fallas. Esto justamente genera el autoengaño; pues muchos estudiantes creen que corresponde a la forma correcta de ejecutar un diseño tecnológico cuando, en realidad, se presenta un producto plagiado sin ser conscientes de ello.

    Uno de los aspectos encontrados en diversos artículos sobre la enseñanza de sistemas embebidos a nivel mundial es la inequidad de conocimientos previos cuando estudiantes de diferentes carreras se juntan en un curso de sistemas embebidos. Un caso muy recurrente es cuando los alumnos de ingeniería electrónica y los de ciencias de la computación comparten el aula. Los primeros, por lo general, presentan una base fuerte en electrónica analógica y digital. Además, cuentan con conocimientos base en la línea de arquitectura de computadoras; sin embargo, no disponen de tanta experiencia en la programación. Por su parte, con los estudiantes de ciencias de la computación ocurre lo contrario. Ellos poseen más conocimientos y experiencia en programación de diversos lenguajes que los estudiantes de ingeniería electrónica y, más bien, carecen de conocimientos de electrónica analógica y digital. Entonces, al reunirse en un curso de sistemas embebidos, los alumnos de cada carrera presentan deficiencias en distintas etapas: a los ingenieros electrónicos se les dificulta la programación efectiva, y a los de ciencias de la computación, la comprensión de los procesos de conexión eléctrica y el funcionamiento electrónico de los dispositivos. Esto implica que, para iniciar de buena manera el aprendizaje de sistemas embebidos, se requieren ciertos conocimientos base en distintas líneas (por ejemplo, electrónica analógica, electrónica digital, arquitectura de computadoras y lenguajes de programación) para obtener un aprendizaje efectivo (este libro tratará estos aspectos antes de iniciar de lleno con los sistemas embebidos).

    Otro aspecto clave consiste en saber que la comprensión de los sistemas embebidos no requiere conocimientos especiales ni una inteligencia superior (como ocurre con los niños ajedrecistas de tres años). Las nociones de electrónica analógica se fundamentan en física y aritmética básica, conceptos aprendidos en la etapa escolar; mientras que las nociones de arquitectura de computadoras, electrónica digital y lenguajes de programación se ciñen a los campos de la lógica y de la aritmética básica. Cualquier persona que diga que los sistemas embebidos son muy complejos y abstractos solo predispondrá negativamente a quienes quieran conocer sobre estos.

    Uno de los mitos más discutidos alrededor del campo de los sistemas embebidos es la dificultad para comprender los lenguajes de bajo nivel como assembler (en este libro, se tratará brevemente este y se centrará más en un lenguaje de alto nivel como C++). Esto provoca un mal condicionamiento a los estudiantes para el aprendizaje. Gallego-Durán et al. (2021) mencionan que el principal problema de aprendizaje de los alumnos sobre el lenguaje de programación de bajo nivel radica en cómo ha sido enseñado y no en su complejidad. Dominar un lenguaje de programación de bajo nivel permite tener un conocimiento mucho más amplio del funcionamiento de un sistema embebido y, por el contrario, desmitifica la dificultad que muchas personas le atribuyen.

    El campo de los sistemas embebidos evoluciona a pasos agigantados. No es lo mismo estudiar sistemas embebidos en la década de los noventa que en estos tiempos. Los conocimientos, modelos de sistemas embebidos disponibles, protocolos de comunicación, entre otras características, son diferentes. Esto implica que, para mantenerse actualizado en esta línea de conocimiento, se requiere leer libros, notas de aplicación, manuales técnicos, foros de internet y artículos científicos. Por esta razón, no desarrollar un hábito de lectura adecuado afectará el aprendizaje de los sistemas embebidos, dado que un curso o libro sobre este tema no podrá enseñar todo lo existente en este campo. El estudiante debe complementar lo aprendido con nuevos conocimientos constantemente. No poseer una cultura lectora disminuirá el nivel de aprendizaje y profundización de los sistemas embebidos.

    Por último, la motivación es un aspecto clave para el aprendizaje. Esta consiste en encontrar un motivo lo suficientemente poderoso para que una persona persista en una tarea hasta cumplir el objetivo planteado. Cuando se pierde la motivación, se abandona la tarea. Es muy común que el desconocimiento a priori de los sistemas embebidos genere que los alumnos no presenten un interés directo en aprenderlo. En otros casos, se interesan; pero, al tratar de estudiar y encontrar algunas dificultades en el camino, pierden la motivación. Por ello, este texto tratará de mostrar cómo hallar esa motivación para que, por ejemplo, puedan acabar la lectura de todos los capítulos y desarrollar el 100% de los ejercicios propuestos.

    De esta manera, este libro no solo presentará fundamentos de sistemas embebidos, sino que, gradualmente y según criterios educativos, el lector los dominará. Así, conseguirá un saber pleno y duradero, lo que llamaremos aprendizaje significativo, concepto clave en esta obra.

    El aprendizaje de sistemas embebidos se caracteriza porque involucra dos etapas: el dominio de conocimientos teóricos y la aplicación práctica de los conceptos. En este libro, se presentarán, primero, los conceptos teóricos y, poco a poco, ejemplos y ejercicios prácticos.

    1.1 ¿Qué es el aprendizaje significativo?

    David Ausubel fue un psicólogo educativo estadounidense (ver el gráfico no 1.4) que realizó un aporte importante al paradigma educativo mundial mediante la teoría del aprendizaje significativo. Antiguamente, la formación (e inclusive hoy en día) se basaba en el conductismo y la enseñanza tradicional. Estos se fundamentan en el condicionamiento para moldear el comportamiento. Para ello, se utiliza la corrección de conductas mediante el premio y castigo. De esta manera, se incrementa la probabilidad de que un comportamiento positivo se manifieste por encima de uno negativo (Monzón, 2015). En este modelo de enseñanza-aprendizaje, el docente es el protagonista del proceso educativo, ya que se encarga de brindar los conocimientos necesarios sobre un tema, mientras que los estudiantes escuchan en silencio pasivamente en el aula, anotando lo expuesto por aquel. A propósito, David Ausubel cuestionó esta forma de enseñanza por considerarla memorista y repetitiva. Según el psicólogo, los métodos tradicionales de enseñanza generan que el estudiante aprenda información de manera aislada y sin establecer una conexión real con sus conocimientos previos (Ausubel, Novack & Hanesian, 1976). Esto ocasiona que el alumno no entienda la razón del material que aprende, no desarrolle un pensamiento crítico ni una capacidad de análisis; y, en muchos casos, inclusive, odie la materia por no encontrarle sentido y estar obligado a estudiarla (de hecho, es muy común ver este fenómeno en escolares de últimos años con respecto a las matemáticas).

    Gráfico No 1.4 Imagen de David Ausubel, 1963

    Microchip PIC18F57Q43 curiosity Nano kit -

    Fuente: Ausubel, Biografías y vidas, s. f.

    En 1963, Ausubel propuso un enfoque llamado aprendizaje significativo, centrado en comprender un contenido en vez de su repetición. Para ello, es clave que la nueva información obtenida por el estudiante se relacione de forma sustantiva con lo que ya conoce. De esta manera, para que el aprendizaje sea efectivo y duradero, este se debe integrar en la estructura cognitiva del alumno de un modo que tenga sentido y sea pertinente para este. Por duradero, se entiende que el aprendizaje se mantendrá a largo plazo (por muchos años o toda la vida).

    En la metodología de enseñanza, en el aula, basada en el aprendizaje significativo, el modelo difiere de lo tradicional en tres aspectos:

    El docente deja de ser el centro del proceso de enseñanza-aprendizaje y este se traslada al estudiante. Esto implica que el alumno se responsabiliza de adquirir y construir su conocimiento mediante la revisión de materiales, escuchando a terceras personas (principalmente al profesor), revisando videos o leyendo información en internet, y realizando actividades prácticas.

    El estudiante debe buscar la información de un material elaborado por el docente o el centro educativo donde se encuentra. Esta debe estar contenida en el material elaborado por el docente y presentar todo lo que necesita el estudiante y referirlo a otras fuentes en caso de que quiera ampliar el conocimiento. Es decir, el alumno no perderá tiempo buscando contenido de información útil en otras fuentes.

    El docente ya no se encarga de exponer información en el aula, sino que se centra en evaluar el aprendizaje del estudiante sobre el material presentado y ayudarlo a reforzar y reflexionar sobre este. De este modo, se forma un lazo más sólido de trabajo entre el alumno y el profesor, y se establecen discusiones sobre la presentación del conocimiento adquirido por el estudiante, lo cual enriquece su aprendizaje de manera significativa.

    Las ventajas del aprendizaje significativo son diversas. Entre ellas, se encuentra la creación de procesos cognitivos duraderos sostenidos a largo plazo y no se olvidan como suele ocurrir en el aprendizaje mecánico. Además, facilita la obtención de nuevos conocimientos, ya que, como veremos más adelante, toma como base los saberes ya adquiridos por el estudiante. Finalmente, este tipo de aprendizaje motiva al alumno, pues facilita la comprensión de nuevo

    ¿Disfrutas la vista previa?
    Página 1 de 1