{"componentChunkName":"component---src-templates-blog-template-js","path":"/en/micropython/","result":{"data":{"markdownRemark":{"html":"<p>MicroPython is a lean and efficient implementation of the Python 3 programming language that is optimised to run on a microcontroller. These tiny electronic components are at the heart of many modern gadgets such as sensors, motors and screens, or even more complex things like robots and smart devices.</p>\n<p>Unlike Python, a high-level programming language used for general-purpose software development, MicroPython has been tailored specifically for microcontrollers. This means we benefit from having a powerful language like Python in environments where resources are limited and efficiency is key.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/99b6b774b3272bf36d3c2db2c3c5448e/5ef17/micropython.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAED/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAcrKBgo//8QAGxABAAEFAQAAAAAAAAAAAAAAAQACERIhMUH/2gAIAQEAAQUC3l7coj3oiT//xAAYEQACAwAAAAAAAAAAAAAAAAAAAQIhQf/aAAgBAwEBPwG9HNn/xAAWEQEBAQAAAAAAAAAAAAAAAAABABL/2gAIAQIBAT8BbA3/xAAbEAACAgMBAAAAAAAAAAAAAAAAEQECMUFhEv/aAAgBAQAGPwLokluBeIt0zkVpg1J//8QAHhABAAIBBAMAAAAAAAAAAAAAAQARITFBUWGBkfD/2gAIAQEAAT8hGgS0UDxBbhAbn3UuPK4RKMAOcawLwPGvfqI1W5dXP//aAAwDAQACAAMAAAAQHN//xAAaEQEAAQUAAAAAAAAAAAAAAAABACFBYZHw/9oACAEDAQE/ECrC8AoHan//xAAZEQACAwEAAAAAAAAAAAAAAAAAASExUZH/2gAIAQIBAT8QfRSr6f/EAB4QAQACAQQDAAAAAAAAAAAAAAERIQAxQWGxUXGR/9oACAEBAAE/EBTOEUJwMzG/eKUAFAh5Rp4cVkwkWCsjszgkaqFsB6+uJIlpMFCWTVt6yGDNASjZbxGf/9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"MicroPython is a small, lightweight programming language. It runs on microcontrollers and is used for embedded systems and Internet of Things (IoT) devices\"\n        title=\"MicroPython is a small, lightweight programming language. It runs on microcontrollers and is used for embedded systems and Internet of Things (IoT) devices\"\n        src=\"/static/99b6b774b3272bf36d3c2db2c3c5448e/4d836/micropython.jpg\"\n        srcset=\"/static/99b6b774b3272bf36d3c2db2c3c5448e/e83b4/micropython.jpg 230w,\n/static/99b6b774b3272bf36d3c2db2c3c5448e/e41a8/micropython.jpg 460w,\n/static/99b6b774b3272bf36d3c2db2c3c5448e/4d836/micropython.jpg 920w,\n/static/99b6b774b3272bf36d3c2db2c3c5448e/5ef17/micropython.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>We find the roots of MicroPython in an effort to empower hardware enthusiasts and professionals alike to program microcontroller units (MCUs) with ease and flexibility. Typically, <a href=\"https://www.ctaelectronics.com/en/c-language-in-firmware-programming/\">programming microcontrollers</a> requires working with low-level languages like C or C++, but MicroPython simplifies this process.</p>\n<p>It brings with it a subset of the Python standard library, which means we can use many of the familiar Python functions and modules, albeit within the constraints imposed by the hardware.</p>\n<p>By adopting MicroPython, we can significantly reduce development time and effort. It supports interactive prompts, which means we can execute commands and see the results immediately, similar to working with Python on a PC or server.</p>\n<p>This feature is exceptionally useful for rapid prototyping, debugging, and learning how the hardware interacts with the software. Moreover, MicroPython's syntax and libraries are designed to interoperate seamlessly with the hardware, giving us near-direct control over the functionality of MCU peripherals.</p>\n<h2>Origins of MicroPython</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/26a31ff71be49b3d9f79c6ec98bb9d6b/5ef17/electronics-firmware-programming.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAgADBP/EABYBAQEBAAAAAAAAAAAAAAAAAAMAAv/aAAwDAQACEAMQAAABWTJXVGLf/8QAGRAAAwEBAQAAAAAAAAAAAAAAAAECAxIh/9oACAEBAAEFAru4FpTr0cdk40hH/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/AdWf/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAECESH/2gAIAQIBAT8BqKWjP//EABsQAAIDAAMAAAAAAAAAAAAAAAABAhExIXGR/9oACAEBAAY/Aljsj2ciVsuT8MZ//8QAHBAAAgICAwAAAAAAAAAAAAAAAREAITFBUWHB/9oACAEBAAE/IQjObAjW6VAb4cIwxAq2ofAVFwdeE//aAAwDAQACAAMAAAAQTx//xAAXEQEBAQEAAAAAAAAAAAAAAAABEQAx/9oACAEDAQE/ECBOYaXf/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAgEBPxAQOoY3/8QAHRABAQADAAIDAAAAAAAAAAAAAREAITFRYUGR0f/aAAgBAQABPxAJVJUACfuDqAaFlut45oQ9PPi+8URQzcFLHxzEEuX0PvE1XCRapPLtz//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"A computer screen displays the code for MicroPython, surrounded by electronic components and circuitry, symbolizing the origins of the programming language\"\n        title=\"A computer screen displays the code for MicroPython, surrounded by electronic components and circuitry, symbolizing the origins of the programming language\"\n        src=\"/static/26a31ff71be49b3d9f79c6ec98bb9d6b/4d836/electronics-firmware-programming.jpg\"\n        srcset=\"/static/26a31ff71be49b3d9f79c6ec98bb9d6b/e83b4/electronics-firmware-programming.jpg 230w,\n/static/26a31ff71be49b3d9f79c6ec98bb9d6b/e41a8/electronics-firmware-programming.jpg 460w,\n/static/26a31ff71be49b3d9f79c6ec98bb9d6b/4d836/electronics-firmware-programming.jpg 920w,\n/static/26a31ff71be49b3d9f79c6ec98bb9d6b/5ef17/electronics-firmware-programming.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>We explore the genesis of MicroPython, from its initial Kickstarter campaign to the distinctions that set it apart from CPython. Our journey unpacks the development of this lean interpreter through pivotal milestones and its unique position in the programming landscape.</p>\n<h3>Damien George and the KickStarter Campaign</h3>\n<p>In 2013, Damien George launched a Kickstarter campaign to fund the development of MicroPython, a new version of Python designed to run on <a href=\"https://www.ctaelectronics.com/en/microprocessors-in-industrial-electronics/\">microcontrollers</a>. The campaign was a success, raising over £97,000, significantly surpassing its initial goal.</p>\n<p>George, with a background in theoretical physics and <a href=\"https://www.ctaelectronics.com/en/software-developer/\">software engineering</a>, aimed to bring the ease of Python programming to the hardware world.</p>\n<h3>The Evolution of MicroPython Source Code</h3>\n<p>The source code of MicroPython was made publicly available on GitHub, under the MIT license, allowing for open collaboration. The project rapidly evolved, gaining contributions from developers globally.</p>\n<p>Two central repositories, <code>micropython-lib</code> and <code>micropython</code>, form the core of the project, hosting the additional libraries and the main interpreter code respectively.</p>\n<h3>MicroPython vs CPython: Understanding the Differences</h3>\n<p>CPython is the default and most widely-used implementation of the Python programming language. It is written in C and Python, and is the reference implementation that other implementations of Python aim to be compatible with.</p>\n<p>MicroPython, though inspired by CPython, is tailored for constrained environments such as microcontrollers. While CPython is the reference implementation of Python in its entirety, MicroPython incorporates just the essentials, aiming for minimal memory footprint and for a better management of hardware constraints.</p>\n<p>It is important to note that MicroPython may not include all of the standard libraries or features found in CPython. However, it retains a high-level syntactical similarity, ensuring familiar readability and maintainability.</p>\n<h2>Core Concepts of MicroPython</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/901ccddb2c1439ab90970b55c6f16a15/5ef17/electronic-pcb.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAIBAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAADAAT/2gAMAwEAAhADEAAAARJrO0RDOv8A/8QAGBAAAwEBAAAAAAAAAAAAAAAAAAESAhH/2gAIAQEAAQUC3qCtoTNqiWT0/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/Aax//8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAh/9oACAECAQE/AQLL/8QAGhABAAIDAQAAAAAAAAAAAAAAAQAQERIhof/aAAgBAQAGPwICG1ZIc9r/xAAbEAEBAQACAwAAAAAAAAAAAAABEQAhQTFhsf/aAAgBAQABPyFulneYAI8yaFg5pGnjDqOPut2P3f/aAAwDAQACAAMAAAAQNB//xAAYEQEBAAMAAAAAAAAAAAAAAAABABEhQf/aAAgBAwEBPxBK6suX/8QAGREBAAIDAAAAAAAAAAAAAAAAAQARUaHh/9oACAECAQE/ECBccnXZ/8QAHBABAAIDAAMAAAAAAAAAAAAAAREhADFBUWHw/9oACAEBAAE/EA4gIBZ33HAsJQZHTlAq7crktpiGfeeaJeI+1kGgt09Gf//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"A circuit board with MicroPython logo, surrounded by electronic components and code snippets\"\n        title=\"A circuit board with MicroPython logo, surrounded by electronic components and code snippets\"\n        src=\"/static/901ccddb2c1439ab90970b55c6f16a15/4d836/electronic-pcb.jpg\"\n        srcset=\"/static/901ccddb2c1439ab90970b55c6f16a15/e83b4/electronic-pcb.jpg 230w,\n/static/901ccddb2c1439ab90970b55c6f16a15/e41a8/electronic-pcb.jpg 460w,\n/static/901ccddb2c1439ab90970b55c6f16a15/4d836/electronic-pcb.jpg 920w,\n/static/901ccddb2c1439ab90970b55c6f16a15/5ef17/electronic-pcb.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Exploring MicroPython requires an understanding of its project fundamentals, the firmware and boot process it utilises and the microcontrollers it supports.</p>\n<h3>MicroPython Project Fundamentals</h3>\n<p>As already anticipated, MicroPython is an efficient implementation of Python 3, designed to run on microcontrollers and in constrained environments. At its core, the project's aim is to make programming digital devices as simple and accessible as possible.</p>\n<p>The project optimises the Python language to run on hardware with limited processing power and memory. This involves a combination of rewriting core Python libraries to be more compact and devising a cross-compiler that can convert Python scripts into optimised bytecode for various microcontrollers.</p>\n<p>MicroPython includes a comprehensive standard library, bringing the joy of Python to smaller devices previously restricted to using traditional languages like C or assembly.</p>\n<h3>Firmware and Boot Process</h3>\n<p>The firmware in MicroPython acts as the intermediary between the software and hardware. We have designed the firmware to be lightweight and highly portable, supporting a wide range of devices.</p>\n<p>When you flash this firmware onto a microcontroller, it encapsulates the MicroPython interpreter and a portion of the standard Python library.</p>\n<p>Upon device boot-up, the bootloader, a small program stored in the chip's non-volatile memory, initiates the process.</p>\n<p>This bootloader is responsible for setting up basic hardware and running the main firmware, which includes the MicroPython interpreter.</p>\n<p>The boot process should be fast and reliable and should allow you to start running Python scripts almost immediately after powering up the device.</p>\n<h3>Microcontroller Basics: PIC, STM32, and ESP</h3>\n<p>MicroPython supports a variety of microcontroller architectures, including PIC, STM32, and ESP families.</p>\n<ul>\n<li><strong>PIC</strong>: Microchip's PIC microcontrollers are popular due to their simplicity and affordability.</li>\n<li><strong>STM32</strong>: STMicroelectronics' STM32 family offers high performance with a range of options that provide a balance of power consumption and processing capability.</li>\n<li>\n<p><strong>ESP8266 and ESP32</strong>: Espressif's ESP8266 and ESP32 have gained significant traction due to their integrated Wi-Fi capabilities.</p>\n<p>Our <a href=\"https://www.ctaelectronics.com/en/services/firmware-development/\">MicroPython firmware</a> for these devices not only includes standard features but also modules for network communication, allowing for the easy creation of connected gadgets.</p>\n</li>\n</ul>\n<h2>Setting Up MicroPython</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e12bb50c6401467f82f84a7d7152c0ed/5ef17/firmware-programming-workstation.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAWbKxU4Q3//EABoQAAIDAQEAAAAAAAAAAAAAAAECAAMREhP/2gAIAQEAAQUCcKGz0ijtRVsHFQNts//EABcRAAMBAAAAAAAAAAAAAAAAABAREiH/2gAIAQMBAT8BnWP/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEkH/2gAIAQIBAT8BxD//xAAeEAACAQMFAAAAAAAAAAAAAAAAARESQWECISIxcf/aAAgBAQAGPwKVYq09kttPA6l4Tc47LCP/xAAbEAEAAwEAAwAAAAAAAAAAAAABADFBIRFh8P/aAAgBAQABPyE9V7TlYN1iBtRiGMPUdnhl1/XBNHoh/9oADAMBAAIAAwAAABDkD//EABgRAAMBAQAAAAAAAAAAAAAAAAABEVGR/9oACAEDAQE/EKduF1H/xAAZEQEAAgMAAAAAAAAAAAAAAAABABEhMWH/2gAIAQIBAT8Q1S8zlAn/xAAeEAEAAgICAwEAAAAAAAAAAAABABEhMUFRYXGhwf/aAAgBAQABPxBfKxAApHavv5AqggRChnXO+Y0oWWkQwWa3syvFdw23gKunp/BGLdLDp8z/2Q=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"A desk with a computer, USB cable, and microcontroller board. On the screen, code for setting up MicroPython is displayed\"\n        title=\"A desk with a computer, USB cable, and microcontroller board. On the screen, code for setting up MicroPython is displayed\"\n        src=\"/static/e12bb50c6401467f82f84a7d7152c0ed/4d836/firmware-programming-workstation.jpg\"\n        srcset=\"/static/e12bb50c6401467f82f84a7d7152c0ed/e83b4/firmware-programming-workstation.jpg 230w,\n/static/e12bb50c6401467f82f84a7d7152c0ed/e41a8/firmware-programming-workstation.jpg 460w,\n/static/e12bb50c6401467f82f84a7d7152c0ed/4d836/firmware-programming-workstation.jpg 920w,\n/static/e12bb50c6401467f82f84a7d7152c0ed/5ef17/firmware-programming-workstation.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>We will guide you through installing MicroPython on various operating systems, configuring the environment for <a href=\"https://www.ctaelectronics.com/en/services/software-development/\">code deployment</a>, and understanding the <a href=\"https://www.ctaelectronics.com/en/electronics-hardware-engineer/\">necessary ports and drivers</a>. Our aim is to equip you with the practical steps required for a smooth MicroPython set up.</p>\n<h3>Installation on Multiple Operating Systems</h3>\n<p>For installing MicroPython, we need to ensure compatibility with our operating system. We can install it on <strong>Linux</strong>, <strong>macOS</strong>, and <strong>Windows</strong> with specific procedures for each:</p>\n<ul>\n<li><strong>Linux</strong>: Use the package manager to install <code>python3</code> and <code>pip3</code>. Then, install MicroPython using <code>pip3 install micropython</code>.</li>\n<li><strong>macOS</strong>: Install Homebrew if it's not already on your system, then use <code>brew install micropython</code>.</li>\n<li><strong>Windows</strong>: Download the Windows installer from the MicroPython website and follow the setup wizard.</li>\n</ul>\n<h3>Configuring the Environment and Code Deployment</h3>\n<p>After the installation process, we must then proceed to configure our environment by following the necessary steps:</p>\n<ol>\n<li>Connect the MicroPython board to our computer.</li>\n<li>\n<p>Identify the board's serial port.</p>\n<ul>\n<li><strong>Linux</strong> &#x26; <strong>macOS</strong>: Check available ports using <code>ls /dev/tty.*</code>.</li>\n<li><strong>Windows</strong>: Look in Device Manager under 'Ports (COM &#x26; LPT)'.</li>\n</ul>\n</li>\n<li>\n<p>Use a tool such as <code>mpfshell</code> or <code>rshell</code> for deployment:</p>\n<ul>\n<li><strong>Install</strong>: <code>pip3 install mpfshell</code> (Linux/macOS) or <code>pip install mpfshell</code> (Windows).</li>\n<li><strong>Deploy code</strong>: Navigate to your project directory and run <code>mpfshell</code> followed by <code>put your_script.py</code>.</li>\n</ul>\n</li>\n</ol>\n<h3>Understanding Ports and Drivers</h3>\n<p>The correct ports and drivers are critical for communication between our computer and the MicroPython board:</p>\n<ul>\n<li>Identify the <a href=\"https://www.ctaelectronics.com/en/pcb-assembly/\">microcontroller board</a>'s port as mentioned above.</li>\n<li>\n<p>Ensure you have the necessary drivers installed:</p>\n<ul>\n<li><strong>CP210x</strong> or <strong>FTDI</strong> drivers are common for MicroPython boards.</li>\n<li>You can download the drivers from the manufacturers' websites.</li>\n</ul>\n</li>\n</ul>\n<h2>MicroPython Boards and Hardware</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/427643be524c83c1ebf3273713d94018/5ef17/programming-firmware-with-micropython.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAwAC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgAB/9oADAMBAAIQAxAAAAHZaTIZYv8A/8QAGRAAAwEBAQAAAAAAAAAAAAAAAAECEhED/9oACAEBAAEFApSa7JHpme6JzQz/xAAXEQEAAwAAAAAAAAAAAAAAAAAAESEi/9oACAEDAQE/Abht/8QAFREBAQAAAAAAAAAAAAAAAAAAAQD/2gAIAQIBAT8BkL//xAAdEAACAQQDAAAAAAAAAAAAAAAAARECEiExIiNh/9oACAEBAAY/AsUrPo+vREEu05ODdJ//xAAbEAEAAgMBAQAAAAAAAAAAAAABABEhMVGBcf/aAAgBAQABPyHwQKnAfqMOX2WoGLyUrNGgxKLs5P/aAAwDAQACAAMAAAAQmA//xAAXEQEBAQEAAAAAAAAAAAAAAAABIQCh/9oACAEDAQE/EKh5hEGb/8QAGREBAAIDAAAAAAAAAAAAAAAAAQARIbHh/9oACAECAQE/EMD1iW03P//EABsQAQEAAgMBAAAAAAAAAAAAAAERACExQXFR/9oACAEBAAE/EBbGL018zUACilzDhIVHS4HAqAQSd8mALI0SvS7xJpDXAh85z//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"A MicroPython board and hardware are arranged on a workbench, with a computer screen displaying code and a soldering iron nearby\"\n        title=\"A MicroPython board and hardware are arranged on a workbench, with a computer screen displaying code and a soldering iron nearby\"\n        src=\"/static/427643be524c83c1ebf3273713d94018/4d836/programming-firmware-with-micropython.jpg\"\n        srcset=\"/static/427643be524c83c1ebf3273713d94018/e83b4/programming-firmware-with-micropython.jpg 230w,\n/static/427643be524c83c1ebf3273713d94018/e41a8/programming-firmware-with-micropython.jpg 460w,\n/static/427643be524c83c1ebf3273713d94018/4d836/programming-firmware-with-micropython.jpg 920w,\n/static/427643be524c83c1ebf3273713d94018/5ef17/programming-firmware-with-micropython.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>We'll explore the essential hardware components of MicroPython, focusing on the primary boards available, the microcontrollers they employ, and how they compare with other popular platforms such as the Arduino and the Raspberry Pi Pico.</p>\n<h3>Official PyBoard and Its Variants</h3>\n<p><strong>PyBoard</strong> is the official MicroPython development board, designed to provide a low-level hardware interface for running MicroPython scripts. It comes in a range of variants, for example:</p>\n<ul>\n<li><strong>PyBoard v1.1</strong>: Includes a STM32F405RG microcontroller with 192 KB RAM.</li>\n<li><strong>PyBoard D-series</strong>: Enhanced versions with connectivity options such as Wi-Fi and Bluetooth.</li>\n</ul>\n<h3>Supported Microcontrollers and RAM Considerations</h3>\n<p>MicroPython supports a variety of microcontrollers, each differing in capacities and capabilities:</p>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Board</th>\n<th align=\"left\">Microcontroller</th>\n<th align=\"left\">RAM</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">PyBoard v1.1</td>\n<td align=\"left\">STM32F405RG</td>\n<td align=\"left\">192 KB</td>\n</tr>\n<tr>\n<td align=\"left\">ESP8266-based boards</td>\n<td align=\"left\">Tensilica L106</td>\n<td align=\"left\">96 KB</td>\n</tr>\n<tr>\n<td align=\"left\">ESP32-based boards</td>\n<td align=\"left\">Tensilica Xtensa LX6</td>\n<td align=\"left\">520 KB</td>\n</tr>\n</tbody>\n</table>\n<p>RAM is crucial because it determines how complex the scripts and programs can be. The more RAM available, the more sophisticated the applications can be.</p>\n<h3>Compatibility with Other Boards like Arduino and Raspberry Pi Pico</h3>\n<p>While MicroPython can run on a variety of boards:</p>\n<ul>\n<li><strong>Arduino</strong>: MicroPython isn't natively supported; however, there are workarounds via special firmware such as uPyCraft.</li>\n<li><strong>Raspberry Pi Pico</strong>: It has direct support for MicroPython, featuring an RP2040 microcontroller designed by the Raspberry Pi Foundation with 264 KB of SRAM.</li>\n</ul>\n<h2>Programming with MicroPython</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin:0;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/14d04894c00b199b49ac10a2caad73b9/5ef17/micropython-hardware-illustration.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAwAB/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAdBxmmhqn//EABkQAQEAAwEAAAAAAAAAAAAAAAECABESA//aAAgBAQABBQK9QdbTxNLNYludUZ//xAAXEQADAQAAAAAAAAAAAAAAAAAAARJR/9oACAEDAQE/AaLWH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAERL/2gAIAQIBAT8BNLpv/8QAHhAAAgEDBQAAAAAAAAAAAAAAAAERAyExEkFRYYH/2gAIAQEABj8ChW6RFRQ+S7M+i1uVsQsH/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAERITFRYXH/2gAIAQEAAT8hdH26CNi8Ro3Xwq5qVSDmiKxoKdP/2gAMAwEAAgADAAAAEJPf/8QAGREBAAIDAAAAAAAAAAAAAAAAAQBBIbHR/9oACAEDAQE/EEU4jVpyf//EABgRAAMBAQAAAAAAAAAAAAAAAAARIQEx/9oACAECAQE/EHL0xFR//8QAHhABAAIBBQEBAAAAAAAAAAAAAQARUSExQWFxgdH/2gAIAQEAAT8QO4A3YoTu4L/I6dVoMRxZiIKAsFE+S9QKNSeOTriEBU1t2dd+7QCcIAc//9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"A circuit board with MicroPython code displayed on a computer screen, surrounded by various electronic components and a soldering iron\"\n        title=\"A circuit board with MicroPython code displayed on a computer screen, surrounded by various electronic components and a soldering iron\"\n        src=\"/static/14d04894c00b199b49ac10a2caad73b9/4d836/micropython-hardware-illustration.jpg\"\n        srcset=\"/static/14d04894c00b199b49ac10a2caad73b9/e83b4/micropython-hardware-illustration.jpg 230w,\n/static/14d04894c00b199b49ac10a2caad73b9/e41a8/micropython-hardware-illustration.jpg 460w,\n/static/14d04894c00b199b49ac10a2caad73b9/4d836/micropython-hardware-illustration.jpg 920w,\n/static/14d04894c00b199b49ac10a2caad73b9/5ef17/micropython-hardware-illustration.jpg 1152w\"\n        sizes=\"(max-width: 920px) 100vw, 920px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>In this section we are going to explore the basics of working with this programming language, highlighting key features like its syntax, the interactive REPL environment, as well as how it integrates with modules, libraries, and version control systems like Git.</p>\n<h3>Basic Syntax and Python 3 Features</h3>\n<p>MicroPython is fundamentally similar to Python 3, which means that it shares the same basic syntax and programming paradigms.</p>\n<p><strong>Variables</strong>, <strong>control structures</strong>, <strong>functions</strong>, and <strong>classes</strong> all work as expected in Python. For example, creating a variable is as straightforward as <code>counter = 10</code> and writing a loop is done through the familiar <code>for item in range(counter):</code> syntax.</p>\n<p>Python’s inherent readability and conciseness are retained, making it possible for anyone with Python 3 experience to transition to MicroPython with relative ease.</p>\n<h3>Interactive Programming with REPL</h3>\n<p>REPL stands for Read-Eval-Print-Loop, and it is a dynamic programming environment included within MicroPython.</p>\n<p>It allows us to execute Python commands one at a time and see immediate results. We can engage with REPL directly on the microcontroller by connecting to it via a serial interface or over the network.</p>\n<pre><code>>>> print(\"Hello, MicroPython!\")\nHello, MicroPython!\n</code></pre>\n<p>The above interaction in the REPL is quintessential in demonstrating how immediate feedback in programming tasks can speed up the learning and debugging processes.</p>\n<h3>Modules, Libraries, and Git Integration</h3>\n<p>MicroPython supports <strong>modules</strong> and <strong>libraries</strong> which can be imported to extend its functionalities.</p>\n<p>This is vital as it allows us to repurpose and include complex functionalities without writing them from scratch. For instance, using a networking module with <code>import network</code> allows us to connect a device to the internet.</p>\n<p>To manage and share code effectively, MicroPython integrates with <strong>Git</strong> comfortably.</p>\n<p>This means we can collaborate on projects by pushing and pulling code from repositories, tracking changes, and managing versions which are crucial practices for sustainable software development.</p>\n<h2>Project Development</h2>\n<p>MicroPython serves as a catalyst for a wide array of project development initiatives, especially in domains where the Internet of Things (IoT), home automation, and educational projects converge.</p>\n<p>As an efficient and streamlined implementation of Python 3, MicroPython is tailored specifically for microcontrollers and compact system on chips (SoCs), enabling us not only to write clean and simple code but also to integrate various functionalities with ease and precision.</p>\n<h3>Internet of Things and Connected Devices</h3>\n<p>We harness MicroPython for developing Internet of Things (IoT) products as it offers a seamless experience for coding connected devices. Our projects typically involve:</p>\n<ul>\n<li><strong>Sensor Integration</strong>: utilising digital and <a href=\"https://www.ctaelectronics.com/en/products/temperature-sensors/\">analogue sensors</a> to capture environmental data.</li>\n<li><strong>Data Processing</strong>: interfacing MicroPython with the device's core to process and interpret sensor data.</li>\n<li><strong>Communication</strong>: implementing networking protocols such as MQTT or HTTP for data transmission.</li>\n</ul>\n<h3>Home Automation and Robotics Projects</h3>\n<p>For home automation and robotics, MicroPython stands out as an ideal choice due to its versatility:</p>\n<ul>\n<li><strong>Controller Logic</strong>: writing scripts to manage devices like smart thermostats or lighting systems.</li>\n<li><strong>Robotics</strong>: programming movement and tasks for robots using actuators and motor controllers.</li>\n</ul>\n<p>In these applications, our project development focuses on real-time response and reliability.</p>\n<h3>How to build STEM Education Projects</h3>\n<p>MicroPython is well-suited for STEM education projects with its straightforward syntax and fast learning curve. It's possible to design both educational kits and interactive experiments, such as:</p>\n<ul>\n<li><strong>Interactive Tools</strong>: creating devices that demonstrate scientific principles.</li>\n<li><strong>Learning Platforms</strong>: building platforms that help learners write and execute their own MicroPython code.</li>\n</ul>\n<h2>Advanced Features and Customisation</h2>\n<p>MicroPython allows experienced developers to push the boundaries beyond simple scripting. It's possible to customise behaviour, optimise performance and maintain custom versions of MicroPython using advanced features like compiling custom firmware and manipulating bytecode.</p>\n<h3>Inline Assembler and Bytecode Manipulation</h3>\n<p>In MicroPython, <strong>inline assembler</strong> gives us the capability to write assembly language within our Python code.</p>\n<pre><code># Example of inline assembler to add two integers\n@micropython.asm_thumb\ndef add(r0, r1):\n    add(r0, r0, r1)\n</code></pre>\n<p>This harnesses the processor's full speed and control, a critical feature when exact timing or specific processor instructions are necessary.</p>\n<p>Managing <strong>bytecode</strong> lets us fine-tune the Python virtual machine. For instance, we can inspect, modify, or extend bytecode operations for performance gains or custom functionalities.</p>\n<pre><code># Example of bytecode manipulation in MicroPython\nimport micropython\nmicropython.bytecode()\n</code></pre>\n<h3>Compilation and Building Custom Firmware</h3>\n<p>We can <strong>compile</strong> MicroPython ourselves to build custom firmware.</p>\n<p>This process allows the inclusion or removal of modules, optimisation for specific hardware, or even integration of new features.</p>\n<p>The steps to <strong>build</strong> custom firmware typically involve:</p>\n<ol>\n<li>Cloning the MicroPython <strong>repository</strong> from <strong>GitHub</strong>.</li>\n<li>Configuring the build options.</li>\n<li>Compiling the source code.</li>\n<li>Flashing the compiled firmware onto our hardware.</li>\n</ol>\n<pre><code># Cloning the MicroPython repository\ngit clone https://github.com/micropython/micropython.git\n\n# Compiling the source on a Unix-based system\nmake -C mpy-cross &#x26;&#x26; make -C unix\n</code></pre>\n<h3>Creating and Managing a MicroPython Fork on GitHub</h3>\n<p>To maintain a personalised version of MicroPython, it's enough to <strong>fork</strong> the official repository on <strong>GitHub</strong>.</p>\n<p>This allows to experiment with changes, track them and potentially contribute back to the MicroPython community.</p>\n<p>Our workflow for managing a MicroPython fork includes:</p>\n<ul>\n<li>Keeping our fork updated with the upstream repository</li>\n<li>Branching for new features or bug fixes</li>\n<li>Submitting pull requests for our contributions</li>\n</ul>\n<pre><code># Syncing our fork with the original repository\ngit fetch upstream\ngit checkout master\ngit merge upstream/master\ngit push\n</code></pre>\n<h2>Connectivity and Peripherals</h2>\n<p>MicroPython facilitates connectivity and the interfacing of a wide array of peripherals, making it an ideal choice for developing Internet of Things (IoT) applications with ease.</p>\n<h3>Working with Wifi, Bluetooth, and IoT Protocols</h3>\n<p>Robust support is provided for Wifi and Bluetooth connectivity in MicroPython, unlocking the potential for a myriad of IoT applications.</p>\n<p>The WiFi stack allows seamless connection to wireless networks, enabling MicroPython devices to communicate over the internet.</p>\n<p>Utilising the <code>network</code> module, we can scan for available networks, establish connections, and even set up MicroPython as an access point.</p>\n<p>For Bluetooth, the <code>bluetooth</code> module available in MicroPython provides an interface to configure Bluetooth Low Energy (BLE) connections, enabling devices to interact with BLE-enabled sensors and peripherals.</p>\n<ul>\n<li>\n<p><strong>WiFi</strong></p>\n<ul>\n<li>Network Scanning</li>\n<li>Connection Handling</li>\n<li>Access Point Configuration</li>\n</ul>\n</li>\n<li>\n<p><strong>Bluetooth</strong></p>\n<ul>\n<li>BLE Advertising</li>\n<li>BLE Services and Characteristics</li>\n<li>Secure Pairing</li>\n</ul>\n</li>\n</ul>\n<p>As for IoT protocols, MicroPython supports MQTT (Message Queuing Telemetry Transport) out of the box – a lightweight messaging protocol ideal for small sensors and mobile devices.</p>\n<h3>Interfacing Sensors, Actuators, and Displays</h3>\n<p>Interfacing with sensors, actuators, and displays is made straightforward through MicroPython's extensive library support.</p>\n<p>The <code>machine</code> and <code>pyb</code> modules enable to communicate with various electronic components via GPIO (General Purpose Input/Output) pins, PWM (Pulse Width Modulation), ADC (Analog to Digital Converter), and more.</p>\n<ul>\n<li>\n<p><strong>Sensors</strong></p>\n<ul>\n<li>Data Reading (e.g., temperature, humidity)</li>\n<li>Interfacing ADC, I2C, SPI</li>\n</ul>\n</li>\n<li>\n<p><strong>Actuators</strong></p>\n<ul>\n<li>Controlling Motors</li>\n<li>Driving LEDs and Relays</li>\n</ul>\n</li>\n<li>\n<p><strong>Displays</strong></p>\n<ul>\n<li>OLED and LCD Integration</li>\n<li>Graphical and Text-based Output</li>\n</ul>\n</li>\n</ul>\n<p>This ensures that projects involving real-time monitoring and control, such as smart thermostats or robotic arms, can be efficiently executed with concise code.</p>\n<h3>Serial Communication and Networking</h3>\n<p>MicroPython excels at facilitating serial communication and networking.</p>\n<p>Through the <code>uos</code> module, it provides functionalities to access the UART (Universal Asynchronous Receiver/Transmitter) for serial communications, a fundamental capability for projects that require data transmission between devices.</p>\n<ul>\n<li>\n<p><strong>Serial Connections</strong></p>\n<ul>\n<li>UART Configuration</li>\n<li>Data Sending and Receiving</li>\n</ul>\n</li>\n</ul>\n<p>In addition to UART, MicroPython supports higher-level networking protocols, offering TCP/IP and UDP through the <code>usocket</code> module, enabling robust network communication for MicroPython devices.</p>\n<ul>\n<li>\n<p><strong>Networking</strong></p>\n<ul>\n<li>Socket Creation</li>\n<li>TCP/IP and UDP Protocols</li>\n<li>Client-Server Communication</li>\n</ul>\n</li>\n</ul>\n<p>This becomes pivotal in complex IoT systems where multiple devices need to exchange data efficiently and reliably.</p>\n<h2>Expansion and External Resources</h2>\n<p>It's possible to significantly enhance the functionalities of MicroPython systems by incorporating additional storage, power management solutions, and a variety of accessories.</p>\n<h3>Adding Storage with SD Card and Flash Memory</h3>\n<p><strong>SD Cards:</strong> the storage capacity of MicroPython devices can be expanded by inserting SD cards. This is particularly useful for data logging applications where we need to store large amounts of data.</p>\n<p><strong>Flash Memory:</strong> many MicroPython boards are equipped with onboard flash memory. If further memory is needed, you can consider adding additional flash chips to the available footprints on some boards.</p>\n<h3>Power Management and Battery Connectivity</h3>\n<p><strong>Battery Management:</strong> efficient power management is crucial for portable MicroPython projects. You can easily integrate charge controllers and power management ICs to ensure a steady energy supply and battery longevity.</p>\n<p><strong>Battery Connectivity:</strong> many boards support connections to LiPo batteries, enabling untethered operations. Careful consideration of battery specifications and connectivity is necessary to match the device's power requirements.</p>\n<h2>Troubleshooting and Community Support</h2>\n<p>You can find some support in the MicroPython community when it comes to overcoming obstacles encountered while programming with MicroPython. Whether you are grappling with common issues or seeking extensive knowledge, the forums and wiki are invaluable assets for support. Here below we'll present to you the three most common issues and the suggested method for fixing them quickly.</p>\n<h3>Common Issues and How to Solve Them</h3>\n<p>Here are some frequent problems and their solutions:</p>\n<ol>\n<li><strong>Module Import Errors</strong>: at times, importing modules can return errors. To resolve this, you should check if the module name is correct and verify that it's included in the MicroPython firmware.</li>\n<li><strong>Serial Connection Issues</strong>: issues with serial communication are typical. You can troubleshoot by ensuring that the correct port and baud rate are selected, and the cables are secure.</li>\n<li><strong>Memory Allocation Errors</strong>: when running out of memory, streamlining code and managing resources efficiently by using iteration instead of recursion where possible, and freeing up memory, can help.</li>\n</ol>","frontmatter":{"lang":"en","path":"micropython","translatedPath":"micropython","title":"What is MicroPython? An Introduction to Simplified Python-3 for Microcontrollers","headline":"Dive into the world of MicroPython with our comprehensive guide. From its Kickstarter beginnings to setting up on various OS, we cover installation, basics and code examples on PIC, STM32 and ESP microcontrollers.","category":"programming","type":"blog","seoImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAED/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAcrKBgo//8QAGxABAAEFAQAAAAAAAAAAAAAAAQACERIhMUH/2gAIAQEAAQUC3l7coj3oiT//xAAYEQACAwAAAAAAAAAAAAAAAAAAAQIhQf/aAAgBAwEBPwG9HNn/xAAWEQEBAQAAAAAAAAAAAAAAAAABABL/2gAIAQIBAT8BbA3/xAAbEAACAgMBAAAAAAAAAAAAAAAAEQECMUFhEv/aAAgBAQAGPwLokluBeIt0zkVpg1J//8QAHhABAAIBBAMAAAAAAAAAAAAAAQARITFBUWGBkfD/2gAIAQEAAT8hGgS0UDxBbhAbn3UuPK4RKMAOcawLwPGvfqI1W5dXP//aAAwDAQACAAMAAAAQHN//xAAaEQEAAQUAAAAAAAAAAAAAAAABACFBYZHw/9oACAEDAQE/ECrC8AoHan//xAAZEQACAwEAAAAAAAAAAAAAAAAAASExUZH/2gAIAQIBAT8QfRSr6f/EAB4QAQACAQQDAAAAAAAAAAAAAAERIQAxQWGxUXGR/9oACAEBAAE/EBTOEUJwMzG/eKUAFAh5Rp4cVkwkWCsjszgkaqFsB6+uJIlpMFCWTVt6yGDNASjZbxGf/9k=","aspectRatio":1.2872628726287263,"src":"/static/99b6b774b3272bf36d3c2db2c3c5448e/3822b/micropython.jpg","srcSet":"/static/99b6b774b3272bf36d3c2db2c3c5448e/23edd/micropython.jpg 475w,\n/static/99b6b774b3272bf36d3c2db2c3c5448e/67316/micropython.jpg 950w,\n/static/99b6b774b3272bf36d3c2db2c3c5448e/3822b/micropython.jpg 1152w","sizes":"(max-width: 1152px) 100vw, 1152px"},"resize":{"src":"/static/99b6b774b3272bf36d3c2db2c3c5448e/69cec/micropython.jpg"}}}}},"allServices":{"edges":[{"node":{"fields":{"slug":"/it/servizi/assemblaggio-tht/"},"frontmatter":{"title":"Assemblaggio PTH (THT) conto terzi: montaggio through-hole per lotti medi e piccoli","lang":"it"}}},{"node":{"fields":{"slug":"/it/servizi/assemblaggio-schede-smd/"},"frontmatter":{"title":"Assemblaggio SMT conto terzi (PCBA / montaggio SMD)","lang":"it"}}},{"node":{"fields":{"slug":"/it/servizi/assemblaggio-dispositivi-elettronici/"},"frontmatter":{"title":"Assemblaggio dispositivi elettronici conto terzi (box build)","lang":"it"}}},{"node":{"fields":{"slug":"/en/services/box-build-assembly/"},"frontmatter":{"title":"Box Build Assembly","lang":"en"}}},{"node":{"fields":{"slug":"/en/services/conformal-coating/"},"frontmatter":{"title":"Conformal Coating for Electronics","lang":"en"}}},{"node":{"fields":{"slug":"/es/servicios/conformal-coating/"},"frontmatter":{"title":"Conformal Coating para Electrónica","lang":"es"}}},{"node":{"fields":{"slug":"/it/servizi/conformal-coating/"},"frontmatter":{"title":"Conformal coating per schede elettroniche","lang":"it"}}},{"node":{"fields":{"slug":"/en/services/contract-electronics-manufacturing/"},"frontmatter":{"title":"Contract Electronic Board Manufacturing: From BOM to Delivery","lang":"en"}}},{"node":{"fields":{"slug":"/en/services/through-hole-assembly/"},"frontmatter":{"title":"Contract THT/PTH assembly: through-hole PCB assembly for small and medium batches","lang":"en"}}},{"node":{"fields":{"slug":"/es/servicios/diseno-electronico/"},"frontmatter":{"title":"Diseño electrónico","lang":"es"}}},{"node":{"fields":{"slug":"/en/services/electronics-design/"},"frontmatter":{"title":"Electronic Design","lang":"en"}}},{"node":{"fields":{"slug":"/es/servicios/ensamblaje-smt/"},"frontmatter":{"title":"Ensamblaje SMT para terceros (PCBA / montaje SMD)","lang":"es"}}},{"node":{"fields":{"slug":"/en/services/bespoke-electronic-soldering/"},"frontmatter":{"title":"Hand soldering electronics to specification","lang":"en"}}},{"node":{"fields":{"slug":"/es/servicios/ensamblaje-tht/"},"frontmatter":{"title":"Montaje THT/PTH para terceros: ensamblaje through-hole para lotes pequeños y medianos","lang":"es"}}},{"node":{"fields":{"slug":"/es/servicios/ensamblaje-dispositivos-electronicos/"},"frontmatter":{"title":"Montaje de dispositivos electrónicos.","lang":"es"}}},{"node":{"fields":{"slug":"/es/servicios/produccion-placas-electronicas/"},"frontmatter":{"title":"Producción de placas electrónicas para terceros: desde la BOM hasta la entrega","lang":"es"}}},{"node":{"fields":{"slug":"/it/servizi/produzione-schede-elettroniche/"},"frontmatter":{"title":"Produzione schede elettroniche conto terzi: dalla BOM alla consegna","lang":"it"}}},{"node":{"fields":{"slug":"/it/servizi/progettazione-elettronica/"},"frontmatter":{"title":"Progettazione elettronica di schede e sistemi elettronici industriali","lang":"it"}}},{"node":{"fields":{"slug":"/en/services/smt-pcb-assembly/"},"frontmatter":{"title":"SMT PCB Assembly (PCBA) — Contract Manufacturing","lang":"en"}}},{"node":{"fields":{"slug":"/it/servizi/saldature-elettroniche-custom/"},"frontmatter":{"title":"Saldatura manuale elettronica (Hand Soldering) su specifica","lang":"it"}}},{"node":{"fields":{"slug":"/es/servicios/soldaduras-electronicas-personalizadas/"},"frontmatter":{"title":"Soldadura manual electrónica (Hand Soldering) según especificación","lang":"es"}}}]}},"pageContext":{"localizedPath":"/en/micropython/","lang":"en","originalPath":"micropython","splittedPath":["micropython"],"translatedPath":"micropython"}},"staticQueryHashes":["2988384237","607602069"]}