Neopixels sur SMT32F4 : pilotage avec un timer et DMA

Dans l’article précédent concernant les Neopixels, je vous ai montré ma solution “quick’n’dirty” pour piloter un anneau de 16 Neopixels. Cette implémentation utilise une boucle vide dont le nombre d’itérations permettra de générer des timings + ou – précis. Cette solution, qui a le mérite d’être simple et fonctionnelle, n’est pas du tout précise, optimisée et évolutive. En effet, même si la boucle de Delay() ne fait rien, elle occupe le processeur pour ne rien faire, justement. De plus, si la fréquence du processeur devait changer dans le future, tous les timings deviendraient invalides.

C’est pour cela que j’ai décidé de réimplémenter le contrôle de mes Neopixels en utilisant un timer du micro-contrôlleur. Ce timer va générer en hardware (sans intervention du programme, à part lors de l’initialisation) des timings très précis. De plus, l’utilisation du DMA va permettre de générer toute une trame de données vers les LEDs en consommant très peu de ressources du processeur. Continue reading “Neopixels sur SMT32F4 : pilotage avec un timer et DMA”

Getting started with Neopixel (on STM32F4)

I recently discovered Neopixels from Adafruit. These are cheap and simple to use little RGB LED modules. Multiple form factors are available : single LED, board with 8 LEDs, rings, strips, matrix,…). They can be driven by a lot of different processors (ranging from little 8-bits microcontroller to the BealgleBone Black, goind through Arduinos, for example.

You can think of lot of applications for this kind of modules. On the net, I found people that use them to create high-tech jewelry, a luminous drum kit, clocks, and a lot of other very funny creations.

I found that so funny that I wanted to buy one of these modules. I chose the 16 LED ring. It is cheap, not too large, not so small, not too power-hungry and… quite cute! Continue reading “Getting started with Neopixel (on STM32F4)”

RpiPowerControl, un contrôleur d’alimentation pour le RaspberryPi!

Cela fait un moment que je n’ai plus posté d’article sur ce blog, et ce, pour plusieurs raisons. La principale étant que je travaillais sur un petit projet en parallèle de Touchradio :RpiPowerControl. Derrière ce nom se cache un petit module me permettant de contrôler (ON/OFF) l’alimentation du RaspberryPi et de l’écran tactile, individuellement.

J’avais en effet besoin de ce genre de module pour Touchradio. Comme je l’ai dis précédemment, j’ai actuellement une version utilisable du soft, et j’ai donc commencé à l’utiliser dans ma cuisine. Comme vous le savez, le RaspberryPi ne dispose pas de bouton permettant d’allumer, d’éteindre ou de resetter le système. Il est donc nécessaire de brancher l’alimentation lorsque l’on souhaite l’allumer, et de retirer la prise pour l’éteindre ou le redémarrer. Cela se faisait du temps de Windows95, où l’ordinateur nous demandait gentiment d’éteindre l’ordinateur lorsque le système avait fini sa procédure d’arrêt. Mais de nos jours, nous sommes habitués à allumer nos appareils high-tech en appuyant sur un simple bouton, et à les arrêter ou les mettre en veille en réappuyant sur ce même bouton. Continue reading “RpiPowerControl, un contrôleur d’alimentation pour le RaspberryPi!”