Pages: [1]   Go Down
Author Topic: arduino+ethernet shield+macbook+internet movel  (Read 3918 times)
0 Members and 1 Guest are viewing this topic.
oporto
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ola a todos..
gostava de saber se alguem ja teve o mesmo problema que eu..
estou a tentar ligar o arduino com o shield de ethernet ao mac, visto que ele consegue partilhar a internet para a porta de rede.
o meu problema é a configuração do ip pois estou a usar internet movel (tipo usb).
alguem aqui tem experiencia de arduinos e mac's?
digam algumas dicas para por o animal a funcionar
obrigado
Logged

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

Já partilhaste a rede?

Desligaste o dhcp?

Configuraste um ip no mac com a mesma rede do arduino?

Partilhaste a internet da wireless para ethernet?

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).

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

partilhar a rede? é a mesma coisa que partilhar a internet?
neste momento o problema e o seguinte, aparentemente o arduino consegue conectar com a internet, mas nao consegue receber dados, apenas enviar.
nao consigo perceber de onde vem o erro, se é de programação ou configuraçoes no mac..
quando uso os exemplos, se usar o exemplo server, quando abro o safari e digito o ip, aparece a identificação dos pinos(aparentemente tudo bem), mas se pegar noutro computador e fizer a mesma coisa, nao consigo obter resposta...
alguem consegue ajudar??
thkx.
Logged

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

Se conseguires explicar melhor como tens tudo ligado e qual o programa que tens a correr talvez seja mais fácil...

Outro computador, não vê o arduino porque estão em redes distintas. A rede Wifi do Mac não tem as mesmas configuracões da Ethernet. Dito isto, o model ethernet está assim tão longe?

Depois, segundo me lembro, o exemplo do server não recebe nada, ou melhor... não faz nada de útil com o que recebe. Logo não podes dizer se está a receber ou não.

Porque não ligas o Arduino como webserver (sem ser com o exemplo...) e ligas-te a ele através de telnet para poderes enviar comandos facilmente??
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).

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

bom, vou recapitular desde o inicio..
pretendo usar a aplicação android domotichome, mas como em casa o acesso a internet e feita pelo modem usb 3g ou wirless, queria primeiro configurar o ethernet shield para ter a certeza que ira tudo funcionar, ja que nas primeiras tentativas nada deu certo.
fiz entao as configuraçoes no computador, como e um mac, partilhei a ligação do modem usb com a porta ethernet(quando tento com modem usb) e partilha de airport (quando acesso wireless), configurei manualmente o ip com o num 192.168.2.1, com sub-rede 255.255.255.0. a firewall esta desativada e quando faço o teste de ping com o arduino com o exemplo webserver esta ok(10 packets transmited, 10 packets received) com o ip que eu defeni como 192.168.2.2..
no telemovel descarreguei a aplicação meti o ip do arduino192.168.2.2, port 80, e nao ha resposta..
quando tentei com os exemplos pareceu-me que havia ali alguma coisa que nao estava bem porque parece-me que nao ha recepçao da net. se usar o exemplo webserver ao abrir o safari e meter o ip do arduino aparece analog input 0 is 1023..., mas se usar outro pc com net e meter o ip do arduino nao da nada...
há algum passo errado que tenha feito ate agora?
será por estar a usar net wireless da vodafone daqueles routers huawei portateis??


o codigo domotichome e este:
#include <SPI.h>
#include <Ethernet.h>


byte mac[] = { 0xc8, 0x2a, 0x14, 0x44, 0x83, 0xa4 };
byte ip[] = { 192 ,168 ,2 ,2 };
byte gateway[] = { 192 ,168 ,2 ,1 };
byte subnet[] = { 255 ,255 ,255 ,0 };
Server server(80);

String readString = String(30);


byte server_send[] = {81, 174, 68, 58};
Client client_send(server_send, 80);
long lastConnectionTime = 0;
boolean lastConnected = false;
const int postingInterval = 10000;


void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(9600);
}

void loop(){


if(!client_send.connected() && (millis() - lastConnectionTime > postingInterval)) {
String tot;
sendData(tot);
}
Client client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 30)
{
readString = readString + c;
}
if (c == '\n') {
Serial.print(readString);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();


if(readString.startsWith("GET /?out=13&status=1"))
{Serial.print("\n 13 HIGH \n");
digitalWrite(13, HIGH);
client.print("{\"status\" : \"1\" , \"out\" : \"");
client.print(13);
client.print("\"}");
}
if(readString.startsWith("GET /?out=13&status=0"))
{Serial.print("\n 13 LOW \n");
digitalWrite(13, LOW);
client.print("{\"status\" : \"0\" , \"out\" : \"");
client.print(13);
client.print("\"}");
}


if(readString.startsWith("GET /?out=all"))
{
Serial.print("\n OUT ALL\n");
client.print("{\"ip\" : \"192.168.2.2\", ");
client.print("\"devices\" : ");
client.print("[{ \"type\" : \"light\", \"name\" : \"led\", \"out\" : \"");
client.print("13");
client.print("\"}");
client.print("]}");
}
readString="";
client.stop();
}
}
}
}
}




char * floatToString(char * outstr, double val, byte precision, byte widthp){
char temp[16];
byte i;
double roundingFactor = 0.5;
unsigned long mult = 1;
for (i = 0; i < precision; i++)
{
roundingFactor /= 10.0;
mult *= 10;
}
temp[0]='\0';
outstr[0]='\0';
if(val < 0.0){
strcpy(outstr,"-\0");
val = -val;
}
val += roundingFactor;
strcat(outstr, itoa(int(val),temp,10));
if( precision > 0) {
strcat(outstr, ".\0"); // print the decimal point
unsigned long frac;
unsigned long mult = 1;
byte padding = precision -1;
while(precision--)
mult *=10;
if(val >= 0)
frac = (val - int(val)) * mult;
else
frac = (int(val)- val ) * mult;
unsigned long frac1 = frac;
while(frac1 /= 10)
padding--;
while(padding--)
strcat(outstr,"0\0");
strcat(outstr,itoa(frac,temp,10));
}
if ((widthp != 0)&&(widthp >= strlen(outstr))){
byte J=0;
J = widthp - strlen(outstr);
for (i=0; i< J; i++) {
temp = ' ';
}
temp[i++] = '\0';
strcat(temp,outstr);
strcpy(outstr,temp);
}
return outstr;
}


void sendData(String thisData) {
if (client_send.connect()) {
Serial.println("connecting...");
client_send.print("GET /insert?ak=53e6321b&read=");
Serial.println("...sending ");
Serial.println(thisData);
Serial.println("\n");
client_send.print(thisData);
client_send.println(" HTTP/1.1");
client_send.print("Host: www.domotichome.net\n");
client_send.print("Content-Type: text/html\n");
client_send.println("Connection: close\n");
lastConnectionTime = millis();
Serial.println("Done ");
client_send.stop();
}
else {
Serial.println("connection failed");
}
}





obrigado pela ajuda
continuo sem saber o que esta errado..
thxk
Logged

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

Outro computador, não vê o arduino porque estão em redes distintas. A rede Wifi do Mac não tem as mesmas configuracões da Ethernet.
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).

central nervous system
Offline Offline
Full Member
***
Karma: 0
Posts: 135
Causing havoc inside your brain since 1980
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Para o provedor de serviços de internet, que talvez seja alguma empresa de telefonia ou de TV por cabo, o teu IP não é 192.168.2.1; o que quero dizer é que, fora da tua casa, o intervalo de IPs é diferente do que os IPs da internet:

Code:
+-----------+   +-----------+                  +---------+     +------------+
| Telemovel |ooo| Router 3G |++++ Internet xxxx| Airport |--+--| PC de mesa |
+-----------+   +-----------+               ^  +---------+  |  +------------+
                                            |  192.168.2.255|  192.168.2.35
                                            |               |  
                                            |               |  +---------+
                                            |               +--| Arduino |
                                            |                  +---------+
                                       172.6.39.12             Aqui é
                                                               192.168.2.1
Legenda: o, x, + e - são redes IP distintas; os IPs são todos fictícios, menos o do Arduino

O que o telemóvel pode aceder é o IP externo do teu Airport, que, no caso, é 172.6.39.12; entretanto, deve-se configurar também qual porta do Airport dará acesso direto ao Arduino. Por exemplo, quando digitares no navegador web
Code:
http://172.6.39.12:9080/
vais estar a aceder o Arduino pelo telemóvel ou qualquer outro equipamento que não esteja na mesma rede que o Arduino, caso o Airport tenha sido configurado com a porta 9080 a redirecionar tudo para o Arduino.
« Last Edit: October 09, 2012, 08:05:31 am by neuron_upheaval » Logged

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

ha algum exemplo que de para testar a comunicação para os dois lados?
Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1593
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A solucao para o teu problema e o que o colega indica.
Basta fazer isto:
Quote
O que o telemóvel pode aceder é o IP externo do teu Airport, que, no caso, é 172.6.39.12; entretanto, deve-se configurar também qual porta do Airport dará acesso direto ao Arduino. Por exemplo, quando digitares no navegador web
Code:

http://172.6.39.12:9080/

Num router normal terias de configurar uma regra de NAT.
No mac tens de criar tambem esta regra para que possas expor ao "mundo" esse serviço nessa porta.
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


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

e como faço para descobrir qual o ip da rede antes de chegar ao airport?
hugopt, podias explicar melhor a regra nat?
obrigado pela ajuda
Logged

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

um dos primeiros lilnks do google foi este:

http://blog.netnerds.net/2012/07/os-x-how-to-setup-nat-on-lion-and-mountain-lion/
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).

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1593
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
e como faço para descobrir qual o ip da rede antes de chegar ao airport?
Se bem entendi a tua pergunta queres saber qual o teu ip externo(dado pelo ISP) que se encontra actualmente no mac, digo actualmente porque caso nao tenhas ip fixo ele muda sempre que inicias a ligaçao de novo(podes contornar criando um cname dinamico tipo dyndns, no-ip...)
Podes facilmente descobrir esse ip basta ligares a pen e depois vesitares www.whatismyip.com(uma das formas, tens outras mais....)
Em relaçao ao NAT(network adress Translation) e um metodo de atravez de uma ligaçao colocares mais pc's atraz de um ip externo.Um exemplo disso e o que os routers fazem recebes o sinal do teu isp e depois o router fica com 2 interfaces de rede(podem ser mais), a externa com o ip externo e a interface interna(ips de classe C) que podem ser da gama 10.0.XXX.XXX ou 172.XXX.XXX.XXX. ou começados por 192.XXX.XXX.XXX
Como a net e passada para essas interfaces é criada uma barreira(firewall) onde para que alguem da net possa aceder a algum ip dentro da tua rede interna (exemplo do teu arduino) tem de ser criada uma regra de dnat para que possa "furar" a firewall
Desta forma o teu arduino fica acessivel a qualquer pessoa no mundo( smiley-mr-green)
A quando a criaçao da regra dnat tens de especificar a porta que queres expor e o ip interno onde ira apontar a regra(devera ser o ip do arduino se for ele o alvo da regra.

Espero que possas assim ter uma luz de como o NAT funciona, provavelmente estará longe de estar 100% correcto mas a idea é esta.
Ve o link do bubulindo


Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


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

vou tentar partir alguma pedra nesse sentido, uma vez que nao sou grande entendido na materia.
obrigado pelas indicaçoes
Logged

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

boas..
bom, nao sei o que fazer.. tentei abrir o caminho para o arduino, mas nao devo estar a fazer a coisa certa..
tentei com um programa (waterRoof) mas tambem sem grande resultado
apos um teste no site http://www.guiadocftv.com.br/modules/ferramentas/pag_nettools.php     em que da para testar as portas, apos meter os dados  apareceu a mensagem "Porta 80 está fechada." smiley-confuse smiley-confuse
alguem tem conhecimento de algum tutorial basico para resolver este problema??
sugestoes aceitam-se
thkx
Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1593
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tenta com isto a ver se consegues algo
https://discussions.apple.com/docs/DOC-3415
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Pages: [1]   Go Up
Jump to: