1
Bonjour,

A quelques jours des fêtes de noël je vous propose un article complet sur la  la réutilisation d'un ruban de LED acheter dans le commerce avec un Raspberry Pi, puis de contrôler tout sa avec une tablette ou smartphone Android.


Un petit teaser avant de commencer :D :




 

I - Introduction

Des projets similaires avec le contrôles des led en PWM existait mais pas avec le contrôle par application, je me suis donc pour toutes la première partis inspiré de ce tuto http://popoklopsi.github.io/RaspberryPi-LedStrip/#/  et celui ci http://mitchtech.net/raspberry-pi-pwm-rgb-led-strip/.

Pour cette première version j'ai donc acheté seulement le ruban dans un grand magasin de bricolage(1m pour 24,90€), Et je viens de commander sur internet 5m pour 7€ ...

Voici ce dont vous avez besoins pour réaliser ce projet : 

- Un Raspberry Pi :)
- Un ruban à led rouge,vert,bleu
- Une alimentation 12V environ 2A
- 3 MOFSET  (exemple TIP120)
- Quelques câbles
- Platine d'essai

  

II - Montage électronique

Le schéma pour commencer assez simple avec les 3 Mofset, attention à votre alimentation ne pas dépasser les 12V.

Le schéma :

Le montage finale :


III - Le programme

Pour cette partie j'ai réutilisé le programme des sockets(j’avais créé un post à ce sujet) qui nous permettras via Ethernet de contrôle le signale PWM de chaque couleur. Pour le PWM j'utilise aussi justement la librairie pigpio(http://abyz.co.uk/rpi/pigpio/download.html, je vous laisse suivre ce tutoriel pour sont installation).

Les sources des programmes seront disponible en fin d'article.

Le programme principale :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pigpio
import Socket_Event
import subprocess

# Variables globale
PIN_RED     = 18
PIN_GREEN   = 23
PIN_BLUE    = 24

DEBUT_TRAME = chr(0x02)
FIN_TRAME   = chr(0x03)

# Valeur PWM pour chaque couleur
def CouleurPWM(iRED,iGREEN,iBLUE):
	pi.set_PWM_dutycycle(PIN_RED, iRED)
	pi.set_PWM_dutycycle(PIN_GREEN, iGREEN)
	pi.set_PWM_dutycycle(PIN_BLUE, iBLUE)
	
# Reception de la trame et renvoie d'une autre
def TraiteRecv(self, data):
	
	# Test si debut et fin de trame(pour vérification de trame complète)
	if (data[:1] == DEBUT_TRAME and data[-1:] == FIN_TRAME):
		data = data[1:len(data)-1]
		
		# Selon mode
		# Réglage direct des couleur
		if (data[0:1] == "C"):
			red   = int(data[1:3],16)
			green = int(data[3:5],16)
			blue  = int(data[5:7],16)
			CouleurPWM(red,green,blue)
			
		# On renvoie un acquitement
		Socket_Event.EchoHandler.handle_write(self, DEBUT_TRAME + "ACK" + FIN_TRAME)				
		
# Definition de la socket
interface = "192.168.1.25"
port = 5432

# GPIO configuration
pi = pigpio.pi()

# Lancement de la socket
server = Socket_Event.EchoServer((interface, port), TraiteRecv)
server.serve_forever()
Avant de lancer le programme il faut lancer de daemon de la librairie avec :
sudo pigpiod

La librairie socket_event est la même qu'utilisé dans mon précédente article sur les sockets, et disponible en fin d'article dans le dossier.

Pour résumer, si on se connecte sur la socket et que l'ont envoie une trame de la forme :
<2>C00FF00<3>

Les <> correspondent au caractère de deux ou trois, ensuite C pour couleur ensuite valeur du rouge, puis vert et bleu le tout en hexa.


Enregistrer un commentaire

  1. Je voulais me lancer dans un projet similaire pour mon sapin de Noël, votre article va me faire gagner du temps, merci !

    RépondreSupprimer

 
Top