<!--
author: Johnny Cubides
email: jgcubidesc@unal.edu.co
version: 0.1.0
logo:
comment: Documentación para el curso de Taller de Ingeniería Electrónica de la Universidad Nacional de Colombia
script: https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.js
https://felixhao28.github.io/JSCPP/dist/JSCPP.es5.min.js
link: https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.css
link: https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css
-->
Bienvenido al curso de Taller de Ingeniería Electrónica, en este curso aprenderá a "Pensar con las Manos", desarrollar habilidades Makers/Hackers, se espera que esta experiencia de aprendizaje contribuya a descubrir intereses sobre su futura vida profesional, como también, facilitarle relacionar los conocimientos que puede adquirir en los otros cursos y poderlos implementar al enfrentar una situación real.
La experiencia de aprendizaje está enmarcada en el Aprendizaje Basado en Fenómenos ABF en el cual el objeto de estudio es la Tecnología. Se espera que a través del desarrollo de un Artefacto, (para nuestro caso un proyecto electrónico), podamos estudiar la relación existente entre la Ciencia, Tecnología y Sociedad.
A continuación verá un esquema que representa las diferentes fases/tareas del desarrollo de un proyecto en el curso de taller de electrónica:
En el curso de taller de ingeniería electrónica se pretende realizar un producto terminado el cual está orientado como alternativa de solución a una situación real problematizada por los estudiantes, la cual se puede alinear con metas o esfuerzos de interés global.
- Sistema electrónico
- Caja
- Documentación
- Brochure comercial o Poster
- Vídeo del producto final
El dispositivo deberá responder a los requerimientos funcionales y no funcionales y además tener las siguientes características:
- Desarrollar una PCB a la medida de la necesidad; podrá desarrollar el sistema embebido completo o desarrollar una tarjeta hija para una tarjeta de desarrollo.
- Para las tareas de software se puede hacer uso de Micropython.
- El sistema debe permitir la comunicación con otros dispositivos para monitoreo o control por parte del usuario final (puede ser a través de un medio guiado o no, lo cual depende de la aplicación).
En este caso se refiere a los aparatos encargados de realizar las tareas mecánicas, de protección, estéticas, de experiencia de usuario, las cuales contienen sensores, actuadores y el sistema diseñado; puede hacer uso de CAD para impresión 3D, corte láser, existen bibliotecas libres en Internet que podrá descargar y ajustar a la necesidad.
Queremos documentar el proceso de desarrollo, para tal fin puede hacer uso de:
- git
- Wiki
En primer lugar GIT es un sistema de gestión de versiones para proyectos de cualquier tipo que permite seguirle la pista a nuestro proyectos de manera colaborativa; puede hacer uso de gestores de repositorios de proyectos como gitlab, codeberg, github, bitbucket o cualquier otro que conozca.
Con respecto a la Wiki, en realidad puede ser en cualquier lugar siempre y cuando muestre el proceso realizado del proyecto como también el producto terminado con algún demo; los gestores de repositorios de proyectos anteriormente mencionados tienen la posibilidad de crear wikis asociadas al proyecto, pero también puede hacer uso de un blog o crear páginas web staticas (gitlab y github tienen esa propiedad y por ahora es libre).
Queremos que piensen que este producto va a ser ofrecido a un público que lo pueda necesitar por tanto muestre el producto de tal manera que se pueda reconocer sus características y particularidades.
Ejemplo de brochure:
Como parte del producto final deberá crear que muestre el resultado final del artefacto creado, haciendo alusión al proceso de creación y su proceso de aprendizaje. El vídeo debe ser subido a alguna plataforma, como YouTube, Vímeo entre otras, y en el caso de drive o similares, no será admitido.
A continuación un ejemplo:
!?Construye tu propio robot y domina la electrónica básica, ARM UNAL
Bienvenidos al curso de Taller de Ingeniería Electrónica, por favor acceder al servidor de Discord el cual es diseñado como espacio para realizar los encuentros asíncronos.
Lea el código QR o de clic aquí para ir al servidor de Discord
Instrucciones:
- Acceda al servidor de Discord.
- Sino tiene cuenta de Discord crear una.
- En el canal que acaba de acceder llamado #lobby identifíquese con su nombre, código y grupo del curso, ejemplo: Johnny Cubides, Taller de Electrónica, Grupo 2.
- Espere a que el profesor le dé un rol y pueda ver el contenido del Curso.
Ejemplo de identificación:
- Enlace de proyectos Taller de Ingeniería Electrónica 2023 II (segundo semestre)
- Enlace de proyectos Taller de Ingeniería Electrónica 2023 I (primer semestre)
!?¿Qué quiero hacer en taller de electrónica?
Un diagrama de flujo representa de manera gráfica la solución general y abstracta sobre una situación o problema propuesto.
Este diagrama hace referencia al nivel contextual a la que se plantea la solución, por ejemplo, permite observar cómo el sistema a diseñar interactua con los otros sistemas externos, también es una aproximación que en el diseño de un diagrama de caja negra permite relacionar el flujo de la información con los dispositivos con los cuales el sistema contará.
Este diagrama representa el flujo de la información, las operaciones y decisiones que se toman para cumplir una tarea. Un diagrama general puede estar compuesto por otros diagramas que representan las especificidades de las diferentes tareas.
Los diagramas de flujo se diseña a través de un estandar de símbolos los cuales indican, tareas, procesos, flujos, entre otros. A continuación puede conocer una lista de ellos:
- Símbolos para la creación de diagramas de flujo en formato PDF
- Información de referencia sobre Diagramas de Flujo de Datos (DFD)
- Enseñanza de una metodología para la programación de microcontroladores
Estos diagramas los puede realizar a mano, como a través de software que contenga estos símbolos.
-
Drawio: Herramienta opensource está disponible en suite de Google o como aplicación de escritorio desde github.
-
Plantuml: Herramienta opensource que permite la creación de diagramas a través de un lenguaje textual. Puede ser instalado en su sistema operativo o puede proabar la versión Plantuml web
<iframe width="560" height="315" src="https://www.youtube.com/embed/HvkKBwPVH_0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen>
</iframe>
En este vídeo hacemos un proceso completo en el desarrollo de una PCB de una sola cara, pasando por la selección de componentes, creación de esquemáticos, revisión de reglas eléctricas, creación de ruteo, zonas de GND, uso de componentes en 3D, generación de Gerbers. Aunque no se hace uso de las normas IPC de diseño, si se realizan recomendaciones importantes.
!?Crea tu PCB con KiCAD (ejemplo guiado)
Repositorio en github de el ejemplo guiado del vídeo
WIKI:
A tener en cuenta: La mayoría de servicios como es github o gitlab permiten crear y asociar wikis en formato Markdown (archivos.md), también puede crear este Wiki haciendo uso de distintos README.md que cumplan el orden que será propuesto más adelante en este documento. Comparto un ejemplos de WiKi creados con github Kaku_bot (Tenga presente que el contenido del ejemplo está incompleto o desordenado).
El proceso de documentar es un ejercicio prioritario en el desarrollo de un proyecto, permite reconocer aprendizajes, vacíos de conocimiento, necesidades y ser referente para emprender otros proyectos por parte de los autores u otras comunidades de desarrollo/aprendizaje.
Usando como referente el enfoque planteado, en el ejercicio de documentación se pretende:
- Describir el planteamiento del problema y una ruta para abordar los retos que se puedan presentar.
- Identificar vacíos de conocimiento a nivel del problema como también de orden técnico.
- Proponer soluciones tecnológicas contextualizadas haciendo uso de referentes.
- Detallar el proceso de implementación de la solución propuesta con sus aciertos y desaciertos
- Evidenciar el resultado final evaluando resultados en función de objetivos.
- Recoger conclusiones y recomendaciones para iteraciones futuras.
Teniendo presente los contenidos vistos en el curso de taller de electrónica la documentación tiene la siguiente estructura y cantidad de páginas:
-
Home (Página 1)
-
Título del proyecto
-
Integrantes
-
Descripción y/o Introducción
-
Palabras clave
-
Poster o brochure
-
Imagen tipo banner de la implementación del proyecto (resultado final)
-
Vídeo del proyecto: Deberá crear un vídeo y subirlo a una plataforma como puede ser Youtube, explicando del proyecto lo siguiente:
- La problemática
- La solución planteada (los módulos usados)
- El criterio que tuvo para las decisiones tomadas
- El funcionamiento del proyecto desde el punto de vista del usuario
- Recomendaciones y conclusiones
-
-
Contexto (Página 2)
- Problemática
- Objetivos
- Alcance
- Ruta o roadmap o cronograma
-
Diseño de la solución (Página 3)
- Diagramas de caja negra (abstractos)
- Diagramas tecnológicos
- Diagrama de flujo general del proyecto (cómo interactúa con el usuario final)
- Impacto ambiental y acciones propuestas de mitigación
-
Diseño e implementación del case (página 4)
- Diseño corte 3D o corte láser
- Evidencias de implementación (imágenes, vídeos)
-
Diseño e implementación electrónica (página 5)
-
Simulaciones según haya sido necesario (opcional)
-
Imágenes sobre los diseños creados (papel/tablero) sobre las tecnologías a usar
-
Diseño de PCB en KiCad (teniendo presente el siguiente contenido):
- Diseño esquemático del circuito en pdf y png
- Diseño de PCB layout (imagen del ruteo)
- Imagen PNG en 3D del diseño final de la PCB
- Fotografías de la PCB fabricada
- Imagen de la PCB con componentes soldados
- Imagen de la PCB con los sensores, actuadores y demás componentes interconectados
-
-
Diseño e implementación de software (Página 6):
- Diagrama(s) de flujo sobre las diferentes tareas que realiza el proyecto (A nivel de la solución)
- Código sobre las diferentes pruebas unitarias de sensores y actuadores
- Diagramas o código explicado sobre el cómo interactúa con otras interfaces
- Otros códigos y plataformas usadas (NodeJS, Appinventor, etc).
-
Evidencias (Página 7):
- Puede subir información sobre el proceso de integración y de ensamble de cada cosa que sea relevante para el grupo por ejemplo, aquellas cosas que no funcionaron o se dañaron, aquellas cosas que fueron descubrimientos, aciertos o desaciertos.
-
Conclusiones y recomendaciones futuras (Página 8)
- Conclusiones
- Recomendaciones para trabajos futuros
- Referentes (Referencias sobre inspiraciones, códigos base o documentación consultada relevante)
A tener en cuenta: Cualquier imagen o código que suba deberá tener asociada una descripción para saber cuál es su relación.
En el siguiente ejemplo se muestra una imagen de las páginas de la wiki bien ordenadas:
SRC (archivos fuente) en Github
- Los archivos deben están en el gestor de proyectos, no en formatos comprimidos, por ejemplo no en archivos.zip, tampoco podrán estar en gestores de archivos como es el caso de drive o similares.
- Se recomienda el orden en los archivos fuentes, por ejemplo en directorios separados con nombres representativos.
- Las evidencias deben estar en un directorio de evidencias.
- Los vídeos de gran tamaño serán subidos a una plataforma como puede ser el caso de Youtube, por favor no hacer uso de drive o cualquier otro similar.
- En el about del proyecto en github agregar el topic taller-de-ingenieria-electronica-unal para fácil búsqueda.
A continuación se observará un ejemplo de la organización de los archivos fuente en un repositorio de Github:
Recomendación: Haga uso de un cliente de git como puede ser Github desktop para que no tenga problemas subiendo el contenido a su gestor de proyectos. A continuación un vídeo introductorio sobre la plataforma.
!?Gestionar nuestro proyecto en Github
Los laboratorios aquí propuestos permiten la exploración y el desarrollo de habilidades duras, en electrónica y programación. A continuación se comparte información útil y general que sirve de guía como parte de los conceptos fundamentales para el desarrollo de estos ejercicios:
- Conceptos de electrónica y simbología de la tecnología usada en estos laboratorios, resumen en PDF
- Símbolos electrónicos
- Simbología de los diagramas de flujo
- Programación en Python 3, resumen en PDF
Este taller pretende orientar al estudiante en el inicio Maker; en este taller se enfrentará a desarrollar cosas como:
- Análisis de corriente de un circuito D.C.
- ¿Cómo verificar que los fusibles del multímetro no están dañados?
- ¿Cómo medir el valor de una resistencia?
- ¿Cómo calcular el valor de una resistencia de carbón?
- Configuración de fuente DC y medición de tensión de la misma con el multímetro
Referencias útiles
Puedes descargar el taller "Mi primer circuito" desde aquí
- MATERIALES A USAR
- Una fuente de energía D.C. de tensión variable.
- Un par de cables bananas caimán
- Conectores rápidos (jumper-dupon)
- Protoboard
- Una resistencia de cualquier valor no mayor a 33 Kohms.
- Un LED de cualquier color.
- Dos multímetros, uno para medir corriente y el otro para medir tensión.
- Cuaderno para realizar apuntes
- REALIZA ESTE PRIMER MONTAJE
A continuación podrá ver un diagrama pictográfico el cual es una aproximación de como se ven las cosas realmente.
Una manera abstracta de entender como está interconectado un circuito es a través de un esquemático, este diagrama muestra los componentes representados por símbolos con sus nodos de conexión y además etiquetados como sigue:
R1: Resistencia DC Power 1: Fuente de energía DC LED1: Diodo emisor de Luz
- ENERGIZAR CIRCUITO
- Se debe verificar que el circuito realizado corresponda al propuesto en esta guía.
- A continuación conecta la fuente de energía y empieza con un voltaje de 0 V.
- Realizar incrementos de tensión de la fuente hasta que el LED se encienda y que la intensidad lumínica sea la deseada, es decir, ni tan tenue, pero tampoco tan intensa.
Observación: En la electrónica existen componentes polarizados y no polarizados, un elemento no polarizado es aquel que no requiere una orientación para su funcionamiento como sucede con la resistencia; en el caso del LED este si tiene polaridad (Ánodo y Cátodo) y si no enciende es muy probable que deba intercambiar sus pines de conexión para su funcionamiento correcto.
- MEDIR VOLTAJE EN CADA COMPONENTE DEL CIRCUITO
Como se mencionó con anterioridad, tenemos tres componentes R1, DC Power y LED1. Para medir el voltaje deberás poner el multímetro en modo V en DC, como se ilustra en la siguiente imagen, además de lo anterior, se pone las puntas del multímetro en los puertos de conexión indicados como COM (cable negro) y V. Las puntas del multímetro deberán ser conectadas sobre cada componente en cada uno de sus nodos de conexión, en la imagen siguiente se observa como se realiza la medición de la tensión (voltaje) en el LED1.
Observar el diagrama esquemático siguiente, en él se puede observar como se realiza la medición de la tensión.
Comprendiendo como se realiza las mediciones de tensión en cada uno de los tres componentes, registra los valores obtenidos en una tabla, como en el siguiente ejemplo:
Componente | Tensión V |
---|---|
R1 | 3.5 V |
DC Power 1 | 5 V |
LED1 | 1.5 V |
- COMPROBAR LA SIGUIENTE TEORÍA
En un circuito existen componentes activos y pasivos; los activos son aquellos que son capaces de entregar energía como es el caso de la DC Power, mientras que los pasivos son aquellos que consumen energía como es el caso de R1 y LED los cuales manifiestan este consumo en Luz y calor.
Un circuito eléctrico cerrado como es el caso anterior donde solo hay un camino cerrado por donde pueda
transportarse electricidad conservará su energía; lo anterior se puede interpretar como sigue:
la energía que se entrega al circuito es igual a la que se consume
.
Lo anterior en términos de voltaje se puede representar así:
$$ V_{DC_POWER_1} = V_{R1} + V_{LED1} $$
Hay que comprobar la anterior ecuación, tomando los valores obtenidos y registrados en la tabla comprueba que la tensión en la fuente es igual a la suma de las tensiones de los componentes que consumen energía.
- MEDICIÓN DE CORRIENTE ELÉCTRICA
Para medir la corriente eléctrica que pasa por el circuito con el multimetro, éste último deberá hacer parte de ese cicuiro cerrado, por tanto, deberá abrir un nodo en el circuito y poner en serie el multimetro con los demás componentes; para mayor claridad observe las siguiente imagen:
Observe ademés de los cables cómo están interconectados que la perilla o selector del multímetro se debe poner en la función de medición de corriente continua simbolizado con la letra A la cual tiene encima dos líneas: una línea recta y continua y debajo de ella una línea recta y discontinua.
También puede ver la abstracción de este diagrama pictográfico, donde preste atención a los nodos de conexión, verá que solo hay un camino cerrado en el circuito.
Observación: Dependiendo del multímetro, se puede usar escalas diferentes a A, tal es el caso de mA (miliamperios) o uA (microamperios).
La simulación es una herramienta que permite comparar los resultados de los cálculos de los diseños eléctricos, antes de realizar una implementación física del mismo, en las simulaciones se pueden observar comportamientos de diferentes variables, como puede ser el caso de corriente eléctrica, voltaje, potencia, impedancias, frecuencia de operación, entre otros.
En el siguiente enlace podrá ver la simulación del circuito denominado "mi primer circuito"; podrá observar de manera gráfica el voltaje (a modo de colores), la corriente que circula por los conductores (puntos amarillos que se desplazan por el circuito), y la intensidad de encendido del LED rojo (Dependiendo de la potencia eléctrica que es consumida en el LED, el color rojo cambiará su intensidad).
Enlace para observar la simulación de mi primer circuito
EL siguiente archivo el cual es un texto plano (.txt) es la representación en spice, la cual indica por números de nodos cómo está interconectado un circuito y qué modelo corresponde, se invita a descargar el archivo y leer su contenido para comprender cómo está codificado.
Archivos en formato .txt de mi primer circuito en CircuitJS
Desde luego hay diferentes tipos de simuladores, están aquellos como éste (circuitjs) que es a nivel pedagógico una herramienta poderosa para visualizar el comportamiento, pero también hay otros simuladores con características profesionales que pueden ser opensource, gratis o privativos, a continuación se señalan dos de ellos que pueden ser útiles en su carrera de ingeniería.
Observación Sobre cómo instalar Qucs, puede seguir las instrucciones que encontrará en este enlace
En vista de lo aprendido en el taller "Mi primer circuito" deberá desarrollar el siguiente reto que verá en la siguiente imagen.
Este taller está diseñado para que el estudiante analice circuitos en DC como es el caso de el divisor de tensión, resistencias en seria y paralelo, divisor de corriente y finalmente un circuito de un rectificador que hace uso de un diodo.
El estudiante deberá descargar el taller de qucs en pdf, realizar los cuatro ejercicios propuestos (cálculos, simulación, analisis de resultados y conclusiones) y reportar los resultados en un informe de formato libre.
Las simulaciones las deberá realizar con Qucs y cuenta con información de uso e instalación en los siguientes enlaces:
- Instalación de Qucs en Windows
- Instalación de Qucs en Linux
- Ejemplos de simulaciones
- Qucs en español
Ejemplos de simulaciones:
Determinar el beta del transistor
Conocer el valor de corriente para el giro de motor.
Montar el siguiente circuito:
Cambiar la fuente DC por un generador de señales cuadrada equivalente y controlar el PWM
Agregar una tarjeta de desarrollo para programar el PWM.
Realizaremos el siguiente circuito el cual corresponde a un driver Puente H con tecnología de transistores npn discretos (2n2222a)
Para reconocer el funcionamiento podrá ir al siguiente enlace y conocer las configuraciones posibles:
Programa a realizar: Realice el programa que está planteado en el siguiente diagrama de flujo; haga uso del esp32 o rp2040 y Micropython.
Reto: Realice un programa con funciones de python las cuales puedan ser llamadas desde el prompt de micropython para iniciar o detener el motor.
Recuerde también que puede hacer uso del programa de encendido de LEDs para adaptarlo para este taller:
# Importar la librería para el manejo de pines
from machine import Pin
#librería para control por ancho de pulso
from machine import PWM
# Se configura el pin D22 como un PWM
led22 = PWM(Pin(22), freq=30, duty=0)
led23 = PWM(Pin(23), freq=30, duty=512)
# Si desea cambiar frecuencia
led22.freq(5)
led23.freq(15)
# Si desea cambiar el ancho del pulso
# 0 para 0% y 1023 para 100%, 50% es 512
led22.duty(512)
led23.duty(100)
# Para detener
# led.deinit()
# Para reiniciar
# led.init()
El conversor ADC es un módulo que convierte señales de tensión
analógicas a valores enteros en un rango determinado; la resolución
de la conversión está determinada por el tamaño de bits del conversor,
es decir, si el ADC es de 16 bits, el número máximo a obtener en una
conversión será de
ESQUEMÁTICO: Este diagrama representa la solución a realizar, solo se ha agregado en sí el circuito para el sensor de Luz que es alimentado por la tensión ofrecida desde el pin de 3.3v (3v3 o 3V) de la tarjeta de desarrollo, para crear los demás elementos del circuito deberá remitirse a los conocimientos previos de los anteriores talleres.
PROGRAMA A REALIZAR:
Traduzca este algoritmo a una tecnología/lenguaje, en este caso a micropython, si tiene dificultades para crear las diferentes instrucciones, remítase a algún tutorial del lenguaje python3.
RECOMENDACIÓN PARA LA REALIZACIÓN DEL PROGRAMA:
Para que pueda resolver este problema podrá seguir estas recomendaciones:
- Realice el circuito planteado e identifique el nodo de voltaje v_out
- Como es un sensor de Luz deberá provocar los dos casos extremos: cuando hay mucha luz 100 % o poca luz 0 %; para provocar estas dos situaciones use sus manos para tapar el sensor y que no reciba luz 0% y por medio de la linterna del celular estimule el sensor para obtener el 100 % de la intensidad de la luz.
- Simultáneamente al paso 2 mida el voltaje con un multímetro entre el nodo v_out y GND observe el cambio de voltaje que existe en proporción de la intensidad de luz percibida por el sensor e indique qué tipo de comportamiento tiene el voltaje en función de la luz recibida.
- Teniendo presente que el ADC convierte señales de voltaje a valores de unidades enteras haga un pequeño
programa que imprima el valor del voltaje convertido en esas unidades (ver abajo ejemplos de código según tarjeta de desarrollo),
para ello acompañe su código de la función
print()
en unwhile True
acompañado con untime.sleep(segundos)
y mire la relación que existe entre el voltaje medido con el multímetro y las unidades imprimidas en consola; determine la relación existente de las unidades en función del voltaje convertido por el ADC. - Teniendo en cuenta los dos casos extremos realizados desde el paso 2, tome el valor de unidades obtenido para ambos casos (0% de luz y 100 % de luz), recuerde que estos valores se observan en la terminal y deben corresponder a la acción de aplicar los dos casos extremos del paso 2.
- Al tener los dos casos extremos que puede llamar
$P_1$ y$P_2$ donde cualquier punto es una coordenada de la forma$P(unidades_adc, porcentaje_luz)$ y que en un plano cartesiano$P(x, y)$ ,$x=unidades_adc$ y$y=porcentaje_luz$ trace una recta que una a esos dos puntos y construya una ecuación de la recta. Recuerde que la ecuación de la recta es de la forma$y(x) = mx + b$ , la pendiente$m = {{y_2 - y_1} \over {x_2-x_1}}$ y que el punto de corte$b = y_1 -mx_1 = y_2 - mx_2$ - Con la información obtenida en el paso 6 construya una función en python que haga esa transformación, pruebe su funcionamiento estimulando el sensor como fue planteado en el paso 2 y si es coherente el resultado, construya el algoritmo planteado en este taller (PROGRAMA A REALIZAR)
# Fije el valor de la pendiente m
# m = ...
# Fije el valor de B
# b = ...
# Los anteriores valores los puede sustituir directamente en la ecuación.
def calcularPorcentajeDeLuz(val_adc):
return m*val_adc + b
USO DE ADC EN MICROPYTHON
Para decidir cuál pin va usar para la conexión deberá tener presente el pinout de la tarjeta de desarrollo en cuestión, revise que el pin a seleccionar debe permitir la configuración de un periférico ADC.
# On the ESP32, ADC functionality is available on pins 32-39
# (ADC block 1) and pins 0, 2, 4, 12-15 and 25-27 (ADC block 2).
from machine import Pin
from machine import ADC
pin = Pin(pin_number, Pin.IN)
adc = ADC(pin, attent=ADC.ATTN_11DB) # create an ADC object acting on a pin
val = adc.read_u16() # read a raw analog value in the range 0-65535
# RP2040 has five ADC channels in total, four of which are 12-bit
# SAR based ADCs: GP26, GP27, GP28 and GP29. The input signal for
# ADC0, ADC1, ADC2 and ADC3 can be connected with GP26, GP27, GP28,
# GP29 respectively (On Pico board, GP29 is connected to VSYS).
# The standard ADC range is 0-3.3V. The fifth channel is connected
# to the in-built temperature sensor and can be used for measuring
# the temperature.
from machine import ADC, Pin
adc = ADC(Pin(pin_number)) # create ADC object on ADC pin
val = adc.read_u16() # read value, 0-65535 across voltage range 0.0v - 3.3v
!?Enviar datos desde microcontrolador a red local con Micropython y Node Red
En este taller se aprenderá a compartir los datos de los sensores en una red Local como también dar órdenes a microcontroladores para que cambien el estado de algunos actuadores. En este ejemplo, los sensores son simulados por funciones de generación de datos aleatorios, por tanto, se invita a los estudiantes que después de comprender el funcionamiento de este ejemplo modifiquen el ejercicio agregando sensores y actuadores que han manejado en el transcurso del curso.
Node-Red es un software que permite conectar información de diferentes medios y protocolos ya sea para almacenar, presentar o controlar información de interés en un sistemas.
Para instalar Node-Red deberá primero instalar NodeJS para su sistema operativo, seguido, desde la línea de comandos de una terminal deberá instalar node-red con el gestor de paquetes de nodejs denominado npm. Según su sistema operativo siga las indicaciones planteadas en la documentación oficial:
Si tiene dificultades en la instalación puede buscar un ejemplo de instalación en Internet, Teniendo presente la documentación oficial ya que puede tener algunas variaciones en los comandos que deberá considerar, ejemplo de instalación de node-red
Para ejecutar la aplicación nuevamente desde la terminal ejecute el siguiente comando:
node-red
Esto iniciará la aplicación y le pedirá que en el navegador que usted use escriba la dirección IP del servicio para que pueda ser consumido, ejemplo:
http://127.0.0.1:1880
Ponga la anterior dirección IP en el navegador para que Node-red esté listo para usarse.
Para que el ejemplo pueda ser ejecutado requiere los módulos de Dashboard y Serialport. Dashboard permite crear una interfaz de usuario y Serialport la comunicación con el microcontrolador.
En la aplicación en la siguiente ruta busque e instale los módulos requeridos:
Ruta para instalación en la aplicación:Menu -> Manage Palette -> Install -> Option and Search
Módulos a buscar e instalar:
- node-red-dashboard
- node-red-node-serialport
Es posible que la aplicación le pida que deba reiniciar node-red, para tal fin, en la terminal, detenga la ejecución con Control + C y vuelva a iniciar el servicio de node-red con node-red en la misma terminal.
A continuación se comparte el flujo diseñado en node-red que podrá descargar e importar en node-red y desplegar:
El flujo importado y desplegado en node red permite la comunicación bidireccional con el microcontrolador a través del puerto serial.
En la anterior imagen se puede observar los siguientes nodos:
- Comunicación serial bidireccional (serialport RX y serialport TX)
- Funciones para validar y dar formato a los mensajes que se envían y reciben (addCarrierReturn y checDataFormat)
- Flujos de debug permiten darle seguimiento a los datos enviados o recibidos
- Nodos de dashboard los cuales se despliegan y son visualizados por el usuario en un formato legible, con estos nodos el usuario monitorea y controla el sistema (LED ON y LED OFF como entradas de información, y Estado de los datos, Volt1 y Volt2 como salida de información visual).
La lógica de los nodos desplegados está escrita en javascript, para conocer cómo funciona puede dar clip en el nodos y se mostrará una ventana con un menú e información de ello, ejemplo:
Para obtener la URL del dashboard desplegado puede dar clic en el ícono que encuentra en el menú del dashboard, ejemplo:
La anterior URL la puede compartir a otros dispositivos que estén en la misma red cambiando la ip de la URL por la IP del equipo donde está el servicio de Node-red que en este caso es el computador, ejemplo:
Si la URL generada es:
http://127.0.0.1:1880/ui/#!/0?socketid=2xbT63rXMJDBZ5i3AAAB
Y la ip del equipo es por ejemplo: 192.168.1.100
quedaría algo como lo siguiente:
http://192.168.1.100:1880/ui/#!/0?socketid=2xbT63rXMJDBZ5i3AAAB
Se recomienda codificar la URL en un código QR para que pueda ser compartido a un celular.
El siguiente programa que se ejecuta en el microcontrolador, permite la generación de los datos que se van a compartir en la red, como se hace uso de micropython es importante reconocer que la programación del microcontrolador se hace a través del REPL y ésta está compartida por el canal USB que será usado para el envío de datos, por tanto, aunque funciona se puede optimizar para otros propósitos.
Observe en el código que se comparte que los datos son enviados a través de la función print()
,
también observe que en este programa se hace uso de threads
los cuales permiten la ejecución
de tareas en loops distintos de manera "simultanea".
!include ./desing/t5-node-red/main.py
Para el ejemplo, descargue el programa main.py y guárdelo con ese nombre en el microcontrolador que tiene micropython, libere el puerto de comunicación serial, en el caso de Thonny cambie de interprete o cierre la aplicación, si es necesario desconecte y conecte el microcontrolador del puerto USB.
Finalmente en Node-red reinicie los flujos y observe en el dashboard si se reciben datos desde el microcontrolador, interactúe con los botones de encendido y de apagado del LED.
Si por alguna razón no se puede visualizar los datos, es recomendable reiniciar Node-red y refrescar las ventanas del navegador.
Este ejemplo contienen información base para enviar datos desde una aplicación en Android creada con AppInventor, tiene el código para la app de android y el programa que debe tener un esp32 el cual corre un interpretye de micropython.
Enlace de la aplicación base en github
- Raspberry Pi Pico
- Raspberry Pi Pico W
- NodeMCU esp8266
- NodeMCU esp32 wroom
- Esp32CAM
- BluePill (stm32f103)
- Arduino UNO (atmega328p)
- Arduino Nano (atmega328p)
- Arduino Pro (atmega328p)
Comparativa entre placas de desarrollo
Tarjeta de Desarrollo | Arquitectura | Lenguaje de prog | Perifericos | RAM - ROM | N. pines io | Vin - Vpin |
---|---|---|---|---|---|---|
NodeMCU esp32 Wroom | espressif xtensa, dos nucleos, 80 to 240 MHz, 32bits | Python, Lua, C, C++, Forth, Asm | uart, i2s, spi, adc, dac, wifi, bluetooth | 520 KB sram , 448 KB rom y 4 MB flash | 25 Digitales de los cuales 15 Analógicos | 5V , 3.3V |
ESP32CAM Wroom | espressif xtensa, dos nucleos, 80 to 240 MHz, 32bits | Python, Lua, C, C++, Forth, Asm | uart, i2s, spi, adc, dac, wifi, bluetooth, camera | 520 KB sram y psram 4MB , 448 KB rom y 4 MB flash | 10 Digitales de los cuales 7 Analógicos | 5V , 3.3V |
Nodemcu esp8266 e12 | espressif xtensa, 80MHz to 160 MHz, 32bits | Python, Lua, C, C++, Forth, Asm | uart, i2s, spi, adc, dac, wifi | 50 KB , 4 MB flash | 10 Digitales y 1 ADC | 5V , 3.3V |
Raspberry Pi Pico | rp2040, dos nucleos, 133 MHz, 32bits | Python, Lua, C, C++, Forth, Asm | uart, i2s, spi, adc, dac | 264 KB sram , 2MB flash | 23 Digitales y 3 Analógicos | 5V , 3.3V |
Raspberry Pi Pico W | rp2040, dos nucleos, 133 MHz, 32bits | Python, Lua, C, C++, Forth, Asm | uart, i2s, spi, adc, dac, wifi, bluetooth | 264 KB sram , 2MB flash | 23 Digitales y 3 Analógicos | 5V , 3.3V |
Arduino UNO | Atmega328p, 16MHz, avr8, 8bits | C, C++, Forth, Asm | uart, i2s, spi, adc | 2 KB sram , 32 KB flash | 20 Digitales y de ellos 6 Analógicos | 5V , 5V o 3.3V |
Arduino Nano | Atmega328p, 16MHz, avr8, 8bits | C, C++, Forth, Asm | uart, i2s, spi, adc | 2 KB sram , 32 KB flash | 20 Digitales y de ellos 6 Analógicos | 5V , 5V o 3.3V |
Arduino Pro | Atmega328p, 16MHz, avr8, 8bits | C, C++, Forth, Asm | uart, i2s, spi, adc | 2 KB sram , 32 KB flash | 20 Digitales y de ellos 6 Analógicos | 5V , 5V o 3.3V |
Esp32 dev kit:
Pinout esp32:
Herramientas para el esp32:
- Simular proyectos del esp32 en wokwi
- Referencia rápida de micropython con el esp32
- Configuración de Thonny editor para micropython en placas de desarrollo esp8266 y esp32
Si tiene dificultades para descargar las herramientas de desarrollo, pruebe directamente desde estos enlaces
- Descargar Thonny Editor para Windows
- Firmware micropython para esp32
- Driver cp210x universal para Windows
Esp32CAM:
¿Cómo conectar el esp32CAM?:
El esp32CAM no cuenta con un adaptador USB a UART en la placa y este debe ser agregado, existen varios que pueden ser útiles como pueden ser:
- FT232RL (recomendado)
- CH340
- CP2102
El siguiente gráfico muestra cómo debe quedar conectado el esp32CAM, el cable de color verde es agregado en el momento de subir el firmware y no es requerido cuando el esp32cam está en modo de ejecución de programas.
Pinout del esp32cam:
Herramientas de referecia:
Raspberry Pi Pico y Pico W:
Pinout raspberry pi pico:
Herramientas y documentación Raspberry pi pico:
- Simulación de proyectos en wokwi
- Fimrware micropython: descarga e instalación
- Documentación de micropython para raspberry pi pico
- Hoja de datos (datasheet) para la raspberry pi pico
Arduino UNO:
Pinout de Arduino UNO:
Herramientas para Arduino:
Thonny Editor
Tohnny Editor es un entorno de desarrollo en lenguanje Python que puede servir para diferentes placas de desarrollo con un intérprete de Micropython:
- esp8266
- esp32
- Raspberry Pi Pico
En el siguiente enlace encontrá las instrucciones de instalación según sistema operativo y placa de desarrollo:
Cómo instalar Thonny Editor y configurar para una placa de desarrollo
Qucs
Instalación de Qucs en Windows y primer acercamiento
<iframe width="560" height="315" src="https://www.youtube.com/embed/624if7zhbIU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen>
</iframe>
Ejemplos de uso de Qucs en GitHub
En el siguiente repositorio de github podrá encontrar Ejemplos de uso para dominar este excelente simulador.
Ejemplos de uso de Qucs en github
La siguiente lista se refiere a gestores de repositorios de proyectos, los cuales tienen como característica el seguimiento de avance de proyectos y la capacidad de aporte grupales al proyecto.
Las herramientas listadas hacen uso del sistema de gestión de versiones denominado git, esta herramienta en principio no es fácil aprender, sin embargo, existes diferentes clientes que puede usar para facilitar el proceso de alimentar los proyectos. Conozca la lista de aplicaciones clientes recomendada por git.
Si hace uso de github, puede usar el cliente creado por github denominado Github client desktop.
Las anteriores herramientas hacen uso del formato de Markdown, el cual es sencillo y fácil de aprender, para aprender de éste, visite el siguiente enlace: Tutorial Markdown
Si conoce o sabe usar Notion puede hacer uso de este para enlazarlo con su proyecto git
Vídeos recomendados:
DOCUMENTACIÓN DE KICAD
Enlace de documentación oficial de kicad
Enlace de descarga de Kicad para varias plataformas
Si usa Linux puede abrir la terminal y ejecutar el siguiente comando para instalar Kicad:
sudo apt install kicad
MI PRIMER PCB CON KICAD
Make Your First Printed Circuit Board: Este tutorial en idioma inglés acerca al estudio de la herramienta de diseño kicad mientras crea su primera PCB.
EJERCICIOS DE ROUTEO
flow free: Para desarrollar la habilidad de routeo, puede realizar hacer uso de la herramienta flow free la cualnos reta a pensar la manera correcta de conectar nodos de colores a través de puentes, la herramienta está compilada en distintas tiendas.
- Ver el vídeo Resistencias explicadas, realizar la documentación (resumen, grafo, entre otros), compartir el resumen en discord.
- Ver el víde Cómo medir componentes electricos en PCB, realizar la documentación (resumen, grafo, entre otros), compartir el resumen en discord.
- Ver el vídeo sobre controladores industriales Conceptos Básicos del Controlador de Lógica Programable.
- Cómo soldar Soldar para principiantes
- Realizar lectura sobre eonomía digital 2024, ONU comercio y desarrollo Informe
- Los temas principales: Abordaje de problemáticas sociales.
- Los estudiantes deberán trabajar en equipos y cada equipo deberá encargarse de una problemática.
- Cada estudiante del equipo de trabajo será responsable de un subtema de la problemática seleccionada.
- Todos los equipos de trabajo deberán tener el mismo número de integrantes, los cuales corresponden al mismo número de Subtemas
Fase 1 (30 min): Seleccionado los grupos y sus problemáticas, los estudiantes deberán reunirse por subtemas para comprender el subtema y así poder realizar aportes a la intervención de la problemática. Los estudiantes podrán discutir sus problemáticas para generar relaciones de interés y prioridades.
Fase 2 (30 min): Los estudiantes deberán reunirse según problemática seleccionada para estudiarla, comprenderla y plantear una alternativa de abordaje.
Fase 3 (20 min): Los estudiantes socializarán el estudio de su problemática haciendo uso de un PITCH de máximo 3 minutos
Ejemplo de problemáticas sociales: Los 10 problemas más graves de Bogotá
Temas:
- Vendedores ambulantes
- Los interminables trancones de Bogotá
- Obras que nunca terminan
- Zonas de tolerancia de Bogotá
- Basura y reciclaje
- Una negra nube cubre a Bogotá
- Inundación de motocicletas
- El colapso de Transmilenio
- Habitantes de la calle
- Los huecos en la calle
- Inseguridad
Subtemas:
- Educación y participación ciudadana
- Legislación y políticas públicas
- Tecnología e innovación
- Economía y desarrollo
- Ambiental y salud pública
Referencias
- Simbiosos entre el arte, la ciencia y la tecnologia
- Por esto no podemos tener cosas bonitas (obsolescencia)
- África: El vertedero electrónico
- Tecnología criolla
- Arduino el documental
- Construimos un smartwatch
Plataformas de Crowdfunding
Las plataformas de crowdfunding permiten visibilizar e impulsar proyectos de emprendimiento artísticos, de desarrollo, de innovación entre otros. Allí se han apoyado ideas de desarrollo interesante como han sido:
Omega2: Sistema embebido que costaba 5 dólares con capacidad de correr Linux y conexión WiFi.
Mycropython: Proyecto que permite programar microcontroladores en el lenguaje Python.
Cubetto: Plataforma de programación de hardware tangible.
Espruino: Programa microcontroladores con el lenguaje de programación JavaScript.
Papilio Duo: Crear circuitos y probar en FPGA de manera gráfica o por bloques.
Endless: Computadoras para todo el mundo.
Si es necesario un poco de inspiración para emprender un proyecto, puede revisar los siguientes sitios de crowdfunding, podrá encontrar proyectos que inclusive podrá adoptar para emprender su propio proyecto.
Enlaces a plataformas de crowdfunding
Plataformas de Chacharreo/Hackeo
Con el fin de que los estudiantes puedan realizar consultas sobre componentes electrónicos se comparte a continuación algunos enlaces de tiendas electrónicas que se encuentran en Bogotá y sus alrededores:
https://www.sigmaelectronica.net/
https://www.mactronica.com.co/
https://www.controldinamico.com/
https://osakaelectronicsltda.com/
http://www.microelectronicos.com/