Archives de catégorie : Non classé

Lego Power Functions extension for mBlock 5

My son and I did wrote an mBlock 5 extension to control Lego Power Functions.

It is based on the Arduino library from https://github.com/jurriaan/Arduino-PowerFunctions. The whole Power Functions is not implemented, there are only 2 blocks:

  • Begin Lego Power Functions : Select the pin connected to the LED, and the receiver channel
  • Lego Power Function : Select the output (Blue or Red), and the desired action (in continuous mode)

The setup is simple : Just connect an infrared LED and a 220 ohm resistor on a digital pin (13 by default).

Sample code :

To use it in mblock 5:

  • Add an Arduino board
  • Click « + extensions » in the block section
  • Search « Lego Power Functions » in  Sprite Extensions

Note : if your arduino board is more recent than the extension, the extension will not appear in the search results. Select another board.

Translations are welcome !

For french readers

Mon fils et moi avons créé l’extension mBlock 5 pour Lego Power Functions.

Elle est basée sur la libraire Arduino suivante : https://github.com/jurriaan/Arduino-PowerFunctions. Toutes les fonctionnalités ne sont pas implémentées, il n’y a que 2 types de blocs :

  • Démarrer Lego Power Functions :Indiquer la broche connectée à la LED infrarouge, ainsi que le canal du récepteur
  • Lego Power Function : Choisir la prise (Blue or Red) et l’action (en mode continu)

Le montage est simple, il suffit de brancher une LED infrarouge et une résistance de 220 ohms en série sur une broche (D13 par défaut).

Exemple de code :

Pour l’utiliser dans mblock 5:

  • Ajouter une carte Arduino
  • Cliquer sur « + extension » dans la section des blocs
  • Chercher « Lego Power Functions » dans les extensions du lutin

L’extension n’apparaitra pas pour les cartes Arduino publiées après l’extension. Dans ce cas, il faut choisir une autre carte.

Les traductions dans d’autres langues sont les bienvenues !

Lego Boost, Scratch Link & Dongle Bluetooth CSR

Quelques notes sur ma tentative de connecter Scratch Desktop 3 à un ensemble Lego Boost…

Bluetooth 4.0 requis

Le « Move Hub » communique via BLE qui est une variante de la norme Bluetooth 4. Une puce compatible est donc requise, ce qui n’est indiqué nulle part, à part dans l’extrait d’un livre aux éditions ENI

Facile…

Mon vieux portable étant limité au Bluetooth 2.0, j’ai donc acheté un dongle USB à pas cher, basé sur un chipset CSR8510. Le mien est de marque Yizhet, il existe des modèles chez Trust, Belkin, Bluetake, Konig, … basés sur le même chipset.

Malheureusement, quand je l’ai connecté au PC, Windows 10 l’a bien reconnu, et il est apparu dans le gestionnaire de périphériques en tant que « Generic Bluetooh Radio » (IDs USB 0A12:0001) avec une erreur 10 « le périphérique n’a pas pu démarrer ».

J’insère alors le CD fourni dans le lecteur à la recherche d’un pilote, et je lance l’unique setup.exe présent sur la galette, qui procède à l’installation de « CSR Harmony Wireless Stack », qui est une pile bluetooth complète parallèle à celle de Windows 10. Avec un style Windows 7, elle semble être basée sur la suite BlueSoleil qui complétait le manque de fonctionnalité bluetooth des anciennes versions de Windows. Moche mais fonctionnelle, elle détecte bien le « Move Hub » en BLE quand je fais une recherche de périphérique.

… mais pas trop

Par contre Scratch ne détecte pas le périphérique. Scratch Link étant très peu verbeux, je n’ai pas d’explication sur ce comportement, mais je suppose qu’il se base d’abord (ou uniquement) sur la pile Bluetooth native de Windows 10.

J’essaie alors de trouver un pilote générique Windows 10 pour ce périphérique (somme toute très générique lui aussi), sans succès : Je ne trouve que des pilotes qui ont le même comportement, ou alors la suite CRS Harmony complète. CSR (Cambridge Silicon Radio) ayant été rachetée par Qualcomm en 2015, il n’y a pas d’information sur le nouveau site web.

Je tente alors diverses combinaisons avant de tomber sur une page web qui indique que Windows ne sait gérer qu’un seul récepteur Bluetooth à la fois ! Je désactive le récepteur intégré au PC (sobrement nommé « Generic Bluetooth Adapter » dans le gestionnaire de périphériques), je rebranche le dongle USB et, magie, il démarre correctement ce coup-ci.

Une recherche de périphériques Bluetooth via le panneau de configuration Windows 10 m’indique que la détection fonctionne correctement (il ne faut pas l’associer, juste vérifier qu’il apparaisse bien).

Scratch récent requis également

Autre point découvert récemment : Lego diffuse un nouveau firmware 2.x pour le Move Hub, qui casse la compatibilité avec l’ancienne API et génère un comportement incorrect.

Sur ce dernier point, il faut donc disposer de versions récentes de Scratch Desktop (3.6.0) et de Scratch Link (1.2.0), et tout rentre dans l’ordre

Le papa fiston va pouvoir commencer à jouer !

En résumé

  • Scratch Link requiert un récepteur Bluetooth 4.0 pour communiquer avec le Move Hub Lego Boost
  • Le dongle à base de chipset CSR 8510 fonctionne correctement mais
    • Il ne faut pas installer le logiciel « CSR Harmony »
    • Il faut désactiver auparavant l’éventuel périphérique Bluetooth existant
  • Il faut s’assurer d’avoir une version récente de Sratch et Sratch Link

In summary

For english readers:

  • Scratch Link requires Bluetooth 4.0 to communicate with Lego Boost Move Hub
  • CSR8510-based USB dongles works, but
    • Do not install the « CSR Harmony » software : it’s a different bluetooth stack and won’t work with Scratch Link
    • Disable any existing bluetooth receiver (through the BIOS or Windows Device Manager), or you’ll have an error « This device cannot start (code 10) »
  • Use recent versions of Scratch Desktop (3,6,0+) and Scratch Link (1.2.0+) to cope with firmware 2.x changes