Table des matières:

Éclaire moi! un contrôle de bande LED multiplateforme en temps réel : 5 étapes (avec images)
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel : 5 étapes (avec images)

Vidéo: Éclaire moi! un contrôle de bande LED multiplateforme en temps réel : 5 étapes (avec images)

Vidéo: Éclaire moi! un contrôle de bande LED multiplateforme en temps réel : 5 étapes (avec images)
Vidéo: Apprendre Unity 3D - Tutoriel pour débutant [COMPLET] 2024, Novembre
Anonim
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel
Éclaire moi! un contrôle de bande LED multiplateforme en temps réel

Éclaire moi! est un système que j'ai inventé pour contrôler une bande LED RVB en temps réel, tout en maintenant un coût bas et des performances élevées.

Le serveur est écrit en Node.js et donc multiplateforme.

Dans mon exemple, j'utilise un Raspberry Pi 3B pour une utilisation à long terme, mais mon PC Windows à des fins de démonstration et de débogage.

La bande à 4 broches est contrôlée par une carte de type Arduino Nano, qui exécute des commandes données en série pour envoyer des signaux PWM à trois transistors en commutant le +12VDC dans la broche de couleur correspondante de la bande.

Le LightMeUp ! Le système vérifie également sa propre température, une fois qu'elle est supérieure à 60 °C (140 °F), il allume deux ventilateurs d'ordinateur 12VDC intégrés dans le boîtier, afin de se refroidir pour améliorer la durée de vie du circuit.

Une autre fonctionnalité de LightMeUp ! est d'éclairer une bouteille de Bombay-Sapphire Gin, mais ce n'est pas l'objet de ce Instructable.

Bonne lecture:)

Fournitures

  • Arduino Nano (ou tout autre microcontrôleur ATmega328 / supérieur)
  • Raspberry Pi 3 modèle B avec Node.js installé (ou tout autre ordinateur)
  • Bande LED 12V RVB à 4 broches
  • Alimentation 12V 3A
  • Câbles de démarrage (mâle-mâle si vous utilisez une maquette, bien sûr)
  • Planche à pain (facultatif)
  • 2 ventilateurs d'ordinateur 12V DC (en option)
  • 3x TIP120 Darlington Transistor avec dissipateur thermique (4 si vous souhaitez inclure des ventilateurs de refroidissement)
  • 2 LED d'état rouge et verte (en option)
  • Résistance basée sur la température 6, 7K NTC + résistance 6, 7K (en option)
  • Câble de données USB-Mini vers USB 2.0 (pour que le Raspberry Pi communique avec l'Arduino)
  • Hub USB alimenté en externe (en option, uniquement pour Raspberry Pi)

Étape 1: comprendre le système

Comprendre le système
Comprendre le système

Éclaire moi! est basé sur des circuits électroniques très simples.

Nous avons une sorte d'ordinateur (dans ce cas un Raspberry Pi) qui communique en série avec notre carte microcontrôleur. Cette carte exécute ensuite des commandes série spécifiques telles que "RGB (255, 255, 255)" qui rendraient notre bande LED blanche.

Une fois que nous avons obtenu nos trois valeurs pour ROUGE, VERT et BLEU nécessaires pour notre bande LED 4 broches, nous exécutons analogWrite (broche, valeur) afin de fournir à notre transistor TIP120 un signal PWM.

Ce signal PWM permet au transistor de commuter la broche de couleur correspondante à laquelle son collecteur est connecté à la terre, à un degré spécifique ou complètement activé/désactivé. Oui, beaucoup de "à":)

En mélangeant les sorties des trois transistors aux broches de couleur des bandes LED, nous pouvons créer pratiquement n'importe quelle couleur que nous voulons !

Maintenant, avec cette compréhension, nous pouvons attaquer le plus grand défi de ce projet, le websocketserver et sa connexion série à notre Arduino.

Étape 2: Écriture du WebSocketServer

Écriture du WebSocketServer
Écriture du WebSocketServer

Maintenant, nous devons créer un type spécifique de serveur Web, qui nous permet de transférer des données dans les deux sens sans rafraîchir une seule fois afin d'obtenir un contrôle de bande LED en temps réel.

Veuillez noter que la communication en temps réel est bien sûr impossible, il y aura toujours au moins quelques millisecondes de retard, mais pour l'œil humain, c'est considérable en temps réel.

Cela peut être facilement réalisé en utilisant la bibliothèque socket.io si vous utilisez Node.js comme je l'ai fait. Cependant, vous pouvez toujours vous en tenir à votre langage de programmation préféré, bien sûr.

Nous traiterons d'une connexion Websocket qui nous permet de transférer des données d'entrée telles que la couleur sur laquelle vous souhaitez définir la bande LED ou des données d'état telles que "LED ON" de manière bidirectionnelle sans rafraîchissement.

Une autre fonctionnalité très importante que le serveur devrait avoir mais dont il n'a pas besoin est une simple connexion. J'ai basé ma connexion sur un simple champ de nom d'utilisateur et de mot de passe. Ces informations sont ensuite publiées sur la route /login du serveur, qui compare ensuite le nom d'utilisateur à une liste d'utilisateurs (fichier.txt) et son mot de passe correspondant sous sa forme cryptée SHA256. Vous ne voulez pas que vos voisins s'amusent avec votre bande LED pendant que vous savourez votre boisson préférée sur votre siège le plus confortable, n'est-ce pas ?

Vient maintenant le cœur du serveur, la communication série.

Votre serveur doit pouvoir communiquer en série - dans Node.js, cela peut être réalisé en ouvrant un port à l'aide de la bibliothèque "serialport". Mais déterminez d'abord le nom de votre port arduino sur votre ordinateur hébergeant le serveur. Selon votre système d'exploitation, les ports auront des noms différents, par ex. sous Windows, ces ports sont nommés "COMx", tandis que sous Linux, ils sont nommés "/dev/ttyUSBx", où x est le numéro du port USB.

Étape 3: Établir un protocole de commandes série

Établir un protocole de commandes série
Établir un protocole de commandes série

Dans l'image ci-dessus, vous voyez le code IDE Arduino responsable du contrôle RVB. L'objectif de cette étape est de faire en sorte que votre serveur auto-écrit et votre carte Arduino se parlent avec succès.

Une fois que vous avez ouvert votre port série avec succès, vous devez pouvoir envoyer des commandes à la carte qui s'occupe de vos souhaits. Par exemple, si nous dessinons un doigt au-dessus du sélecteur de couleurs sur la page Web HTML, le code RVB doit être envoyé au serveur qui l'envoie ensuite à votre Arduino afin qu'il traite les valeurs définies.

J'ai utilisé jscolor, ils ont une excellente implémentation d'un élément de sélection de couleurs de haute qualité, qui possède un événement appelé "onFineChange" qui permet de traiter les données du sélecteur de couleurs dès que ses valeurs changent.

Conseillé: