Introdução a Python Embarcado

python embarcado

As chances são de que, se você estiver programando dispositivos embarcados, esteja escrevendo código na linguagem de programação C / C ++. C foi criado inicialmente no início dos anos 1970; entretanto, não seria até a década de 90 que os dispositivos embarcados programaveis mudariam da linguagem assembly para a linguagem C de mais alto nível. Pelos próximos trinta anos, C / C ++ reinaria supremo para aplicações embarcadas graças ao seu excelente desempenho, tanto em termos de velocidade quanto de compactação de código. Hoje, outra mudança está surgindo com as implementações centradas em embarcados da popular linguagem de programação Python. Neste texto vamos explorar sobre Python Embarcado.

O Python surgiu pela primeira vez na década de 90 e vem ganhando popularidade entre os desenvolvedores de software desde então. Na verdade, em 2020, Python finalmente alcançou o primeiro lugar na pesquisa anual do IEEE Spectrum sobre popularidade de linguagens de programação. Inicialmente, o Python se tornou popular entre os desenvolvedores de sistemas embarcados como uma linguagem de script para testar dispositivos eletrônicos. Lentamente, ele foi descendo ainda mais na pilha de desenvolvimento. Na verdade, existem várias implementações de Python, com CPython sendo a implementação de referência amplamente usada para aplicações de desktop.

  • PyMite e Tiny Python estiveram entre as primeiras tentativas de desenvolver implementações de capacidade reduzida de Python para o propósito expresso de execução em microcontroladores. PyMite inclui apenas uma VM e tempo de execução – sem compilador. Isso significa que ele só pode rodar bytecode compilado primeiro pelo CPython. O Tiny Python incluiu um bytecode do compilador enquanto ainda ocupava aproximadamente 64 kilobytes de RAM. Ambos são baseados em Python 2 e nenhum foi desenvolvido ativamente. No entanto, eles representam as primeiras tentativas de usar Python para aplicações embarcadas.
  • MicroPython é uma alternativa interessante para a linguagem de programação C para desenvolvimento embarcado. Ele traz vários recursos populares da linguagem CPython baseada em desktop para várias arquiteturas de microcontroladores populares, incluindo placas STM32, TI CC3200 / WiPy, placas Teensy, série Nordic nRF, SAMD21, SAMD51, ESP8266, ESP32, RISC-V e até mesmo o Lego Plataforma Mindstorms EV3. Desde o lançamento em 2014, MicroPython tem visto um aumento constante na popularidade, refletindo o aumento do uso de CPython em geral. Outro atributo atraente é que o código-fonte do MicroPython é oferecido sob uma licença de código aberto (Licença MIT) no GitHub.
  • O CircuitPython é uma implementação Python educacional e amigável para o criador e, por si só, um fork do MicroPython. O suporte ao desenvolvimento CIrcuitPython é fornecido pela Adafruit Industries e é a linguagem de fato para muitos de seus produtos de microcontrolador. Existem atualmente mais de cem placas compatíveis com CircuitPython, a maioria baseada nos microcontroladores SAMD21 / SAMD51 da Microchip e nRF52840 da Nordic Semiconductor. Um recurso importante do CircuitPython é a capacidade de simplesmente arrastar um arquivo de código-fonte (.py) para uma placa de desenvolvimento compatível, não diferente de arrastar um arquivo para uma unidade flash USB. Não há necessidade de compilar código e não há necessidade de acesso a um programador / depurador incômodo (e às vezes caro). Além disso, o código-fonte permanece acessível no dispositivo e pode ser aberto em qualquer computador. Isso significa que é possível baixar, editar e reprogramar uma placa de desenvolvimento compatível com CircuitPython de qualquer computador usando um editor de texto simples.
  • Zerynth é um conjunto de ferramentas contidas em um Kit de Desenvolvimento de Software (SDK) voltado para desenvolvedores de produtos da Internet das Coisas (IoT). Eles são especializados em simplificar a conexão entre microcontroladores de 32 bits (incluindo ESP32, ESP8266, ARM Cortex M0 +, ARM Cortex M3 e ARM Cortex M4) e vários provedores de serviços de nuvem IoT (AWS, Azure, Google Cloud Platform, Ubidots, The Things Network ) Com apenas algumas linhas de código Python, os dados dos sensores do dispositivo de borda podem ser transmitidos para a nuvem para análise posterior e armazenamento de longo prazo. Entre as ferramentas fornecidas, uma interface de linha de comando (CLI), o Zerynth Studio Integrated Development Environment (IDE), o Zerynth Operating System (OS) e o Zerynth Device Manager; todos disponíveis para Windows, Mac OS e Linux. O Zerynth VM ocupa uma pequena memória flash de 80 KB e 5 KB de RAM. A programação pode ser feita em Python ou em uma abordagem híbrida Python / C caso os requisitos de desempenho exijam tal arranjo.
  • CPython. Computadores de placa única (Single Board Computers – SBCs) são computadores desktop completos em um formato do tamanho de um cartão de crédito (por exemplo, Raspberry Pi, BeagleBone). Eles também são tão baratos que são cada vez mais usados ​​em aplicações embarcadas. Os SBCs da geração atual são rápidos o suficiente e têm memória e armazenamento suficientes para executar a implementação completa do CPython (ou uma implementação ligeiramente reduzida feita pela omissão de módulos desnecessários). Houve outras implementações, como o Python para ARM Linux que adaptou o Python para arquiteturas baseadas em ARM (em comparação com arquiteturas x86 / x64). Mais recentemente, implementações adicionais como PyPy – com base em um compilador Just-In-Time versus o interpretador de CPython – foram portadas para Raspberry Pi e oferecem melhorias, como melhor desempenho de velocidade.

Os desenvolvedores precisam ter em mente que há não é um único ‘sabor’ da linguagem de programação Python. Existem muitas implementações, e algumas são explicitamente construídas para funcionar de forma soberba em plataformas embarcadas. O futuro do Python como um player importante no mundo do desenvolvimento embarcado profissional depende de provar que ele pode atender ou exceder o desempenho de C. Podemos olhar para a história para fornecer alguns insights. Afinal, a mudança do assembly para a C não ocorreu da noite para o dia. O assembly ainda é usado para seções cruciais de desempenho de um programa C, inserindo o código assembly dentro de macros C. Python e C podem trabalhar juntos de forma semelhante.

Outra consideração é que os microcontroladores/microprocessadores têm anos-luz mais poder de processamento do que os micros de dez ou vinte anos atrás. Os ciclos do relógio passaram de poucos megahertz a mais de um gigahertz. A memória flash, antes medida em dezenas de kilobytes, agora é medida em vários megabytes. Felizmente, o aumento significativo no desempenho não veio com um aumento proporcional no preço. Assim, os desenvolvedores de aplicações embarcadas podem escrever código de alto nível sem se preocupar com cada ciclo de clock ou byte de memória necessariamente e ainda produzir produtos responsivos e de alta qualidade.

Python Embarcado: Conclusão

Linguagens de programação, como as línguas faladas, evoluem e crescem para responder às necessidades dos tempos. Derivados de CPython que são expressamente construídos para sistemas embarcados, como MicroPython e CircuitPython, estão posicionados para serem players importantes no futuro do desenvolvimento embarcado porque democratizam o processo de criação. Quando combinadas com algum conhecimento básico de hardware eletrônico, as linguagens Python embarcado permitem que as pessoas, independentemente do nível de habilidade, misturem o físico e o digital. Esse tipo de capacidade abre possibilidades que eram impensáveis ​​alguns anos atrás. Em todo o mundo, linguagens de programação de código aberto acessíveis e plataformas embarcadas permitem que as comunidades locais criem ferramentas específicas para suas necessidades, econômicas e sustentáveis. Desde nos permitir criar programas que monitoram os efeitos ambientais do transporte em grandes cidades até aqueles que monitoram a qualidade da água em um campo de refugiados, o Python Embarcado está ajudando a tornar o mundo um lugar melhor, uma linha de código por vez.

Artigo escrito por Michael Parks e publicado no blog da Mouser Electronics: Introduction to Embedded Python

Traduzido e adaptado por Equipe Embarcados .Visite a página da Mouser Electronics no Embarcados

(*) este post foi patrocinado pela Mouser Electronics

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Software » Introdução a Python Embarcado
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Roney P Santos
Roney Santos
02/12/2021 22:07

Muito interessante essa abordage! Python apesar de lento, tem a vantagem de evita muitos erros programavies, que podem ser cruciais em sistemas embarcados!

Talvez você goste: