Bonjour alors voila je suis en train de fabriquer un Logger ultra léger.
pour cela j'utilise les 4 cartes donné ci dessous pour les caractéristique suivante :
Une tinytile coeur du systeme (avec un intel curie) 6 axe + gyroscope +BLE
une carte RTC PCF 8523 (adafruit)
une carte Micro-SD (pour le logger)
une carte équipé d'un chargeur induction pour charger la batterie lithium de 3.7 300mAh
Dans l'idée je souhaite utilisé 3 cartes tinytile 1 en master 2 en slave
la première et relier à un ordinateur et envoie des commandes via le BLE au 2autres cartes
les commandes sont :
START enregistrement
STOP enregistrement
Synchro RTC
et une commande qui liste les fichiers enregistré
Description de ce que je veux faire :
une synchro met à l'heure les 2 RTC des cartes logger via une transmission de l'heure PC via la carte master qui y est raccordé peut mettre mettre ca dans le setup est une bonne idée.
Alors START crée un fichier CVS qui prend pour nom la date et l'heure du RTC et enregistre les 6 axes de laccelero et le gyroscope et certain angle calculer via les data enregistré. Le fichier ne dépasse pas plus d'une minute d'enregistrement à 100hz
et se recrée toute les 1minutes jusqu'à lenvoie d'une commande STOP.
Une commande DIR qui liste les fichiers et leur taille pour vérifier que tout ce passe bien.
Alors moi jusqu'ici j'ai utilisé un code exemple pour allumer et éteindre une led a distance via le BLE que voici ci dessous
- il ne s'adresse qu'à une seul périphérique au lieu de 2
- il ne transmets pas la Synchro RTC via le BLE
Mais il me laisse pensé que je peux m'appuyer dessus pour réaliser ce que je souhaite faire :
#include <CurieBLE.h>
const size_t INPUT_SIZE = 128;
void setup()
{
// initialisation port serie
Serial.begin(9600);
//
BLE.begin();
Serial.println("BLE central - Commande LED");
Serial.println(" INITIALISATION ... (waiting)");
Serial.println();
Serial.println();
Serial.println("____________ COMMANDE SHELL_____________");
Serial.println("");
Serial.println("CMD = START Starting Logger");
Serial.println("CMD = STOP Stop Logger");
Serial.println("CMD = SYNCH demande l'heure au RTC");
Serial.println("CMD = DIR Arboressence du repertoire root");
Serial.println("CMD = CUCU ben la sa sert a rien ");
Serial.println("");
Serial.println("____________ COMMANDE FIN_______________");
Serial.println();
Serial.println();
//débute un scan des réseaux BLE
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
void loop()
{
BLEDevice peripheral = BLE.available();
if (peripheral)
{
Serial.print("Periph Trouvé : ");
Serial.print(peripheral.address());
Serial.print(" : ");
Serial.print(peripheral.localName());
Serial.print(" : ");
Serial.print(peripheral.advertisedServiceUuid());
Serial.println();
BLE.stopScan();
Shellcommande(peripheral);
BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}
}
void Shellcommande(BLEDevice peripheral)
{
Serial.println("connexion au peripherique en cours ....");
if(peripheral.connect())
{
Serial.println ("connexion effectuée bienvenu au japon ");
Serial.println ("");
Serial.println ("");
Serial.println ("_________ HISTORIQUE DE COMMANDE_________");
}else{
Serial.println("connexion échoué rateau dans ta geule");
return;
}
//Serial.println("Attribu du peripherique en cours...");
if(peripheral.discoverAttributes())
{
//Serial.println("Attribu decouvert ca envoie du lourd ");
}else{
Serial.println("attribu qui a trop bu echec de lecture des attribu");
peripheral.disconnect();
return;
}
BLECharacteristic ledCharacteristic = peripheral.characteristic("19b10001-e8f2-537e-4f6c-d104768a1214");
if (!ledCharacteristic) {
Serial.println("Peripheral does not have LED characteristic!");
peripheral.disconnect();
return;
} else if (!ledCharacteristic.canWrite()) {
Serial.println("Peripheral does not have a writable LED characteristic!");
peripheral.disconnect();
return;
}
while(peripheral.connected())
{
if ( Serial.available() > 0 )
{
static char input[ INPUT_SIZE ];
static char CMD0 [6] = "START";
static char CMD1 [5] = "STOP" ;
static char CMD2 [6] = "SYNCH";
static char CMD3 [5] = "DIR" ;
static char CMD4 [5] = "CUCU" ;
static uint8_t i;
char c = Serial.read();
if ( c != '\n' && i < INPUT_SIZE - 1 )
input[ i++ ] = c;
else
{
input[ i ] = '\0';
i = 0;
Serial.print( "Commande envoyé: " );
Serial.println( input );
if (strcmp(input, CMD0) == 0)
{
ledCharacteristic.writeChar(strcmp(input, CMD0));
Serial.println("Data_logger_Start");
}else if (strcmp(input, CMD1) == 0)
{
ledCharacteristic.writeByte(0x00);
Serial.println("Data_Logger_Stop");
}else if(strcmp(input, CMD2) == 0)
{
Serial.println("RTC_SYNCHRONISATION");
Serial.println("command qui fait rien mais qui va transmetre l'horloge");
}else if (strcmp(input, CMD3) == 0)
{
Serial.println("Analyse_Repertoire");
}else if (strcmp(input, CMD4) == 0)
{
Serial.println("PAS DIDEE");
}else{
Serial.println(" Erreur commande");
}
}
}
}
Serial.println("peripherique déconnecté");