Arduino wifi et pc en visual c++
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Arduino wifi et pc en visual c++



  1. #1
    Furaax

    Arduino wifi et pc en visual c++


    ------

    Bonjour,
    Désolé si mon titre n'est pas clair.

    Je souhaiterai piloter un arduino par wifi (j'ai le shield wifi que propose arduino) avec un ordinateur et une petite interface visual c++. L'objectif est de piloter un solénoïde, jouer sur une pin en sortie tout simplement. J'ai réussi a faire cette application avec un câble usb. Ma petite interface visual c++ fonctionne parfaitement (C++/CLI) ainsi que mon code arduino.

    Maintenant j'aimerai rendre cette application sans-fil, le problème c'est que je ne vois pas du tout comment faire et tout ce que je trouve sur le net correspond plus a du pilotage sous androïde.

    Je me permet donc de poster un sujet afin d'avoir un peu d'aide sur 2 point :

    - Comment passer mon interface visual c++ en sans-fil ? la j'utilise la fonction SerialPort1 pour communiquer avec mon arduino
    - J'ai reussi à me connecter au wifi avec l'arduino mais comment incorporer dans le code de la connection mon code de pilotage ?

    Je suis bloqué depuis 2 semaines .. Ça commence à être long ^^

    Merci par avance

    -----

  2. #2
    Yoruk

    Re : Arduino wifi et pc en visual c++

    Salut et bienvenue à toi,

    Avec le shield ethernet, il est possible d'héberger une page web sur la arduino (accessible donc depuis un pc distant) et qui permet d'agir sur les E/S de la carte très simplement.
    Je ne connais pas le shield wifi, mais ça serait sans doute possible de faire la même chose...

    Du coup tu pilotes ta carte directement depuis un navigateur web sous réserve bien sûr que le PC concerné soit connecté au même réseau que la carte. Après si tu veux impérativement rester sur Visual Studio, il est peut être aussi envisageable d'interroger cette page web depuis ton application...
    La robotique, c'est fantastique !

  3. #3
    Furaax

    Re : Arduino wifi et pc en visual c++

    Merci beaucoup pour ta réponse.

    C'est effectivement une des possibilité que j envisage, mais je ne sais pas comment développer une page web pour piloter mon arduino.

    Quel logiciel je dois utiliser ? En fonction de ça je pense que je pourrai trouver des tutos ...

    Merci encore !

  4. #4
    adipie

    Re : Arduino wifi et pc en visual c++

    Bonjour,
    Tu peux aussi remplacer la liaison Wifi par une liaison radio en passant par un module Xbee.
    http://atelierjcm.com/arduino/mon-brouillon-titre/

  5. A voir en vidéo sur Futura
  6. #5
    Yoruk

    Re : Arduino wifi et pc en visual c++

    Citation Envoyé par Furaax Voir le message
    C'est effectivement une des possibilité que j envisage, mais je ne sais pas comment développer une page web pour piloter mon arduino.

    Quel logiciel je dois utiliser ? En fonction de ça je pense que je pourrai trouver des tutos ...
    C'est vraiment très simple, tout se fait depuis l'IDE arduino (c'est que du code !) regarde du coté des pages consacrées au tutos Ethernet. Exemple : http://arduino.cc/en/Tutorial/WebClient
    La robotique, c'est fantastique !

  7. #6
    adipie

    Re : Arduino wifi et pc en visual c++


  8. #7
    Furaax

    Re : Arduino wifi et pc en visual c++

    Merci pour vos réponses,

    Adipie je ne peux pas passer par la liaison Xbee car je n'ai pas les modules disponibles et je dois impérativement passer par le WIFI.

    Concernant le webserver, j'ai trouvé des exemples bien mais le problème et que je n'arrive jamais à aller sur la page web. Il faut avoir internet ?
    Je me connecte sur la wifi de mon smartphone mis en hotspot, et ça se connecte bien. Mais je n'arrive jamais a ouvrir la page dans le navigateur. Je désespère ...

    Avez vous une idée ?

    par avance merci

  9. #8
    Yoruk

    Re : Arduino wifi et pc en visual c++

    Non, pas besoin d'internet... Une fois configurée, ta carte fait partie intégrale de ton réseau local. Selon sa configuration, elle sera soit en IP fixe, ou bien en dynamique, càd que c'est ton routeur ou serveur DHCP qui va lui donner une adresse.

    Utilise ensuite cette adresse IP pour te connecter à la carte et accéder à son contenu...

    Pour debug, tu peux aussi la pinger pour voir si elle répond aux sollicitations.
    La robotique, c'est fantastique !

  10. #9
    Furaax

    Re : Arduino wifi et pc en visual c++

    J'ai enfin réussi à voir ma page sur le net !!!! Mais les boutons ne sont pas encore utilisable par l'arduino et j arrive pas à les lire ....

    Savez vous comment acquérir l’état des boutons ? Par avance merci

    Voila mon code

    /*
    WiFi Web Server LED Blink

    A simple web server that lets you blink an LED via the web.
    This sketch will print the IP address of your WiFi Shield (once connected)
    to the Serial monitor. From there, you can open that address in a web browser
    to turn on and off the LED on pin 9.

    If the IP address of your shield is yourAddress:
    http://yourAddress/H turns the LED on
    http://yourAddress/L turns it off

    This example is written for a network using WPA encryption. For
    WEP or WPA, change the Wifi.begin() call accordingly.

    Circuit:
    * WiFi shield attached
    * LED attached to pin 9

    created 25 Nov 2012
    by Tom Igoe
    */
    #include <SPI.h>
    #include <WiFi.h>
    #include <Client.h>


    #define NbCarMax 30 // taille du buffeur d'échanges ETH
    #define ledPin 13 // N° de la LED (9 sur carte ETH, 13 sur carte UNO)

    char ssid[] = "julien"; // your network SSID (name)
    char pass[] = "123456789"; // your network password
    int keyIndex = 0; // your network key Index number (needed only for WEP)

    int status = WL_IDLE_STATUS;
    WiFiServer server(80);

    int pin13=0; // Broches E/S TOR,

    int btn_1 = 0;
    int nbr_1 = 0;
    int btn_2 = 0;
    int nbr_2 = 0;

    int tps_buffer = 0;

    String BufReception = String(NbCarMax); //buffeur de réception réseau
    boolean LEDON = false; //Etat de la LED


    void setup() {
    Serial.begin(9600); // initialize serial communication
    pinMode(13, OUTPUT); // set the LED pin mode

    // check for the presence of the shield:
    if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    while (true); // don't continue
    }

    // String fv = WiFi.firmwareVersion();
    // if ( fv != "1.1.0" )
    // Serial.println("Please upgrade the firmware");

    // attempt to connect to Wifi network:
    while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid); // print the network name (SSID);

    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
    }
    server.begin(); // start the web server on port 80
    printWifiStatus(); // you're connected now, so print out the status

    pinMode(ledPin, OUTPUT); // ***** 9 sur carte ETH, 13 sur carte UNO ****
    }


    void loop() {
    WiFiClient client = server.available(); // listen for incoming clients

    if (client) { // if you get a client,

    while (client.connected()) { // loop while the client's connected
    if (client.available()) { // if there's bytes to read from the client,
    char c = client.read(); // read a byte, then

    btn_1 = BufReception.indexOf("btn_1=1" ); // on détermine la commande STOR à effectuer
    nbr_1 = BufReception.indexOf("nbr_1=1" ); // on détermine la commande STOR à effectuer
    btn_2 = BufReception.indexOf("btn_2=1" ); // on détermine la commande STOR à effectuer
    nbr_2 = BufReception.indexOf("nbr_2=1" ); // on détermine la commande STOR à effectuer

    if(btn_1>0) //allumage led
    {
    digitalWrite(pin13, HIGH); // set the LED on
    delay(500);
    digitalWrite(pin13, LOW);
    Serial.print("BOUTON CAPTURE ENCLENCHE ");
    }
    else if(btn_2>0) //allumage timé led
    {
    Serial.print("BOUTON LANCER ENCLENCHE ");
    for(int cpt=0;cpt<nbr_2;cpt++)
    {
    digitalWrite(pin13, HIGH); // set the LED on
    delay(500);
    digitalWrite(pin13, LOW);
    tps_buffer = nbr_1 - 500 ;
    delay(tps_buffer);
    }
    }
    else{ //extinction led
    digitalWrite(pin13, LOW);
    Serial.print("Aucun Bouton ");
    }


    Serial.write(c); // print it out the serial monitor
    if (c == '\n') { // if the byte is a newline character



    // --- Réponse au client ---
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println();
    //--
    // --- ELABORATION & TRANSMISSION DE LA PAGE QUI SERA AFFICHEE DANS LE BROWSER DU CLIENT
    client.println("<html>");
    client.println("<head>");
    client.println("<title>Flir IR60</title>");
    client.println("</head>");
    //--
    client.println("<body>");
    client.println("<center>");
    client.println("<font size = 5 color='Black' align=center>*** SERVEUR HTTP embarqu&eacute; sur carte ARDUINO ***</font><br>");
    client.println("<font size = 5 color='Red' align=center>*** Acc&egrave;s via laison WIFI ***</font>");
    client.println("<hr align=center width =60%/>");

    client.println("<br><br><input type=button name=btn_1 value=Capture><br><br><br>");
    client.println("<font size='3'>Duree entre les captures (ms) : ");
    client.println("<input type=number name=nbr_1 value=>");
    client.println("<br>");
    client.println("<font size='3'>Nombre de capture desirees :");
    client.println("<input type=number name=nbr_2 value=>");
    client.println("<br>");
    client.println("<input type=button name=btn_2 value=Lancer><br><br><br>");

    client.println("</form>");
    //---
    client.println("</body>");
    client.println("</html>");
    BufReception="\0";
    // déconnection du client
    client.stop();


    } // FIN SI c == '\n'
    } // Fin Si client.available
    } // Fin While client.connected
    } // Fin Si Client
    } // FIN Loop

    void printWifiStatus() {
    // print the SSID of the network you're attached to:
    Serial.print("SSID: ");
    Serial.println(WiFi.SSID());

    // print your WiFi shield's IP address:
    IPAddress ip = WiFi.localIP();
    Serial.print("IP Address: ");
    Serial.println(ip);

    // print the received signal strength:
    long rssi = WiFi.RSSI();
    Serial.print("signal strength (RSSI):");
    Serial.print(rssi);
    Serial.println(" dBm");
    // print where to go in a browser:
    Serial.print("To see this page in action, open a browser to http://");
    Serial.println(ip);
    }

  11. #10
    Yoruk

    Re : Arduino wifi et pc en visual c++

    Je n'ai plus la méthode en tête, il faut d'abord créer un bouton dans ta page (ou une case à cocher). C'est un code du genre <input></input> si ma mémoire est bonne. Ensuite, tu dois passer par un formulaire et une méthode POST pour que la page interprète la valeur de ta case à cocher et fasse basculer la sortie correspondante.
    La robotique, c'est fantastique !

  12. #11
    Elz0

    Re : Arduino wifi et pc en visual c++

    Bonjour,
    Au fait j'ai un problème pour communiquer avec l'Arduino sur le Visual C++/CLI (J'utilise Visual Studio Community 2013). J'ai essayé avec une application
    console, ça a marché Normale, mais quand j'ai ajouté une interface UI, elle ne marche pas.

    Voilà le code Console:

    Code:
    #include "stdafx.h"
    
    using namespace System;
    using namespace System::IO::Ports;
    
    int main(array<System::String ^> ^args)
    {
    	
    	String^ answer;
    	String^ portName;
    	int baudRate=9600;
    	Console::WriteLine("Type in a port name and hit ENTER");
    	portName=Console::ReadLine();
    	// arduino settings
    	SerialPort^ arduino;
    	arduino = gcnew SerialPort(portName, baudRate);
    	// open port
    	try
    	{
    		arduino->Open();
    
    		do
    		{
    			// ask on or off
    			Console::WriteLine("Type \"on\" to turn the light on or \"off\" to turn it off");
    			// get answer
    			answer=Console::ReadLine();
    			//check that user typed one of the options
    			if(String::Compare(answer,"on")==0)
    				arduino->WriteLine("1"); // send 1 to arduino
    			else if(String::Compare(answer,"off")==0)
    				arduino->WriteLine("0"); // send 0 to arduino
    			else
    				Console::WriteLine(answer+" was not an option");
    			// ask user if he wants to continue
    			Console::WriteLine("Try again? yes/no");
    			// get answer
    			answer=Console::ReadLine();
    			// clear the screen
    			Console::Clear();
    		}while(String::Compare(answer,"yes")==0);
    		// close port to arduino
    		arduino->Close();
    	}
    	catch (IO::IOException^ e  ) 
    	{ 
    		Console::WriteLine(e->GetType()->Name+": Port is not ready");
    	}
    	catch (ArgumentException^ e)
    	{
    		Console::WriteLine(e->GetType()->Name+": incorrect port name syntax, must start with COM/com");
    	}
    	// end program
    	Console::Write("Press enter to close the program");
    	Console::Read();
        return 0;
    }

Discussions similaires

  1. Arduino: Afficher une température en Wifi.
    Par MrDupond dans le forum Électronique
    Réponses: 15
    Dernier message: 02/04/2014, 23h02
  2. Communication arduino-arduino avec module Xbee
    Par TPESI22012 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 17h24
  3. Problème de réception port série visual basic ( visual studio 2012)
    Par extremgear dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 30/07/2013, 22h44
  4. Programme entre Visual Basic et logiciel Arduino
    Par invitec984624a dans le forum Électronique
    Réponses: 39
    Dernier message: 26/03/2010, 13h58
  5. Interfacage Logiciel Arduino et visual basic
    Par invitec984624a dans le forum Électronique
    Réponses: 2
    Dernier message: 12/03/2010, 10h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.