Archives par étiquette : arduino

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 :

It’s being reviewed by the mBlock team and should be available soon.

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 :

L’extension a été soumise à l’équipe mBlock, elle devrait bientôt être publiée.

Les traductions dans d’autres langues sont les bienvenues !

Decodeur Altitude Meteotime 323

Hideki est un constructeur de station météos en marque blanche.
La station Hideki DV323 se retrouve vendue sous différentes marques, notamment:

Cette station possède une sonde thermomètre/hygromètre communiquant via RF433.
Mon objectif était de capter et décoder ce signal pour le traiter sur un PC.
Il existe de nombreux projets Arduino allant dans ce sens, semblables à celui-ci.
Le protocole Hideki est connu et décodé, mais ce n’est manifestement pas celui utilisé par la station Meteotime.

Je me suis donc fortement inspiré de cette page afin de décoder le signal.

Une capture via la carte son m’a permis d’identifier un signal « propre » :

meteotime-signal-1

et, en zoomant, d’identifier les caractéristiques du signal :

meteotime-signal-2

soit une période d’environ 1220 µs.
Parfait : J’avais 64 bits utilisables.
Je suis donc parti du principe qu’un 0 était plus longtemps « en haut » qu’un 1 :

0: |---|_  : 839 µs - 362 µs
1: |-|___  : 362 µs - 839 µs

Afin de faciliter le travail, j’ai écrit un bout de code Arduino qui, avec le montage de PracticalArduino, a permis d’effectuer différents relevés.

J’ai ainsi pu identifier les bits significatifs :

                                       |> >> | >>>  |>>>        |> >> | >>>
                                       dd dd t ttt  TTTT        hh hh H HHH
       0123 4567 8901 2345 6789 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789 0123
       0           1            2           3            4           5            6

Où:

  • dddd : valeur décimale de la température
  • tttt : température (unités)
  • TTTT : température (dizaines)
  • hhhh : hygrométrie (unités)
  • HHHH : hygrométrie (dizaines)

Exemple :

       0000_0000 0000_0001 1000_1000 0101_0010 1001_0100 1011_1111 0011_0101 1000_1000 22.2°C 53%

Les autres bits sont toujours identiques, on y retrouve probablement l’identifiant de l’émetteur et du bourrage.
Il me reste à identifier le bit pour les températures négatives, on verra cet hiver 😉

Mise à jour 27/07/2014 : Mon émetteur a rendu l’âme il y a bien longtemps, je n’ai jamais finalisé le code.
Le voici donc en l’état :
Code Arduino Meteotime RF

Il est fonctionnel, le montage est un récepteur RF433 Arduino classique

Arduino remote upload

This is how I upload sketches from my computer (windows 7) to an arduino uno board attached to a remote linux host (Debian 7).

On the linux host:

  • Install usbip package
  • Load kernel modules usbip_host and usbip_core
  • As root, launch usbipd (use -d for debugging)
  • Find your arduino board with lsusb :

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 046d:c313 Logitech, Inc. Internet 350 Keyboard
Bus 007 Device 004: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

  • Export the usb bus (arduino device is 7-4, so the bus is 7-1)

usbip bind -b 7-1

On Windows:

usbip -a archipel 7-1

  • Let windows install the drivers
  • Use Device Manager to find the COM port corresponding to « Arduino UNO »
  • Select the correct COM port in Arduino IDE
  • Enjoy !