Go Down

Topic: [Résolue] Envoie de donnée de arduino vers un pc (Read 4075 times) previous topic - next topic

Bloodhearth

Apr 17, 2015, 11:44 am Last Edit: May 11, 2015, 10:43 am by Bloodhearth
Bonjours à tous!

Voici mon problème, pour notre projet de terminal nous voulons recevoir les données que reçoit notre carte arduino uno via nos capteurs et les affichés sur notre site internet (seulement en réseau local). La carte arduino n'est pas relié avec un ordinateur mais fonctionne grâce à un accumulateur.
Nous en sommes au moment ou nous avons connecté notre arduino a la livebox et que la carte reçoit bien les données des capteurs.

Notre matériel:
-1 carte arduino uno
-1 shield wifi (à jours avec la version 1.05 de arduino)
-1 module tinkerkit
-1 capteur de température et humidité dans l'air
-1 capteur d'humidité du sol
-1 capteur de lumière
-1 livebox
-1 une clé wifi

Actuellement nous bloquons sur comment envoyer les données qui sont affichés dans le moniteur arduino sous forme de fichier .txt pour que notre site puisse les lires.
 
Voici ce qu'affiche notre moniteur arduino :
Code: [Select]
DHTxx test!
Attempting to connect to WPA SSID: Livebox-859c
You're connected to the networkSSID: Livebox-859c
BSSID: 0:16:41:A3:EF:59
signal strength (RSSI):-57
Encryption Type:4

IP Address: 192.168.1.13
192.168.1.13
MAC address: 78:C4:E:2:16:3F
SSID: Livebox-859c
BSSID: 0:16:41:A3:EF:59
signal strength (RSSI):-57
Encryption Type:4

Lumiere = 762
Humiditer: 49.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 1
Lumiere = 766
Humiditer: 49.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 2
Lumiere = 757
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 3
Lumiere = 755
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 4
Lumiere = 774
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 5
Lumiere = 774
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 6
Lumiere = 755
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 7
Lumiere = 756
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 8
Lumiere = 769
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 9
Lumiere = 194
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 0
nb de mesure = 10
Lumiere = 18
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 30
nb de mesure = 11
Lumiere = 27
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 157
nb de mesure = 12
Lumiere = 201
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 144
nb de mesure = 13
Lumiere = 500
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 138
nb de mesure = 14
Lumiere = 690
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 148
nb de mesure = 15
Lumiere = 693
Humiditer: 48.00 % Temperature: 21.00 *C
humidite sol = 7
nb de mesure = 16
Lumiere = 706
Humiditer: 63.00 % Temperature: 23.00 *C
humidite sol = 47
nb de mesure = 17
Lumiere = 683
Humiditer: 63.00 % Temperature: 23.00 *C
humidite sol = 46
nb de mesure = 18
Lumiere = 717
Humiditer: 73.00 % Temperature: 25.00 *C
humidite sol = 214
nb de mesure = 19
Lumiere = 693
Humiditer: 73.00 % Temperature: 25.00 *C
humidite sol = 219
nb de mesure = 20
Moyenne Lumiere = 599.50 Lux
Moyenne Humidite air: 52.10 %
Moyenne Temperature: 21.60 *C
Moyenne Humidite sol = 57.50


Pourriez vous nous aidez pour pouvoir réussir à envoyer ses données?
 Merci

Bloodhearth

Et voici notre codage sur arduino :

Code: [Select]
#include "DHT.h"
#define DHTPIN A0 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11


DHT dht(DHTPIN, DHTTYPE);
const int anlumiere = A4;  // capteur lumière
const int humipot = A3;      // capteur sol
int lumiere = 0;
int sol = 0;
//======================
int PinAnalogiqueHumidite= A0;       //Broche Analogique de mesure d'humidité
int PinNumeriqueHumidite= 2 ;        //Broche Numérique mesure de l'humidité
int val=0;
int hsol2;                           //Humidite su sol, mesure analogique
int secheresse2;                     //0 ou 1 si seuil atteint
//-------------------
 #include <WiFi.h>

char ssid[] = "Livebox-859c";     //  your network SSID (name)
char pass[] = "0000sin0000";  // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status
//--------------------



                                                void setup()
                                                {
                                                    Serial.begin(9600);
                                                    Serial.println("DHTxx test!");
                                                    dht.begin();
                                                    pinMode(PinAnalogiqueHumidite, INPUT);       //pin A0 en entrée analogique
                                                    pinMode(PinNumeriqueHumidite, INPUT);       //pin 3 en entrée numérique
                                                  //Initialize serial and wait for port to open:
                                                  Serial.begin(9600);
                                                  while (!Serial) {
                                                    ; // wait for serial port to connect.
                                                  }
                                                  
                                                  // check for the presence of the shield:
                                                  if (WiFi.status() == WL_NO_SHIELD) {
                                                    Serial.println("WiFi shield not present");
                                                    // don't continue:
                                                    while(true);
                                                  }
                                                  
                                                 // attempt to connect to Wifi network:
                                                  while ( status != WL_CONNECTED) {
                                                    Serial.print("Attempting to connect to WPA SSID: ");
                                                    Serial.println(ssid);
                                                    // Connect to WPA/WPA2 network:    
                                                    status = WiFi.begin(ssid, pass);
                                                
                                                    // wait 10 seconds for connection:
                                                    delay(3000);
                                                  }
                                                  
                                                  // you're connected now, so print out the data:
                                                  Serial.print("You're connected to the network");
                                                  printCurrentNet();
                                                  printWifiData();
                                                }


                                                void loop()
                                         {
                                           // check the network connection once every 10 seconds:
                                              delay(10000);
                                              printCurrentNet();
                      
                                             int x = 0; //compteurs
                                               float totallumiere = 0;
                                               float totaltemp = 0;
                                               float totalhumiditeair = 0;
                                               float totalhumiditesol = 0;
                                               float moylumiere = 0;
                                               float moytemp = 0;
                                               float moyhumiditeair = 0;
                                               float moyhumiditesol = 0;
                                        while(x <20) {
                                            //lumiere
                                            lumiere = analogRead(anlumiere); // mesure lumière
                                            Serial.print("Lumiere = ");
                                            Serial.println(lumiere);
                                            //humidite et temperature
                                            hsol2 = analogRead(PinAnalogiqueHumidite); // Lit la tension analogique
                                            secheresse2 = digitalRead(PinNumeriqueHumidite);
                                            float h = dht.readHumidity();
                                            float t = dht.readTemperature();
                                                // check if returns are valid, if they are NaN (not a number) then something went wrong!
                                                if (isnan(t) || isnan(h))
                                        {
                                            Serial.println("Failed to read from DHT");
                                        }
                                        else
                                        {
                                            Serial.print("Humiditer: ");
                                            Serial.print(h);
                                            Serial.print(" %\t");
                                            Serial.print("Temperature: ");
                                            Serial.print(t);
                                            Serial.println(" *C");
                                        }
                                        // humidite sol
                                        sol = analogRead(humipot);
                                        Serial.print("humidite sol = ");
                                        Serial.println(sol);
                                        
                                        
            
                                        x++;
                                        Serial.print("nb de mesure = ");
                                        Serial.println(x);
                                        totallumiere = totallumiere + lumiere;
                                        totaltemp = totaltemp + t;
                                        totalhumiditeair = totalhumiditeair + h;
                                        totalhumiditesol = totalhumiditesol + sol;
        
                                //pause
                                
                                         delay(1000); //delai entre 2 mesures 1 seconde
                              
                                         } //fin while x<20
                              
                              
                               //moyennes des données prisent  
                              moylumiere = totallumiere / x;
                              moytemp = totaltemp / x;
                              moyhumiditeair = totalhumiditeair / x;
                              moyhumiditesol = totalhumiditesol / x;
                              Serial.print("Moyenne Lumiere = ");
                              Serial.print(moylumiere);
                              Serial.println(" Lux");
                              Serial.print("Moyenne Humidite air: ");
                              Serial.print(moyhumiditeair);
                              Serial.println(" %\t");
                              Serial.print("Moyenne Temperature: ");
                              Serial.print(moytemp);
                              Serial.println(" *C");
                              Serial.print("Moyenne Humidite sol = ");
                              Serial.println(moyhumiditesol);
                    // test si touche appuyée; réinitialisation des mesures
                    while(x==20) {          
                         if (Serial.available() > 0) {
                            int car;
                            car= Serial.read();
                            x++;
                         }
                        }
      } //fin du void loop


Bloodhearth

Et ce qui manque à la fin :
Code: [Select]
} //fin du void loop
     

                               
                                void printWifiData() {
                                  // print your WiFi shield's IP address:
                                  IPAddress ip = WiFi.localIP();
                                    Serial.print("IP Address: ");
                                  Serial.println(ip);
                                  Serial.println(ip);
                                 
                                  // print your MAC address:
                                  byte mac[6]; 
                                  WiFi.macAddress(mac);
                                  Serial.print("MAC address: ");
                                  Serial.print(mac[5],HEX);
                                  Serial.print(":");
                                  Serial.print(mac[4],HEX);
                                  Serial.print(":");
                                  Serial.print(mac[3],HEX);
                                  Serial.print(":");
                                  Serial.print(mac[2],HEX);
                                  Serial.print(":");
                                  Serial.print(mac[1],HEX);
                                  Serial.print(":");
                                  Serial.println(mac[0],HEX);
                                 
                                }
                               
                                void printCurrentNet() {
                                  // print the SSID of the network you're attached to:
                                  Serial.print("SSID: ");
                                  Serial.println(WiFi.SSID());
                               
                                  // print the MAC address of the router you're attached to:
                                  byte bssid[6];
                                  WiFi.BSSID(bssid);   
                                  Serial.print("BSSID: ");
                                  Serial.print(bssid[5],HEX);
                                  Serial.print(":");
                                  Serial.print(bssid[4],HEX);
                                  Serial.print(":");
                                  Serial.print(bssid[3],HEX);
                                  Serial.print(":");
                                  Serial.print(bssid[2],HEX);
                                  Serial.print(":");
                                  Serial.print(bssid[1],HEX);
                                  Serial.print(":");
                                  Serial.println(bssid[0],HEX);
                               
                                  // print the received signal strength:
                                  long rssi = WiFi.RSSI();
                                  Serial.print("signal strength (RSSI):");
                                  Serial.println(rssi);
                               
                                  // print the encryption type:
                                  byte encryption = WiFi.encryptionType();
                                  Serial.print("Encryption Type:");
                                  Serial.println(encryption,HEX);
                                  Serial.println();
                                }


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


B@tto

Salut,

C'est vague : où est votre site ? Il tourne sur quoi ? Quel format de données attend-t-il ?
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

B83s

Oui ce n'est pas très clair

Si c'est pour afficher vos mesures sur une page HTML ... Il y a un exemple tout cuit dans la librairie ethernet ...

Bloodhearth

Notre site est sur un un ordinateur en réseau local, donc non disponible par recherche sur internet. Il a besoin d'un fichier en .txt pour pouvoir afficher les données sur la page.
Mais la n'est pas le problème, ce qui nous empêche de finalisez le projet c'est de réussir a envoyer depuis notre carte arduino (non relié à un ordinateur) les données vers un ordinateur branché sur le même réseau en wifi.

EDIT / Le site est codé en html (utf8),

TribesTom

Si j'ai bien compris le problème c'est d'envoyer le fichier txt de l'arduino au serveur ?

Dans ce cas pourquoi pas par ftp ?

http://playground.arduino.cc/Code/FTP

Bon amusement

Bloodhearth

C'est exactement cela, mais par contre j'accepterais bien quelques explications sur le FTP en version française car j'ai beau ne pas être trop mauvais en anglais je vous avoue que là je n'ai pas compris.

TribesTom

La je ne saurais pas trop t'aider sur ce point je n'ai jamais utiliser cette librairie.

Mais il doit surement trainer des tuto sur le web.

Bon amusement.

Bloodhearth


oscar_r

Est-ce que tu pourrais poster le code final pour comprendre la résolution de ce type de problème?? merci 

al1fch

pour la technique d'envoi   qui, semble t-il, a donné satisfaction, voir le message #6
Bien entendu cela implique un effort de compréhension de ce code et d'adaptation aux besoins particuliers.

Go Up