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);
?>

Exibições: 412

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço