Arduino + iPhone + Wifi Shield (sans routeur)

Salut à tous,

Je suis nouveau sur le forum. Je me présente, je m'appelle Benjamin, j'ai 19 ans et j'étudis en DUT GEII à Lyon. Je suis actuellement en stage à la Société des Arts Technologiques à Montréal où je développe un robot piloté par iphone.

Ce robot sera commandé via un iphone "linké" via wifi à un module Wifi Shield (http://store.arduino.cc/ww/index.php?main_page=product_info&cPath=11_5&products_id=237) directement pluggé sur un Arduino Uno Rev3. La contrainte est qu,il faut connecter l'iphone directement au module sans routeur. Je me suis donc inspiré de cette vidéo : Arduino Clone connected directly to iPhone over WiFi - YouTube pour faire mes essais, mais lors de la compilation j'ai les erreurs suivantes :

In file included from Arduino_Wifi_1_0.ino:2:
/Users/Ben_Stagiaire/Documents/Arduino/libraries/WiShield/WiServer.h:198: error: conflicting return type specified for 'virtual void Server::write(uint8_t)'
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'

Je suis débutant en programmation sur Arduino donc je demande désespérément de l'aide, car mon cas de figure n'a pas souvent eu lieu.

Merci, bonne journée

Bonjour,

Il semble que cette librairie n'a pas été adaptée pour fonctionner avec l'environnement Arduino version 1.0.

Voir ce topic http://arduino.cc/forum/index.php/topic,83070 pour une solution, notamment le tout dernier message (je n'ai pas pu tester, mais ça à l'air plutôt cohérent a priori).

En effet, il semblerait que cette librairie ne fonctionne pas avec cet environnement. Cependant, j'ai compilé l'exemple suivant qui est fournit avec cette librairie :

/*
 * Web Server
 *
 * A simple web server example using the WiShield 1.0
 */

#include <WiShield.h>

#define WIRELESS_MODE_INFRA	1
#define WIRELESS_MODE_ADHOC	2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192,168,1,1};	// IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1};	// router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0};	// subnet mask for the local network
const prog_char ssid[] PROGMEM = {"ASYNCLABS"};		// max 32 bytes
//int status = WL_IDLE_STATUS;     // the Wifi radio's status

unsigned char security_type = 0;	// 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"12345678"};	// max 64 characters

// WEP 128-bit keys
// sample HEX keys
prog_uchar wep_keys[] PROGMEM = {	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,	// Key 0
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 1
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 2
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00	// Key 3
								};

// setup the wireless mode
// infrastructure - connect to AP
// adhoc - connect to another WiFi device
unsigned char wireless_mode = WIRELESS_MODE_ADHOC;

unsigned char ssid_len;
unsigned char security_passphrase_len;
//---------------------------------------------------------------------------

void setup()
{
	WiFi.init();
}

// This is the webpage that is served up by the webserver
const prog_char webpage[] PROGMEM = {"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<center><h1>Hello World!! I am WiShield</h1><form method=\"get\" action=\"0\">Toggle LED:<input type=\"submit\" name=\"0\" value=\"LED1\"></input></form></center>"};

void loop()
{
	WiFi.run();
}

Ça compile, mais une fois implanté dans le arduino il ne se passe rien, je me demande si cette librairie est compatible avec ce module Wifi Shield et sa liaison ICSP ?!

maisseb:
Ça compile, mais une fois implanté dans le arduino il ne se passe rien, je me demande si cette librairie est compatible avec ce module Wifi Shield et sa liaison ICSP ?!

cette librarie est prevue pour les wishield asynclabs (et compatibles) pas pour le le wifi shield officiel arduino
en fait tu veux te connecter en AD HOC entre le shield wifi et l'iphone ?

Exactement !
J'ai recherché dans tout les fichiers arduino fournis pour le Wifi Shield, nul par est présent le terme "adhoc"... À se demander si le module permet cette fonction...

maisseb:
Exactement !
J'ai recherché dans tout les fichiers arduino fournis pour le Wifi Shield, nul par est présent le terme "adhoc"... À se demander si le module permet cette fonction

je ne connais pas ce module récent, mais il semblerait apres lecture de quelques topic que le mode ad hoc ne soit pas (encore ? ) géré.

En effet...
Du coup que me suggerez-vous comme chip adaptable au Arduino, pour transmettre des données à au moins 50m, via un iphone (donc bluetooth ou wifi) ?

maisseb:
En effet...
Du coup que me suifferez-vous chip adaptable Arduino, pour transmettre des données à au moins 50m, via un iphone (donc bluetooth ou wifi) ?

bonjour
C'est ce que j'avais compris
pour les solutions en wifi , j'ai vainement tenté avec les produits d'asynclabs (blackwidow 1.0 et wishield 2.0 "et au passage coucou à qui se reconnaitra 8) " de faire du Adhoc à priori prevu pour, je n'y suis jamais arrivé, mais comme c’était purement "ludique" , je n'ai pas persévéré.

AMHA , je pense que la solution bluetooth est une bonne solution" , mais comme c'est une voie que je ne connais pas (pas d’expérimentation perso sur base base arduino) , je laisse la parole à d'autres.

bonjour,
BT pour 50m n'y pense même pas, même 15m avec l'iphone.
j'ai testé avec un parrot le BT et mon 3gs et 4, à peine 8m.

infobarquee:
bonjour,
BT pour 50m n'y pense même pas, même 15m avec l'iphone.
j'ai testé avec un parrot le BT et mon 3gs et 4, à peine 8m.

bonsoir infobarquee
ne pratiquant pas le BT, j'avais zappé cette importante limitation/restriction

:fearful: toi le grand manitou ? :grin:

moi je partirais dans ce cas sur ce principe.
iphone->BT->arduino maitre (à coté donc)
arduino maitre->433mhz->arduino esclave

portée plus longue, sécurisée de surcroit.
le wifi, c'est bien, mais même en adhoc, c'est pas top, un gars à coté avec un router wifi modifié en puissance US (1watt) et sur le même canal, et ben poufff, pirouette cachuette. :wink:

infobarquee:
:fearful: toi le grand manitou ? :grin:

Simple principe de simple humilité de vie et de perpétuel apprentissage des connaissances 8)
Si je ne connais pas ou pas bien un domaine, je pose des questions à des meilleurs connaisseurs et j'assimile en consequence :grin:

moi je partirais dans ce cas sur ce principe.
iphone->BT->arduino maitre (à coté donc)
arduino maitre->433mhz->arduino esclave

portée plus longue, sécurisée de surcroit.
le wifi, c'est bien, mais même en adhoc, c'est pas top, un gars à coté avec un router wifi modifié en puissance US (1watt) et sur le même canal, et ben poufff, pirouette cachuette. :wink:

ça fait un peu usine à gaz , et pour ce qui est de la securisation ... :grin:

c'est tout à ton honneur.

quand je parle de sécurité, c'est plus niveau de l'émission des ondes. le BT n'étant pas le must de la sécurité.
pour le 433, enfin 434, je pense au module rfm12b ou l'on peut attribuer un groupe et donc isoler les modules.
en terrain découvert, ca porte pas trop mal.

Tout d'abord merci de votre intérêt pour mon problème !

Je m'étais déjà posé la question passerelle entre 2 moyens de transmission, mais là ou je me suis arrêté, c'est que pour que l'information transite dans les 2 sens il faut que le module du milieu gère la transmission non ? Et à ce moment là il faut qu'il supporte les mêmes normes en amont et en aval ? De la même façon qu'un routeur WiFi gère un réseau ?

Pour l'instant je continue avec le module WiFi shield et un routeur, puisque l'avantage est quand même la portée, j'ai réussis à avoir un signal sans coupure à plus de 50m...
Par contre j'ai un nouveau problème qui s'en vient avec ce module (décidément...), après de nombreuses heures d'essais avec plusieurs routeurs, plusieurs appareils, il m'a été impossible de laisser le serveur dhcp des routeurs attribuer une adresse ip à l'adresse mac du shield ??!! (en ajoutant des adresses réservées dans la table du DHCP). Le Arduino prend systématiquement la première adresse du pool DHCP.
Alors que cela a très bien fonctionné avec un ipad, il s'est vu avoir exactement l'ip qui était associé à sa MAC address !

Je devrais peut-être poser la question dans un nouveau sujet

Bonjour,

As tu été voir du côté des modules Xbee ?
Certain moèles sont fait pour le wi-fi.

http://docs-europe.electrocomponents.com/webdocs/1147/0900766b8114761f.pdf

J'ai regardé mais comme on a déjà acquis le Wifi Shield, j'aimerais l'utiliser. :roll_eyes:

Personne n'a eu le problème de DHCP ? Je reformule le problème :

Le Wifi Shield se connecte à un routeur, le routeur est censé lui délivrer une adresse ip static en fonction de sa mac adresse. Ça ne fonctionne pas, le routeur lui attribue la première adresse du pool DHCP quoi qu'il en soit. J'ai testé avec un iphone, un ipad, il leurs attribue bien la bonne adresse ip...

As tu bien renseigné la même adresse MAC de chaque côté (côté serveur DHCP, côté Arduino)?

Non pas du côté Arduino, est-ce important ? Je ne sais pas quelle syntaxe utiliser