SlightBox V2 – La version “mini”
Après un premier prototype d’une solution "Ambilight" maison développée avec des modules .NET Gadgeteer, la “SlightBox V2” est une version miniaturisée et beaucoup moins chère.
Rappel des épisodes précédents :
- Démonstration de la solution Slight
- Présentation de la première version de Slight avec .NET Gadgeteer
Pour rappel (voir l’article sur le fonctionnement de la V1), la SlightBox V1 est une box développée avec les modules .NET Gadgeteer uniquement dans le but servir d’interface USB/SPI pour le pilotage des bandes de leds LDP8806. Pour rendre la solution plus compacte et moins onéreuse, nous allons utiliser une puce MCP2210 de Microchip qui n’est ni plus ni moins qu’une interface USB/SPI en une seule puce !!
Plusieurs sociétés proposent des modules prêt-à-l’emploi équipés de cette puce. Pour ma part, j’ai sélectionné le produit de Embedded Adventures, le “MCP2210 USB2SPI Module” vendu 15.30$ (hors frais de port) et livré avec une API .NET.
Il ne vous faudra plus qu’une petite boite, un connecteur DC pour l’alimentation et un connecteur JST pour y connecter la bande de LED LDP8806.
Pour rappel, nous utiliserons la sortie MOSI pour les “Datas” (équivalent de la PIN 7 sur une socket “S” Gadgeteer), le “SCK” pour l’horloge (équivalent de la PIN 9) et le “GND” pour le ground.
A la différence de la SlightBox V1 j’ai supprimé l’interrupteur et la LED témoin de l’alimentation.
La SlightBox V1 (à gauche) vs la SlightBox V2 (à droite)
Côté software, la logique reste exactement la même ! La seule différence est dans la façon dont le logiciel va envoyer les données à la bande de LED :
- Avec la SlightBox V1, c’est la box “Gagdeteer” qui fait office d’interface. Nous utilisons le module “Serial USB” qui est reconnu comme un port COM virtuel au niveau du Windows. Le programme Windows “Slight” envoie donc les données sur le port COM virtuel de la SlightBox qui seront ensuite retranscrits par le programme Gadgeteer sur la sortie “SPI” via le module “Extender”.
- Avec la SlightBox V2, c’est la puce MCP2210 qui fait office d’interface. Il faut alors utiliser l’API mis à disposition par le fabricant pour pouvoir envoyer nos données !
Pour simplifier le développement côté Windows, nous utiliserons une simple interface pour décrire une "SlightBox" :
1 2 3 4 5 6 7 8 | namespace SLight.Devices { public interface ISlightBox : IDisposable { void Initialize(); void WriteDatas(byte[] datas); } } |
L’implémentation de la SlightBox V2 utilisera alors l’API de la puce MCP2210 pour envoyer les données sur le port SPI à notre bande de leds via la fonction "TxferSpiData" :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | namespace SLight.Devices { public class SlightBoxMCP2210 : ISlightBox { private const int LATCH_BITS = 4; private const int SPI_BIT_RATE = 16000; private const uint MCP2210_VID = 0x04D8; // VID for Microchip Technology Inc. private const uint MCP2210_PID = 0x00DE; // PID for MCP2210 private bool isConnected = false; private DevIO usbDevice = null; public void Initialize() { this.usbDevice = new DevIO(MCP2210_VID, MCP2210_PID); this.isConnected = this.usbDevice.Settings.GetConnectionStatus(); if (this.isConnected) { this.usbDevice.Settings.SetSpiBitRate(DllConstants.CURRENT_SETTINGS_ONLY, SPI_BIT_RATE); Console.WriteLine("Connected and ready to use !"); } else { MessageBox.Show("SlightBox MCP2210 not connected !"); this.Initialize(); } } public void WriteDatas(byte[] datas) { byte[] dataRead = new byte[datas.Length + LATCH_BITS]; byte[] datasToSend = new byte[datas.Length + LATCH_BITS]; Array.Copy(datas, 0, datasToSend, LATCH_BITS, datas.Length); this.usbDevice.Settings.SetSpiTxferSize(DllConstants.CURRENT_SETTINGS_ONLY, (ushort)datasToSend.Length); this.usbDevice.Functions.TxferSpiData(datasToSend, dataRead); } public void Dispose() { } } } |
Et voilà en quelques lignes et quelques soudures comment minuaturiser le concept “Slight”. Côté performance, c’est exactement la même chose qu’avec la V1.
Et si vous ne l’avez toujours pas vu, voici le résultat :
Développé initialement pour “Slight” (ma solution “Ambilight” maison), la SlightBox et plus particulièrement la SlightBox V2 en raison de sa taille réduite, peut servir dans un tas d’application où nous avons besoin de piloter des bandes de LED.
Retrouvez plus d’informations et photos sur la page Facebook SlightBox.
Trackback: SlightBox V1 : un système « Ambilight » avec C# et Gadgeteer | Sebastien.warin.fr
Regis Hanol
J’en veux une ! 🙂
Herbaux Mathias
Un travail d’orfèvre. Bravo Seb 😉
Alexis CONIA
J’en veux une aussi 🙂 !
Trackback: SlightBox V3 : La version “HDMI” | Sebastien.warin.fr
Yann
Bjr Mr Warin,
Etant NON informaticien 🙁 ou puis je acheter votre système pour le mettre sur ma TV.
Trackback: The Mirror – Votre miroir domotique connecté – Geek is in da House 2014 | Sebastien.warin.fr
Trackback: The Mirror V3, le miroir re-boosté - Sebastien.warin.fr