Início

ZONY Edge Gateway + Firmware™

Arquitetura completa: Cloud → API → Gateway → CAN Bus → Firmware → Máquina

ZONY CloudAPI FastAPIGateway PythonCAN BusFirmware ESP32Máquina

1. ZONY Edge Gateway

Python + CAN Bus

Roda no Raspberry Pi / Jetson Nano. Lê dados CAN da máquina e envia para a API ZONY. Também recebe comandos e os transmite ao CAN Bus.

Hardware necessário

Raspberry Pi 4 / Jetson Nano
Módulo CAN (MCP2515 ou CAN HAT)
GPS RTK (u-blox ZED-F9P)
Modem 4G/5G / Starlink
instalar.sh
bash
# Instalação no Raspberry Pi / Jetson Nano
sudo apt update
sudo apt install python3-pip can-utils

# Ativar interface CAN
sudo ip link set can0 type can bitrate 250000
sudo ip link set up can0

# Instalar dependências Python
pip install python-can fastapi uvicorn requests
zony_gateway.py
Python
# zony_gateway.py

import can
import requests
import time
import json

# Config CAN
CAN_INTERFACE = "can0"
SERVER_URL = "http://localhost:8000/telemetry"

bus = can.interface.Bus(channel=CAN_INTERFACE, bustype='socketcan')

def read_can():
    while True:
        message = bus.recv(timeout=1)
        if message:
            data = {
                "id": message.arbitration_id,
                "data": list(message.data),
                "timestamp": time.time()
            }
            print("CAN DATA:", data)
            send_to_server(data)

def send_to_server(data):
    try:
        requests.post(SERVER_URL, json=data)
    except Exception as e:
        print("Erro ao enviar:", e)

def send_command(arbitration_id, data_bytes):
    msg = can.Message(
        arbitration_id=arbitration_id,
        data=data_bytes,
        is_extended_id=False
    )
    bus.send(msg)

if __name__ == "__main__":
    print("ZONY Gateway iniciado...")
    read_can()
exemplo_plantio.py
Python
# Comando plantio — CAN Frame
send_command(0x100, [0x01, 0x64, 0x05])

# Bytes:
# 0x01 → iniciar plantio
# 0x64 → velocidade (100 dec)
# 0x05 → profundidade (5 cm)

2. API Backend

FastAPI · Produção-ready

Recebe telemetria das máquinas e enfileira comandos. Endpoints REST simples e extensíveis.

main.py
Python
# main.py — FastAPI Backend

from fastapi import FastAPI
from pydantic import BaseModel
import time

app = FastAPI()

telemetry_db = []
commands_db  = []

class Telemetry(BaseModel):
    id: int
    data: list
    timestamp: float

class Command(BaseModel):
    machine_id: str
    action: str
    params: dict

@app.post("/telemetry")
def receive_telemetry(data: Telemetry):
    telemetry_db.append(data)
    return {"status": "ok"}

@app.post("/command")
def send_command(cmd: Command):
    commands_db.append(cmd)
    return {"status": "command queued"}

@app.get("/commands/{machine_id}")
def get_commands(machine_id: str):
    cmds = [c for c in commands_db if c.machine_id == machine_id]
    return cmds

@app.get("/status")
def status():
    return {
        "telemetry_count": len(telemetry_db),
        "commands_count":  len(commands_db),
        "time": time.time()
    }
POST /command
JSON
POST /command

{
  "machine_id": "tractor_01",
  "action": "plant",
  "params": {
    "crop": "milho",
    "depth": 5,
    "spacing": 0.5
  }
}
POST
/telemetry

Recebe dados CAN da máquina

POST
/command

Envia comando para máquina

GET
/commands/{machine_id}

Lista comandos pendentes

3. Arquitetura de Hardware

Edge + Sensores + Energia
ComponenteFunção
Raspberry Pi 4Processamento principal (Edge AI)
CAN HAT (MCP2515)Comunicação direta com a máquina
GPS RTK u-blox F9PPrecisão centimétrica (2–3 cm)
Módulo 4G/5G + StarlinkConectividade com ZONY Cloud
SSD 128GB+Armazenamento offline e logs

📡 Sensores

SensorFunção
Umidade do soloTomada de decisão de irrigação
pH do soloRecomendação de calagem e nutrição
Temperatura ambienteAnálise climática em tempo real
NPK sensorMapeamento de fertilidade do talhão
LIDARDetecção de obstáculos e segurança

🔋 Energia

Bateria LiPo 12VPainel solar 40W (opcional)Tomada do trator (12/24V)

4. Firmware ZONY

ESP32 / STM32 + CAN

Arquitetura do firmware

SensoresESP32 / STM32CAN BUSAtuadores
zony_firmware.ino
C++ (Arduino/ESP32)
// ZONY Firmware — ESP32 + CAN Bus
#include <CAN.h>

void setup() {
  Serial.begin(115200);
  CAN.begin(500E3);  // 500 kbps
}

void loop() {
  if (CAN.parsePacket()) {
    int command = CAN.read();

    switch (command) {
      case 0x01: startPlanting();  break;
      case 0x02: startSpray();     break;
      case 0x03: stopAll();        break;
    }
  }
}

void startPlanting() {
  Serial.println("Plantio iniciado");
  // ativar motor hidráulico / implemento
  digitalWrite(PLANT_MOTOR_PIN, HIGH);
}

void startSpray() {
  Serial.println("Pulverização iniciada");
  digitalWrite(SPRAY_VALVE_PIN, HIGH);
}

void stopAll() {
  Serial.println("PARADA DE EMERGÊNCIA");
  digitalWrite(PLANT_MOTOR_PIN, LOW);
  digitalWrite(SPRAY_VALVE_PIN, LOW);
}

🎯 Atuadores controlados

Motor hidráulico
Profundidade plantadeira
Distribuição de sementes
Irrigação
Pulverização
Freio de estacionamento

5. Integração Completa

End-to-End
ZONY Cloud AI
API FastAPI
Gateway Python
CAN Bus
Firmware ESP32
Máquina Agrícola

6. Segurança (CRÍTICO)

Fail-Safe · Watchdog

Botão físico de emergência

Parada imediata via GPIO no Edge Gateway. Independente de software.

Watchdog no firmware

ESP32/STM32 reinicia automaticamente se o loop travar.

Limites de operação

Velocidade máxima, profundidade e pressão monitoradas continuamente.

Fail-safe offline

Gateway continua operando localmente mesmo sem internet.

🔥 Resultado Final

Controle real de máquinas
Sistema autônomo completo
Integração IA + Satélite
Escala global

"Código, sensores e máquinas conectados em uma única inteligência operacional."

— ZONY Machine Intelligence™

base44
Edit with Base44