Você está na página 1de 7

PHP Potter e o Arduino filosofal By: bibar

Intro:
A materia desse ano pode ser dividida em 2 partes separadas que
funcionam juntas: montagem de circuito & arduino e php. Da pra cobrir cada
topico separadamente e mostra como que eles conversam entre si. (Nota: não
fala sobre o cron por motivos de preguica e também porque já tem mt tutorial
de 5 min na internet)

Circuito & arduino:


O arduino é uma placa que esta ligada a cirquitos eletricos e pode ser
controlada com programacao, e isso significa que você tem que montar o
cricuito eletrico e progamar a placa. Pra montar o circuito fisico na placa, não
tem muito o que explicar, basta conoectar cada componente em uma das
portas da placa. Por meio dessa porta, o arduino vai enviar corente eletrica e
controlar esses componentes de acordo com o codigo, podendo ler dados ou
gerar um tipo de saida.

Existem tres tipos de componentes:


- Input: componentes de entrada de dados (como botoes, sensores
de temperatura, etc)
- Output: componentes de saida de dados (como leds, buzzers, etc)
- Construcao: componentes pra montar o circuito, mas não interagem
com dados (resistores e afims)

A maioria dos componentes tem duas portas, a


positiva e a negativa. A porta negatica vai ligada na porta
GND da placa, e a positiva na porta digital/analógica.
Porém, alguns compontentes (como o sensor de
temperatura) tem uma 3a saida, a S. Para esse tipo de
componente, o negativo continua indo no GND, o positivo
vai no 5V e o S vai na porta digital/analógica.

Pra controla esse monte de componente é preciso de um codigo pra


programar. O arfuino usauma variacao própria da linguagem C, então a sintax
de tudo é literalme tne a mesma. O programa é dividido em dois blocos, o
setup() e o loop(). O setup() sera a primeira coisa a ser executada quando o
arduino ligar, e o loop() sera executado logo aops o setup(), e seguira
executando o loop() ate… sempre. Ou ate que alguém desligue ou destrua,
você entendeu. Ou seja, no setup() ficam definicoes de constantes, definicao
de portas e definicao de monitor, e no loop fica o programa que manipula os
componentes em si.
Para utilizar uma porta, é preciso declarar ela no setup. Isso é feito com a
funcao pinMode(porta, modo), que recebe como parametro o numero da porta
e o modo (entrada ou saida) que ela operara. Portas analogicas não precisam
ser inicializadas pelo pinMode().

Para interagir com um componete, é possível utilizar os metodos


analogRead(porta) e digitalRead(porta) para leitura de dados e
analogWrite(porta, valor) e digitalWrite(porta, valor) para escrita. Os metodos
Read() vao ver se ha corrente eletrica passado por uma porta, e os Write() vao
definir se passa corrente ou não numa porta.
Nesse exemplo, vamos supor que haja um botao na porta 2 e um led na
porta 13

Ainda existe o monitor serial, que funciona como entrada e saida. Ele não
existe fisicamente , então pra acessar ele, tem que ser virtualmente, pela
própria IDE do arduino. Ele funciona quenem um terminal, pode tanto inprimir
quanto ler dados. Para utilizado, é preciso rodar o comando Serial.begin(freq)
(Normalmetne, a freq vale 9600).
Como eu disse, ele funciona quenem um terminal, então nada mais justo
que ele tenha suas funcoes equivalentes ao printf() e scanf(). Para imprimir
qualquer coisa no monitor serial, basta usar o Serial.println(). Ja para ler
alguma coisa, é possível usar o serail.read(), que retorna sempre o primeiro
byte no buffer do serial, ou retorna -1 caso não haja nada no buffer. Então, se
você escrever “pau no cu do gato asiatico” no serial e usar o serial.read(), ele
ira retornar ‘p’. para evitar que o metodo retorne -1, pode se usar o metodo
serial.avaliable() junto de um if, que checa se existe caracteres para leitura no
buffer.
Segue um exemplo de um programa que liga e desliga um led conforme
o que foi escrito no serial

Com um pouco de logica de


programacao, da pra fazer quase qualquer
coisa que fazia com o terminal do C, como
por exemplo, ler uma string (embora eu
não veja muita utilidade de se trabalhar
com strings em ard- ah você entendeu o
objetivo aqui é mostra que da pra fazer,
não achar umautilidade pro que da pra
fazer).

Para fechar essa parte de arduino, o manual do mundo tá literalmetne


fazendo videoaulas disso, desde montagem de circuito ate criacao de codigo,
eu eu sou forcado a recomendar porque tá tudo mt bem explicadinho:
- https://www.youtube.com/watch?v=sv9dDtYnE1g
Integracao com o PHP:
Pra comecar, vem a pergunta: o que o php tem a ver c a poha do
arduino? Não faz sentido nenhum, de comeco, afinal php é feito pra
desenvolvimente web e o arduino serve pra controlar componentes eletronicos.
Pra comecar, você sabia que o php tem funcoes pra abrir e mexer em arquivos,
quenem os fopen do C? Pois é.

Ok, e o que it have bird? Bom, tudo comeca no local onde o php roda: no
Linux. A maneira como o Linux lida com entradas, drivers, etc é um tanto
peculiar: o Linux enxerga qualquer coisa como um arquivo. Ou seja, da pra
você abrir, e mexer em qualquer coisa no Linux como se fosse um arquivo,
seja essa coisa um fone na entrada de audio, um executavel, um drive de dvd
(não o dvd dentro do drive, o drive em si), ou ate mesmo… um arduino
conectado na porta usb do seu pc.
Ou seja, ce pode abrir a porta usb usando php e se comunicar com o
arduino como se fosse um arquivo. Pqp genial o cara que penso nisso é um
fudido parabéns.
As entradas USBs do Linux estao na pasta /dev, e tem o nome de
ttyUSBN (sendo N um numero). Entao, da pra você rodar o comando $porta =
fopen(“/dev/ttyUSB0”, “w+”) e você tera uma variavel $porta com acesso a
placa arduino.
E agora vem o plot twist: o que você esta abrindo de fato, nada mais é do
que o monitor serial. Ou seja, se você rodar o fwrite() (que escreve no arquivo),
vai ser como se escrever no monitor serial, e se você rodar o fgets() (que
retorna uma linha do arquivo), ele vai retornar o que foi escrito no monitor
serial.
Como da pra ver no exemplo, da pra fazer uma comunicacao de dados
entre o arduino e o php. Isso significa que qualquer dado do arduino pode ser
usado em, por exemplo, uma pagina web, ou salvos em um banco de dados,
sei la, as possibilidades são quase inifinitas. O php possui funcoes nativas pra
lidar com banco de dados, então com algumas alteracoes no codigo, podemos
salvar no banco de dados toda vez que alguém mexer no led, por exemplo.
(caraio fico grande, mal coube hsauehsaue)

Você também pode gostar