TP0-OpenLab

TP0

I. Introduction

Objectif

L’objectif est de prendre en main la carte Qorvo DWM3001 et le logiciel de programmation et de communication avec la carte IDE Arduino.

Matériel nécessaire

  • Un ordinateur
  • Une carte Qorvo DW3001
  • Un câble micro USB B vers USB A.
  • Un accès internet

II. Téléchargement et première connexion

Téléchargement et installation du logiciel Arduino IDE

Pour commencer, nous devons configurer l’environnement de dĂ©veloppement Arduino IDE pour travailler avec les nĹ“uds DW1001. Suivez ces Ă©tapes :

  • TĂ©lĂ©charger et installer l’IDE Arduino sur votre ordinateur, si ce n’est pas dĂ©jĂ  fait. L’IDE Arduino est disponible gratuitement sur le site officiel d’Arduino.

Installez la chaîne de compilation en suivant les instructions sur cette page.

capt9

Ajout de la carte DWM3001

  • Ouvrez le gestionnaire de cartes Ă  partir du menu Outils > Type de Carte > Gestionnaire des cartes et installez " Nordic Semiconductor nRF5 Boards"
  • SĂ©lectionnez votre carte nRF5 dans le menu Outils > Type de Carte > Nordic Semiconductor nRF5 Boards > QorvoDWM3001 CDK

REMARQUE 1 : Lors de l’installation, il faut quelques minutes Ă  l’IDE Arduino pour extraire les outils après leur tĂ©lĂ©chargement, veuillez patienter.

REMARQUE 2 : La carte QorvoDWM3001 CDK n’existe pas parmi les cartes, veuillez la configurer d’abord en ajoutant des pilotes supplémentaires.

Configuration spĂ©cifique au système d’exploitation

–> OS X

Aucune configuration supplémentaire requise.

–> Linux

Pour les utilisateurs Linux 64 bits, « libc6:i386 », « libstdc++6:i386 », « libncurses5: i386 » et « libudev1:i386 » doivent être installés :

1
sudo dpkg --add-architecture i386
1
sudo apt-get update
1
sudo apt-get -y install libc6:i386 libstdc++6:i386 libncurses5:i386 libudev1:i386

–> Windows pour Segger J-Link

  1. Télécharger Zadig
  2. Brancher la carte comme montre l’image suivante.
    Attention ! : Il faut bien la brancher sur le port 1 et non pas 2, si vous utilisez le port 2 la led rouge clignote.

image

  1. DĂ©marrer Zadig https://zadig.akeo.ie
  2. SĂ©lectionner Options -> List All Devices
  3. Branchez et débranchez votre appareil pour trouver ce qui change, et sélectionnez l’Interface 2 dans la liste déroulante des appareils
  4. Cliquez sur Replace Driver

image

REMARQUE : Pour revenir au pilote d’origine, accĂ©dez Ă  : Gestionnaire de pĂ©riphĂ©riques -> Cliquez avec le bouton droit sur le pĂ©riphĂ©rique -> Cochez la case “Supprimer le logiciel du pilote pour ce pĂ©riphĂ©rique” et cliquez sur DĂ©sinstaller

Ajout des paquets manquants

  1. Depuis https://gitlab.irit.fr/rmess/wino/software/arduino-nrf5 , téléchargez la toolchain en zip en cliquant sur le bouton
  2. Accédez aux fichiers cachés en tapant « Windows + R » pour windows

image

  1. Positionnez-vous dans le dossier 0.7.0 avec le chemin suivant :

–> Windows : C:\Users\Username\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.7.0

–> Linux : ~/.arduino15/packages/sandeepmistry/hardware/nRF5/0.7.0
4. Dézippez le dossier arduino-nrf5-master et faites un copier/coller de son contenu dans le dossier caché 0.7.0 (cliquer sur remplacer les fichiers qui existent déjà).

  1. Redémarrez l’IDE Arduino et vérifier que Qorvo DWM3001 CDK apparaît dans la liste des types de carte. Sélectionnez-le.

Choix du Port

Sélectionnez ensuite le port sur lequel vous allez brancher votre câble USB. Pour ce faire, avant de brancher ce câble, repérez les ports présents dans Outils > Port. Branchez ensuite la câble sur la carte DW3001, puis le câble sur un des ports USB de votre ordinateur. Un nouveau port doit apparaître.

image

III. Premier Programme

Ce premier programme a pour but de vérifier le bon fonctionnement de l’ensemble, notamment la communication entre la carte et l’IDE (Integrated Development Environment, ou environnement de développement). Pour l’instant, c’est le câble USB qui alimente la carte. Le voyant rouge ON (carte sous tension). Le programme est écrit dans l’IDE, puis téléversé dans la carte Arduino. Le résultat sera de faire clignoter la LED verte intégrée à la carte.

Programmer une carte se fait en plusieurs Ă©tapes : d’abord Ă©crire le code, puis le compiler, c’est Ă  dire le transformer en commandes adaptĂ©es au circuit, enfin le tĂ©lĂ©verser dans le microcontrĂ´leur.

Le fichier compilĂ© est du “code machine” au format hexadĂ©cimal (.hex), il n’est plus lisible pour nous autres mammifères, mais parfaitement adaptĂ© pour un circuit Ă©lectronique. On ne peut pas retrouver le code d’origine depuis le fichier.hex (dans le meilleur des cas on peut le dĂ©compiler pour rĂ©cupĂ©rer un programme en assembleur)

  1. Téléchargez le programme (appelé aussi « croquis » ou « sketch » en langage Arduino) de clignotement : Menu Fichier > Exemples > 01. Basics > Blink. Le programme, écrit en langage C++ apparaît dans l’IDE.
  2. Sans le modifier, vérifiez le programme
  3. Compilez le code tout en cliquant sur Croquis > Exporter les binaires compilées, après la compilation un fichier .hex sera créer au même emplacement que fichier .ino, pour vérifier qu’il s’est bien ajouter, il suffit d’aller à croquis > afficher le dossier des croquis
  4. Téléversez le code.
  5. Résultat : la LED intégrée doit clignoter à la fréquence d’un cycle allumage/extinction chaque second.

image

Il est intéressant de se pencher maintenant sur la constitution de ce programme. Ce ne sera pas le langage utilisé avec les élèves de collège, mais tous les langages utilisés par la suite seront « traduits » avant d’être compilés vers la carte.

 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
/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/  //(1)

// the setup function runs once when you press reset or power the board
void setup() { //(2)
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT); //(4)
}

// the loop function runs over and over again forever
void loop() {  //(3)
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW); //(5)   // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

(1) : Toute la partie entre /* et */ est du commentaire. Ces commentaires n’interviennent pas dans le fonctionnement du programme, mais sont nécessaires à sa compréhension.

(2) et (3) : Tous les programmes sont composés au minimum de deux fonctions :
void setup () (2) et void loop() (3). La première exécute une seule fois les instructions situées entre les accolades. Elle sert le plus souvent pour initialiser des variables. La deuxième répète indéfiniment (loop = boucle) les instructions situées entre les accolades.

(4) : Dans ce programme, l’instruction située dans le setup : pinMode(LED_BUILTIN, OUTPUT); indique que la broche repérée LED_BUILTIN est considérée comme une sortie.

(5) : Le programme en lui-même est situé dans la fonction « loop » : il consiste à mettre une tension haute sur la broche LED_BUILTIN pendant un délai de 1000 millisecondes, puis une tension basse (égale à zéro) pendant un délai de 1000 millisecondes : digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); On peut, par exemple, faire clignoter la DEL deux fois plus vite en modifiant les deux valeurs delay, pour prendre la valeur 500 au lieu de 1000.