IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

ArduinoBLE et linux ?


Sujet :

Arduino

  1. #1
    Membre actif

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    février 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : février 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut ArduinoBLE et linux ?
    Bonjour tout le monde.

    Je voulais ( et je veux toujours en fait) me lancer dans l'utilisation des module ArduinoBLE.
    Le but, communiquer entre mon Arduino recevant des data en analogique et un Raspberry collectant et archivant des données.

    La collecte d'info entre arduino et raspi fonctionne via I2C.
    Mas je voulais ,m'affranchir des fils entre les deux ensemble (isolation galvanique plus efficace....)
    Donc soit le bluetooth, soit le wifi....

    Comme j'avais des arduinoBLE, j'ai essayé le bluetooth.
    Ma configuration :

    Arduino 33 BLE, avec l'IDE 1.18.16 et mise a jour des bibliothèque, ArduinoBLE, ......
    Linux Debian10

    Il existe quelque tuto sur internet, mais j'ai rencontré plusieurs problèmes;.

    Mon ArduinoBLE se connecte sur un port ttyACM0.
    De ce fait il semble que lorsque j'upload un sketche, le moniteur serie n'est pas disponible en reception pendant+/- 30 sec après la fin de l'upload.( mais en emission, il fonctionne.......!)

    Je n'arrive pas a faire fonctionner la bibliothèque <ArduinoBLE.h>.
    Dès que je désire initialiser le Bluetooth avec BLE.begin(); l'initialisation semble bloquer l'Arduino
    Voici le code (sans le loop{}) que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    #include <ArduinoBLE.h>
    #define SERVICE_UUID "19B10000-E8F2-537E-4F6C-D104768A1214"
    #define ANALOG_CHARACT_UUID "19B10001-E8F2-537E-4F6C-D104768A1214"
    #define CHANNEL_CHARACT_UUID "19B10002-E8F2-537E-4F6C-D104768A1214"
     
    BLEService AnalogService(SERVICE_UUID);
    BLECharacteristic AnalogChar(ANALOG_CHARACT_UUID, BLERead | BLENotify,2);
    BLEByteCharacteristic ChannelChar(CHANNEL_CHARACT_UUID, BLEWrite | BLERead);   	   
     
    BLEDescriptor AnalogDescriptor("2901","analog");
    BLEDescriptor ChannelDescriptor("2901","channel");    	      
     
    uint8_t channel;
    boolean write_adr;
    int led1 = LEDR;
    int led2 = LEDG;
    int led3 = LEDB;
    void setup() {
      Serial.begin(115200);
      analogReadResolution(12);
      channel = A0;
      if (!BLE.begin()) {
        Serial.println("échec du démarrage de BLE");
        digitalWrite (led1,HIGH);
        while (1);
      }
      AnalogChar.addDescriptor(AnalogDescriptor);
      ChannelChar.addDescriptor(ChannelDescriptor);
      BLE.setLocalName("ADC");
      BLE.setAdvertisedService(AnalogService);
      AnalogService.addCharacteristic(AnalogChar);
      AnalogService.addCharacteristic(ChannelChar);
      BLE.addService(AnalogService);
      BLE.advertise();
      digitalWrite (led1,LOW);
    }

    J'ai allumé une led rouge durant la boucle BLE.begin(), et elle devrait s'éteindre dès que BLE.begin() est initialise.
    Et là elle ne s'éteint jamais (sauf en deconnectant l'arduino

    Si quelqu'un à une idée ou des exemples ou m'explique ou est mon erreur,...je suis preneur


    Un grand Merci

    Michel

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance en conception mécanique et prototypage
    Inscrit en
    novembre 2006
    Messages
    20 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance en conception mécanique et prototypage

    Informations forums :
    Inscription : novembre 2006
    Messages : 20 177
    Points : 54 326
    Points
    54 326
    Par défaut
    Quand on commence avec une nouvelle bibliothèque, il est quand même préférable d'essayer les exemples fournis avec
    Voir dans le menu Fichier > Exemples > ArduinoBLE > Central > Scan (par exemple).
    Ingénieur indépendant en conception mécanique et prototypage :
    • conception mécanique 3D (Autodesk Fusion 360)
    • impression 3D (Ultimaker)
    • développement informatique (Python, MATLAB, C)
    • programmation de microcontrôleur (Microchip PIC, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre actif

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    février 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : février 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut Essai Scan
    Bonjour Jerome Briot,

    Merci de l'aide,

    C'est ce que j'ai fait, mais lorsque j'ai eu chargé le sktche (pas d'erreur à la complation ni au chargment),
    Je modifie le code de l'exemple en ajoutant une led et en l'allumant dans le setup, puis en l'eteignat une fois le BLE.begin() terminé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    include <ArduinoBLE.h>
    int led1 = LEDR;
    int led2 = LEDG;
    int led3 = LEDB;
    void setup() {
      Serial.begin(9600);
      while (!Serial);
      digitalWrite (led1,HIGH); //allumage de la LED rouge
        // begin initialization
      if (!BLE.begin()) {
        Serial.println("starting BLE failed!");
        while (1);
      }
      Serial.println("BLE Central scan");
      // start scanning for peripheral
      digitalWrite(led1,LOW);//extinction de la led rouge
      BLE.scan();
    }
    Lorsque la led de communication s'est eteinte, rien ne se passe.
    je dois attendre environ 10-15 sec pour que le moniteur serie s'ouvre(port ttyATM0),
    Je fais un reset de la carte( on off) avec le moniteur affiché,

    Et je reeçois:
    BLE Central scan
    Discovered a peripheral
    -----------------------
    Address: c1:74:0b:b1:5d:ab
    Local Name: Hue bulb
    Service UUIDs: fe0f
    RSSI: -54
    Ce qui est le nom d'un bandeau LED communiquant par bluetooth.
    Mais ma led Rouge est toujours allumée.....

    Un progrès très net, mais bon, je continue à chercher....

    michel

Discussions similaires

  1. Débat : quelle distribution Linux choisir pour débuter ?
    Par Anonymous dans le forum Distributions
    Réponses: 227
    Dernier message: 18/02/2015, 11h09
  2. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 23h53
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 11h37
  4. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 18h45
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo