Por que PHP no mundo do hardware? Quebrando estereótipos
\n\nQuando você ouve "desenvolvimento embarcado", a primeira coisa que vem à mente é C, assembly, talvez MicroPython. PHP? Uma linguagem para web que roda no servidor e gera HTML. O que ela tem a ver com microcontroladores, sensores e firmwares?
\n\nNa verdade, tem tudo a ver. O PHP há muito tempo superou o rótulo de "linguagem de script para fóruns". Interpretadores modernos (a partir do PHP 7+) podem rodar em arquiteturas ARM, e existem várias soluções interessantes para ambientes embarcados. Este artigo não é um relatório acadêmico, mas um guia prático sobre como o PHP pode se tornar seu aliado no mundo dos sistemas embarcados. Vamos analisar casos reais, escrever código e ver onde isso é realmente útil.
\n\nQuando o PHP é uma escolha inteligente para sistemas embarcados?
\n\nNão confunda "microcontrolador com 2 KB de RAM" com "computador de placa única rodando Linux". O PHP não roda no ATmega328P (Arduino Uno) — para isso, use C/C++. Mas se seu dispositivo roda em:
\n- \n
- ESP32 (ESP-IDF ou ESP8266 com RTOS); \n
- Raspberry Pi (ou similares com Allwinner, Rockchip); \n
- Roteadores OpenWrt com MIPS/ARM; \n
- Controladores industriais rodando Linux. \n
…então o PHP pode ser a "cola" ideal entre seu hardware e o mundo externo. Especialmente se você precisa criar rapidamente uma interface web para controlar o dispositivo, processar dados de sensores ou enviá-los para a nuvem.
\n\nComo rodar PHP em um microcontrolador? Opções reais
\n\nExistem duas abordagens principais, e vamos ver ambas com exemplos de código.
\n\n1. PHP no ESP32 com ESP-IDF (PHP nativo)
\nSim, existem projetos que portam o interpretador PHP para microcontroladores bare-metal. O mais conhecido é o PHP for ESP32 (um fork experimental). Uma versão reduzida da linguagem, sem multithreading, mas com sintaxe básica, arrays, strings e GPIO.
\n\nExemplo: piscando um LED com PHP no ESP32
\n<?php\n// Inclui a biblioteca para trabalhar com pinos\nrequire "gpio.php";\n\n// Configura o GPIO2 (LED interno em muitos ESP32) como saída\n$pin = new GPIO(2, GPIO::OUTPUT);\n\nwhile (true) {\n $pin->write(GPIO::HIGH);\n delay(1000); // 1 segundo\n $pin->write(GPIO::LOW);\n delay(1000);\n}\n?>\nO código parece familiar, não é? Não é brincadeira — esse projeto existe em repositórios do GitHub. Claro, o desempenho é inferior ao C, mas para prototipagem é excelente.
\n\n2. PHP como "camada de servidor" em SBCs compatíveis com Linux
\nEste é o cenário mais prático. Você pega um Raspberry Pi ou Orange Pi, instala o PHP padrão (por exemplo, php8.3-cli) e o utiliza para:
- \n
- Ler dados de GPIO via
gpiodouwiringPi; \n - Trabalhar com sensores I2C/SPI (temperatura, umidade, pressão); \n
- Criar uma API REST para controlar o dispositivo. \n
Exemplo: lendo temperatura do DHT22 com PHP no Raspberry Pi
\n<?php\n// Usa comando shell para ler dados (via pigpio)\n$output = shell_exec('pigs in 17'); // GPIO17\nif ($output === false) {\n die("Erro ao ler o sensor");\n}\n\n// Processa e exibe\n$data = explode(" ", trim($output));\n$humidity = $data[0] / 10;\n$temperature = $data[1] / 10;\n\necho "Temperatura: {$temperature}°C, Umidade: {$humidity}%\\n";\n?>\nVocê pode ir além e encapsular isso em um servidor web:
\n<?php\n// api.php - endpoint REST simples\nheader('Content-Type: application/json');\n\n$temperature = readSensor(); // sua função\necho json_encode([\n 'status' => 'ok',\n 'temp' => $temperature,\n 'timestamp' => time()\n]);\n?>\nExecute: php -S 0.0.0.0:8080 api.php — e pronto, você tem um gateway IoT!