Amigos, adquiri a algum tempo atrás um roteador modelo TP-LINK MR-3020 já pensando em usá-lo como Shield de baixo custo e mais robusto em relação aos do mercado, pois além de me servir como Shield Ethernet o mesmo fará a função de um servidor linux com a minha aplicação em PHP para controlar as portas do arduino.
Estarei explicando o o breve funcionamento atualmente e gostaria que alguém me ajudasse nesta parte ou se possível incrementasse algo que estivesse a ser melhorado.
O roteador foi adaptado e refeito o firmware para OPENWRT, após isso foi acrescentado os modulos para habilitar as portas de Storage USB e Serial, após isso foi passado todo o sistema de root para raiz do pendrive, a comunicação entre o roteador e Arduino funciona através do envio via serial do próprio Roteador, não precisando ligar nenhuma interface serial shield ao roteador, então ligo apenas os pinos TX e RX dele para as portas RX(0) e TX(1) do arduino sendo assim eu compilei um exemplo simples de script para ligar algumas portas, como segue abaixo:
( Créditos para Autor: Fernando Krein Pinheiro )
--------
int ledPin13 = 13;
int ledPin11 = 11;
int ledPin9 = 9;
int ledPin7 = 7;
void setup() {
Serial.begin(115200);
pinMode(ledPin13, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin7, OUTPUT);
}
void loop()
{
char caracter;
caracter = Serial.read();
//se pressionado "v" liga o led verde
if(caracter == 'v')
{
digitalWrite(ledPin13, HIGH);
}
else
//Se pressionado "z" liga o led azul
if(caracter == 'z')
{
digitalWrite(ledPin11, HIGH);
}
else
//S pressionado "l" liga o led laranja
if(caracter == 'l')
{
digitalWrite(ledPin9, HIGH);
}
else
//Se pressionado "a" liga o led amarelo
if(caracter == 'a')
{
digitalWrite(ledPin7, HIGH);
}
delay(1000);
}
Código simples que ao receber determinada letra ele simplesmente liga, acontece que o envio vem pela porta serial do roteador que por sua vez envia por PHP da seguinte maneira:
<?php
$port = fopen("/dev/ttyATH0", "w");
if ($_POST['estado']=="Amarelo")
{
echo "Ligou o Amarelo";
fwrite($port, "a");
}
if ($_POST['estado']=="Azul")
{
echo "Ligou o Azul";
fwrite($port, "z");
}
if ($_POST['estado']=="Laranja")
{
echo "Ligou o Laranja";
fwrite($port, "l");
}
if ($_POST['estado']=="Verde")
{
echo "Ligou o Verde";
fwrite($port, "v");
}
fclose($port);
?>
----------------
Tudo funcionando perfeito e as luzes ligando após escolher a opção correta no HTML, meu problema agora é que eu queria saber como eu faria para o servidor via serial pegasse a informação da porta digital digamos 13 e me retornasse um valor XXX ou YYY dizendo que ela está ligada... assim eu faço a parte de status informando que realmente a porta estaria ligada...
Caso alguém tenha interesse nos passos pra usar o roteador poderei passar depois, já fiz instalação nele de PHP5, PHP-CGI, Lighthttp, etc... muito boa a solução. se alguém pode me ajudar neste projeto.... Abraço a todos.
<?php$port = fopen("/dev/ttyATH0", "w");
if ($_POST['estado']=="Amarelo")
{
echo "Ligou o Amarelo";
fwrite($port, "a");
}
if ($_POST['estado']=="Azul")
{
echo "Ligou o Azul";
fwrite($port, "z");
}
if ($_POST['estado']=="Laranja")
{
echo "Ligou o Laranja";
fwrite($port, "l");
}
if ($_POST['estado']=="Verde")
{
echo "Ligou o Verde";
fwrite($port, "v");
}
fclose($port);
?>
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por