Programmer son micro:bit à l’aide d’une tablette Samsung (Android)

Sur Twitter on me demande un coup de pouce pour programmer un micro:bit à l’aide d’une tablette Android. Je vais donc documenter ici les étapes qui fonctionnent pour moi.

À noter que, pour l’instant, Scratch 3 ne supporte pas le micro:bit à l’aide d’une tablette (le Scratch Link est juste pour Windows et MacOS au moment d’écrire ces lignes). Par contre on peut quand même faire quelque chose avec Makecode et l’app de Samsung.

Installer l’appli de Samsung

Ça date un peu mais ça fonctionne toujours. Voici l’appli officielle pour l’instant. Un jour elle ne sera plus nécessaire mais faut vivre avec encore.
https://play.google.com/store/apps/details?id=com.samsung.microbit

Connecter son Micro:bit à l’appli

Ceci se fait en deux étapes, comme toute connection bluetooth. En premier, il faut mettre le micro:bit en mode “pairing”. Pressez les boutons A et B en même temps, puis appuyez le bouton “Reset” à l’arrière. Lâchez le “Reset” mais maintenez la pression sur les deux autres boutons jusqu’à ce que le symbole Bluetooth soit affiché sur les DELs rouges, ou que le code d’identification du micro:bit soit affiché.

Appuyez sur le bouton Next dans l’interface de la tablette.

Reproduisez le code d’identification sur l’écran suivant. Chaque micro:bit aura son propre code graphique.

La prochaine étape est un peu complexe. La tablette va chercher à contacter le microbit et commencer un dialogue. Il y a normalement un échange de codes entre deux dispositifs Bluetooth mais le microbit n’a pas d’écran ou de clavier. S’ensuit donc une interaction un peu boiteuse ici. Hop, une bonne respiration et on y va! Cliquez sur le bouton vert “PAIR” et patientez un peu. Oui, l’interface sur la tablette vous demande de presser le bouton A mais soyez patient. Il faut le faire seulement lorsque le NIP vous sera demandé.

Pour ma part je peux avoir jusqu’à 3 ou 4 échecs de connexion avant que le NIP ne me soit demandé. Il suffit de presser le bouton “retry”. Cette étape est un peu pénible mais lorsque le microbit sera reconnu, on n’aura pas à la refaire! (Dans une salle de classe, il serait important de garder une correspondance tablette-microbit pour éviter d’avoir à faire ce pairing à chaque cours).

Quand le NIP est demandé, pressez le bouton A sur le microbit le plus vite possible! Une série de 6 chiffres sera affichée sur l’écran de DELs rouges. Prenez-les en note, ils seront répétés plusieurs fois. Entrez-les dans l’interface de saisir de la tablette. Et finalement! Le micro:bit est reconnu par la tablette! Ouf! Oui, Microsoft travaille sur une meilleure expérience. Début janvier 2019, ce n’est pas encore prêt malheureusement.

Le code “PUVIV” visible ci-dessous est l’identificatif du microbit que j’ai utilisé. Chaque microbit a son propre code. Cliquez sur la toute petite flèche vers la gauche qui se trouve en haut à gauche.

Le code du microbit est visible dans l’écran des dispositifs BlueTooth de l’interface Android pour les prochaines fois, ce qui peut simplifier la gestion en classe.

Coder dans Makecode

On peut maintenant aller coder dans Makecode. J’utilise Chrome sur Android ici. Tout reste comme si l’on était sur un ordi à part qu’il est plus important de bien nommer ses fichiers avant de les transférer. N’utilisez pas l’option “Code” présente dans l’appli Samsung. Elle ne fonctionne plus, vous devez utiliser un fureteur web.

Télécharger

Pour télécharger notre code, il suffit de cliquer sur le bouton “Télécharger” et d’ignorer l’écran suivant. Le téléchargement est déjà fait comme vous pouvez le constater au bas de l’écran.

Transférer le code par Bluetooth

À ce point-ci, on rebascule vers l’appli Microbit de Samsung et on choisit “FLASH”

Mon programme apparait automatiquement, prêt à être transféré. Par contre le micro:bit n’est pas connecté. Cette fois-ci ça sera plus facile, promis.

Commencez par mettre le microbit en mode “pairing” (boutons A+B, plus reset, relâchez reset, attendez le petit graphique d’identification), et cliquez sur le dessin de connection en haut à droite de l’écran sur la tablette. Le pairing devrait se faire sans douleurs.

Cliquez sur le programme à transférer puis sur le bouton FLASH.

Le transfert par Bluetooth va commencer.

Si le microbit n’est pas en mode “bluetooth” au moment du transfert, vous obtiendrez un code d’erreur GATT. Après le transfert, le microbit sera rebooté et sortira du mode bluetooth. Il faudra penser à le remettre dans le bon mode pour le prochain transfert.

Conclusion

Ces étapes fonctionnent bien pour moi, avec une tablette Samsung Tab A datant de 2016. Je n’ai pas testé avec d’autres tablettes.

La première connection est pénible et devrait être faite par le prof avant d’introduire les micro:bits en classe. Le reste demande quand même quelques manipulations mais les jeunes en sont capables.

Une meilleure solution s’en vient. J’en parlerai lorsqu’elle sera disponible.

Advertisements

Idiot Testing LoraWan Gateway from Pi-Supply: Part 2.

I finally have some free time while the teenagers are still asleep to move on to booting up the Pi Supply LoraWan. When the teens get up we will decorate the house for Christmas and bake cookies, so limited time! Pressure is on!

First let’s follow the steps already laid out for me from the Pi Supply tutorial. I’m already familiar with getting SD cards ready for a Pi. I expect this will go well. At the time of writing this, the image is dated from Dec 2nd. I missed a few iterations already which should make my life easier. Also I see from the name of it that Raspbian Lite was used. No GUI will be available. Roll your sleeves up, this is all command line folks!

Once the card has been flashed with Etcher I decided to boot it up first, before configuring The Things Network. I just want to see what’s on the card.  My Pi is headless, connected to my home network with an Ethernet cable, right into the Range Extender so I can easily retrieve its IP address. Hmm, ssh is off by default. Considering that this image is most likely to be run headless I would have configured SSH by default but at least it’s an easy thing to do. Booting up a second time, with SSH on. Default password on the image which saves me some time and a good opportunity to change said password.  I’m launching raspi-config just to have an idea of the state of this image.  Hmm, weird, SSH was off by default but VNC is on ? I’m turning it off for now not that it has any real impact.  The image did expand automatically which is nice.

The Things Network

Creating an account is a cinch, and creating a new gateway is easy enough. Bit taken aback by having to select a country-based frequency plan as my country isn’t listed. Yet we almost always follow the United States and a quick Google confirms it. United States it is for me. The router is picked by default so I’ll let it be.   Hmm, it needs the exact location of my gateway? How precise does it need to be? And it seems I can’t change it once it’s decided where to put the pin. Bit uneasy about this but let’s keep going.
Oh! On the following page I can control the privacy level, that’s good. At least location isn’t wide open unless there’s a security breach.  I’m turning my location private.

Configuring my network.

Since my Pi is up and running and I have SSH configured, I will edit my files manually directly on it, therefore I’m following Step 3.2.2 (for manual edition).  All is going pretty well but I am puzzled at <<a random ID (of numbers and Letters) in the “gateway_ID”>> . Why not the ID I used when creating the gateway on The Things Network website? And why is there a capital L on Letters?  I’ll be a rebel and will use the same gateway ID as opposed to a random list of characters.

“For the server_address field you should use the server address from the TTN Console that you selected” I have no idea what this refers to.  I’m going to put the router name in there, as it’s some sort of a server and I don’t see what else I could put in this spot.  Save this and reboot!

Rebooting

Lots of activity on the Pi leds. Now I’m wondering if it was a wise choice to boot it up once before making the changes. What if it’s running a script once to set everything up but now it’s no longer running it?
The Pi has booted but there’s no blue light on the LoRa HAT. So first attempt is a FAIL. Let’s try again…

Second Time

This time I go with the online setup provided by Pi-Supply and I will not pre-boot the image. Just in case.  The form is easy enough to fill in, I’m not as confused as doing it manually in the previous step (note that I ended up getting everything right – yeah me).
However when I download the file and take a look, the router information is not what I entered but I can manually edit it.

Entered value
Output

I’m sure this little issue will be taken care of by the time I publish this post.

By comparing the two names, I can see one uses dashes and the other uses dots. So it’s not the name of the router it actually needs.  After a bit of investigation on TheThings website, I find that the ttn-router-us-west is not the server name! The server name should be router.us-west.thethings.network and not the one displayed on the right.

Idiot Testing LoraWan Gateway from Pi-Supply

I received the Pi Supply LoraWan Gateway to beta test or, as I prefer to say, to idiot test. My Lora knowledge is non existent. I expect I will be making a lot of beginner mistakes – which is why I’m calling this *idiot testing*.  Note that this is early stuff for the LoRa HAT and documentation is lacking for now. At least the type of documentation that I would need. Knowing Pi Supply, it won’t stay that way for long.

Assembly:

In this photo I already have the board and header assembled. I did not solder the header, I’m assuming (let’s see if I’m right, probably not) that it does not require soldering, similar to the Sense Hat. Also, posts are already in all four corners because I feel confident. Ah!

Ok, there’s this little black flap on the left which looks like that’s over the camera port on the Pi. I can lift it up and tilt it backwards, like I would do with the camera flap.

Pi Supply IoT LoRa Gateway HAT
Pi Supply IoT LoRa Gateway HAT

Oops, broke it.  I guess it wasn’t meant to be tilted backwards. Rather it seems to be just a protector in place for shipping. I removed it completely for now.

Broken Flap

HAT board:

Here’s the HAT itself.  I’ve already assembled it in this photo:

  1. Added the heat sink in the only way that would not cover the sticker. Hopefully that will work.
  2. Added an antenna.  The kit came with two antennae and I tried to assemble them last evening. My eyes are not what they used to be, astigmatism and old age don’t do well together. I need good day light.  So last night, I fumbled around not really seeing what needed to be done. The black antenna fit. Today in broad daylight, I can see that the other one would fit too. As of now, I have no idea which antenna I’m supposed to use.

IoT Lora HAT

Attaching both parts together:

This insertion is self explanatory. Fits only one way. Good, I feel confident.

20181124_124454.jpg

After insertion it looks like the following photo though. This begs to be pushed down!

20181124_131730Sure enough, look at those nice little metal clamps that hold it in place once pushed down! Wooh, nicely done. I love it when I find a new (to me) mechanism !
Also kinda happy I broke that black flap at the beginning. It would have been in the way here.
20181124_131748

 

At this point the board is all assembled, ready for its first boot up!

Connecter un Micro:bit à Scratch 3

Oui oui! Scratch 3!   La version Beta est disponible et elle inclut le support pour le Micro:bit! Ô joie!

En tout premier, voici le lien pour la version Beta: https://beta.scratch.mit.edu/

scratch3.png

Cliquez sur “Try it!” pour l’essayer ( “Essayez-le” si votre ordi est en français).  Une note au passage, la version française n’est pas complètement disponible au moment d’écrire ce billet. Je vais donc rester en anglais. La traduction française est en cours, il ne faut pas désespérer.

scratch3_001.png

Je ne parlerai pas ici de Scratch 3 lui-même, juste de l’intégration du Micro:bit.

Préparatifs:
1. installer Scratch Link sur votre ordinateur (Windows ou Mac)
2. installer le firmware Scratch sur le micro:bit
3. connecter par Bluetooth au micro:bit

Installer Scratch Link

Scratch Link est un petit logiciel qui doit être installé sur votre ordinateur.  Vous l’obtiendrez sur la page dédiée au microbit: https://scratch.mit.edu/microbit (en anglais seulement).
Pour l’instant, il semble que Scratch Link ne soit disponible que pour Windows et Mac. Je n’ai pas eu de succès avec une tablette Android mais peut-être que le support viendra.

Pour l’instant, téléchargez la version qui correspond à votre OS. Les détails qui suivent sont valables pour Windows.  C’est un fichier .zip donc il faudra extraire le fichier à l’interne. Glissez-le sur votre bureau afin de le retrouver facilement.

scratchlink.gif

Double-cliquez sur le fichier en question pour installer Scratch Link. N’oubliez pas de cocher “Launch Scratch Link” avant de terminer l’installation!
launchscratchlink.gif

Vérifiez que Scratch Link est bel et bien installé!
verifyscratchlink.gif

Voilà! Scratch peut maintenant parler à différents bidules, comme le micro:bit!

2. Installer le firmware Scratch sur le micro:bit

Toujours sur la page de préparation, il suffit de dérouler un peu pour trouver les instructions pour la préparation du Micro:Bit.

firmware.png

  1. Connectez votre micro:bit à votre ordinateur.
  2. Téléchargez le programme HEX qui permettra au micro:bit de parler à Scratch
  3. Glissez ce programme de votre ordi à votre micro:bit, de manière très similaire à tout autre programme de micro:bit.

firmware.gif

3. Connecter par Bluetooth au micro:bit

Par expérience, il est utile de faire une réiniItialisation du Micro:bit à ce moment-ci en pressant le bouton Reset au dos. Le micro:bit affichera alors son nom Bluetooth, une série de cinq lettres. Le mien s’appelle vazaz.

Résultats de recherche d'images pour « microbit reset button »
@Adafruit

On est maintenant prêt à installer l’extension Micro:bit dans Scratch.

  1. Cliquez sur le gestionnaire d’extensions, en bas à gauche
  2. Cliquez sur l’extension de Microbit
  3. Laissez votre ordi trouver votre micro:bit (assurez-vous que votre ordi roule Bluetooth!)
  4. Connectez à votre Micro:bit! Dans un environnement de classe, il faut s’assurer de bel et bien connecter au bon microbit, selon le nom affiché.
  5. Lorsque connecté, le micro:bit cesse d’afficher son nom.

connecter.gif

Les blocs Micro:bit sont maintenant accessibles pour des heures de plaisir!

blocs.png

Créer ses propres blocs dans MakeCode

MakeCode est l’environnement de programmation visuelle pour le Micro:bit . Makecode.png

Il est intuitif d’utilisation et, couplé au micro:bit, permet aux jeunes apprentis de développer des compétences en contrôle de senseurs et d’actuateurs en plus de la programmation.

On peut pousser MakeCode un peu plus loin en développant ses propres blocs. Deux approches sont disponibles:

microbit-reveil.png

  • la catégorie “Fonctions”
  • le fichier “custom.ts”

Le code

Imaginons ce petit bout de code représentant un micro:bit qui se réveille.  Tout d’abord, il est endormi, puis il baille aux corneilles. Ensuite, il prend conscience de son environnement à gauche et à droite pour être tout content de te voir. Sympa mais un peu long comme code, surtout si on a l’intention de le réutiliser ailleurs dans le programme. Mon but est d’avoir le même code au démarrage du micro:bit et aussi lorsque le senseur de lumière indique qu’il fait finalement clair.

Première méthode: créer un bloc fonction

La fonction est la méthode la plus accessible pour créer son propre bloc. On peut la faire purement avec des blocs, sans passer par la programmation textuelle. Elle est conceptuellement similaire à la création de blocs que l’on retrouve dans Scratch.

Cliquez sur “Avancé” pour ouvrir la section des catégories avancées, puis cliquez sur “Fonctions“.  Le tiroir qui s’ouvre ne comporte qu’un seul bloc: “Créer une fonction”.

fonction.png

Vous avez maintenant une boîte de dialogue vous demandant le nom de la fonction que vous voulez créer. Appelons-la “réveil”.

renommer

blockreveil.png

Un bloc de définition de fonction apparait alors sur le canevas de programmation et il suffit de glisser les blocs de réveil dans sa boîte. Par la suite, il est possible d’utiliser le nouveau bloc maintenant disponible dans la catégorie “Fonctions” pour exécuter la séquence de réveil.

Ceci nous donne un résultat final plus facile à lire, plus facile à comprendre, donc plus facile à modifier, expliquer et même maintenir:

microbit-complet

Deuxième méthode, le fichier “custom.ts”

Cette deuxième méthode permet de cacher le détail de notre fonction, ce qui permet de simplifier ce qui est exposé dans le canevas de programmation mais surtout nous permet de réutiliser notre bloc d’un projet à l’autre!  Par contre, on se retrouve en mode textuel, et non graphique.

Avant de passer aux détails, gardons le code de notre fonction réveil.  Passez en mode “javascript” en cliquant sur le mot “Javascript” et copier le code de la fonction se trouvant entre les deux accolades.

javascript

Puis cliquez sur “Explorateur” pour ouvrir cette section et sur le “+” qui vient d’apparaitre.

explorateur

ajouter_custom.png

Cliquez sur  “OK” pour confirmer la création du fichier custom.ts. Un nouveau fichier de code Typescript est maintenant créé.  Par défaut il contient des exemples que vous pouvez étudier pour mieux comprendre ce qui se passe mais pour l’instant, on va tout effacer pour y mettre le code suivant:

/**
* Blocs permettant d’afficher des expressions
*/
//% weight=100 color=#033fff icon=”\uf118″
namespace expressions {
    //% block
    export function réveil(): void {
// début du code copié
        basic.showIcon(IconNames.Asleep)
        basic.pause(2000)
        basic.showLeds(`
            # # . # #
            . . . . .
           . # # # .
           # . . . #
          . # # # .
       `)
        basic.pause(2000)
        basic.showLeds(`
            . . . . .
            # . . # .
            . . . . .
            . # # # .
            . . . . .
        `)
        basic.pause(1000)
        basic.showLeds(`
            . . . . .
            . # . . #
            . . . . .
           . # # # .
            . . . . .
        `)
        basic.pause(1000)
        basic.showIcon(IconNames.Happy)
        basic.pause(2000)
// fin du code copié
   }
}

Le code se trouvant entre les lignes // début du code copié et // fin du code copié provient directement de la fonction écrite précédemment, sans modification.

Retournez dans le mode “blocs” en cliquant sur le bouton “Blocs”.

notrebloc

Oh! Une nouvelle catégorie est apparue! Et cette catégorie contient, pour l’instant, un seul bloc, le bloc “réveil“. On peut maintenant l’utiliser pour recréer notre petit programme:microbit-complet2

Le contenu du bloc “réveil” n’est plus exposé dans le canevas, ce qui simplifie la complexité pour l’utilisateur. L’apparition d’une nouvelle catégorie permet aussi de créer d’autres blocs d’expressions animées, suivant notre imagination.

Regardons maintenant le code. D’abord, c’est du typescript. Toute ligne commençant par // est un commentaire et sera ignoré par l’ordi et le micro:bit.  Sauf que… exception il y a.   Dans l’environnement MakeCode, les lignes qui débutent par //% servent à définir les catégories et les blocs.
Ici, nous avons deux de ces lignes. D’abord:

//% weight=100 color=#033fff icon=”\uf118″

Cette ligne permet de contrôler l’apparence de notre nouvelle catégorie. Le “weight” indique l’importance de la catégorie. Plus ce chiffre est proche de 100, plus la catégorie sera haute dans la liste. On ne peut pas, à ma connaissance, être en haut de la catégorie “Basique“.  Le code “color” prend un code de couleur html, précédé de #0 (le chiffre zéro, plutôt que la lettre ‘o’).  Le code “icon” identifie quelle icône utiliser pour les blocs de la catégorie. Les icônes sont limitées à ce qui se trouve dans Font Awesome.

La deuxième ligne importante est toute simple:

//% block

Elle indique que la fonction suivante doit être transformée en bloc par MakeCode. Comme notre fonction est simple, elle ne prend pas de paramètres et ne retourne pas de valeur, on peut se contenter de cette ligne.  Il est toutefois possible de définir des blocs bien plus complexes en suivant les informations en anglais de MakeCode.

Voilà! Vous avez créé votre propre catégorie et votre premier bloc! L’information sera sauvé à l’intérieur de votre projet mais je vous conseille d’en garder une copie localement. Ceci vous permettra de la copier/coller dans tout nouveau projet où vous désirez utiliser votre catégorie fait maison.

À vous le monde maintenant!

 

 

Attempting to control my 3D printer with a Pi

Last week, I got my hands on my very own 3D printer, thanks to Marc-André Léger, from Learn to Make Almost Anything at District 3.

I got a test print done last Sunday, after hours spent trying to figure out how to level and calibrate it. The test print is still not perfect, but hey, it’s progress!

Today’s goal, because it’s nice outside and I do enjoy being stuck in a basement when it’s sunny out, is to control said printer via a Raspberry Pi. I just got 5 Pi3, all from BuyaPi.ca for work, which means I have a bunch of Pi2 that are no longer needed. Time to repurpose one!

Continue reading