Pages: [1] 2   Go Down
Author Topic: Informações Ethernet  (Read 2923 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom dia a todos,

Estou com um arduino + ethernet shield + sensor + RTC, com isto jogo informações para a LAN e acesso via navegador com o ip local. Por enquanto apenas me aparecem o valor do relógio, do sensor e algumas variáveis, tudo funcionando corretamente.
Estou querendo controlar a saída PWM, escolhendo valores entre 0 e 255 enviando a informação do navegador para o arduino, procurei exemplos, achei algumas coisas parecidas como ligar e desligar um led, mas com problemas no script não consegui rodar.
É possível? se não for possível e fácil, poderia ser com valores fixos como 3 opções para o pwm tipo 10% 50% e 100%, ai vc clica em 10% e o led fica 10% em intensidade, clica em 100% e então ele fica em total intensidade.
Próximo passo é tentar colocar todo isto na rede externa.
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Imeireles43,

O que procurar é parecido com o discutido neste outro tópico?

http://arduino.cc/forum/index.php/topic,155376.0.html
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Imeireles43,

O que procurar é parecido com o discutido neste outro tópico?

http://arduino.cc/forum/index.php/topic,155376.0.html
Acho que é bastante diferente...

Para isso tens de colocar o Arduino como servidor (creio que já está...), servir uma página com uma form onde colocas o valor de PWM que queres e um botão. Quando clicares nesse botão, o teu browser vai enviar um pedido ao Arduino onde vai aparecer o valor da caixinha de texto e o Arduino pode usar isso para fazer o que pretendes.

Que sabes de HTTP?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Morits, ja havia lido este tópico para ver se pescava algo, mas não é isto não... é exatamente o que o bubulindo relatou.
Bubulindo, sim ja esta rodando e servindo uma página, os valores ja me aparecem lá.... pode ser assim como você falou aparecendo uma caixa de texto e digitando o novo valor
mas pode ser tambem com botões com valores ja definidos, tipo variável teste
se clicar no botão 1 a variavel teste é igual a 10, se clicar no botão dois teste = 20 e por ai vai...
não sei nada de HTTP, mas a muito tempo atras utilizava editores do pacote office por exemplo e ficava editando os códigos com o que eu ia vendo
não vou conseguir fazer então?


estou fuçando o pachube paralelamente a isto também.
« Last Edit: March 21, 2013, 10:50:51 am by lmeireles43 » Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dá para fazer... escrever HTML no Office e meter isso no microcontrolador é pedir sarilhos. smiley-razz

Não faço ideia de como está feita a tua página e é-me mais simples meter o exemplo da caixa de texto que dos radio buttons, por isso vamos por aí primeiro.

O código HTML dum formulário é algo assim:

Code:
<form name="input" action="PWM.ino" method="get">
Valor: <input type="text" name="pwm">
<input type="submit" value="Submit">
</form>
Obviamente que criares um javascript para limitar os caracteres para apenas dentro de 255 é preciso. Talvez seja possível fazer isso directamente no objecto.

Depois, ao clicares no botão de submit, o browser vai contactar o Arduino e vai pedir pelo ficheiro PWM.ino. A extensão não importa minimamente, daí ter escolhido esta. smiley

O teu programa no Arduino tem então de, ao receber este pedido, fazer parsing do pedido para ver qual o valor atribuído à variável pwm.

Sinceramente, não consigo imaginar qual seja o pedido do browser de cabeça, logo o ideal é adicionares no teu programa uma parte que deite para a porta série o que o browser pede para podermos ver e escrever uma função que pesque o valor do pwm.

Se meteres aqui o teu código actual, creio que podemos ajudar um pouco mais.

Eu tenho o meu shield ethernet empatado com uma aplicação para ver a hora a que passa o próximo autocarro. :$ LOL
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Totalmente diferente! rs

O que ocorre é que já tens o site a coletar informações do arduino e desejam o inverso, mandar do site para o arduino.

Tenho este tutorial nos favoritos http://www.instructables.com/id/Arduino-Ethernet-Shield-Tutorial/?ALLSTEPS, mas creio que o bubulindo é muito mais apto a te responder smiley-wink
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Este tem botões para ligar/desligar o led...

http://tutorial.cytron.com.my/2011/07/27/an-arduino-room-monitoring-web-server/

Tens aqui outro exemplo que é similar ao que pretendes.

http://stackoverflow.com/questions/14478011/how-can-i-read-a-string-from-a-url-to-arduino-webserver-simply-instead-of-just

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

já me deu vontade de comprar um ethernet para os meus arduinos rs
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no inicio está assim:
IPAddress ip(192,168,0,43);
EthernetServer server(80);
não fiz nenhuma página em html, apenas o host no arduino
no caso o que eu quero mudar é a variavel que esta como pbranco e pazul no final
logo eu abro o browse (IE) e digito 192.168.0.43 e me aparece as informações como abaixo:
Code:
if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
       if (c == '\n' && currentLineIsBlank) {
               client.print("Temperatura        ");
               client.println(celsius);

                client.print("Aquecedor          ");
               client.println(estados[statusHeater]);
                client.print("Refrigerador       ");
               client.println(estados[statusFan]);
               client.print("Relogio            ");
               if (agora.hora <10) client.print("0");
                     client.print(agora.hora);
                     client.print(":");
                     if (agora.minuto <10) client.print("0");
                     client.println(agora.minuto);
               client.print("Temperatura Max    ");     
               client.println(tempMax);
               client.print("Temperatura Min    ");
               client.println(tempMin);
               client.print("Potencia Branco    ");
               client.print(pbranco);
               client.println("%");
               client.print("Potencia Azul      ");
               client.print(pazul);
               client.println("%");
               break;
        }

eu utilizo ele aqui
Code:
           if (agora.hora >= led_A_on && agora.hora < led_A_off)
                     analogWrite(ledazul, Pazul);
                     else {
                     analogWrite(ledazul, 0);
                     } 
                     if (agora.hora >= led_B_on && agora.hora < led_B_off)
                     analogWrite(ledbranco, Pbranco);
                     else {
                     analogWrite(ledbranco, 0);
                     }
ou seja se estiver na hora certa ele liga a luz com a potencia programada que é a Pazul e a Pbranco que estão definidas em
int pbranco = 60;
int pazul = 30;

obs: pbranco e Pbranco são diferentes porque colocando 60 ele transforma em um numero que corresponde a 60% de 0 a 255 para o PWM
no caso eu quero pelo HTTP uma caixa de testo onde eu posso escrever e modificar esse 60 e 30, exemplo quero que o o azul fique em 20 e nao 60, então digito 20 e clico no enviar
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Já experimentaste mandar o código HTML que te deixei aqui?

E ver o que o browser faz quando carregas no botão submit?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Final de semana agora vou testar, porém onde coloco o código? creio que se abrir uma página em HTML e editar colocando o código ficaria lá bonitinho, mas como o arduino manda este código para abrir no browser?
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Final de semana agora vou testar, porém onde coloco o código? creio que se abrir uma página em HTML e editar colocando o código ficaria lá bonitinho, mas como o arduino manda este código para abrir no browser?

Code:
if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
       if (c == '\n' && currentLineIsBlank) {
               client.print("Temperatura        ");
               client.println(celsius);

                client.print("Aquecedor          ");
               client.println(estados[statusHeater]);
                client.print("Refrigerador       ");
               client.println(estados[statusFan]);
               client.print("Relogio            ");
               if (agora.hora <10) client.print("0");
                     client.print(agora.hora);
                     client.print(":");
                     if (agora.minuto <10) client.print("0");
                     client.println(agora.minuto);
               client.print("Temperatura Max    ");     
               client.println(tempMax);
               client.print("Temperatura Min    ");
               client.println(tempMin);
               client.print("Potencia Branco    ");
               client.print(pbranco);
               client.println("%");
               client.print("Potencia Azul      ");
               client.print(pazul);
               client.println("%");
//COLOCAS O CÓDIGO AQUI!!
               break; // <--------------Isto é para quê?
        }

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se eu tiver um tempinho testo ainda hoje, este break creio que deixei perdido pelo meio, não serve para nada
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

simplesmente colocar o código da este problema:
expected primary-expression before "<" token
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

coloquei este código aqui na integra:
Code:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 43 };                  // ip in lan
                 //subnet mask
EthernetServer server(80);                                      //server port
byte sampledata=50;            //some sample data - outputs 2 (ascii = 50 DEC)             
int ledPin1 = 2;  // LED pin 1
 
String readString = String(30); //string for fetching data from address
boolean LEDON1 = false; //LED status flag


void setup(){
//start Ethernet
Ethernet.begin(mac, ip);
//Set pin 4 to output
  pinMode(ledPin1, OUTPUT); 

//enable serial datada print 
  Serial.begin(9600);
}
void loop(){
// Create a client connection
 EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
    //read char by char HTTP request
    if (readString.length() < 30)
      {
        //store characters to string
        //-----readString.append(c);
          readString.concat(c);
      } 
        //output chars to serial port
        Serial.print(c);
        //if HTTP request has ended
        if (c == '\n') {
          //lets check if LED should be lighted
 //------------LED 1
           if (readString.substring(6,11) == "L1=ON")
           {
             digitalWrite(ledPin1, HIGH);    // set the LED on
             LEDON1 = true;
           }
             else if (readString.substring(6,12) == "L1=OFF")
            {
             digitalWrite(ledPin1, LOW);    // set the LED OFF
             LEDON1 = false;             
            } 
 
          // now output HTML data starting with standart header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          //set background to yellow
          client.print("<body style=background-color:yellow>");
          client.println("<h1>LED control</h1>");
          client.println("<font color='black'>");
          client.println("<br />");

//--------LED 1 CONTROLL--------
          client.println("<form method=get name=LED><input type=submit name=L1 value=ON>  LED 1<form>");     
          client.println("<form method=get name=  LED><input type=submit name=L1 value=OFF  ><form>");
            if (LEDON1)
            {
             client.print("<font color='green' size='3'> ON");
            }
            else
            {
             client.print("<font color='red' size = '3'> OFF");
            }
            client.println("<font color='black' <br />");
           
          client.println("</body></html>");
          //clearing string for next read
          readString="";
          //stopping client
          client.stop();
            }
          }
        }
      }
    } 


Funcionou perfeitamente, pagina em amarelo com boão liga e desliga.... porém quando eu copio a parte:
Code:
client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          //set background to yellow
          client.print("<body style=background-color:yellow>");
          client.println("<h1>LED control</h1>");
          client.println("<font color='black'>");
          client.println("<br />");

ele sai tudo escrito na página
Logged

Pages: [1] 2   Go Up
Jump to: