Vés al contingut

Introducció a la robòtica en trenta-una classes/Catorzè dia: ambilight amb arduino

com canvien els leds en funció de la imatge

Aprofitant que tenim els LEDs adreçables de la classe anterior, i per suggerència d’un pare, va semblar a tothom una bona idea de muntar un sistema ambilight, com el que duen alguns televisors, que fa una il·luminació al voltant de la pantalla que segueix les imatges.

No l’hem fet complet, però ja serveix per veure que el sistema funciona, i qui el vulgui fer sencer, només cal que afegeixi més LEDs.

A la xarxa trobareu moltes maneres de fer-ho, nosaltres ho hem fet amb l’empresa

Arduino i un ordinador.

Partint de la imatge que hi ha a la pantalla de l’ordinador, un programa captura els colors de les vores i els envia cap a l’arduino. L’arduino rep les ordres de color i els envia a la tira de LEDs.

Com deiem, el primer és programar l’arduino perquè escolti els canvis de color que li vindran pel USB. És un programa que ja hem trobat fet, i que només n’hem abaixat la velocitat, perquè era inestable. Es diu adalight, i aquí en teniu un enllaç:

https://www.dropbox.com/sh/4cst6hwxemv173y/AACdMnh388KTIMFCYfXCSQWKa?dl=0

Després ens cal instal.lar el programari a l’ordinador. Primer, us expliquem com ho hem fet en linkat, que és el programari lliure que han fet des d’ensenyament, derivat de ubuntu, una versió de linux.

En primer lloc, obrim un terminal, i teclegem, fent intro després de cada línia:

mkdir ambilight
cd ambilight
wget https://sourceforge.net/projects/hyperion-project/files/hypercon/HyperCon.jar
java -jar HyperCon.jar

Amb la darrera instrucció, ens obre un entorn gràfic on configurarem el nostre sistema.Primer de tot, en Type cliquem Adalight, a output /dev/ttyUSB0 i a Baudrate 115200.

Nosaltres tenim 12 leds, i veiem que en surten 45. Cap problema. Primer, posarem la tira a on volguem de la vora de la pantalla, i llavors hem de fer que el número 0 coincideixi amb el primer led de la nostra tira, i el 11 amb el darrer. No passa res amb els que sobren. Nosaltres hem posat la tira a la dreta, amb el zero a baix. Per tant, ens ha quedat:

Direction counter clockwise, LEDs horizontal 16, LEDs left 7, LEDs right 12, Bottom gap 0

1st LED offset -27.

Cliquem a create hyperion configuration, i ens fa un arxiu que després farem servir.

Sortim del HyperCon, i tornem al terminal. Ara teclegem:

sudo apt-get -y install git cmake build-essential libprotobuf-dev libqt4-dev
sudo apt-get -y install libusb-1.0-0-dev protobuf-compiler python-dev qtbase5-dev
sudo apt-get -y install libqt5serialport5-dev libxrender-dev libavahi-core-dev
sudo apt-get -y install libavahi-compat-libdnssd-dev
git clone --recursive https://github.com/hyperion-project/hyperion.git
cd hyperion
cmake -DENABLE_FB=ON -DENABLE_X11=ON -DENABLE_DISPMANX=OFF
make
sudo make install
sudo mkdir /etc/hyperion -p
sudo cp ../hyperion.config.json /etc/hyperion/hyperion.config.json
sudo ./bin/install_hyperion.sh

Una vegada tot instal.lat, reiniciem l’ordinador, i hem de veure que el led de rx de la placa arduino no para de fer intermitències. En una versió de Linux, no havia quedat bé on era ubicat un dels arxius. Ha calgut:

sudo nano /etc/systemd/system/hyperion.service

I hi hem posat la ruta correcta dels arxius. Potser els leds han fet unes pampallugues i s'han apagat. Si és així, obrim un terminal i teclegem:

hyperion-x11 &

En la versió de linkat que tenim, que és la lleugera ho hem pogut automatitzar anant a preferències, aplicacions per defecte, i en la secció autostart, posar hyperion-x11.

Per a windows, podem instal.lar ambibox, que fa tota la feina. La primera vegada que l’engeguem, haurem de configurar la ubicació dels leds, el port de comunicacions, i el tipus de led a AdaLight. Desem la configuració, i ja no hi haurem de tornar.