Arduino M0 mini et Adafruit Bluefruit LE SPI Friend - Bluetooth Low Energy (BLE)
Bonjour,
Comme dit dans l'intitulé, j'utilise une carte Arduino M0 mini avec un module bluetooth low energy de Adafruit.
J'ai deux problèmes,
le premier, il m'est impossible d'utiliser les commandes "AT".
Le second, il m'est impossible d'afficher les informations du module dans le moniteur série.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#include <Arduino.h>
#include <SPI.h>
#include "Adafruit_BLE.h"
#include "Adafruit_BluefruitLE_SPI.h"
#include "Adafruit_BluefruitLE_UART.h"
#include "BluefruitConfig.h"
#if SOFTWARE_SERIAL_AVAILABLE
#include <SoftwareSerial.h>
#endif
#define FACTORYRESET_ENABLE 0 //si 1=reset parametre d'usine si 0=ne reset pas
//logiciel SPI, utilisant des broches SPI définies par l'utilisateur SCK / MOSI / MISO, puis CS / IRQ / RST sélectionné par l'utilisateur
//Adafruit_BluefruitLE_SPI ble ( BLUEFRUIT_SPI_SCK , BLUEFRUIT_SPI_MISO ,BLUEFRUIT_SPI_MOSI , BLUEFRUIT_SPI_CS ,BLUEFRUIT_SPI_IRQ , BLUEFRUIT_SPI_RST );
// SPI materiel CS=8, IRQ=7, RST=4;(fonctionne mais plus lent).
Adafruit_BluefruitLE_SPI ble ( BLUEFRUIT_SPI_SCK , BLUEFRUIT_SPI_MISO ,BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS ,BLUEFRUIT_SPI_IRQ , BLUEFRUIT_SPI_RST );
// A small helper
void error(const __FlashStringHelper*err) {
SerialUSB.print(err);
SerialUSB.print("\n");
while (1);
}
// Recherche constamment de nouvelles données de commande ou de réponse
void getUserInput(char buffer[], uint8_t maxSize)
{
memset(buffer, 0, maxSize);
while( Serial.available() == 0 ) {
delay(1);
}
}
uint8_t count=0;
char buffer[256]; //stockage de données.
uint8_t maxSize;
/*============================================================================================*/
void setup(void)
{
Serial.begin(115200);
// desactive les commandes echo de Bluefruit
ble.echo(false);
}
/*============================================================================================*/
void loop(void)
{
delay(1000);
SerialUSB.println("Début dans 5 sec");
delay(5000);
SerialUSB.println("*******************************************************************");
SerialUSB.println("*******************************************************************");
delay(1000);
SerialUSB.print("Test des commandes AT, Adafruit Bluefruit module bluetooth LE\n"); // Message de commencement.
SerialUSB.print("-------------------------------------\n"); //
delay(1000);
SerialUSB.print(("Initialisation du module bluetooth Bluefruit LE\n"));// Initialisation/detection du module bluetooth LE
if ( !ble.begin(VERBOSE_MODE) ) // Si l'object 'ble' est vrai alors verbode_mode -> affiche les informations du module.
{
error(F("Impossible de trouver, est-il en mode CoMmanD ? Vérifiez le câblage."));// Si object 'ble' faux alors message error
}
SerialUSB.println("OK!\n");// Si 1er condition remplie alors affiche 'ok'.
delay(1000);
if ( FACTORYRESET_ENABLE )
{
Serial.println("Effectuer une réinitialisation d'usine: ");
if ( ! ble.factoryReset())
{
error(F("Impossible de réinitialiser les paramètres d'usine"));
}
}
//affiche les informations Bluefruit
SerialUSB.println("Demande des infos Bluefruit:");
ble.info();
delay(1000); //attt 1 sec
SerialUSB.println("*******************************************************************");
delay(1000);
SerialUSB.println("*******************************************************************");
delay(1000);
/********************************************************************************/
/****Interroger en permanence les nouvelles données de commande ou de réponse****/
/********************************************************************************/
// Afficher l'invite de commande
SerialUSB.print("AT > ");
// Vérifiez les entrées de l'utilisateur et réitérez-les si quelque chose a été trouvé
char command[BUFSIZE+1];
getUserInput(command, BUFSIZE);
// Envoie de la commande
ble.println(command);
//Vérifier l'état de la réponse
ble.waitForOK();
do
{
count += Serial.readBytes(buffer+count, maxSize);
delay(2);
} while( (count < maxSize) && !(Serial.available() == 0) );
} |
Je ne comprends pas pourquoi en ligne 93, les informations ne s'affichent pas et ensuite qu'il me soit impossible d'utiliser les commandes "AT".
Pouvez-vous m'aider s'il vous plaît. Merci.
Bonne journée.