PHP das coisas!

Felipe Limeira
Training Center
Published in
6 min readFeb 21, 2018

PHP é uma das linguagens mais utilizadas da web segundo pesquisas da W3Techs (https://w3techs.com/technologies/details/pl-php/all/all) e do Blog Linux (https://haydenjames.io/80-percent-web-powered-by-php/). Esses números podem ser explicados pela grande maioria de CMS serem escritos em PHP e pela linguagem ser relativamente simples de ser introduzida.

A verdade, é que quem utiliza a linguagem no dia dia, sabe que é uma linguagem apaixonante, ainda mais com um mascote como esse:

ElePHPant o mascote do PHP.

Mas vamos ao que interessa… Acho que o título do artigo é bem sugestivo, a ideia é introduzir a algo não tão comentado no mundo do PHP. Afinal, é possível utilizar PHP em projetos IoT (Internet of Things/Internet das Coisas)? Para ser mais específico, é possível utilizar PHP na “parte” de coisas de IoT?

E a resposta imediata é sim, é possível! E vou mostrar como podemos fazer isso, mas antes precisamos de um pouco de contexto.

Mas o que é IoT?

A Internet das Coisas ou Internet of Things (IoT), é um termo utilizado para denominar o conceito de conectar objetos (carro, relógio, roupas, casas e etc) a internet. Dessa forma, é possível capturar dados que vão permitir tomadas de decisões mais inteligentes.

A Internet das Coisas emergiu dos avanços de várias áreas como sistemas embarcados, microeletrônica, comunicação e sensoriamento. De fato, a IoT tem recebido bastante atenção tanto da academia quanto da indústria, devido ao seu potencial de uso nas mais diversas áreas das atividades humanas.

A Internet das Coisas, em poucas palavras, nada mais é que uma extensão da Internet atual, que proporciona aos objetos do dia-a-dia (quaisquer que sejam), mas com capacidade computacional e de comunicação, se conectarem à Internet. A conexão com a rede mundial de computadores viabilizará, primeiro, controlar remotamente os objetos e, segundo, permitir que os próprios objetos sejam acessados como provedores de serviços. Estas novas habilidades, dos objetos comuns, geram um grande número de oportunidades tanto no âmbito acadêmico quanto no industrial. Todavia, estas possibilidades apresentam riscos e acarretam amplos desafios técnicos e sociais. — [1] Internet das Coisas

IoT não é uma novidade, é um termo que foi criado em setembro de 1999 por Kevin Ashton. Está cada vez mais presente em nossas vidas e na maior parte do tempo de uma forma bem discreta. Uma das suas motivações é facilitar o dia a dia das pessoas ou até mesmo possibilitar uma qualidade de vida melhor.

São infinitas as possibilidades e aplicações da IoT. Ela pode ser aplicada em casas, agronegócios, automóveis, Smart Cities e outros, ou seja, IoT já é uma realidade que merece atenção e carinho.

Mãos a obra!!!

Requisitos:

Para podermos mexer com IoT e PHP vamos precisar de algumas placas eletrônicas, além do conhecimento prévio da própria linguagem de programação. Segue a lista do que será necessário:

  • Raspberry Pi 2 modelo B. - R$149
  • Micro Servo 9g SG90 TowerPro. - R$ 19,00
  • LED (qualquer cor). - R$ 0,90
  • Protoboard. - R$15,49
  • Jumpers macho-macho. - R$ 8,00
  • Jumpers macho-femea. - R$ 8,00
  • PHP 7.0

Investimos um total de R$ 200,39 para fazer os exercícios propostos nesse artigo, mas vale lembrar que esses materiais podem ser reaproveitados em projetos futuros =)

Obs: mais abaixo eu disponibilizei links com sugestões para a compra dos equipamentos.

Montando o circuito elétrico

Nesse artigo vamos controlar um LED e um servo motor utilizando PHP com Raspberry PI. Abaixo, você pode ver os circuitos para ambos os casos.

Para entender melhor os circuitos é legal entender o que são os pinos GPIO (General Purpose Input/Output). GPIO é basicamente um conjunto de pinos responsável por fazer a comunicação de entrada e saída de sinais digitais. Com esses pinos na Raspberry, é possível controlar uma série de periféricos como LEDs, Motores, Relês, fazer leitura de sensores e botões, entre outros.

Segue o mapa dos pinos do modelo utilizado nesse artigo:

Circuito do LED:

Circuito elétrico para uma Raspberry PI acender um LED.

Circuito do servo motor:

Circuito elétrico para uma Raspberry PI controlar um servo motor.

Show me the code!

O código para o primeiro circuito (do LED) é o seguinte:

O código acima é relativamente simples, e essa é a ideia mesmo, mostrar como é simples entrar nesse mundo de embarcados utilizando a linguagem na qual você se sente confortável.

O que vale destacar no código acima são os comandos exec() que são responsáveis por executar comandos ou programas externos.

  • exec(“sudo gpio -g mode 25 out”); — Esse comando é responsável por informar a porta da Raspberry que será utilizada.
  • exec(“sudo gpio -g write 25 1”); — Esse comando é responsável por escrever um valor na porta, nesse caso 1 (true ou on) ou 0 (false ou off).

Agora vamos ao código do segundo circuito (do Servo Motor):

Para controlar o servo motor, vamos utilizar a porta GPIO18 com PWM (Pulse-Width Modulation).

PWM é uma técnica de modulação que gera uma onda quadrada, baseada na variação da largura de pulso de acordo com um valor chamado de duty cycle. Embora essa técnica de modulação possa ser utilizada para codificar a informação para transmissão, a sua utilização principal é permitir o controle da energia fornecida aos dispositivos elétricos, especialmente motores. — [2] PWM

  • exec(“gpio -g mode 18 pwm && gpio pwm-ms && gpio pwmc 192 && gpio pwmr 2000”); — Esse comando é responsável por configurar a porta e informar a frequência em que ela irá trabalhar com o motor.

O servo motor, diferentemente de outros motores, possui giro limitado e por esse motivo eu utilizo sessão no código para controlar o valor atual em que o servo está, e incrementar e decrementar conforme essa limitação.

  • exec(‘gpio -g pwm 18 ‘.$_SESSION[‘val’]); — Esse código vai ser o responsável por enviar o valor onde o servo motor irá se posicionar.

Rodando nossa aplicação

Para rodar a aplicação, podemos executar a linha de comando a seguir dentro do diretório do projeto na Raspberry.

php -S localhost:8000

Ou, utilizar um servidor Apache/Nginx para executar nossa aplicação.

Conclusão

Essa é apenas a primeira parte de uma série de artigos que quero fazer sobre o assunto, tenho a intenção de chegar a mostrar como criar um braço robótico utilizando PHP, portanto aguardem pois vem mais por ai. =)

E antes que surjam questionamentos como “nossa utilizar PHP para isso?”, gostaria de deixar claro que a ideia desse e dos próximos artigos, é deixar claro que a linguagem não pode ser um limitante para que vocês aprendam novas coisas e tecnologias, pelo contrario, ela deve ser apenas um meio. Com isso, utilizando o PHP nesse caso eu gostaria de deixar informações e coisas legais, disponíveis para todos.

Então basicamente, sim, eu quis fazer como PHP porque eu quis, e não existe nenhum problema nisso, devemos sempre resolver o problema e manter uma melhora constante dessa resolução, e não nos prendermos a coisas como “minha linguagem é a melhor por que é a melhor”.

Então é isso pessoal, em breve estarei de volta com a continuação desse artigo, utilizando PHP, JavaScript e o que mais der para utilizar (rsrsrs).

Qualquer dúvida podem entrar em contato comigo pelo Twitter @lflimeira02, no Slack do Training Center ou no Slack do PHPSP com o username @lflimeira.

Links para os materiais:

Links complementares:

--

--