20 de janeiro de 2022

Do bit Ao Byte

Embarcados, Linux e programação

Como programar em Python: Setup

Como programar em Python com Tkinter

Chegou a hora de vermos como programar em Python, mesmo que você nunca tenha programado em nada antes. Mas primeiro, preciso apresentar-me.

Apesar de não ser um especialista em Python, dei meus primeiros passos na linguagem em 2009, tendo como mentor o mestre Bruno Tikami. Na época, decidi aprender Python porque eu precisava fazer uma interface para gerar gráficos de um dispositivo utilizado dentro dos caixas eletrônicos do Itaú. Bem, eu só programava em telas pretas, não tinha como produzir um gráfico de tempo real assim. Então me aventurei em criar gráficos de I/O simultâneos (5 deles) utilizando Python com PyGame. E quem diria que 1 ano depois eu estaria prestando serviço para uma empresa Alemã, implementando seu sistema de TR069 em operadoras de Telecom na América Latina? Pois é, o sistema todo em Python. Usei Python em x86 para monitorar um dispositivo PIC, depois fui direto para sistema de grande porte. Mas não parei por aí.

Já trabalhando diretamente para a empresa alemã, aconteceu de uma das empresas cliente perder a comunicação com mais de 200.000 dispositivos CPEs em uma empresa de telecom na Colômbia. Esses CPEs eram modems de IPTV, VoIP e Internet. Quando os dispositivos são ligados, antes de saberem que existe Internet eles precisam ir ao BGP. Nesse momento eles são apenas “rótulos” que precisam ser reconhecidos e autorizados pela operadora de telecom, para então serem redirecionados a um gateway que forneça DHCP. E tem mais um monte de coisas envolvidas nesse processo, mas em resumo; criei um script Python que coletava esses labels de forma gradativa e os comparava com uma base de dispositivos lidos de uma imensa lista, durante alguns dias, até concluir a recuperação.

Fiz alguns outros projetos com Python, por exemplo, um bot de backup de configurações de switches na Catho. O script rodava diariamente a partir de um cron e varria a rede, pegando as configurações dos switches gerenciáveis e fazendo backup em outro ponto da rede. O script fazia o login nos switches, não era nada aberto. Assim, concluo que aprender interagir com Python é muito, muito fácil, mas programar bem em Python dependerá de sua dedicação, seja para embarcados, redes, bots, visão computacional, machine learning ou o que for. E já que citei, no menu CVISION tem algumas coisas que escrevi sobre visão computacional. No menu IA tem diversas coisas com machine learning, como reconhecimento de armas, reconhecimento de objetos, criação de datasets e mais um monte de coisas legais. Se já programa em Python, talvez o que realmente lhe interesse esteja em um desses menus.

Aproveitando, escrevi um código simplificado desse backup de switches, no artigo “Automação de backup de switches“. Dê uma conferida!

O que veremos em “Como programar em Python”?

Não sou programador web, mas se não sabe Python ainda e pretende programar para web, essa série vai te ajudar muito. Só que aqui vamos ver também coisas que jamais serão usadas em web, inclusive para microcontroladoras que suportam MicroPython.

Que plataforma vamos utilizar?

Você pode usar Windows para aprender, sem problemas. Vou descrever o processo de instalação no Windows com uma certa parcimônia pois não uso Windows, mas a programação será igual tanto para Linux, quanto Windows, quanto Mac, quanto ESP. E também ARM, como as Raspberry. É realmente multiplataforma!

Instalar Python

Não sei se já vem nativo no Mac. No Linux sim, temos o Python instalado por padrão, mas se for usar Linux, sugiro que seja Ubuntu – não que seja melhor, mas simplifica bastante as coisas.

Instalar Python e pip no Windows nativamente

No Windows temos várias opções diferentes. Podemos instalar nativamente, basta fazer download do Python no site oficial e instalar. Mas não bastará, pois podemos necessitar de módulos que não estão instalados, então aproveite e instale o curl e o pip. O curl é para baixar o instalador, mas use o que desejar para baixar o script get-pip.py. Se for baixar com curl, o comando é simples:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Instalar Python no Windows Subsystem Linux

Essa é provavelmente a melhor opção, pois você terá um sistema Linux dentro do Windows com praticamente custo 0 de processamento. A vantagem é que tudo o que precisar ficará fácil instalar, usando apt, pip, pypi, setuptools, poetry, snap etc. O requisito aqui é estar com Windows 10 versão >=2004 (build 19041 ou superior) ou Windows 11.

O Python estará instalado por padrão e será muito mais fácil instalar outras coisas. Recomendo esse procedimento.

Atualmente está muito mais fácil fazer essa configuração para essas versões. Se for versão anterior, siga esse procedimento de instalação do WSL.

Não precisa verificar a versão do sistema, se não for a recomendada, não vai funcionar esse procedimento, daí você vai pelo link supracitado.

Abra o PowerShell como administrador (clicando com o botão direito sobre ele no menu e então escolher “executar como administrador) ou abra o prompt de comando. Digite:

wsl --install

Por padrão, o Linux que será instalado com esse processo mais atual é o Ubuntu. Perfeito. Durante esse primeiro setup o processo será um pouco lento, mas futuras atualização serão instantâneas.

Quando concluída a instalação, reinicie o computador.

Após instalar o sistema, ainda será necessário configurar um usuário e senha para o Linux do subsistema. Vá ao menu iniciar e abra seu Ubuntu. Será solicitada a criação de um usuário e senha.

Atenção: Normalmente a senha usa shadow, então você não verá nem asterisco enquanto digita a senha. Está tudo certo, é o padrão do Linux.

O resto veremos conforme for necessário. Esse processo não é complexo, como pode ver. Em 2 passos você terá o Linux instalado no Windows será mais fácil suprir qualquer dependência de pacote.

Objetivos

Como programar em Python pode ter inúmeros propósitos, vou dar foco a alguns pontos que serão úteis tanto para x86 como para embarcados. Assim, passaremos por diversos momentos:

  • Primeiro contato, para familiarização.
  • Interação com o sistema de arquivos.
  • Interação com rede.
  • Comunicação serial.
  • Introdução gráfica, criando um programa para comunicação serial com embarcados.
  • MicroPython mais a fundo.

Sobre o MicroPython, já tem um monte de artigos aqui no blog, em ESP8266, ESP32 e Raspberry Pi Pico. Há anos venho escrevendo sobre o tema. Para Raspberry Pi Pico fiz até um gerenciador de boot, para escolher o programa que deseja iniciar. O vídeo de apresentação do gerenciador de boot é esse. Aproveite para se inscrever no canal, não custa nada, hum?

Tem mais esse vídeo sobre MicroPython e Raspberry Pi Pico, vale a pena dar uma conferida. Esse é um vídeo de introdução ao MicroPython, em um dos formatos mais atuais do canal.

Apenas com esses tópicos já poderemos fazer muitas coisas, espero que acompanhe e se inscreva em nosso canal DobitaobyteBrasil no Youtube!

Pra não sair desse artigo de mãos abanando, vamos a uma demonstração; suponhamos um array de char chamado teste com o valor hello world. Como imprimir as letras inversamente ?

Em C seria:

#include <stdio.h>
#include <string.h>

int main(){
    char *teste = "hello world";
    for (int i=strlen(teste); i>-1; i--){
        printf("%c",teste[i]);
    }
    printf("\n");
    return 0;
}

Não tem segredo e é um código simples. Começaria a complicar se tivesse que criar uma nova variável com o valor inverso.

Tendo escrito o código em um arquivo, será necessário compilar e executar. Com um bom editor visual como o VS Code, a tarefa se torna simples. Porém, qualquer teste precisará ser escrito, compilado e executado, por mais simples que seja.

comparativo: string reversa em C

Mas em Python é muito mais simples! Basta digitar python no terminal e então digitar as linhas a seguir:

teste = 'hello world'
print(teste[::-1])
Como programar em Python

IDEs de desenvolvimento

No decorrer da série, usarei VS Code. Acredito que hoje seja a melhor IDE de desenvolvimento para qualquer plataforma, mas existem outras opções viáveis. Uma delas é o PyCharm, com versões para Linux, MacOS e Windows.

Se estiver usando Linux, a Thonny IDe é uma escolha boa também, principalmente se for usar MicroPython em microcontroladores como ESP e Raspberry Pi Pico.

Os próximos artigos devem servir como material de apoio quando necessário, porque de fato será fundamental seguirmos por vídeo, para mostrar o que estará sendo explicado. Por isso reforço, inscreva-se no canal DobitaobyteBrasil no Youtube!