Linux Básico e Python
para Sistemas Embarcados na Agricultura
Linux embarcado aproxima sistema e aplicação
04
Aplicações
C e Python implementam aquisição, análise, interface e lógica de missão.
03
Espaço de usuário
Bibliotecas, serviços, ferramentas de depuração e software robótico.
02
Kernel e drivers
Gerenciam CPU, memória, câmeras, armazenamento e periféricos.
01
Boot e hardware
Inicializam a placa e preparam a execução confiável do sistema.
A pilha deixa explícita a passagem entre recurso físico e comportamento do sistema.
Plataformas móveis exigem que software, sensores e processamento operem como um único sistema.
Visão e IA
Linux acomoda câmeras, bibliotecas e pipelines de processamento para percepção local.
Quando visão, armazenamento e algoritmos exigem mais recursos, Linux transforma a plataforma embarcada em um ambiente completo de desenvolvimento.
Decisão de
Projeto
Projeto
A flexibilidade do Linux precisa ser equilibrada com os requisitos de tempo de resposta, confiabilidade e segurança operacional.
O que é Linux?
| Termo | Definição |
|---|---|
| Linux | Kernel (núcleo) que gerencia hardware, memória e processos. |
| Open source | Código aberto — qualquer pessoa pode ver, usar e modificar. |
| Distribuição | Linux + ferramentas e pacotes prontos para uso (Ubuntu, Debian, Fedora...). |
| Ubuntu | Distribuição usada nesta disciplina — estável e amplamente documentada. |
Por que Linux em linha de comando?
- Sensores, gateways e placas embarcadas raramente têm interface gráfica.
- Terminal é a forma padrão de configurar, testar e depurar esses dispositivos.
- Base para automatizar tarefas e rodar scripts Python no campo.
O terminal (shell) é a interface de texto usada para operar o sistema Linux — é a forma padrão de interagir com dispositivos embarcados sem interface gráfica.
Linux no Windows
| Ambiente | Papel nesta aula |
|---|---|
| Docker Desktop | Ambiente principal desta aula. |
| Google Cloud Shell | Contingência — usado apenas se o Docker falhar. |
| WSL 2 | Alternativa de mercado (mencionada brevemente). |
Iniciar Ubuntu com Docker
Comando principal
terminal
$ docker run -it --name ap711-ubuntu ubuntu bash
Alerta: este container inicia com o usuário root.
Retomar o mesmo container em outra sessão
terminal
$ docker start -ai ap711-ubuntu
Gerenciamento do container
| Comando | Descrição |
|---|---|
| docker ps | Lista containers em execução. |
| docker ps -a | Lista todos os containers. |
| docker start ap711-ubuntu | Inicia o container existente. |
| docker exec -it ap711-ubuntu bash | Abre um novo terminal no container ativo. |
| docker stop ap711-ubuntu | Interrompe o container. |
| docker rm ap711-ubuntu | Remove o container. |
Google Cloud Shell
- 1Acessar shell.cloud.google.com
- 2Terminal Linux disponível diretamente no navegador
Comandos básicos — WSL 2
| Comando | Exemplo | Saída |
|---|---|---|
| wsl --install | wsl --install | Instalando: Ubuntu... |
| wsl --list | wsl --list --verbose | NAME: Ubuntu STATE: Running VERSION: 2 |
| wsl -d | wsl -d Ubuntu | (abre o terminal da distro Ubuntu) |
| wsl --shutdown | wsl --shutdown | (sem saída — todas as distros encerradas) |
Primeiros comandos
| Comando | Exemplo | Saída |
|---|---|---|
| pwd | pwd | / |
| ls -la | ls -la | drwxr-xr-x 1 root root 4096 ago 20 09:58 . |
| mkdir | mkdir teste | (sem saída — diretório criado) |
| cd | cd teste | root@ap711-ubuntu:/teste# |
| touch | touch arquivo.txt | (sem saída — arquivo criado) |
| cat | cat /etc/os-release | PRETTY_NAME="Ubuntu 24.04 LTS" |
| cd .. | cd .. | root@ap711-ubuntu:/# |
| clear | clear | (tela limpa) |
| exit | exit | (sessão do terminal encerrada) |
Estrutura do projeto
Criação dos diretórios
terminal
$ mkdir ap711
$ cd ap711
$ mkdir scripts dados resultados
ap711/
├── scripts/
├── dados/
└── resultados/
scripts/ recebe o código Python; dados/ e resultados/ organizam entradas e saídas do projeto.
Comandos adicionais
| Comando | Exemplo | Saída |
|---|---|---|
| cp | cp clima.py clima_backup.py | (sem saída — arquivo copiado) |
| mv | mv clima_backup.py backup_clima.py | (sem saída — arquivo renomeado) |
| rm | rm backup_clima.py | (sem saída — arquivo removido) |
| find | find . -name "*.py" | ./clima.py |
| grep | grep "import" clima.py | import requests |
| head | head -n 1 clima.py | import requests |
| tail | tail -n 2 clima.py | print("Condição atual: sem precipitação.") |
| chmod | chmod +x clima.py | (sem saída — permissão de execução adicionada) |
sudo
| Comando | Descrição |
|---|---|
| sudo | Executa um comando com privilégios de administrador (root). |
| sudo apt install ... | Uso típico — instalar pacotes fora do container Docker. |
Evita que o usuário opere com privilégios totais o tempo todo — reduz o risco de comandos acidentais ou maliciosos. Cada uso de sudo é uma decisão explícita.
No container Docker desta aulaUsuário já é root — sudo não é necessário. Necessário em Ubuntu fora do Docker (ex.: WSL2).
apt
| Comando | Descrição |
|---|---|
| apt update | Atualiza a lista de pacotes disponíveis. |
| apt install | Instala um pacote. |
| apt remove | Remove um pacote. |
terminal
$ sudo apt update
$ sudo apt install -y python3 python3-pip python3-venv nano
terminal
$ python3 --version
No container Docker (usuário root) o sudo não é necessário. Em um Ubuntu fora do Docker (por exemplo, WSL2), inclua sudo antes dos comandos: sudo apt update, sudo apt install ...
Por que Python?
- Prototipagem muito mais rápida que C — sem compilar, testa e ajusta na hora.
- Bibliotecas prontas para sensores, câmeras e IA (GPIO, OpenCV, etc.) — menos código para escrever.
- Roda direto no Linux embarcado (Raspberry Pi, Jetson) — mesma camada do C.
- C continua no firmware de baixo nível e tempo real crítico — Python entra na camada de decisão.
Preparar o Python
| Comando | Descrição |
|---|---|
| python3 | Interpretador Python 3. |
| python3 --version | Verifica a versão instalada. |
| python -m pip | Gerenciador de pacotes Python. |
| python3 -m venv | Cria um ambiente virtual isolado. |
Python — linguagem usada no exercício.
pip — instala bibliotecas Python.
venv — cria um ambiente isolado para o projeto.
Ambiente virtual e pip
Criar e ativar
terminal
$ python3 -m venv .venv
$ source .venv/bin/activate
terminal
$ python -m pip install requests
requests: biblioteca Python para realizar chamadas HTTP — usada a seguir para consumir a API meteorológica.
O que é uma API? Por que usar?
| Termo | Definição |
|---|---|
| API | Forma padronizada de um programa pedir dados a outro sistema, pela internet. |
| Por que usar | Evita reconstruir o que já existe — previsão do tempo, imagens de satélite, dados climáticos. |
| Open-Meteo | API gratuita de previsão do tempo, sem cadastro nem chave de acesso. |
| NASA POWER | Dados climáticos e de radiação solar, usados em modelos agroclimáticos. |
| Comando | Exemplo | Saída |
|---|---|---|
| curl | curl "https://api.open-meteo.com/v1/forecast?latitude=-22.89&longitude=-47.06¤t=temperature_2m,wind_speed_10m" | {"current": {"temperature_2m": 28.5, "wind_speed_10m": 12.3}} |
Criar o script com nano
Abrir o editor
terminal
$ nano clima.py
| Tecla | Ação |
|---|---|
| Ctrl+O | Salvar |
| Enter | Confirmar o nome do arquivo |
| Ctrl+X | Sair do editor |
Executar o script
Comando principal
terminal
$ python3 clima.py
| Comando | Descrição |
|---|---|
| python3 clima.py | Executa o script passando-o ao interpretador Python. |
| ./clima.py | Alternativa após chmod +x clima.py — executa o arquivo diretamente. |
A cada alteração no código: salvar no nano (Ctrl+O, Enter, Ctrl+X) e executar novamente.
Etapa 1 — Consultar e exibir
clima.py
clima.py
import requests
url = "https://api.open-meteo.com/v1/forecast"
params = {
"latitude": -22.90,
"longitude": -47.06,
"current": "temperature_2m,relative_humidity_2m,precipitation",
"timezone": "auto",
}
response = requests.get(url, params=params)
data = response.json()
print(data["current"])
Python
↓
HTTP
↓
Open-Meteo
↓
JSON
↓
Python
↓
Terminal
Etapa 2 — Interpretar
clima.py (continuação)
clima.py
atual = data["current"]
temperatura = atual["temperature_2m"]
umidade = atual["relative_humidity_2m"]
precipitacao = atual["precipitation"]
print(f"Temperatura: {temperatura} °C")
print(f"Umidade: {umidade} %")
print(f"Precipitação: {precipitacao} mm")
if precipitacao > 0:
print("Condição atual: há precipitação.")
else:
print("Condição atual: sem precipitação.")
Fluxo
dados brutos
↓
processamento
↓
informação útil
↓
processamento
↓
informação útil
Do Linux à decisão no AP711
Linux
→
Python
→
HTTP / JSON
→
Dados
→
Interpretação
Sensores reais · gateways IoT · MQTT · Docker Compose · bancos de dados · shell scripting · Python orientado a objetos
Esta base — terminal, Python, ambiente virtual e consumo de dados — sustenta o trabalho posterior com sensores, gateways e aplicações IoT no agronegócio.
Documentação oficial
| Fonte | Link |
|---|---|
| Docker | docs.docker.com |
| Ubuntu | ubuntu.com |
| Python | docs.python.org/3 |
| Python — venv | docs.python.org/3/tutorial/venv.html |
| Open-Meteo — API | open-meteo.com/en/docs |
| NASA POWER — API | power.larc.nasa.gov/docs/services |
| Google Cloud Shell | docs.cloud.google.com/shell/docs |
| WSL 2 — instalação | learn.microsoft.com/windows/wsl/install |