Programação RPi Python 05: Introdução ao Python

No tutorial anterior, configuramos com sucesso um desktop Linux Raspberry Pi (RPi). Agora vamos aprender Python.

Poderíamos começar explicando como controlar o hardware usando scripts Python, mas isso anularia o propósito de usar Raspberry Pi e uma linguagem de nível muito alto (VHLL) – como Python – para controlar a eletrônica.

Certamente, você pode controlar facilmente a eletrônica e projetar aplicações embarcadas com qualquer microcontrolador. A razão pela qual estamos usando RPi (um computador de placa única) e um VHLL é para usar os recursos de programação de desktop, web e rede em aplicativos incorporados. Isso nos permite projetar aplicativos poderosos e complexos que empregam interfaces de usuário, gráficos, redes e bancos de dados – para manipular, compartilhar e usar dados de sensores incorporados e projetar aplicativos incorporados que podem ser conectados em rede a sistemas de desktop ou servidores.

Com o RPi, podemos fazer interface com uma variedade de dispositivos (ou circuitos) complementares incorporados que fornecem dados de nível de máquina em aplicações específicas. Esses dados podem, então, ser manipulados e usados ​​por uma VHLL (como Python) para projetar grandes aplicações em diversos nichos. Isso pode incluir biometria, robótica, automação, jogos e computação em nuvem, etc.

Por exemplo, podemos interligar um módulo de impressão digital com Raspberry Pi e projetar um sistema de atendimento biométrico. Usando recursos Python, também podemos desenvolver uma solução de software neste sistema de atendimento biométrico onde um gerente de RH pode visualizar um registro de atendimento, avaliar a produtividade dos funcionários e calcular salários e pagamentos de horas extras. Poderíamos desenvolver um software de gestão de RH totalmente integrado.

Simplesmente conectando a matriz de LED, LCD de caracteres ou LCD gráfico com RPi, podemos projetar uma placa de exibição controlada remotamente que exibe mensagens personalizadas por meio de uma solução GUI baseada em desktop RPi. Ao conectar um sensor acelerômetro e alguns botões, podemos desenvolver um gamepad personalizado para jogos no Raspberry Pi.

Existem possibilidades ilimitadas quando você combina eletrônica, um sistema operacional e os recursos de uma VHLL. Uma base sólida em Python significa que é possível construir aplicativos complexos que vão além de um hobby básico de programação.

Linguagem de programação
Python é uma linguagem de nível muito alto (VHLL) que também pode ser usada para codificar em nível de bits e bytes. É uma linguagem de programação de uso geral, orientada a objetos e multiplataforma que pode ser executada em todos os principais sistemas operacionais e plataformas de hardware. Embora Python seja orientado a objetos, ele não está limitado a um padrão de design de software OOP.

Isso significa que é possível projetar soluções de software em Python usando programação processual ou funcional. Padrões de design de software, como Singleton, Model-View-Controller (MVC), Template, Proxy, Command, Observer, Factory e outros, podem ser implementados em Python. Os recursos orientados a objetos do Python são semelhantes aos do C++, mas mais simples.

Como uma VHLL, Python possui um alto nível de abstração do hardware subjacente. Além disso, Python pode ser integrado a uma variedade de outras linguagens de programação e combinado com componentes de software escritos em outras linguagens. Essa versatilidade é uma vantagem de software em quase todos os nichos.

No entanto, Python é uma linguagem interpretada, por isso normalmente é lenta em comparação com linguagens compiladas. Isso pode ser um desafio ao projetar aplicativos que precisam responder a eventos urgentes. Mas é possível pré-compilar o python ou usar módulos escritos em outras linguagens compiladas. E, na maioria dos casos, o desempenho de uma aplicação Python é suficiente.

Quando usado para aplicativos incorporados no Raspberry Pi, os usuários podem encontrar limitações. A execução de um aplicativo embarcado com Python pode ser mais lenta do que um código de máquina em um microcontrolador. O RPi também carece de alguns recursos de hardware importantes, como conversores analógico-digitais, relógio em tempo real e interrupções de hardware.

Quaisquer requisitos para conversores analógico-digitais ou relógio em tempo real podem ser compensados ​​pela interface do ADC ou RTC externo com o RPi. Para interrupções, você deve contar com a API de interrupção do Linux. As interrupções de software precisarão de um gerenciamento cuidadoso de threads ou não serão implementadas tão rapidamente quanto as interrupções de hardware reais.

Formulários
Python é uma linguagem de programação de uso geral que pode ser usada em diversos domínios de aplicação. Possui uma biblioteca padrão e diversos módulos de extensão que permitem utilizar python em diversas aplicações e soluções de software.

Ao executar Python em computadores de placa única como Raspberry Pi, Beaglebone e outros em ambientes Linux completos, ele pode ser usado em aplicativos embarcados. Esses computadores de placa única podem ter interface com microcontroladores e chips programáveis ​​para projetar aplicações interessantes em sistemas embarcados, robótica, automação, biometria e outros nichos.

Uma implementação Python três, chamada MicroPython, pode ser usada para programar uma placa microcontroladora, como pyBoard. Isso é semelhante a como o C incorporado é usado para programar o Arduino e outros microcontroladores.
MicroPython no pyBoard permite programar aplicativos de microcontrolador usando Python, bem como compilar Python em bytecode ou código de máquina.

Para evitar confusão, usaremos o Python V3 convencional no RPi. Com o suporte de módulos de extensão, ele irá interagir com os circuitos eletrônicos e hardware através da entrada/saída de uso geral (GPIO) e outras interfaces de hardware RPi. MicroPython produz um bytecode ou código de máquina executável que pode ser executado como firmware no pyBoard.

Usando RPi, projetaremos aplicativos Python de uso geral que são executados como processos Linux, em vez de um bytecode ou código de máquina de firmware. Uma vantagem de usar Python no controle estatístico de processo (SBC) – em vez de Micropython no pyBoard – é que obtemos acesso total à biblioteca padrão e aos módulos de extensão do Python. O Micropython não possui a maioria dos recursos da biblioteca padrão.

Outras vantagens de usar Python convencional significam que podemos:

  • Importe módulos de controle de hardware para configurar e gerenciar componentes eletrônicos por meio de GPIO e interfaces de hardware
  • Use a biblioteca de soquetes para conectar-se aos serviços de Internet disponíveis
  • Obtenha acesso de intérprete a dispositivos de hardware através da porta serial USB e do protocolo Telnet
  • Responda a dispositivos externos e eventos de timer com a ajuda de APIs Linux e módulos Python especiais.
  • Escreva sequências de inicialização que implementem um aplicativo Python de qualquer complexidade.

Graças a esses recursos e versatilidade, Python se tornou a melhor escolha ao programar aplicativos da Internet das coisas (IoT). Além do mais, Python pode ser usado para programação de desktop, desenvolvimento web, desenvolvimento de software, aplicativos de negócios e computação científica. Com a ajuda da biblioteca Tk GUI e dos kits de ferramentas, como Qt, wxWidgets e Kivy, é possível projetar GUIs de desktop.

A biblioteca padrão do Python oferece suporte a todos os principais protocolos da Internet e ao uso de HTML, JSON e XML. Existem vários frameworks Python para desenvolvimento web e Internet, incluindo Django, Flask, Bottle, Pyramid e sistemas de gerenciamento de conteúdo baseados em Python – como Django CMS e Plone.

Além disso, ferramentas baseadas em Python como SCons, Roundup, Apache Gump e Buildbot podem ser usadas para desenvolvimento de software. Também pode ser usado para soluções de planejamento de recursos empresariais (ERP) e comércio eletrônico. Existem pacotes disponíveis que podem ser usados ​​para computação científica, análise de dados e visualização de dados.

Python tem muito a oferecer, mas cabe ao desenvolvedor decidir como usar melhor seus recursos com a eletrônica.

Implementações
Python tem quatro implementações com qualidade de produção.

1. Python clássico. Esta é a implementação mais atualizada e completa do Python. CPython, incluindo seu interpretador, compilador e biblioteca padrão e módulos de extensão, é codificado em linguagem C. Ele pode ser executado em qualquer plataforma compatível com C. CPython é o de fato implementação da linguagem de programação Python e normalmente é chamada de “Python”. Não requer nenhum ambiente de programação especial.

2. Jython. Compatível com Java 7 e superior, Jython é uma implementação de Python desenvolvida para Java Virtual Machines (JVM). A versão mais recente, Jython 2.7.1, é compatível com Python 2.7, mas não oferece suporte a Python V3. As versões V2 e V3 do Python também são incompatíveis entre si.

Jython pode usar todas as bibliotecas e estruturas Java e é compatível com qualquer classe Java como módulo de extensão. Os aplicativos Jython são essencialmente aplicativos Java puros que podem executar qualquer dispositivo com JVM, disponíveis para quase todos os sistemas operacionais e plataformas de hardware.

3. FerroPython. IronPython é uma implementação .Net (Common Language Runtime ou CLR) de Python. CLR agora é de código aberto e portado para Linux e macOS. O CLR também possui uma implementação multiplataforma, Mono, que pode ser executada no Windows e em outros sistemas operacionais que não sejam da Microsoft.

IronPython pode ser executado em qualquer máquina de destino com uma estrutura .Net. Ele pode usar qualquer classe CLR como módulo de extensão, incluindo classes escritas em C# e Visual Basic .Net.

4. PyPy – PyPy. Uma implementação alternativa do CPython que pode gerar código de máquina nativo “just-in-time”. PyPy é mais rápido em velocidade e gerenciamento de memória em comparação com todas as outras implementações – e o crédito vai para sua compilação just-in-time em código de máquina. CPython é mais rápido que Jython e IronPython e fica apenas um pouco atrás do PyPy.

PyPy é compatível com Python V2 e V3. Ele suporta a maioria das bibliotecas Python padrão e pode usar qualquer extensão codificada em C. Por padrão, não tem pilha e fornece microthreads para simultaneidade.

Há também uma implementação de alto desempenho de Python conhecida como Pyston disponível. No entanto, as implementações do Python diferem dependendo do ambiente em que são executadas e das bibliotecas, módulos de extensão e estruturas que podem usar. A implementação selecionada também influencia o empacotamento e a distribuição do aplicativo.

É possível instalar e executar qualquer uma das implementações de Python acima no Raspberry Pi. Por padrão, o RPi usa CPython. Para maior desempenho, pode ser instalado o PyPy, que é duas a 10 vezes mais rápido que o Python convencional. PyPy e CPython podem usar módulos de extensão codificados em C, mas se você precisar de bibliotecas e módulos Java, Jython pode ser preferido. Para bibliotecas CLR e módulos de extensão, considere IronPython.

Lembre-se: o RPi nunca foi projetado para aplicações de tempo crítico. Portanto, continuaremos com a instalação padrão do Python no Raspbian. É CPython e fornece todos os recursos da linguagem Python.

Biblioteca padrão e módulos de extensão
A biblioteca padrão do Python inclui módulos integrados (escritos em C) para tarefas relacionadas ao sistema operacional e módulos (escritos em Python) para tarefas comuns de programação, como manipulação de dados, manipulação de strings, operações de data e hora, operações matemáticas, arquivo e diretório acesso, compressão de dados, etc.

Os módulos de extensão — da biblioteca padrão ou da implementação específica do Python — permitem funcionalidades adicionais para o sistema operacional subjacente ou outros componentes de software. Também é possível incorporar Python em aplicativos codificados em outras linguagens por meio de extensões Python específicas do aplicativo.

Alguns exemplos:

  • CPython pode usar bibliotecas e classes C++ como módulos de extensão
  • Jython pode usar bibliotecas e classes Java como módulos de extensão
  • IronPython pode usar bibliotecas e classes CLR como módulos de extensão.

No entanto, ao usar módulos de extensão, a portabilidade entre plataformas de um aplicativo Python pode ser comprometida e exigir dependências adicionais. Por exemplo, Jython exigirá JVM para compilar bibliotecas e classes Java.

Ambientes de programação
Normalmente, os arquivos Python são arquivos de texto que são scripts ou módulos. Scripts são arquivos executados diretamente como um processo. Módulos são arquivos de origem importados para fornecer determinadas funcionalidades ao script. Embora um arquivo Python possa porque os módulos podem servir como scripts executáveis, fornecendo funcionalidade para outros scripts na importação.

Essencialmente, qualquer aplicativo Python pode ser visto como uma coleção de scripts e módulos ou apenas um script.

Para desenvolver software, você precisará de um editor de texto para escrever código para scripts e módulos Python, bem como de um compilador e interpretador para gerar código executável. Existem vários ambientes de desenvolvimento integrados disponíveis que combinam editor de texto, compilador e interpretador em um único ambiente de programação.

Ambientes de desenvolvimento integrado (IDEs) populares para Python incluem IDLE, Eclipse, Geany e Thonny. Raspbian vem com a instalação padrão do IDLE. A maioria dos IDEs fornece um interpretador, por meio do qual os códigos Python podem ser executados interativamente. Estas são chamadas de sessões interativas. Essas sessões interativas podem ser identificadas por uma string de prompt “>>>” que indica que algumas instruções Python são esperadas para execução.

Executando scripts
Os scripts Python podem ser executados no IDE ou em um interpretador Python de linha de comando. Dentro do IDE, as instruções Python também podem ser executadas a partir de uma sessão interativa, embora normalmente seja melhor agrupar seu aplicativo como um script Python. Por exemplo, no RPi, os scripts Python podem ser executados no IDLE (ou outro IDE Python) ou no shell Bash.

Ao executar scripts Python a partir do shell, o comando “python” ou “python3” pode ser usado. O comando deve seguir o nome e/ou caminho do script Python de destino e quaisquer argumentos opcionais conforme necessário. O shell bash também permite múltiplas linhas como um único argumento que pode ser usado para executar múltiplas instruções de código Python juntas. No entanto, alguns shells permitem apenas um comando de linha única onde uma ou mais instruções Python podem ser executadas e separadas por ponto e vírgula.

Os arquivos de script Python têm uma extensão .py (sufixo ao nome do arquivo) e os arquivos de bytecode compatíveis do Python têm extensões .pyc ou .pyo.

Para executar scripts Python a partir do shell bash, estes comandos podem ser usados:

Nome do script Python.py

ou

python3 nome-do-script.py

Python 2.7 pode ser a versão padrão do Python em uma máquina. Em execução Phyton comando, o script será executado pela versão padrão. Em execução python3 ou python3.5 comando, o script será executado explicitamente pelas versões V3 ou V3.5, respectivamente (se instaladas).

No Raspbian, os scripts Python podem ser escritos e compilados usando IDLE. Você pode abrir o IDLE navegando até Programação -> Python 3 (IDLE).

Abrindo IDLE no Raspbian

Navegando até o IDLE (Python 3) no Raspbian.

O IDLE abrirá com uma sessão ativa e interativa, como esta:

IDLE Python IDE no Raspbian

O IDLE Python IDE no Raspbian.

Para escrever um script ou módulo Python, clique em Arquivos -> Novo Arquivo.

Criando novo arquivo para escrever script Python em IDLE no Raspbiian

Criando um novo arquivo para escrever script Python no IDLE no Raspbian.

Escreva seu script Python no editor de texto e salve-o clicando em Arquivos -> Salvar.

Salvando script Python no IDLE no Raspbian

Salvando um script Python no IDLE no Raspbian.

Para executar um script Python, abra-o no IDE e clique em Executar -> Executar Módulo ou pressione F5.

Executando script Python em IDLE no Raspbian

Executando script Python no IDLE no Raspbian.

Recursos
Python é uma linguagem de programação madura que oferece aprendizado contínuo. O melhor lugar para explorar Python é em seu local na rede Internet. O mesmo acontece com Jython, FerroPythone PyPy. Os pacotes de biblioteca padrão e módulos de extensão podem ser baixados do Índice de pacotes Python.

Custos
CPython é coberto pela Licença Python Software Foundation Versão 2, que é compatível com a Licença Pública GNU (GPL). Jython, IronPython e PyPy também são cobertos por licenças gratuitas. Isso significa que qualquer coisa baixada dos principais sites Python, Jython, IronPython e PyPy é totalmente gratuita.

Muitas fontes, ferramentas e módulos de extensão Python de terceiros oferecem licenças semelhantes ou são cobertos pela GPL ou pela GPL Menor (LGPL). Alguns módulos e ferramentas desenvolvidos comercialmente podem exigir uma taxa. No entanto, Python pode ser usado para qualquer desenvolvimento de software proprietário, gratuito ou de código aberto.

No próximo tutorialabordaremos os fundamentos da linguagem de programação Python.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.