Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Prog] RGB LED Controler
Auteur Message
Répondre en citant
Message [Prog] RGB LED Controler 
Bonjour tout le monde.

Comme certains le savent déjà, je me suis lancé dans l'électronique avec le monde Arduino. C'est vraiment intéressant pour débuter et on peut faire plein de chose sympa.

J'ai donc réalisé un programme qui peut changer la couleur d'une LED RGB depuis n'importe où sur internet et en faisant un bip avertisseur. Vous aurez besoin d'acheter un peu de matériel (~ 50 Euros), mais nul besoin de souder.

Pour réaliser ce montage, vous aurez besoin de :
- Un Arduino (j'ai utilisé le UNO R3) avec une câble USB pour le relier au PC
- Un shield Ethernet (officiel) branché au routeur
- 3 résistances 1.1K Ω (brun-brun-rouge)
- 1 résistance 220 Ω (rouge-rouge-brun)
- Une LED RGB à anode commune
- Un piezo buzzer
- Une breadboard avec des câbles (wires) pour brancher tout ça

Montage du matériel :
Connectez le 5v à l'anode de la LED, connectez la première broche (celle qui est "isolée") au pin 5 (ce sera la couleur rouge), la deuxième au pin 6 (bleu) et la troisième au pin 7 (vert). Connectez aussi le fil noir du piezo buzzer à la masse et le fil rouge à une résistance 220 Ω (rouge-rouge-brun) qui est elle même reliée au pin 8 de l'Arduino.
Changez éventuellement les adresses IP suivant la configuration de votre réseau puis uploadez le sketch (code disponible plus bas) sur votre arduino avec l'IDE 1.0.

Ensuite, pour contrôler la couleur de la LED, vous pouvez utiliser le programme en Autoit que j'ai créé et qui va envoyer des paquets UDP sur l'Arduino. L'exécutable est disponible ici.

N'oubliez pas que pour y accéder depuis l'extérieur (avec une IP publique), il faut ouvrir le port / IP de l'arduino sur votre routeur. Un ami l'a testé depuis chez lui et c'est marrant de voir la couleur changer et d'entendre des petits bips tout en sachant que cela vient de plusieurs kilomètres.

J'ai posté une vidéo et le schéma plus bas parce que je comprend que ça peut paraître un peu abstrait.

Voilà le code à uploader sur votre Arduino (désolé je n'ai pas encore commenté, mais j'essaierai de le faire après ma période d'examens, sinon il y a un bon tutoriel sur le site du zéro) :
Code:

/*
  Code de base : http://arduino.cc/en/Tutorial/UDPSendReceiveString
  Modifié par Sablier94
  Version 1.0
  Matériel requis : un Arduino (UNO  R3), un shield Ethernet, 3 résistances 1.1K, une LED RGB à anode commune et une breadboard.
  Instructions : Connectez le 5v à l'anode de la LED, connectez la première broche (celle qui est "isolée") au pin 5 (rouge),
  la deuxième au pin 6 (bleu) et la troisième au pin 7 (vert). Changez éventuellement les adresses IP puis uploadez ce sketch sur votre arduino.
  Vous pouvez envoyer vos commandes depuis un programme que j'ai fait en Autoit ici : http://www.total-informatique.com/fichiers/perso/sharefriends/ArduinoRGBLEDControl.exe
  N'oubliez pas que pour y accéder depuis l'extérieur (avec une IP publique), il faut ouvrir le port / IP de l'arduino sur votre routeur.
*/


#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <EthernetUdp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008

int ledPinR = 5;
int ledPinG = 7;
int ledPinB = 6;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
 
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinG, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  digitalWrite(ledPinR, HIGH);
  digitalWrite(ledPinG, HIGH);
  digitalWrite(ledPinB, HIGH);

  Serial.begin(9600);
}

void loop() {
  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    Serial.print("Taille du packet recu : ");
    Serial.println(packetSize);
    Serial.print("De : ");
    IPAddress remote = Udp.remoteIP();
    for (int i =0; i < 4; i++)
    {
      Serial.print(remote[i], DEC);
      if (i < 3)
      {
        Serial.print(".");
      }
    }
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    // read the packet into packetBufffer
    Udp.read(packetBuffer, 4); //On pourrait remplacer le 4 par UDP_TX_PACKET_MAX_SIZE
    Serial.println("Contenu :");
    Serial.println(packetBuffer);
   
    if(String(packetBuffer) == "ledo")
    {
       digitalWrite(ledPinR, HIGH);
       Serial.println("La LED est maintenant eteinte.");
       tone(8, 440, 200);
    }
    else if(String(packetBuffer) == "ledr")
    {
       digitalWrite(ledPinR, LOW);
       digitalWrite(ledPinG, HIGH);
       digitalWrite(ledPinB, HIGH);
       Serial.println("La LED est maintenant rouge.");
       tone(8, 494, 400);
    }
    else if(String(packetBuffer) == "ledg")
    {
       digitalWrite(ledPinR, HIGH);
       digitalWrite(ledPinG, LOW);
       digitalWrite(ledPinB, HIGH);
       Serial.println("La LED est maintenant verte.");
       tone(8, 554, 800);
    }
    else if(String(packetBuffer) == "ledb")
    {
       digitalWrite(ledPinR, HIGH);
       digitalWrite(ledPinG, HIGH);
       digitalWrite(ledPinB, LOW);
       Serial.println("La LED est maintenant bleue.");
       tone(8, 622, 1000);
    }
     Serial.println("");
  }
  delay(10);
}


Voilà le code Autoit (vous devriez tout comprendre, sinon allez jeter un coup d’œil sur le chat local en Autoit que j'avais posté sur le forum) :
Code:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Language=4108
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>

#Region ### START Koda GUI section ###
$frmLEDControl = GUICreate("The Arduino's RGB LED Controler", 532, 141, 263, 172)
$btnBlue = GUICtrlCreateButton("Bleu", 24, 56, 105, 33, 0)
$btnGreen = GUICtrlCreateButton("Vert", 152, 56, 105, 33, 0)
$btnRed = GUICtrlCreateButton("Rouge", 280, 56, 105, 33, 0)
$lblInfos = GUICtrlCreateLabel("Cliquez sur un bouton pour changer la couleur de la LED par internet :", 24, 24, 410, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$btnOff = GUICtrlCreateButton("Eteindre", 408, 56, 105, 33, 0)
$lblIP = GUICtrlCreateLabel("IP publique :", 24, 107, 63, 17)
GUICtrlSetFont(-1, 9, 400, 0, "MS Sans Serif")
$txtIP = GUICtrlCreateInput(IniRead(@TempDir & "\RGBSettings.ini", "Connexion", "IP", "77.56.130.34"), 96, 104, 97, 21)
$Label1 = GUICtrlCreateLabel("Port :", 224, 107, 29, 17)
GUICtrlSetFont(-1, 9, 400, 0, "MS Sans Serif")
$txtPort = GUICtrlCreateInput(IniRead(@TempDir & "\RGBSettings.ini", "Connexion", "Port", "8888"), 256, 104, 65, 21)
$btnSave = GUICtrlCreateButton("Valider", 352, 102, 89, 24, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
UDPStartup()

OnAutoItExitRegister("Cleanup")

$socket = UDPOpen(IniRead(@TempDir & "\RGBSettings.ini", "Connexion", "IP", "77.56.130.34"), IniRead(@TempDir & "\RGBSettings.ini", "Connexion", "Port", "8888"))
If @error <> 0 Then
   MsgBox(48, "Erreur", "Impossible de se connecter. Veuillez corriger les paramètres et relancer le programme.")
   Exit
EndIf

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $btnGreen
         $status = UDPSend($socket, 'ledg')
         If $status = 0 Then
            GUICtrlSetData($lblInfos, "Erreur, la commande n'a pas pu être envoyée.")
            GUICtrlSetColor($lblInfos, 0x000000)
         Else
            GUICtrlSetData($lblInfos, "La LED est désormais verte.")
            GUICtrlSetColor($lblInfos, 0x009900)
         EndIf
      Case $btnRed
         $status = UDPSend($socket, 'ledr')
         If $status = 0 Then
            GUICtrlSetData($lblInfos, "Erreur, la commande n'a pas pu être envoyée.")
            GUICtrlSetColor($lblInfos, 0x000000)
         Else
            GUICtrlSetData($lblInfos, "La LED est désormais rouge.")
            GUICtrlSetColor($lblInfos, 0xFF0000)
         EndIf
      Case $btnBlue
         $status = UDPSend($socket, 'ledb')
         If $status = 0 Then
            GUICtrlSetData($lblInfos, "Erreur, la commande n'a pas pu être envoyée.")
            GUICtrlSetColor($lblInfos, 0x000000)
         Else
            GUICtrlSetData($lblInfos, "La LED est désormais bleue.")
            GUICtrlSetColor($lblInfos, 0x0000FF)
         EndIf
      Case $btnOff
         $status = UDPSend($socket, 'ledo')
         If $status = 0 Then
            GUICtrlSetData($lblInfos, "Erreur, la commande n'a pas pu être envoyée.")
            GUICtrlSetColor($lblInfos, 0x000000)
         Else
            GUICtrlSetData($lblInfos, "La LED est désormais éteinte")
            GUICtrlSetColor($lblInfos, 0x000000)
         EndIf
      Case $btnSave
         Cleanup()
         UDPStartup()
         $socket = UDPOpen(GUICtrlRead($txtIP), GUICtrlRead($txtPort))
         If @error <> 0 Then
            MsgBox(48, "Erreur", "Impossible de se connecter. Veuillez corriger les paramètres et relancer le programme.")
            Exit
         EndIf
         IniWrite(@TempDir & "\RGBSettings.ini", "Connexion", "IP", GUICtrlRead($txtIP))
         IniWrite(@TempDir & "\RGBSettings.ini", "Connexion", "Port", GUICtrlRead($txtPort))
         GUICtrlSetData($lblInfos, "Les paramètres ont correctement été enregistrés.")
         GUICtrlSetColor($lblInfos, 0x000000)
   EndSwitch

WEnd

Func Cleanup()
   UDPCloseSocket($socket)
   UDPShutdown()
EndFunc   ;==>Cleanup




Dernière édition par sablier94 le Sam 26 Mai 2012 - 11:13; édité 1 fois

______________________________________________________
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Prog] RGB LED Controler 
Wahou !! Okay Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] RGB LED Controler 
hello !

pas mal !
par contre tu connais les schémas électriques ? Mort de Rire

moi je fais la même chose pour mon projet ^^ avec un mbed et un executable plus poussé, mais en même temps j'ai heu 30h pour le faire Laughing

@+




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] RGB LED Controler 
Il faut comprendre que ce n'est qu'un début pour pouvoir faire de la domotique. Okay

Oui je connais. Mr. Green Voilà le schéma (fait avec le logiciel Fritzing) : http://www.sendspace.com/file/tnx3cr

Et voilà une petite vidéo de démonstration : http://www.sendspace.com/file/rfcbw6

Je ne connaissais pas mbed, c'est plus puissant qu'un Arduino ça.




______________________________________________________
Répondre en citant
Message [Prog] RGB LED Controler 
Salut,

En parcourant ce post j'ai une question pour satisfaire ma curiosité^^

à quoi vous servent ces systèmes ? C'est un peu comme une introduction à des systèmes plus avancée comme la robotique ?

Edit: ok Sablier94 avait déjà répondu à la question: la domotique ^^




______________________________________________________
Mes principales réalisations: Cp (batch) et IPSvc (autoit)
Répondre en citant
Message [Prog] RGB LED Controler 
Hello Sablier
dis moi tu connais des sites en ligne pour commander ce type de matériel çA serait intéressant de l'ajouter à ton 1er sujet




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Prog] RGB LED Controler 
Oui c'est super sympa de faire de la domotique avec (mais bon là c'est plus pour m'entrainer en électronique parce que je suis obligé de démonter à chaque fois parce que je n'ai qu'un seul Arduino), tu peux faire pleins de choses utiles et c'est différent de la "programmation sur PC" où tu ne gère que du "virtuel".

Pour acheter un Arduino en Suisse sans payer 2 fois le prix Français, c'est très difficile. J'ai donc fini par commander sur le site watterott.com en Allemagne. Il y avait déjà 17 Euros de frais de port et UPS m'a fait payé 32 CHF de frais de douanes Confused.

J'ai du acheter un kit parce que je n'avais aucun matériel pour faire de l'électronique. Le kit "Fritzing Starter Kit with Arduino Uno" est super, il y a tout ce qu'il faut pour commencer (et en plus vous soutiendrez le développement du logiciel Fritzing). Je l'ai acheté ici : http://www.watterott.com/en/Fritzing-Starter-Kit.

Il y a une liste de vendeurs "officiels" d'Arduino : http://arduino.cc/en/Main/Buy

Pour info, j'ai également acheté en complément de ce kit :
- Une matrice de 8x8 leds RG : http://www.watterott.com/en/LED-Matrix-Serial-Interface-Red/Green
- Un shield ethernet : http://www.watterott.com/en/Arduino-Ethernet-Shield
- Un adaptateur pour le nunchuck de la Wii : http://www.watterott.com/en/PCBs/WiiChuck-Adapter
- Un écran LCD 16x2 http://www.watterott.com/en/16x2-LCD-yellow-DEM16216SYH-LY




______________________________________________________
Répondre en citant
Message [Prog] RGB LED Controler 
hello !

c'est si cher que ça en suisse ?
pourtant je croyais que c'etait dans l'espace shengen Mort de Rire

sinon sablier faut pas oublier la platine sans soudure pour pouvoir faire des test de montages Very Happy

le nec plus ultra c'est une platine avec transfo 5v - 12v - 24v comme ça elle peut te servir pour tout Razz

@+




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] RGB LED Controler 
Bonjour a tous ,

Je suis fabriquant de cube lumineux en régions parisienne , je suis a la recherche d'un programme , d'un logiciel qui pourrait commander depuis un PC ou MAC un système RGB
controller leds .
Actuellement je l'ai contrôle via une télécommande ( distance 20 mètres ) , j'aimerais les contrôler depuis mon MAC ou PC et souhaiterais en commander plusieurs a la foi.

Donc je suis a la recherche d'un petit génie informatique ...

Je suis a votre disposition ...

Merci



Message [Prog] RGB LED Controler 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch