{"id":95,"date":"2024-03-20T08:34:13","date_gmt":"2024-03-20T13:34:13","guid":{"rendered":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/?p=95"},"modified":"2024-03-23T09:28:34","modified_gmt":"2024-03-23T14:28:34","slug":"implementacion-de-python-en-placas-de-desarrollo-basadas-en-microprocesadores-un-vistazo-al-poder-de-la-programacion-embebida","status":"publish","type":"post","link":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/implementacion-de-python-en-placas-de-desarrollo-basadas-en-microprocesadores-un-vistazo-al-poder-de-la-programacion-embebida\/","title":{"rendered":"Implementaci\u00f3n de Python en placas de desarrollo basadas en Microprocesadores: Un vistazo al poder de la programaci\u00f3n embebida"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-1024x683.jpg\" alt=\"\" class=\"wp-image-99\" srcset=\"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-1024x683.jpg 1024w, https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-300x200.jpg 300w, https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-768x512.jpg 768w, https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-1536x1024.jpg 1536w, https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/45090e95-a08f-40ca-b91c-26bf19c2ed3d-2048x1365.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>La programaci\u00f3n embebida ha experimentado un notable avance en los \u00faltimos a\u00f1os, permitiendo a los desarrolladores aprovechar el poder y la flexibilidad del lenguaje Python en dispositivos con recursos limitados, como las placas de desarrollo basadas en microprocesadores. En esta entrada, exploraremos c\u00f3mo Python se ha convertido en una opci\u00f3n popular para la programaci\u00f3n de sistemas embebidos y c\u00f3mo se implementa en placas de desarrollo l\u00edderes en el mercado.<\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 es la programaci\u00f3n embebida?<\/strong> <\/p>\n\n\n\n<p><strong>Programaci\u00f3n Embebida: Fundamentos y Significado en la Industria Actual<\/strong><\/p>\n\n\n\n<p>La programaci\u00f3n embebida se refiere al desarrollo de software destinado a ejecutarse en dispositivos embebidos, como microcontroladores y sistemas embebidos. Estos dispositivos est\u00e1n dise\u00f1ados para realizar tareas espec\u00edficas y suelen operar en entornos de recursos limitados, como memoria y potencia de procesamiento. A pesar de estas limitaciones, la programaci\u00f3n embebida desempe\u00f1a un papel crucial en la industria actual, ya que impulsa la innovaci\u00f3n en una amplia gama de sectores, desde la electr\u00f3nica de consumo hasta la automoci\u00f3n y la industria m\u00e9dica.<\/p>\n\n\n\n<p><strong>Importancia en la Industria Actual:<\/strong><\/p>\n\n\n\n<p><em>1. Automatizaci\u00f3n y Control:<\/em> Los sistemas embebidos se utilizan ampliamente en aplicaciones de automatizaci\u00f3n y control, como en dispositivos dom\u00e9sticos inteligentes, sistemas de seguridad y control industrial. La programaci\u00f3n embebida permite la creaci\u00f3n de sistemas aut\u00f3nomos capaces de realizar tareas espec\u00edficas de manera eficiente y confiable.<\/p>\n\n\n\n<p><em>2. Internet de las Cosas (IoT):<\/em> Con el auge del Internet de las Cosas, la programaci\u00f3n embebida se ha vuelto a\u00fan m\u00e1s relevante. Los dispositivos IoT, como sensores y actuadores, dependen de sistemas embebidos para recopilar datos, procesar informaci\u00f3n y comunicarse con otros dispositivos y servidores en la red.<\/p>\n\n\n\n<p><em>3. Dispositivos Port\u00e1tiles y Wearables:<\/em> Los dispositivos port\u00e1tiles y wearables, como relojes inteligentes y dispositivos de seguimiento de la salud, tambi\u00e9n hacen uso intensivo de la programaci\u00f3n embebida. Estos dispositivos requieren software eficiente y de bajo consumo de energ\u00eda para ofrecer funcionalidades avanzadas en un factor de forma compacto.<\/p>\n\n\n\n<p><strong>Caracter\u00edsticas y Desaf\u00edos de Trabajar con Sistemas Embebidos:<\/strong><\/p>\n\n\n\n<p><em>1. Recursos Limitados:<\/em> Los sistemas embebidos suelen tener recursos limitados, incluyendo memoria, potencia de procesamiento y capacidad de almacenamiento. Esto requiere que los desarrolladores optimicen cuidadosamente el c\u00f3digo para garantizar un rendimiento \u00f3ptimo y una eficiencia energ\u00e9tica.<\/p>\n\n\n\n<p><em>2. Tiempo Real:<\/em> Muchos sistemas embebidos deben responder a eventos en tiempo real, lo que significa que el software debe ejecutarse de manera predictiva y r\u00e1pida. La programaci\u00f3n embebida debe tener en cuenta estas restricciones temporales para garantizar un funcionamiento adecuado del sistema.<\/p>\n\n\n\n<p><em>3. Fiabilidad y Seguridad:<\/em> En aplicaciones cr\u00edticas, como la automoci\u00f3n y la industria m\u00e9dica, la fiabilidad y la seguridad son aspectos fundamentales. Los sistemas embebidos deben ser robustos y estar protegidos contra amenazas de seguridad, como ataques cibern\u00e9ticos y fallos de hardware.<\/p>\n\n\n\n<p><strong>Microcontroladores Destacados:<\/strong><\/p>\n\n\n\n<p><em>1. RP2040:<\/em> El RP2040 es un microcontrolador de bajo costo desarrollado por Raspberry Pi Foundation. Destaca por su potente n\u00facleo ARM Cortex-M0+ y su amplia gama de perif\u00e9ricos integrados, lo que lo hace ideal para una variedad de aplicaciones embebidas.<\/p>\n\n\n\n<p><em>2. ESP8266 y ESP32:<\/em> Los microcontroladores ESP8266 y ESP32, desarrollados por Espressif Systems, son ampliamente utilizados en aplicaciones IoT debido a su conectividad Wi-Fi y Bluetooth integrada, as\u00ed como su amplio soporte de software y bajo consumo de energ\u00eda.<\/p>\n\n\n\n<p><em>3. AtMega:<\/em> Los microcontroladores AtMega, fabricados por Microchip Technology, son conocidos por su robustez y versatilidad. Se utilizan en una variedad de aplicaciones embebidas, desde sistemas de control hasta dispositivos electr\u00f3nicos de consumo.<\/p>\n\n\n\n<p>La programaci\u00f3n embebida desempe\u00f1a un papel crucial en la industria actual al impulsar la innovaci\u00f3n en una variedad de aplicaciones, desde la automatizaci\u00f3n y el control hasta el IoT y los dispositivos port\u00e1tiles. Si bien trabajar con sistemas embebidos presenta desaf\u00edos \u00fanicos, como recursos limitados y requisitos de tiempo real, el uso de microcontroladores como el RP2040, ESP8266, ESP32 y AtMega ofrece soluciones potentes y flexibles para desarrolladores y fabricantes.<\/p>\n\n\n\n<p><strong>Ventajas de usar Python en sistemas embebidos:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Facilidad de aprendizaje y sintaxis limpia.<\/li>\n\n\n\n<li>Amplio ecosistema de bibliotecas y herramientas.<\/li>\n\n\n\n<li>Flexibilidad y rapidez en el desarrollo de prototipos.<\/li>\n\n\n\n<li>Posibilidad de integrar m\u00f3dulos externos y APIs.<\/li>\n<\/ul>\n\n\n\n<p><strong>Implementaci\u00f3n de Python en placas de desarrollo:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MicroPython:<\/strong> Descripci\u00f3n de MicroPython, una implementaci\u00f3n de Python optimizada para microcontroladores y sistemas embebidos. Se destacan caracter\u00edsticas clave y ejemplos de uso en placas como ESP32 y STM32.<\/li>\n\n\n\n<li><strong>CircuitPython:<\/strong> Introducci\u00f3n a CircuitPython, una versi\u00f3n simplificada de Python dise\u00f1ada para la educaci\u00f3n y la creaci\u00f3n de proyectos en placas de desarrollo de Adafruit y otros fabricantes.<\/li>\n\n\n\n<li><strong>Implementaciones personalizadas:<\/strong> Breve menci\u00f3n de c\u00f3mo los desarrolladores pueden crear implementaciones personalizadas de Python para placas de desarrollo espec\u00edficas, adaptando el lenguaje a las necesidades del proyecto.<\/li>\n<\/ul>\n\n\n\n<p><strong>Ejemplo pr\u00e1ctico:<\/strong> <\/p>\n\n\n\n<p><strong>Term\u00f3metro Digital con ESP32 y Python<\/strong><\/p>\n\n\n\n<p><strong>Descripci\u00f3n del Proyecto:<\/strong> En este proyecto, utilizaremos un sensor de temperatura DS18B20 y una placa de desarrollo ESP32 para crear un term\u00f3metro digital que mida la temperatura ambiente y la muestre en la consola serie. Usaremos MicroPython, una implementaci\u00f3n de Python para microcontroladores, para programar la placa ESP32 y leer los datos del sensor de temperatura.<\/p>\n\n\n\n<p><strong>Materiales Necesarios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Placa de desarrollo ESP32<\/li>\n\n\n\n<li>Sensor de temperatura DS18B20 (Es sumergible en agua)<\/li>\n\n\n\n<li>Resistencia de 4.7k\u03a9 (para el DS18B20)<\/li>\n\n\n\n<li>Protoboard y cables de conexi\u00f3n<\/li>\n<\/ul>\n\n\n\n<p><strong>Instrucciones paso a paso:<\/strong><\/p>\n\n\n\n<p><strong>1. Configuraci\u00f3n del Hardware:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Conecta el sensor de temperatura DS18B20 a la placa ESP32 seg\u00fan el siguiente esquem\u00e1tico:\n<ul class=\"wp-block-list\">\n<li>Pin de datos del sensor DS18B20 &#8211;&gt; Pin GPIO (por ejemplo, GPIO 4) del ESP32<\/li>\n\n\n\n<li>Pin de VCC del sensor DS18B20 &#8211;&gt; 3.3V del ESP32<\/li>\n\n\n\n<li>Pin de GND del sensor DS18B20 &#8211;&gt; GND del ESP32<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Aseg\u00farate de utilizar una resistencia de 4.7k\u03a9 entre el pin de datos y el pin de VCC del sensor DS18B20.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"816\" src=\"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/imagen_2024-03-20_083454438.png\" alt=\"\" class=\"wp-image-96\" srcset=\"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/imagen_2024-03-20_083454438.png 750w, https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/files\/2024\/03\/imagen_2024-03-20_083454438-276x300.png 276w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p><strong>2. Programaci\u00f3n con MicroPython:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Conecta tu placa ESP32 a tu computadora y abre tu editor de c\u00f3digo preferido, te recomiendo <a href=\"https:\/\/thonny.org\" data-type=\"link\" data-id=\"https:\/\/thonny.org\">Thony<\/a> o <a href=\"https:\/\/code.visualstudio.com\" data-type=\"link\" data-id=\"https:\/\/code.visualstudio.com\">VSCode<\/a> si tienes m\u00e1s experiencia.<\/li>\n\n\n\n<li>Crea un nuevo archivo Python y escribe el siguiente c\u00f3digo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import machine\nimport onewire\nimport ds18x20\nimport time\n\n# Configura el bus OneWire en el pin GPIO 4\now = onewire.OneWire(machine.Pin(4))\n\n# Crea un objeto DS18X20 para manejar el sensor de temperatura\ntemp_sensor = ds18x20.DS18X20(ow)\n\n# Escanea los dispositivos conectados al bus OneWire\ndevices = temp_sensor.scan()\n\n# Si se detecta al menos un sensor de temperatura\nif devices:\n    # Bucle principal\n    while True:\n        # Inicia una conversi\u00f3n de temperatura\n        temp_sensor.convert_temp()\n        # Espera 750ms para que se complete la conversi\u00f3n\n        time.sleep_ms(750)\n        # Lee la temperatura del sensor\n        temperature = temp_sensor.read_temp(devices&#091;0])\n        # Muestra la temperatura en la consola serie\n        print(\"Temperatura: {:.2f}\u00b0C\".format(temperature))\n        # Espera 1 segundo antes de tomar la siguiente lectura\n        time.sleep(1)\n<\/code><\/pre>\n\n\n\n<p><strong>3. Ejecuci\u00f3n del Proyecto:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guarda el archivo Python en la placa ESP32 con el nombre \u00abmain.py\u00bb.<\/li>\n\n\n\n<li>Desconecta la placa ESP32 de tu computadora y alimenta la placa.<\/li>\n\n\n\n<li>Abre la consola serie en tu entorno de desarrollo (por ejemplo, Thonny, PuTTY, etc.) para ver la temperatura medida por el term\u00f3metro digital.<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<p>Con este peque\u00f1o proyecto, has creado un term\u00f3metro digital utilizando una placa de desarrollo ESP32 y Python. Este proyecto es un ejemplo pr\u00e1ctico de c\u00f3mo utilizar Python en sistemas embebidos para realizar tareas espec\u00edficas, como la lectura de sensores y la visualizaci\u00f3n de datos. La implementaci\u00f3n de Python en placas de desarrollo basadas en microprocesadores ofrece una soluci\u00f3n vers\u00e1til y eficiente para una amplia gama de aplicaciones embebidas. Su sintaxis clara, su amplio soporte de hardware y su robusto ecosistema de herramientas hacen que Python sea una opci\u00f3n atractiva para los desarrolladores que buscan crear sistemas embebidos poderosos y flexibles.<\/p>\n\n\n\n<p><strong>Referencias y Recursos Adicionales:<\/strong><\/p>\n\n\n\n<p>Espressif Systems. (s\/f). ESP32 Datasheet (p. [24-51]). Recuperado de <a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf\">https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf<\/a><\/p>\n\n\n\n<p>DALLAS. (s\/f). DS18B20 Datasheet. Recuperado de <a href=\"https:\/\/pdf1.alldatasheet.es\/datasheet-pdf\/download\/230838\/DALLAS\/DS18B20.html\">https:\/\/pdf1.alldatasheet.es\/datasheet-pdf\/download\/230838\/DALLAS\/DS18B20.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La programaci\u00f3n embebida ha experimentado un notable avance en los \u00faltimos a\u00f1os, permitiendo a los desarrolladores aprovechar el poder y [&hellip;]<\/p>\n","protected":false},"author":6484,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"_links":{"self":[{"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/users\/6484"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":3,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":107,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/posts\/95\/revisions\/107"}],"wp:attachment":[{"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.utp.edu.co\/juanestebanrodriguezvillada\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}