collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Semaforo na porta do gabinete  (Lida 7191 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline adrianopedro

  • Mini Robot
  • *
  • Mensagens: 4
Semaforo na porta do gabinete
« em: 08 de Fevereiro de 2010, 12:12 »
Boas,

Eu sou completamente verde em electronica, aliás a minha formação não tem nada a ver com electronica, mas sempre gostei muito da area.
Apesar disto, tenho algum conhecimento em electronica e programação, nomeadamente java , vb.net, php, mysql, etc...

Eu queria colocar na porta do meu gabinete uma especie de semaforo para indicar se estou "Muito Ocupado", "So ocupado" ou "livre".

Já fiz isto usando a porta paralela do PC. Usava um cabo comprido ligado ao meu PC e com alguma programação em vb.net, consegui controlar a porta a ponto de acender um dos três leds que tinha na outra ponta do cabo na porta do meu gabinete.
Ou seja, tinha um pequeno programa que me permitia controlar os leds.

Acontece q a solução n é bonita, e pq troquei de PC, que já não tem porta paralela, quero encontrar outra solução.

Encontrei este forum e mais propriamente o Arduino que me parece uma solução muito porreira.

Neste momento e pelo que percebi, queria usar um Arduino + Ethernet shield, pq por cima da porta do gabinete tenho um ponto de rede (para um possivel AP).

A minha questao é, se será possivel para um "iniciante" programar um arduino + ethernet.
Já agora, alguém me pode explicar como funciona a placa de rede?

Desde já muito obrigado,
Com os melhores cumprimentos,
Adriano Pedro
« Última modificação: 08 de Fevereiro de 2010, 12:21 por adrianopedro »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: Semaforo na porta do gabinete
« Responder #1 em: 08 de Fevereiro de 2010, 18:04 »
Bem-vindo Adriano,

O teu processo é bastante fácil de implementar e para isso basta um arduino e um ethernetshield. Podes aproveitar a interface de luz que já tens do outro sistema ou fazer um novo também sem dificuldades.

O Ethernet Shield pode se portar como um cliente web consultado um webserver e reagindo a este, mas o indicado para o caso seria ficar como servidor web.

Assim podias por uma página de web comutar a luz do Arduino com um radio botton ou com um botão... Enfim, tendo o arduino como webserver depois a interface faz-se a que se quiser.

Existem exemplos já feitos para gerar PWM (para tocar um buzzer) a frequencias diferentes, ou acender e apgar leds com o ethernet shield.

Esta biblioteca já tem quase tudo feito por ti... é basicamente usar a API ou alterar os códigos exemplo para fazeres como pretendes.
http://code.google.com/p/webduino/

Depois disso, vais explorando e fazes o que te apetecer... reclamar com alguém que esteja a entrar na porta se o teu estado é ocupado, ou outra coisa qualquer ;)

Offline adrianopedro

  • Mini Robot
  • *
  • Mensagens: 4
Re: Semaforo na porta do gabinete
« Responder #2 em: 08 de Fevereiro de 2010, 22:33 »
Boa...

Muito obrigado pelas explicações...

De facto usando o ethernet shield como servidor web deve ser o mais simples e era nisso q estava a pensar, só ainda nao tinha a certeza se o ethernet shield poderia fazer de servidor web... assim fico mais esclarecido... muito obrigado!!! ;D

Vou encomendar o material  e vou dando noticias do projecto...

Abraço e mais uma vez obrigado,
Adriano

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: Semaforo na porta do gabinete
« Responder #3 em: 08 de Fevereiro de 2010, 22:36 »
Ora essa,

Vai postando as ideias e os progressos que fores fazendo para podermos ir dando inputs :P

Offline adrianopedro

  • Mini Robot
  • *
  • Mensagens: 4
Re: Semaforo na porta do gabinete
« Responder #4 em: 18 de Fevereiro de 2010, 16:48 »
Boas novamente,

Já recebi o meterial e já consegui fazer quase tudo...
O Problema esta no quase...

Já consegui programa o Arduino c/ ethernet e criar uma pagina web onde controlo três leds e onde inclusive coloquei codigo javascript para mostrar em tempo real uma webcam (de rede)...
O probblema esta nos inputs... eu queria colocar um botão de pressão como input q queria receber na pagina um sinal (tipo campainha), mas como a pagina esta do lado do cliente isto n é possivel...

E portanto estou a tentar mudar de estrategia e em vez de uma pagina Web estava a pensar criar uma aplicação em java que comunica por TCP/UDP com o arduino nos dois sentidos e resolvo a questão...

O que eu queria saber era se alguém já alguma coisa semelhante. So preciso de umas classes em java pra comunicar com o arduino, depois trato do resto..

Desde já muito obrigado,
Cumprimentos,
Adriano Pedro

Offline Afonso

  • Mini Robot
  • *
  • Mensagens: 157
  • Afonso Cunha
Re: Semaforo na porta do gabinete
« Responder #5 em: 13 de Março de 2010, 21:46 »
Bem desde já esse projeto paresse um pouco complicado , pois há muita programação envolvida .
Mas tenho a certeza que com a ajuda de um profissional como o Tiago isso será feito num isntante.
Boa sorte para o seu projeto! ;) ;D 8)
Dizem que eu sou ninguem , ninguem é perfeito por isso eu sou perfeito

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Semaforo na porta do gabinete
« Responder #6 em: 13 de Março de 2010, 22:24 »
Não sei bem como é que isto se chama mas o seguinte código:
Código: [Seleccione]
<META HTTP-EQUIV=Refresh CONTENT="5">faz com que a página seja recarregada de x em x segundos, nesse caso ao carregares num botão isso ia alterar o código da pagina podendo da próxima vez que a página é recarregada aparecer o aviso. Espero ter-me feito entender.
« Última modificação: 13 de Março de 2010, 22:46 por TigPT »

Offline adrianopedro

  • Mini Robot
  • *
  • Mensagens: 4
Re: Semaforo na porta do gabinete
« Responder #7 em: 15 de Março de 2010, 17:57 »
Boas pessoal,

Bom... antes de mais peço desculpa não ter dito mais nada... mas tenho andado bastante ocupado..
Quanto ao meu pequeno projecto... acabou por me dar algum trbaalho, mas finalmente consegui por tudo a funcionar...

É assim:

Criei um cliente em Java que comunica por socket com o arduino + ethernet e no arduino criei um servidor que esta sempre a espera de ligações...
O cliente tem ainda uma interface para se ligar a uma camera de rede da Edimax...
O cliente permite mudar a cor do semaforo e recebe um aviso sonoro quando um botao no arduino é pressionado.

Codigo do cliente foi baseado neste:

Código: [Seleccione]
import java.lang.*;
import java.io.*;
import java.net.*;

class Client {
   public static void main(String args[]) {
      try {
         Socket skt = new Socket("localhost", 1234);
         BufferedReader in = new BufferedReader(new
            InputStreamReader(skt.getInputStream()));
         System.out.print("Received string: '");

         while (!in.ready()) {}
         System.out.println(in.readLine()); // Read one line and output it

         System.out.print("'\n");
         in.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }
}

O codigo no arduino é este:

Código: [Seleccione]
/*
         * Chat Server
 *
 * A simple server that distributes any incoming messages to all
 * connected clients.  To use telnet to 10.0.0.177 and type!
 */

#include <Ethernet.h>
#include <WString.h>


// network configuration.  gateway and subnet are optional.
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { xxx,xxx,xxx,xxx };
byte gateway[] = { xxx,xxx,xxx,xxx };
byte subnet[] = { xxx,xxx,xxx,xxx };


// telnet defaults to port 23
Server server(1234);


// the number of the pushbutton pin
const int button = 2;     

// the number of the LED pins
const int red = 8;
const int yellow = 6;
const int green = 4;
// variable for reading the pushbutton status
int buttonState = LOW;

// initialize varibles       
String readString = String(30); //string for fetching data from address
String bell = String(30);
void setup()
{
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);
  delay(1000);
  // start listening for clients
  server.begin();
  //pc.connect();


  //Set pin 2,4 and 6 to output

  pinMode(green, OUTPUT); //Green LED
  pinMode(yellow, OUTPUT); //Yellow LED
  pinMode(red, OUTPUT); //Red LED

  pinMode(button,INPUT); //Push button

}

void loop()
{
  buttonState=digitalRead(button);

 
  if(server.available()){   
      switchLed();
    }
 
  if(buttonState==HIGH){
    server.begin();
    String b="bell";
    server.println(b);
    //digitalWrite(green,HIGH);
    delay(1000);
    buttonState=LOW;
  }
}

void switchLed(){
  Client pc = server.available();
  readString="";
  char input = pc.read();
  pc.println(input);
  readString.append(input);

  if(readString.contains("g")){
    digitalWrite(green,HIGH);
    digitalWrite(red,LOW);
    digitalWrite(yellow,LOW);
    readString="";
  }
  if(readString.contains("y")){
    digitalWrite(green,LOW);
    digitalWrite(red,LOW);
    digitalWrite(yellow,HIGH);
    readString="";
  }
  if(readString.contains("r")){
    digitalWrite(green,LOW);
    digitalWrite(red,HIGH);
    digitalWrite(yellow,LOW);
    readString="";
  }

}

Desculpem mas ainda não esta devidamente comentado...
De qualquer forma se tiverem alguma duvida, estejam há vontade..

Depois colo imagens do arduino..

Cumps,
AP

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Semaforo na porta do gabinete
« Responder #8 em: 15 de Março de 2010, 20:40 »
Está com bom aspecto :)
Tu não consegues colocar esse programa em java dentro de uma página web? Tipo como as vezes quando abrimos uma página em que aparece o logo grande do java a carregar.

Offline HyugaTS

  • Mini Robot
  • *
  • Mensagens: 16
  • Kill all humans!
Re: Semaforo na porta do gabinete
« Responder #9 em: 16 de Março de 2010, 11:25 »
Está com bom aspecto :)
Tu não consegues colocar esse programa em java dentro de uma página web? Tipo como as vezes quando abrimos uma página em que aparece o logo grande do java a carregar.
A isso dá-se o nome de Applet e implica que o código java esteja no servidor (ou num servidor web) a partir do qual seja feito o download para o browser de modo a que a maquina virtual Java o possa interpretar.

Não sei bem como é que isto se chama mas o seguinte código:
Código: [Seleccione]
<META HTTP-EQUIV=Refresh CONTENT="5">faz com que a página seja recarregada de x em x segundos, nesse caso ao carregares num botão isso ia alterar o código da pagina podendo da próxima vez que a página é recarregada aparecer o aviso. Espero ter-me feito entender.

Seria uma boa idea, mas em vez de recarregares a página porque não carregar apenas os dados que precisas usando a técnica AJAX
Podes ver exemplos aqui

My software never has bugs. It just develops random features.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Semaforo na porta do gabinete
« Responder #10 em: 16 de Março de 2010, 11:56 »
O TigPT numa conversa sobre o ethernet shield também já me tinha dito que com AJAX dava mas como não sei nada de AJAX não falei sobre isso, mas por acaso também poderia ter sugerido :| (quanto ao não saber nada tenho que arranjar uma horita porque os tutoriais da w3schools fazem milagres :P )
« Última modificação: 16 de Março de 2010, 11:58 por metRo_ »