Go Down

Topic: ajouter une liaison sans fil avec un APC220 sur un data logger (Read 557 times) previous topic - next topic

jp_vanuatu

Bonjour,

je débute dans l'arduino (en fait cela fait un an que je me suis lancé) et je cherche à améliorer un data logger pour un projet éducatif. Le but est de mesurer la température de l'eau de mer sur un bateau radiocommandé, de l'enregistrer sur SD en précisant l'heure et de récupérer en même temps ces données sur un ordinateur distant.

La partie data logger fonctionne bien. J'ai utiliser une carte arduino uno R3, un capteur de température DS18B20, un lecteur SD et un RTC DS3231. En liaison série, le moniteur de l'IDE m'affiche bien les valeurs. En rajoutant l'APC220 côté arduino et un APC220 couplé côté PC, le résultat est nul:j'utilise le logiciel serial port utility pour faire les tests avec l'APC220 car depuis la version 1.6 de l'IDE, l'affichage est impossible (pourquoi?)

J'ai testé l'APC220 seul. Le code est le suivant. aucun problème.
__________________________________________________________________________________
void setup()
{
  Serial.begin(9600);             //Set serial baud rate to 9600
}

void loop()
{
  Serial.println("Hello!");           //print out hello string
  delay(1000);                  //1 second delay
}
___________________________________________________________________________________

Je teste la SD seule. Pas de problème, les messages s'inscrivent par liaison USB. Je rajoute l'APC220 à la place de l'USB, pas de données. J'ai testé avec une lecteur SD puis avez un ethernet shield (code ci dessous):
__________________________________________________________________________________
/*
 *  Arduino SD Card Tutorial Example
 * 
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>

File myFile;

int pinCS = 4; // Pin 10 on Arduino Uno, Pin 4 sur Ethernet Shield, pin 11,12 et 13 pour les autres

void setup() {
   
 
  pinMode(10, OUTPUT); // Ethernet désactivé
  digitalWrite(10,HIGH);
  Serial.begin(9600);
 
 
  // SD Card Initialization
  if (SD.begin(4))
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
 
  // Create/Open file
  myFile = SD.open("test.txt", FILE_WRITE);
 
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.println("Writing to file...");
    // Write to file
    myFile.println("Testing text 1, 2 ,3...");
    myFile.close(); // close the file
    Serial.println("Done.");
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }

  // Reading the file
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("Read:");
    // Reading the whole file
    while (myFile.available()) {
      Serial.write(myFile.read());
   }
    myFile.close();
  }
  else {
    Serial.println("error opening test.txt");
  }
 
}
void loop() {
  // empty
}
___________________________________________________________________________________

Dernier code, celui du data logger qui fonctionne en liaison série par USB:

___________________________________________________________________________________
/*
 *  Arduino Temperature Data Logging
 * 
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>
#include <OneWire.h>
#include <DallasTemperature.h>

File myFile;
DS3231 rtc(SDA,SCL);

int pinCS = 10; // Pin 10 on Arduino Uno

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
 
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 

void setup() {           
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
 
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  rtc.begin();
  sensors.begin();   
}
void loop() {
  sensors.requestTemperatures();
  Serial.print(rtc.getTimeStr());
  Serial.print(",");
  Serial.print(int(rtc.getTemp()));
  Serial.print(",");
  Serial.println(sensors.getTempCByIndex(0));
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {   
    myFile.print(rtc.getTimeStr());
    myFile.print(",");   
    myFile.print(int(rtc.getTemp()));
    myFile.print(",");
    myFile.println(int(sensors.getTempCByIndex(0)));
    myFile.print(",");
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
}
____________________________________________________________________________________

Bref, je suis un peu bloqué...
Es-ce un problème entre la communication sans fil et la carte ED. Faut-il utiliser un arduino méga qui possède plusieurs paires TX/RX.

J'ai bien pensé à utiliser du Xbee à la place de l'APC220 mais le fournisseur est incapable pour le moment de me livrer au Vanuatu (alors qu'il n'y a pas de soucis d'habitude)

Je pense qu'il faut modifier quelque chose au niveau du code mais je débute. Si vous avez des idées ou des solutions, je suis preneur.

Merci d'avance.

Jean-Philippe

J-M-L

Pour l'émetteur - Sur quelles pins est connecté l'APC220 ? Si c'est 0/1 vous ne pouvez pas avoir en même temps la sortie dans la console série par USB de cet uno (et Le module est alimenté comment?)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

jp_vanuatu

Pour faire mes tests, la carte arduino est alimentée et branchée d'abord en USB sur le PC (com 4). Je televerse le programme et le test via le moniteur série (IDE ou autre logiciel). Pas de problème.

Je déconnecte l'USB. Je connecte l'APC220 sur la carte (VCC -->5V, GND -->GND, RX -->TX et TX-RX) et l'autre APC220 via l'adaptateur USB côté PC  j'essaie de lire sur le com 7. Et là, rien.

si je téléverse le code simple de test de l'APC220 et que je fais la même procédure, il n'y a pas de problème.

Bref, la communication ne semble pas se faire dès qu'il y a le lecteur SD...

Une idée ou un conseil?

Go Up