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. Continuer la lecture de « Neopixels sur SMT32F4 : pilotage avec un timer et DMA »

Découverte des Neopixels (sur STM32F4)

Récemment, j’ai découvert les Neopixels de Adafruits. Il s’agit de modules de LEDs RGB pas chers et assez simples à mettre en oeuvre. Ils existent sous plusieurs formes (LED unique, platines de 8 LEDs, anneaux, guirlandes, matrices,…), et peuvent être pilotés par une multitude de processeurs (cela va du petit microprocesseur 8 bits au BeagleBone, en passant par les Arduinos, par exemple).

Les applications pour ce genre de modules sont variées. En me promenant sur le net, j’ai trouvé des gens qui en ont fait des bijoux high-tech, une batterie lumineuse, des horloges, et diverses autres créations très amusantes.

J’ai trouvé cela tellement amusant que j’ai décidé de me procurer un de ces petits modules. J’ai opté pour l’anneau de 16 LEDs. Il est pas cher, pas trop grand, pas trop petit, ne consomme pas trop et… je le trouve assez mignon. Continuer la lecture de « Découverte des Neopixels (sur 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. Continuer la lecture de « RpiPowerControl, un contrôleur d’alimentation pour le RaspberryPi! »