Pages: [1]   Go Down
Author Topic: Arduino + ENC28J60 + Website - Problemas  (Read 1423 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Olá pessoal, estou vivendo aqui um drama com meu ENC28J60, já revirei a internet e não encontrei nada que funcionasse 100%, pesquisei aqui e em outros fóruns, mas o pessoal dificilmente queria fazer o mesmo que eu, então vamos lá.

Tenho um ENC28J60, e quero conectar o meu arduino a esse shield, e então conecta-los a um website, onde lá poderei ter as informações dos meus sensores, diante de pesquisas, vi que utilizavam para isso a biblioteca client.h e também analisei que havia uma forma inicial de conexão, que era assim :

Quote
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,6 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,1, 1 };  // ip do roteador
byte subnet[] = { 255, 255, 0, 0 };

Também analisei que no php para essas conexões com websites, haviam esse trecho:

Quote
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Se conecta ao IP e Porta:
socket_connect($sock,"187.15.6.131", 8081);

Bom, acho que é isso que tenho de informações, vou postar também o código que uso para adquirir a temperatura do sensor

Quote
#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};                                                     
static uint8_t ip[4] = {192, 168, 0,6};
static uint16_t port = 80;

ETHER_28J60 e;

int analog;
float temperatura;

void setup()
{
  e.setup(mac, ip, port);
}

void loop()
{
  if (e.serviceRequest())
  {
    e.print("<html><head><title>Temperatura TESTE</title></head><body>");
    e.print("Temperatura em Celsius: ");
    analog = analogRead(0);
    temperatura = (analog * 0.00488)*100;
    e.print(temperatura);
    e.respond();
  }
  delay(100);
}


Resumindo: Eu consigo fazer acesso local sem problemas, porém não consigo colocar isso em um website, uso um host de graça, e nele me informa o IP do meu site e a Port, que é 80, então é isso pessoal, muito obrigado!
Logged

Bom Princípio - RS
Offline Offline
Sr. Member
****
Karma: 0
Posts: 263
SOFTWARE DEVELOPER, HACKER, RASPBERRY/ARDUINO/QT ENTHUSIAST & METALLICA FAN
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Não entendi o que esta querendo fazer, entendi a intenção mas não o que você fez em estrutura.

Primeiro: O arduino deve estar em um servidor, conectado diretamente, OU estar com um Ethernet ou Wireless Shield OU estar ligado ha um PC com uma interface software que comunica PC com a Internet.

Pelo que de para entender você quer ler sensores em um site, eu recomendo usar algum serviço de DNS como o no-ip.org e fazer o dns mandar as requests parao IP do seu PC local que possui internet, dai no se PC você faz o PHP conectar ao arduino, ou até o seu modem conecta ao arduino diretamente pelo ENC28J60 e eles se comunicam pela porta 80. Alguns modens já tem até interface para você colocar o no-ip.org, o meu tem pelo menos, eu usei um domínio meu e ficou show de bola, quando alguém acessa o meu domínio cai direto no meu PC e lê os dados do arduino, ou envia dados para ele...
Logged

My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Obrigado MarceloBoeira!

É o seguinte, eu queria conectar o meu ENC28J60 a internet, e fazer uma conexão dele com o um host, sem meu computador entrar no meio, quero algo "autonomo", que funcione conectada na minha internet, mas sem pc mesmo.

Pois é, eu ouvi falando sobre esse no-ip.org, porém não pesquisei muito, pois seria algo meio inseguro, pois acessariam diretamente o meu shield, e não ao meu site, além do que meu shield não suportou 2 acessos simultâneos aqui em casa, então no no-ip seria a mesma coisa eu acho, e também pq estou pensando em colocar layout e tudo mais, então realmente seria uma melhor opção usar um host, eu acho, muito obrigado pela sua dica, caso ela me ofereça segurança e eu possa faze-la funcionar sem ter meu pc ligado, e eu consiga colocar imagens no site e um dominio próprio, eu aceito dicas de como executar!

Obrigadão cara!
Logged

Bom Princípio - RS
Offline Offline
Sr. Member
****
Karma: 0
Posts: 263
SOFTWARE DEVELOPER, HACKER, RASPBERRY/ARDUINO/QT ENTHUSIAST & METALLICA FAN
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ta, acredito ter entendido, você quer que a shield conecte-se com o seu site e seu site mostre os dados ?

Se for isso, o que você vai ter que fazer é criar uma página no seu site que possua uma foma de passagem de dados, eu sugiro, se forem poucos dados passar por GET, por exemplo:

O Arduino Acessaria a URL:
http://seusite.com.br/sensores/ler.php?temperatura=VALOR, só que no lugar de valor você colocaria o valor da variável lida...

Se forem muitos dados, os dados muito extensos, a forma mais segura é enviar por POST, tanto pela questão do tamanho da URL quanto pelo tipo de dados, as vezes é um Array ou objeto, então você deve ter algum cliente HTTP no Arduino, criar um POST.

Pelo que dei uma básica pesquisada essas libs fazem isso:
https://github.com/interactive-matter/HTTPClient ( Tutorial: https://interactive-matter.eu/how-to/arduino-http-client-library/ )

--------------------------------------------------------------------------------
Outra coisa, agora se você quiser passar dados do Lado Web para o arduino.
O que eu recomendaria era mesmo você ter um IP do servidor e ele ter todo o lado 'servidor http', você pode criar autenticações para melhorar a segurança, mas tendo um IP você coloca no seu servidor web um link "Ligar Led" dai este link faz um request no servidor do arduino, sem que o seu cliente saiba, tipo ele manda um request: "http://hostdoarduino.com.br/led/ligar.php?pino=13" dai o led liga, sabe, e se você tiver todo um sistema de autenticação por sessão, autentica uma  vez e deu, depois é só administrar...

Caso você não tenha como fazer um servidor web com seu arduino, você pode também criar URL's de controle no seu servidor web(externo), tipo, que 'imprimem' na tela flags formatadas em XML, JSON, ou até um arquino .ini . Dai o arduino fica fazendo requests a cada 1s, ou a cada 10s para verificar, dai você implementa um botão no site que troca uma variavel para true e o arduino quando fizer a próxima request le esta flag e acaba por ligar um led ...
Ficaria meio lento se for um sistema MUITO grande, mas é uma prática usada em sistemas que o hardware não possui IP e precisa ser ativado por um gatilho externo.



Se precisar de alguma ajuda para implementar o Código lado Web posso te dar uma mão...





Logged

My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Não conheço nenhuma lib para a ENC28J60 que lhe permita funcionar como cliente.
Por isso sugiro-lhe que pense essa situação ao contrário, ou seja, o arduino com a ENC28J60 disponibiliza os dados e o outro computador vai fazendo o polling desses dados.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

MarceloBoeira respondi você via PM.

Não conheço nenhuma lib para a ENC28J60 que lhe permita funcionar como cliente.
Por isso sugiro-lhe que pense essa situação ao contrário, ou seja, o arduino com a ENC28J60 disponibiliza os dados e o outro computador vai fazendo o polling desses dados.

poliveira1978, obrigado pela ajuda!

Bom, não entendi muito bem, você sugere eu deixar algum pc ligado para passar informações para um site ?

Obrigado pela atenção pessoal!
Logged

Bom Princípio - RS
Offline Offline
Sr. Member
****
Karma: 0
Posts: 263
SOFTWARE DEVELOPER, HACKER, RASPBERRY/ARDUINO/QT ENTHUSIAST & METALLICA FAN
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Acredito que se você fizer o Arduino como "server" você vai precisar de um IP fixo ou DNS. Isso que eu estava querendo exemplificar. Eu achei que o ENC28J60  era só Cliente e não server, por isso te disse que tu pode ficar fazendo requests em urls com parâmetros...
Logged

My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Pages: [1]   Go Up
Jump to: