PureBasic

Forums PureBasic
Nous sommes le Jeu 23/Mai/2013 13:38

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 35 messages ]  Aller à la page Précédente  1, 2, 3
Auteur Message
 Sujet du message: Re: SerialPort et WiFi
MessagePosté: Mar 17/Avr/2012 22:43 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
Faut que tu regardes la doc de ton shield , ca dois pas être bien compliqué, après si tu m'en payes un , je t'aiderais bien mieux :D


Haut
 Profil  
 
 Sujet du message: Re: SerialPort et WiFi
MessagePosté: Mer 18/Avr/2012 10:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 14/Fév/2010 22:28
Messages: 75
Localisation: Sud de la France
Au niveau de la Doc, j'ai déjà regardé et c'est vraiment très léger : UserManuel Schematic Datasheet

Ils disent simplement que c'est compatible avec "Asynclab wifi shield!" :mrgreen: ...

Je suis donc toujours bloqué sur ce problème. Je ne sais pas comment dire à la Arduino de se connecter à mon serveur j'ai pourtant fouiller le Web ... :roll:

_________________
Windows 7 Ultimate 64-Bit | Intel Core i5 CPU 750 @ 2.67GHz | 4,0 GB RAM | Sapphire Vapor-X ATI Radeon HD 4890 | 2,5 TeraOctet 7200 RPM


Haut
 Profil  
 
 Sujet du message: Re: SerialPort et WiFi
MessagePosté: Mer 18/Avr/2012 20:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 14/Fév/2010 22:28
Messages: 75
Localisation: Sud de la France
Bon, j'ai un peu avancé mais vu que j'y ai passé la journée autant dire que j'ai quasiment perdu mon temps ... :x

Tout d'abord, j'ai réussi à connecter le Shield à mon WiFi, elle répond d'ailleurs à la commande Ping dans la CMD donc c'est bon :mrgreen: Cependant, il est a priori impossible de choisir la Arduino comme client et de la connecter à un serveur placer sur PC :!: :!:
J'ai donc créé un serveur sur la Arduino qui génère une page HTML à cette adresse : http://192.168.0.84. Pour tester le serveur j'ai essayé d'allumer la LED placer sur la Arduino (Pin 13) en placant 2 liens sur la page HTML : ON et OFF qui permette l'envoi de la requête qui éteint et allume la LED.

Voici le code du serveur Arduino :
Code:
/*
* A simple sketch that uses WiServer to serve a web page
*/


#include <WiServer.h>

#define WIRELESS_MODE_INFRA   1
#define WIRELESS_MODE_ADHOC   2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {
  192,168,0,84};   // IP address of WiShield
unsigned char gateway_ip[] = {
  192,168,0,254};   // router or gateway IP address
unsigned char subnet_mask[] = {
  255,255,255,0};   // subnet mask for the local network
const prog_char ssid[] PROGMEM = {
  "JPPW"};      // max 32 bytes

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

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {
  "0123456789"};   // 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_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
// End of wireless configuration parameters ----------------------------------------


// This is our page serving function that generates web pages
boolean sendMyPage(char* URL) {

  // Check if the requested URL matches "/"
  if (strcmp(URL, "/") == 0) {
    // Use WiServer's print and println functions to write out the page content
    links ();
    // URL was recognized
    return true;
  }
  else if (strcmp(URL, "/on") == 0) {
    digitalWrite(13, HIGH);  // turn Left on
    links ();
    // URL was recognized
    return true;
  }
  else if (strcmp(URL, "/off") == 0) {
    digitalWrite(13, LOW);  // turn Right on
    links ();
    // URL was recognized
    return true;
  }
  // URL not found
  return false;
}

void links () {
  WiServer.print("<html>");
  WiServer.print("<center>[ <a href=\"/on\">ON</a> ]<br />");
  WiServer.print("[ <a href=\"/off\">OFF</a> ]</center>");
  WiServer.print("</html>"); 
}

void setup() {
  // Initialize WiServer and have it use the sendMyPage function to serve pages
  WiServer.init(sendMyPage);
  pinMode(13, OUTPUT);
  // Enable Serial output and ask WiServer to generate log messages (optional)
  Serial.begin(57600);
  WiServer.enableVerboseMode(true);
}

void loop(){
  // Run WiServer
  WiServer.server_task();
}



Mais tout ça c'est en théorie ! Et oui, ça ne marche pas sinon ça ne serait pas marant :twisted: :!: Alors comment expliquer ce qui se passe ... Lors de l'appui d'un des liens ON ou OFF, la LED 13 scintille très très très faiblement pendant 1 petite seconde puis plus rien :|
Une idée ?

En tout cas, je pense que cette solution ne sera pas bonne car commander une petite voiture via des requettes HTML c'est pas top :mrgreen:

De plus, j'ai vu sur pas mal de code source de drone Arduino les commandes WiFi.init() et WiFi.run() apparaître. Qu'est que c'est que ces commandes ? Impossible de trouver de mon coté. Un exemple pour illustrer mes propos : Tiny Robot Wifi D'après ce que j'en ai compris, c'est un SocketApp mais je ne comprends pas comment cela fonctionne :?

Voici un des codes source disponible en bas du lien : (Je ne vois pas où les transitions WiFi sont effectuées ...)
Code:
//    Tiny Robot Wifi Control Program
//    November 9th, 2009
//    Robert Svec

#include <WiShield.h>
#include <Servo.h>

#define WIRELESS_MODE_INFRA   1
#define WIRELESS_MODE_ADHOC   2

Servo LeftServo;
Servo RightServo;
Servo IRServo;

unsigned char local_ip[] = {192,168,1,220};
unsigned char gateway_ip[] = {192,168,1,1};
unsigned char subnet_mask[] = {255,255,255,0};
const prog_char ssid[] PROGMEM = {"Airwavers"};
unsigned char security_type = 3;   // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2
const prog_char security_passphrase[] PROGMEM = {"testwpakey"};
prog_uchar wep_keys[] PROGMEM = {};
unsigned char wireless_mode = WIRELESS_MODE_INFRA;
unsigned char ssid_len;
unsigned char security_passphrase_len;

char mybuff[20], sendbuff;
int myintbuff, objdist1, objdist2, objdist3;

void setup()
{
   WiFi.init();
        LeftServo.attach(5);
        RightServo.attach(6);
        IRServo.attach(7);
        RightServo.write(90);
        delay(20);
        LeftServo.write(90);
        delay(20);
        IRServo.write(100);
        delay(20);
        myintbuff = 0;
        Serial.begin(9600);
}

void loop()
{
   WiFi.run();
        myintbuff = atoi(mybuff);
        if (myintbuff == 1)
        {
          MoveForward();
          mybuff[0] = '9';
        }
        if (myintbuff == 2)
        {
          TurnLeft();
          mybuff[0] = '9';
        }
        if (myintbuff == 3)
        {
          TurnRight();
          mybuff[0] = '9';
        }
        if (myintbuff == 4)
        {
          MoveBackward();
          mybuff[0] = '9';
        }
        if (myintbuff == 5)
        {
          AutoRoam();
          mybuff[0] = '9';
        }
        if (myintbuff == 6)
        {
          IRLeft();
          mybuff[0] = '9';
        }
        if (myintbuff == 7)
        {
          IRRight();
          mybuff[0] = '9';
        }
        if (myintbuff == 8)
        {
          IRFront();
          mybuff[0] = '9';
        }
        else
        {
          LeftServo.write(90);
          RightServo.write(90);
        }     
//        objdist1 = analogRead(0);
//        sendbuff = char(objdist1);
}




//    ==========================
//    =====  AUTO ROAMING  =====
//    ==========================

void AutoRoam()
{
  for (int i = 1; i < 20; i++)
  {
    objdist1 = analogRead(0);
    if (objdist1 <= 400)
    {
      MoveForward();
      delay(200);
    }
    else
    {
      IRLeft();
      objdist2 = analogRead(0);
      delay(200);
      IRFront();
      IRRight();
      objdist3 = analogRead(0);
      delay(200);
      IRFront();
      if (objdist2 < objdist3)
      {
        TurnLeft();
      }
      if (objdist3 <objdist2)
      {
        TurnRight();
      }
      if (objdist2 == objdist3)
      {
        MoveBackward();
        TurnRight();
        TurnRight();
        TurnRight();
        TurnRight();
      }
    }
  }
}











//    =================================
//    =====  MOTOR SERVO CONTROL  =====
//    =================================

void TurnLeft()
{
  LeftServo.write(0);
  RightServo.write(0);
  delay(500);
//  LeftServo.write(90);
//  RightServo.write(90);
}

void TurnRight()
{
  LeftServo.write(180);
  RightServo.write(180);
  delay(500);
//  LeftServo.write(90);
//  RightServo.write(90);
}

void MoveForward()
{
  LeftServo.write(180);
  RightServo.write(0);
  delay(500);
//  LeftServo.write(90);
//  RightServo.write(90);
}

void MoveBackward()
{
  LeftServo.write(0);
  RightServo.write(180);
  delay(300);
//  LeftServo.write(90);
//  RightServo.write(90);
}





//    ======================================
//    =====    INFRARED SERVO CONTROL  =====
//    ======================================

void IRRight()
{
  // IR Right
  IRServo.write(30);
  delay(200);
}

void IRFront()
{
  // IR Front
  IRServo.write(100);
  delay(200);
}

void IRLeft()
{
  // IR Left
  IRServo.write(170);
  delay(200);
}


Merci d'avoir pris le temps de lire et merci d'avance si vous pouvez m'aider :lol:

_________________
Windows 7 Ultimate 64-Bit | Intel Core i5 CPU 750 @ 2.67GHz | 4,0 GB RAM | Sapphire Vapor-X ATI Radeon HD 4890 | 2,5 TeraOctet 7200 RPM


Haut
 Profil  
 
 Sujet du message: Re: SerialPort et WiFi
MessagePosté: Jeu 19/Avr/2012 1:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
A cause de vous je vais pas beaucoup dormir, j'ai eu le malheur d'aller feuilleter ce site. Et de fil en aiguille il est bientôt 3h.. :wink:
C'est juste passionnant. un rêve de gosse aussi ça, créer une machine, la piloter et lui faire adopter des comportements.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: SerialPort et WiFi
MessagePosté: Jeu 19/Avr/2012 10:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 14/Fév/2010 22:28
Messages: 75
Localisation: Sud de la France
Désolé :mrgreen: Mais comme tu dis pour l'instant ce n'est qu'un reve. Je suis toujours bloqué :x Je pense que la solution serait de faire un SocketApp qui permet de communiquer entre 2 appareils branchés sur un même réseau. L'inconvénient c'est que je n'arrive pas à comprendre son fonctionnement surtout qu'il est question de "Buffer" et que je ne sais pas concrètement ce que c'est mis à part une "zone" mémoire.

_________________
Windows 7 Ultimate 64-Bit | Intel Core i5 CPU 750 @ 2.67GHz | 4,0 GB RAM | Sapphire Vapor-X ATI Radeon HD 4890 | 2,5 TeraOctet 7200 RPM


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 35 messages ]  Aller à la page Précédente  1, 2, 3

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye