This shows you the differences between two versions of the page.
sde:laboratoare:02_microbit_fr [2021/02/14 14:06] alexandra.state2607 [La connexion du micro:bit a l’ordinateur] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== TP 2 - Set up BBC micro:bit ====== | ||
- | ==== Support pour TP ==== | ||
- | [[https://microbit-micropython.readthedocs.io/en/v2-docs/| Documentation BBC micro:bit MicroPython]] | ||
- | |||
- | ===== Objectifs du TP ===== | ||
- | * Connexion du micro:bit au ordinateur | ||
- | * Chargement de programmes au micro:bit | ||
- | |||
- | ===== Présentotion du BBC micro:bit V2===== | ||
- | |||
- | BBC micro:bit est une plaque de développement qui utilise un **microcontrôleur**. Ce dispositif a pour but d’offrir les étudiants un bon commencement pour développer ses compétences en programmation. | ||
- | |||
- | Micro:bit V2 est un ARM Cortex M4, petit et facile d’utiliser. Il est prévu avec 25 LED, sur lesquelles on peut afficher des messages ou des images. Il est prévu, aussi, avec u accéléromètre, qui peut détecter les mouvements, un bussole, Bluetooth, deux buttons, à travers lequel il peut interagir avec l’utilisateur et des autres d’autres capteurs que nous découvrirons au cours du TP. | ||
- | |||
- | Les programmes seront écrits sur l’ordinateur et après ils seront chargés sur le micr:obit. Ces programmes restent sur la mémoire [[https://www.techopedia.com/definition/24481/flash-memory#:~:text=Flash%20memory%20is%20a%20non,cameras%20and%20solid%2Dstate%20drives.|flash]] et ils vont être exécutés quand le microcontrôleur est alimenté. | ||
- | |||
- | Qu’est-ce qu'un microcontrôleur? | ||
- | |||
- | Le microcontrôleur et un ordinateur réduit dans un seul chip, qui peut exécuter un programme à la fois et consommer beaucoup moins qu’un ordinateur portable ou un ordinateur. En plus, elles sont bonnes pour contrôler et détecter les signaux électriques a l’aide de ses broches. | ||
- | Pour plus des infos tu peux cliquer sur ce [[https://www.allaboutcircuits.com/technical-articles/what-is-a-microcontroller-introduction-component-characteristics-component/|lien]]. | ||
- | |||
- | {{ :sde:laboratoare:microbitv2.png?600 |}} | ||
- | |||
- | ===== La connexion du micro:bit a l’ordinateur ===== | ||
- | |||
- | Le premier pas pour connecter le microcontrôleur a l’ordinateur est d’utiliser le câble micro USB, qui a été reçu avec BBC micro:bit. Vous devez introduire le USB type B en haut du dispositif et l’autre terminaison de fil dans votre ordinateur. | ||
- | |||
- | ===== Le premier programme écrit dans l'éditeur du code en ligne ===== | ||
- | |||
- | Pour le développement des TP, on va écrire des programmes dans un éditeur du code en ligne, qui s'appellent [[https://python.microbit.org/v/2 | ||
- | |Makecode]]. | ||
- | |||
- | ===Exemple 1=== | ||
- | Le premier exemple qu’on va l'écrire sera l'affichage de texte "Hello" sur le 25 LED, suivi par l'abréviation "SdE", qui toutefois va être stocke dans une variable. | ||
- | |||
- | <code python> | ||
- | from microbit import display #import "diplay" from microbit library | ||
- | |||
- | name = "SdE" #declaration of a variable with a String | ||
- | |||
- | #all the code that is idented under the loop belongs to it | ||
- | while True: #infinite looop | ||
- | # "display" is an object that refers to the LEDs, this method allows us to control them | ||
- | display.scroll("HELLO" + " " + name) # concatenation of Strings | ||
- | | ||
- | </code> | ||
- | ==== Le chargement du programme sur micro:bit ==== | ||
- | Le transfert du programme s'appellent flashing, parce que le programme est copié dans la mémoire flash du micro:bit. | ||
- | |||
- | === Première méthode: Le chargement du fichier .hex sur micro:bit === | ||
- | Après que vous avez eu connectée le microcontrôleur a l'ordinateur vous pouvez voir "MICROBIT" comme une clé USB. | ||
- | |||
- | L’étape suivante est de sauve-garder le programme comme un fichier .hex. Pour cela on doit appuyer sur le bouton "Load/Save", alors il sera téléchargé, comme on peut voir dans l’image ci-dessous: | ||
- | |||
- | {{ :sde:laboratoare:load.png?250 | }} | ||
- | {{ :sde:laboratoare:downloadhex.png?250 |}} | ||
- | |||
- | La dernière étape pour charger le programme sur micro:bit est d'ouvrir le dossier ou a été télécharge le fichier .hex et lui copier dans "MICROBIT". se compilera automatiquement sur le microcontrôleur. | ||
- | |||
- | === La deuxième méthode: Direct Flash === | ||
- | |||
- | Pour cette méthode est suffisamment d’utiliser seulement l’éditeur de code en ligne dans un browser Chrome ou Edge. La première étape est de connecter le dispositif en appuyant le bouton "Connect" depuis le menu de l’éditeur de code. | ||
- | |||
- | {{ :sde:laboratoare:connect_editor.png?250 | }} | ||
- | |||
- | Une fenêtre similaire à celle ci-dessous apparaîtra. Il ne reste plus qu’à cliquer sur le dispositif "BBCmicrobit" que Makecode a détecte. | ||
- | |||
- | {{ : sde:laboratoare:connect.png?250 | }} | ||
- | |||
- | |||
- | La dernière étape c’est d’appuyer le bouton “Flash”. Il y a possible que vous devez attendre quelques secondes jusqu’à le programme va être charge sur micro:bit. | ||
- | |||
- | {{ :sde:laboratoare:flash.png?250 | }} | ||
- | |||
- | ====Input devises ou butons ==== | ||
- | |||
- | Dans le schéma du microcontrôleur présenté ci-dessus, on peut voir que le [[https://ocw.cs.pub.ro/courses/sde/laboratoare/02_microbit_fr?&#le_microphone_et_le_speaker|micro:bit]] a trois boutons. | ||
- | |||
- | Le bouton au dos est pour **reset**. Si, ce bouton est appuie pour cinq secondes, le microcontrôleur arrêtera d’exécuter le programme chargé. En même temps, si le bouton de reset est pressé brièvement, le programme qui fait flash sur la carte sera réinitialisé. | ||
- | |||
- | Sur le devant du dispositif il y a deux butons A et B, qui peut-être accéder dans le code avec //buton_a// et //button_b//. Ces boutons ont une méthode is_pressed(), qui va retourne //True// si le bouton est appuyé, si non la méthode va retourne //False//. | ||
- | |||
- | Dans cet exemple on va utilise le conditionnel "if". | ||
- | |||
- | <code python> | ||
- | # Simple decision | ||
- | a = 33 | ||
- | b = 200 | ||
- | if b > a: | ||
- | print("b is greater than a") | ||
- | </code> | ||
- | |||
- | <code python> | ||
- | # Use "elif" to add an additional condition | ||
- | a = 33 | ||
- | b = 33 | ||
- | if b > a: | ||
- | print("b is greater than a") | ||
- | elif a == b: | ||
- | print("a and b are equal") | ||
- | </code> | ||
- | |||
- | <code python> | ||
- | # The "else" keyword takes anything that has not been included before | ||
- | a = 200 | ||
- | b = 33 | ||
- | if b > a: | ||
- | print("b is greater than a") | ||
- | elif a == b: | ||
- | print("a and b are equal") | ||
- | else: | ||
- | print("a is greater than b") | ||
- | </code> | ||
- | |||
- | <code python> | ||
- | # Else without elif | ||
- | a = 200 | ||
- | b = 33 | ||
- | if b > a: | ||
- | print("b is greater than a") | ||
- | else: | ||
- | print("b is not greater than a") | ||
- | </code> | ||
- | |||
- | |||
- | ===Exemple 2=== | ||
- | |||
- | Le programme suivant va afficher sur l'écran du micro:bit la lettre "A" si le bouton A etre appuie, repsectivment la lettre "B" si le buton B va atre appuye. Si aucun button va etre appuye, sur l'ecran on va avoir une image avec un émoticône confuse. | ||
- | |||
- | Le programme suivant va afficher sur l'écran du micro:bit la lettre "A" si le bouton A été appuyé, respectivement la lettre "B" si le bouton B été appuyé. Si aucun bouton sera appuyé, sur l'écran on va avoir une image avec une émoticône confuse. | ||
- | |||
- | <code python> | ||
- | from microbit import display, button_a, button_b, Image | ||
- | |||
- | while True: #infinite looop | ||
- | if button_a.is_pressed(): #check if the button A is pressed | ||
- | display.scroll("A") | ||
- | elif button_b.is_pressed(): #check if the button B is pressed | ||
- | display.scroll("B") | ||
- | else: | ||
- | display.show(Image.CONFUSED) | ||
- | </code> | ||
- | |||
- | ====L'accéléromètre. Des gestes ==== | ||
- | |||
- | Micro:bit est capable de reconnaître des gestes comme l'inclination ou la secousse. Au dos du microcontrôleur, en bas, il a un chip petit, qui représenter l'accéléromètre, il s' appelle [[https://ocw.cs.pub.ro/courses/sde/laboratoare/02_microbit_fr?&#le_microphone_et_le_speaker|"Compass and Accelerometer”]]. Cela peut mesurer l'accélération dans toutes les trois dimensions, comme l'accélération gauche-droite, l'accélération avant-arrière et l'accélération haut-bas. | ||
- | |||
- | Qu'est-ce qu'un accéléromètre? Un accéléromètre a le but de mesurer et analyser des accélérations linaires et angulaires, par exemple, les voitures modernes utilisent un accéléromètre qui détecte un accident pour déployer des airbags. | ||
- | |||
- | ===Exemple 3=== | ||
- | |||
- | Dans cet exemple on va utilise l'accéléromètre en affichant sur l'écran du micro:bit une carre s’il est incline vers gauche, un triangle s’il est incline vers droite et un diamant s’il | ||
- | il est mis face haut. | ||
- | |||
- | <code python> | ||
- | from microbit import display, accelerometer, Image | ||
- | |||
- | while True: | ||
- | if accelerometer.current_gesture() == "left": | ||
- | display.show(Image.SQUARE) | ||
- | elif accelerometer.current_gesture() == "right": | ||
- | display.show(Image.TRIANGLE) | ||
- | elif accelerometer.current_gesture() == "face up": | ||
- | display.show(Image.DIAMOND) | ||
- | else: | ||
- | display.clear() | ||
- | </code> | ||
- | |||
- | ====Les direction. La boussole ==== | ||
- | |||
- | Le capteur pour [[https://www.youtube.com/watch?v=a3P6LWwPBqM&feature=emb_logo| la boussole]] détecte les champs magnétiques de la Terre et est mis, aussi, au dos du micro:bit, comme l’accéléromètre. Cela est utilise pour détecter si un aimant est autotour de dispositif ou pour navigation, il peut montre les directions Nord, Sud, Est et Ouest. | ||
- | |||
- | ===Exemple 4=== | ||
- | Dans cet exemple on va voir comme le micro:bit peut-être utilise comme une boussole. __Attention__: Immédiatement après ont eu chargé le code sur le dispositif, vous devez attendre un peu jusqu’à sur l’écran il va apparaitre le texte suivant “TITLING FILL”. Puis, une LED sera affichée à son tour, vous devez incliner le micro:bit jusqu’à l’écran se va allume complétement. | ||
- | |||
- | <code python> | ||
- | from microbit import display, compass | ||
- | compass.calibrate() | ||
- | |||
- | while True: | ||
- | degrees = compass.heading() | ||
- | if degrees < 45 or degrees > 315: | ||
- | display.show('N') | ||
- | elif degrees < 135: | ||
- | display.show("E") | ||
- | elif degrees < 225: | ||
- | display.show("S") | ||
- | elif degrees < 315: | ||
- | display.show("W") | ||
- | else: | ||
- | display.show(' ') | ||
- | </code> | ||
- | |||
- | ====Le Microphone et le Speaker ==== | ||
- | |||
- | BBC micro:bit V2 a le microphone fixé à l'arrière et à la face, vous pouvez voir l'indicateur, qui s'allume lors de lui accès. Cela peut mesurer le niveau du son autotour de dispositif et il peut détecter les son haut ou plus bas. Aussi à l'arrière il y a sur [[https://www.allaboutcircuits.com/technical-articles/what-is-a-printed-circuit-board-pcb/|PCB]] un un haut-parleur(speaker) magnétique d’où provient le son comme output. | ||
- | |||
- | ===Exemple 5=== | ||
- | Cet exemple va simule une bougie. Après l’importation des bibliothèques, est déclaré un compteur nommé //lit//, qui a initialement la valeur //True//. Après, on vérifie s’il y a été enregistré un son fort en utilisant la méthode//was_event()//, qui efface également l’historique des événements sonores avant de retour. Si la méthode va retourne //True// on va change la valeur du compteur //lut//. Dans le cas où la bougie est allumée une image simulant une bougie apparaîtra sur l’écran et qui va faire la flamme scintille à une position aléatoire de 1 à 3. | ||
- | |||
- | Pour créer une **image** il y a nécessaire de donner des valeurs pour chaque pixel de l'écran. La valeur 0 signifie que la LED est éteindre. Les valeurs 1 et 9(la valeur maximum) montre le niveau de luminosité du pixel. Pour représenter une ligne les valeurs sont entre "" et elle se finit avec //:// . Dans cet exemple , on peut voir que chaque ligne du //Image()// représente la position des LED sur l'écran physique du micro:bit. Par conséquent, en analysant la première ligne, qui suggère la flamme, toutes les LED sont éteintes sauf celle en position 3, qui a le pixel réglé sur la luminosité maximale. Les autres lignes sont similaires pour former le reste de la bougie, les positions 1 et 5, le pixel est réglé sur 0 et le reste sur 9. | ||
- | |||
- | Pour créer le ** effet scintillement ** on utilise la méthode //set_pixel()//, qui a comme paramètres la ligne, la colonne et la valeur du pixel. | ||
- | |||
- | <code python> | ||
- | from microbit import display, microphone, SoundEvent, Image, sleep | ||
- | import random | ||
- | |||
- | lit = True | ||
- | |||
- | while True: | ||
- | if microphone.was_event(SoundEvent.LOUD): #check if a loud sound was | ||
- | lit = not lit | ||
- | sleep(500) | ||
- | if lit: | ||
- | display.show(Image( #candle image | ||
- | "00900:" | ||
- | "09990:" | ||
- | "09990:" | ||
- | "09990:" | ||
- | "09990")) | ||
- | sleep(150) | ||
- | flicker = random.randint(1, 3) | ||
- | if flicker != 2: | ||
- | display.set_pixel(2,0,0) | ||
- | display.set_pixel(flicker,0,9) | ||
- | sleep(150) | ||
- | else: | ||
- | display.clear() | ||
- | </code> | ||
- | |||
- | ====Capteur tactile ==== | ||
- | |||
- | Micro:bit a un capteur tactile mis sur [[https://www.youtube.com/watch?v=spFD3SxxxHQ&feature=emb_logo|logo]], qui est utilise comme input. Il peut interagir avec l'utilisateur comme en utilisant bouton. | ||
- | |||
- | ==== Exemple 6 ==== | ||
- | Dans cet exemple on vérifie si le senseur est touche, dans ce cas on va afficher le message "Hello", si non, l’écran ne s’allumera pas. | ||
- | |||
- | <code python> | ||
- | from microbit import display, pin_logo | ||
- | |||
- | while True: | ||
- | if pin_logo.is_touched(): | ||
- | display.scroll("Hello") | ||
- | else: | ||
- | display.clear() #display stays empty | ||
- | </code> | ||
- | |||
- | ==== Capteur de température et de lumière ==== | ||
- | |||
- | Le capteur de [[https://youtu.be/mrHn8eZ9eqg | température]] enregistre avec une approximation la température autour de micro:bit. Le capteur de [[https://youtu.be/ii0U_FMr-Z4|lumière]] peut enregistrer le niveau de lumière par les LED | ||
- | |||
- | ==== Exemple 7 ==== | ||
- | |||
- | Dans l'exemple suivant on va afficher la température si le bouton A été appuyé. Si le micro:bit va enregistre la lumière fort sur l'écran va apparaitre une image de soleil. Pour tester le capteur de lumière, dans cet exemple vous pouvez prendre votre portable, allume la lampe de poche et mettre sa lumière vers le dispositif. | ||
- | |||
- | <code python> | ||
- | from microbit import display, button_a, Image, temperature | ||
- | |||
- | while True: | ||
- | if button_a.was_pressed(): | ||
- | display.scroll(temperature()) #displat the temperature | ||
- | elif display.read_light_level() > 100: #check the light level | ||
- | display.show(Image( #sun image | ||
- | "90909:" | ||
- | "09990:" | ||
- | "99999:" | ||
- | "09990:" | ||
- | "90909")) | ||
- | else: | ||
- | display.clear() | ||
- | </code> | ||
- | |||
- | ===== Exerciții ===== | ||
- | |||
- | - Écrivez un programme qui en appuyant simultanément les boutons A et B, va afficher une image qui représente "OUI". Si pas de boutons est appuyé sur l'écran va affiche une image qui représente "NON" "NON". Voir les immage sur [[https://microbit-micropython.readthedocs.io/en/v2-docs/tutorials/images.html|documentation]]. | ||
- | -Modifier l'exercice antérieur tel que en appuyant le bouton A va afficher sur l'écran la lettre "A" et en appuyant le bouton B va afficher sur l'écran la lettre "B". | ||
- | -Écrivez un programme qui affiche le nombre actuel de secousses sur l'écran. Lorsque le micro-bit enregistre 9 secousses, une image apparaît sur l'affichage. | ||
- | -Créez un programme qui enregistre le nombre des inclinaisons a gauche et a droite. Chaque fois que le micro: bit est pointé dans l'un des deux côtés, il doit afficher sur l'ecran le nombre actuel d'inclinaisons de ce côté. //Hint//: utilisez la methode [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit.html#microbit.sleep|sleep]] | ||
- | -Écrivez un programme qui en atteignant le logo(le capteur tactile ) va faire toggle entre une image avec un diamant et une image avec un petit diamant. | ||
- | -Écrivez un programme qui, lors de l'enregistrement d'un son, affichera une image sur l'écran et parlera avec la parole "ON". Si aucun son n'est pas enregistré, l'affichage reste vide. Affichez le niveau sonore pour une action a votre choix (appui sur un bouton, logo tactile, inclinaison, etc.) | ||
- | -Changer le code de [[https://ocw.cs.pub.ro/courses/sde/laboratoare/02_microbit_ro?&#senzorul_de_temperatura_si_de_lumina|exemple 7]] pour que le micro:bit détecte la lumière pour utiliser le haut-parleur pour lire de la musique JUMP_UP, et lorsque la lumière est éteinte pour lire de la musique JUMP_DOWN. Pour accéder à la bibliothèque "musique", voir la [[https://microbit-micropython.readthedocs.io/en/v2-docs/tutorials/music.html|documentation]]. |