Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Antonio Terceiro - | Ninguém está seguindo este artigo ainda.

Novo artigo publicado: Amostragem Adaptativa Aplicada a um Algoritmo Difuso Voltado a Grafos

9 de Outubro de 2019, 17:02, por br.renatocandido.org - 0sem comentários ainda

Artigo apresentado no Simpósio Brasileiro de Telecomunicações 2019. É proposto um método de amostragem adaptativa para o algoritmo difuso para a filtragem adaptativa de sinais sobre grafos. Verifica-se uma redução no custo computacional em regime permanente preservando-se o desempenho do algoritmo. Também é apresentada uma análise para facilitar a escolha de seus parâmetros. O arquivo […]



Novo artigo publicado: An Adaptive Sampling Technique for Graph Diffusion LMS Algorithm

11 de Setembro de 2019, 14:28, por br.renatocandido.org - 0sem comentários ainda

Artigo apresentado no 27th European Signal Processing Conference (EUSIPCO). É proposto um método de amostragem adaptativa para o algoritmo difuso para a filtragem adaptativa de sinais sobre grafos. A solução permite uma redução no custo computacional em regime permanente preservando-se o desempenho do algoritmo. Também é apresentada uma análise para facilitar a escolha de seus […]



Conversor de legendas VTT para SRT

7 de Março de 2019, 23:41, por br.renatocandido.org - 0sem comentários ainda

Às vezes é interessante utilizar material no Youtube para apresentações ou aulas. Com o youtube-dl, é possível fazer o download tanto do vídeo como das legendas disponíveis para reprodução offline. No entanto, as legendas são disponibilizadas na maioria das vezes no formato WebVTT, que é o padrão W3C para legendas de vídeos, utilizando arquivos com […]



Novo artigo publicado: Equalization in chaos-based communication systems using kernel adaptive filtering

21 de Fevereiro de 2019, 15:04, por br.renatocandido.org - 0sem comentários ainda

Como uma extensão do trabalho apresentado no SPS 2017, o artigo apresenta um estudo do uso de filtros adaptativos baseados em kernel para equalização em um sistema de comunicação baseado em caos. Diferente das abordagens que utilizamos anteriormente, nessa proposta, o receptor não tem conhecimento sobre o sistema utilizado no transmissor para geração do sinal […]



Acendendo um LED via Internet com Arduino e o Ethernet Shield

8 de Setembro de 2013, 14:09, por Software Livre Brasil - 0sem comentários ainda

Com o Ethernet Shield, é possível conectar o Arduino a uma rede ethernet e montar projetos que envolvam o envio ou recebimento de informações via rede ou internet. O dispositivo, juntamente com a biblioteca de controle, permite o projeto de aplicações para rede de forma fácil. Não é necessário se preocupar com os esquemas complicados de sinalização em redes ethernet já que todo o controle e conexão são feitos por rotinas da biblioteca. Após estabelecida a conexão, basta ler ou escrever dados através dela, de forma semelhante à uma conexão serial convencional.

Segue um exemplo de um projeto para a disponibilização de uma página web que permite ligar ou desligar uma porta digital do Arduino através da rede local ou da internet. Em uma aplicação prática, o projeto poderia ser utilizado para controlar uma lâmpada, servindo como uma boa aplicação “Hello World” de automação residencial com Arduino. Aqui, a ideia é se concentrar no projeto de software necessário para tal aplicação. Por isso, vamos considerar a ligação de um led à porta do Arduino e mostrar uma das formas mais caras de acender um led que podem ser propostas.

Neste projeto, foi utilizado o Ethernet Shield baseado no chip Wiznet W5100. Esse chip provê toda a pilha TCP/IP de forma transparente, facilitando o projeto, já que não é necessário se preocupar com os esquemas de sinalização e controles do TCP/IP. Vale lembrar que existem outros shields ethernet, mais simples e mais baratos, que utilizam chips que exigem que os controles e a sinalização TCP/IP sejam implementados no sketch Arduino.

A configuração de harware para este projeto é muito simples: basta conectar o Ethernet Shield ao Arduino e ligar um led em série com um resistor de 1KOhm entre o pino 6 do Shield e o terra (GND).

A ideia é acessar o endereço IP associado ao Arduino pelo navegador e receber uma página com um link para ligar o led e outro para desligá-lo. Para isso, foi utilizado o seguinte código:

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 250, 235 };

EthernetServer server(80);

String readString;
int Pin = 6;

void setup(){

  pinMode(Pin, OUTPUT);
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop(){
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        if (readString.length() < 100) {
          readString += c;
        }

        if (c == '\n') {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<BODY>");
          client.println("<H1>Acende LED</H1>");
          client.println("<hr />");
          client.println("<br />");

          client.println("<a href=\"/?ledon\"\">Ligar o led</a>");
          client.println("<a href=\"/?ledoff\"\">Desligar o led</a><br />");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          client.stop();

          if(readString.indexOf("?ledon") > 0)
          {
            digitalWrite(Pin, HIGH);
          }
          else {
            if(readString.indexOf("?ledoff") > 0)
            {
              digitalWrite(Pin, LOW);
            }
          }
          readString="";
        }
      }
    }
  }
}

Para controlar o Ethernet Shield, é utilizada a biblioteca Ethernet. A comunicação entre o Arduino e o Shield é feita utilizando o protocolo SPI, daí a necessidade da importação da biblioteca SPI também. Vale lembrar que a comunicação via SPI se dá através dos pinos 10, 11, 12 e 13 no Arduino Uno, o que impossibilita a utilização destes pinos no projeto.

A configuração do servidor funcionando na porta 80 é feita pelas linhas

EthernetServer server(80);
Ethernet.begin(mac, ip);
server.begin();

sendo o endereço MAC e o endereço IP definidos pelos vetores mac e ip criados nas linhas 4 e 5.

Após a configuração inicial, o programa espera pela conexão de um cliente e, quando detectada, lê os caracteres enviados ao servidor relativos à requisição GET feita pelo cliente através do acesso pelo navegador.

Os caracteres são recebidos um a um e são guardados em sequência na variável readString. É utilizada uma condicional para limitar o número de caracteres recebidos em 100. A cada caractere recebido, é feito um teste para verificar se trata-se de um fim de linha (\n, um “ENTER”). Nesse caso, é enviada a resposta ao cliente, que é uma resposta bem sucedida à requisição (HTTP/1.1 200 OK), contendo uma página HTML com links para ligar e desligar o led.

Os links para ligar e desligar o led utilizam as query strings ?ledon e ?ledoff para que o servidor consiga identificar o comando vindo do cliente. Após a resposta à requisição, é feito um teste para verificar se o endereço requisitado pelo cliente possui uma destas query strings, através da verificação da variável readString pela presença das sequências ?ledon ou ?ledoff. A partir dessa informação, o led é ligado ou desligado e, por fim, a variável readString é reiniciada.

Desta forma, é possível controlar o led a partir de um ponto de acesso à rede local. Também é possível controlá-lo via Internet, configurando o roteador para fazer um redirecionamento da porta 80 para o IP associado ao Arduino e acessando a página utilizando o IP público, fornecido pelo provedor de internet. No entanto, vale comentar que esta configuração não leva em conta a segurança, permitindo que qualquer um que possua o IP controle o led via internet.