dilluns, 14 de desembre del 2015

Controls arcade amb arduino (Isaac Lleida i Kevin Sánchez)

La nostra idea principal era construir una màquina d'arcade independent. Vam fer una recerca per la xarxa, i vam trobar que hauriem de gastar molts calerons, per culpa de la pantalla, que hauria de ser a mida. Vam pensar, que seria molt més senzill i portable si només construíem taulell de controls i li posavem una interficie USB per a conectar-lo a qualsevol màquina.


Seguidament, vam haver de pensar com connectar els botons i les palanques amb una interficie USB. Vam trobar que hi havien diverses maneres, de les més factibles era l'ús d'una placa anomenada I-PAC. Un I-PAC, es un dispositiu, específic per a contruir controls Arcade, al que se li connecten els botons i les palanques i enviar les accions d'aquests per USB a un ordinador simulant un teclat mecànic amb unes funcions determinades, però els exemplars que vam trobar per la web superaven el 40$ i no ens donaven opció a compra. No obstant, l'I-PAC ens va donar la idea de fer el nostre propi amb Arduino, al qual podríem connectar tots els botons i palànques necessàries per fer ús dels jocs arcade i interpretar les seves accions amb una programació introduida en aquest. Aquesta va ser la nostra idea final i vam començar a idear i organitzar una estructura per els controls de la màquina; la nostra idea és crear un taulell on dos jugados puguin interactuar alhora.
 http://www.arcadecab.com/images/NewCabinet/I-PAC_wiring_diagram_ArcadeCab_Layout.png
Així vam trobar botons i palanques a eBay amb el mínim preu que demanarem al gener, degut a el col·lapse d'enviaments desde Xina al Nadal.

Botons: http://www.ebay.com/itm/10x-OEM-Red-30mm-Arcade-diy-Parts-Push-Button-Replace-For-Sanwa-OBSF-30-Buttons-/201338789088?hash=item2ee0ba1ce0:g:wX8AAOSweW5VEUfD
Palanques: http://www.ebay.com/itm/Classic-4-8-way-Arcade-Game-Joystick-Ball-Joy-Stick-Red-Ball-Replacement-SG-/281875954573?hash=item41a11dbb8d:g:0RQAAOSwp5JWYoaB

Per utilitzar l'Arduino com a I-Pac, vam estar mirant com poder simular un teclat amb Arduino. Vam trobar que per fer aixó haviem de flashear un firmware específic per a aquesta tasca (http://mitchtech.net/arduino-usb-hid-keyboard/).

Ara mateix estem treballant en fer una simulació amb polsadors normals  mentre esperem els components i aconseguir fer-lo funcionar.

diumenge, 13 de desembre del 2015

Com connectar-se a una Raspberry Pi quan no es pot connectar a un monitor.

Connexions alternatives a la Raspberry

Un dels problemes que he trobat mentre duia a terme el meu projecte de "streaming" d'imatges capturades per la càmera de la Raspberry i pujar-les a temps real a Internet, és connectar-se al petit ordinador. En moltes ocasions no he disposat d'un cable HDMI i és molt molest anar fent l'intercanvi del cable de la Raspberry a l'ordinador. És per això que he mirat altres maneres de connectar-m'hi.
A dia d'avui utilitzo ja sempre el mètode de connexió mitjançant un cable de xarxa. Aquest mètode fa que les dades de la Raspberry surtin per el cable ethernet i s'enviïn al meu ordinador però té un inconvenient: per fer això s'ha de conèixer l'adreça IP que la Raspberry rep cada cop que es connecta per xarxa i això no seria problema si no fos perquè aquesta és dinàmica i sempre és diferent.

La solució a aquest problema és editar la configuració de xarxa de la Raspberry perquè la tingui estàtica però és una cosa complicada. És per això que he fet un vídeo explicant com es duu a terme aquesta tasca.

Aquí deixo l'enllaç del vídeo a youtube:



Problemes conectant la Raspberry a un monitor

He tingut bastants problemes amb la Raspberry Pi a l'hora de connectar-la a un monitor, i encara NO ho he solucionat. El problema es troba quan tu intentes connectar aquest dispositiu a un televisor amb HDMI o a un monitor VGA. Quan tu fas això, els dispositius com la televisor i els monitor no troben la senyal per un problema de configuració de la Raspberry Pi. Ara diré tot lo que he intentat per connectar-ho, però ha sigut inútil.

Intent de solució 1: Connectar la Raspberry a diferents monitors VGA

Al principi, la nostra Raspberry no tenia cap tipus de problema en connectar-lo a un monitor VGA, però després desendollar-lo un parell de vegades, la Raspberry va deixar de transmetre senyal.
Vaig intentar connectar la Raspberry a quatre monitors diferents amb sortida VGA, però ningun dels quatre monitors va mostrar la pantalla de la Raspberry Pi.
Vaig investigar per internet i vaig trobar que el problema venia de un archiu anomenat "config.txt", un archiu que es sobreescrivia sol, però vaig intentar trobar l'archiu en la meva targeta SD i no el vaig trobar perquè estava utilitzant l’instal·lador "NOOBS". Així que vaig intentar trobar altres solucions.

Intent de solució 2: Conectar la Raspberry a un televisor HDMI

Al veure que la Raspberry no anava en un monitor VGA vaig decidir emportar-me-la a casa i provar amb el meu televisor HDMI directament, sense necessitats d'utilitzar un adaptador HDMI-VGA.
El meu televisor va trobar un HDMI connectat, però deia que la imatge era incompatible i que o tenia senyal.

Intent de solució 3: Connectar la Raspberry a traves de internet

Llavors vaig provar com a últim remei utilitzar el protocol de connexió "SSH" per connectar la meva Raspberry al meu ordinador a traves de internet. Un altre intent inútil, ja que es complicat connectar la Raspberry amb aquest mètode, y no va trobar el dispositiu el meu ordinador. Pot ser perquè no vaig obrir els ports del meu router correctament, perquè no vaig posar els comandaments adequats...


Finalment vaig formatejar la micro SD i vaig posar-li dins el Raspbian Jessie, però continua sense funcionar a dia d'avui.

divendres, 11 de desembre del 2015

So amb arduino


En aquesta pàgina teniu instruccions per fer sons amb un piezoobuzzer (brunzidor) fent servir les funcions tone() i notone() amb Arduino

dilluns, 7 de desembre del 2015

Disseny d'un sistema de vigilància remota amb Raspberry Pi ( Part 3 - Instal·lació de "motion" per Raspberry i configuració)

Aquesta part del projecte consistirà en instal·lar a la Raspberry un programa anomenat "motion". Aquest programa és capaç de captar imatges seguidament i enviar-les a Internet, fent-les visibles per qualsevol dispositiu connectat a la pàgina on les emet.
L'inconvenient és que s'ha d'editar la configuració del programa, ja que la per que hi ha per defecte no s'ajusta a les nostres necessitats.


  1. El primer pas és instal·lar el programa. Per això iniciarem la Raspberry i obrirem el terminal. La ordre a executar és:

    # sudo apt-get install motion
  2. En segon lloc, copiarem el fitxer de configuració del programa a algun directori per modificar-lo.

    # sudo cp /etc/motion/motion.conf /home/pi (nom del directori on copiar el fitxer)
     
    En aquest cas, pi és el nom del nostre directori però es pot canviar si voleu desar el fitxer en algun lloc diferent.
      
  3. Com hem copiat el fitxer com a superusuari (amb l'ordre sudo), el propietari del fitxer també serà el superusuari i no podrem modificar-lo si no ho som en un futur. Per això, canviarem el propietari del fitxer a l'usuari (en el nostre cas, pi) amb la ordre següent:


    # sudo chown (change owner) pi.pi motion.conf 



      
  4. Seguidament, passarem a editar el fitxer de configuració del programa però per això ens caldrà un editor de programes. Nosaltres n'utilitzarem un anomenat "vim" que Raspbian ja conté per defecte.
    Per utilitzar-lo el que haurem de fer és, en el terminal escriure el nom de l'editor i seguidament, el del fitxer. Hauria de ser així en el terminal:
    # vim motion.conf
    L'avantatge de vim és que és un editor que diferencia els comentaris del programa de les ordres i les pot ressaltar en colors diferents però, per que això es dugui a terme, un cop obert el programa li inserirem l'ordre:


    :syntax on (syntax off per desactivar el ressaltant)
      
    Desactivada la syntax, comentaris i ordres apareixen amb el mateix color.


    Un cop activada, els comentaris es ressaltaran en blau.
      
    Els  comentaris es detecten fàcilment perquè els precedeixen un #.
  5. Per entrar en el mode d'edició del fitxer utilitzarem la tecla I i per sortir-ne, la tecla Esc. Apretem I.
    Ara ja podem passar a realitzar les modificacions del programa.

    Paràmetres a canviar
    Per canviar el paràmetre, simplement hem de buscar el que volem en un color diferent a blau i aleshores canviar l'escrit per el nou (p.e. si un paràmetre es troba en "on" i l'hem de desactivar, canviarem "on" per "off". El nou paràmetre que s'ha de substituir és el que escriurem a continuació.

    - Desactivar el daemon → daemon off
     El daemon és un servidor que, si està activat fa que les nostres ordres es duguin a terme en segon pla. Com a conseqüència ens podem perdre algunes de les notificacions que es facin i ens convé tenir-lo desactivat.


     Com es pot veure, l'ordre no està en color blau i canviarem "on" per "off" allà on diu daemon. Els comentaris ens expliquen que és el que fa cada ordre, o sigui que si en trobeu una que sigui del vostre interès, podeu canviar-la per tal que s'ajusti a les vostres necessitats. Tingueu en comte que en el comentari hi acostumen a haver les altres possibles instruccions.


    Configurar les dimensions de la imatge → width 360 (o 640 o 1024) → height 200 (o 480 o 768) 
    El que aconseguirem amb això és configurar la mida de la imatge a l'hora de visualitzar-la, l'amplada i l'altura han de ser sempre proporcionals i cal tenir en compte que com més gran sigui la mida de la imatge, més lenta anirà la visualització d'aquestes.

    - framerate → 10 (o 15 o 20)
    Al canviar el framerate aconseguirem variar el nombre d'imatges per segon. Com més gran sigui el nombre, més fluïda serà la seqüència d'imatges. No obstant, el nombre d'imatges que pugui transmetre per segon dependrà de la fluïdesa de la nostra connexió a Internet.

    - Auto-brightness → off
    Activat, l'auto-brightness regularia el contrast amb la lluminositat de la càmera tot i que al ser exposada a llums intenses com la solar o una bombeta encesa no es cal·libra molt bé. Per tant convé que el desactivem en cas que estigui en "on".

    - ffmpeg_output_movies → off
    Per defecte, motion ens crea vídeos sobre el que la cama enregistra i els desa. A nosaltres no ens convé que aquests vídeos es creïn ja que amb una cadena d'imatges en tidríem prou i a més, els vídeos ens ocuparien espai dins la memòria del nostre ordinador, cosa que tampoc ens interessa.

    - target_dir (nom del directori on desar imatges p.e. /home/pi/motion)
    En cas que en algun moment decidíssim enregistrar el conjunt d'imatges, ens caldrà un directori on desar-les. És per això que recomano que en creeu un i en aquest paràmetre hi escriviu l'adreça del directori. Remarcar que no es gravarà res a no ser que el paràmetre ffmpeg_output_movies estigui habilitat.

    - streamport (nombre del port de connexió que volguem p.e. 8081)
    Amb això definirem el port per el qual s'escoltaran les peticions d'imatges per la xarxa.

    - stream_motion → on
    El que això permet és que quan la càmera no detecti cap moviment, el flux d'imatges sigui d'1 fps i quan se'n detecti un, augmenti el nombre d'imatges per segon.

    - stream_maxrate → 10
    Quan la càmera detecti moviment, el flux d'imatges incrementarà fins el màxim donat aquí. Cal tenir en comte que, si se li assigna un valor molt elevat és possible que la connexió no sigui prou ràpida i es vegi entretallada la transmissió d'imatges.

    - stream_localhost → off
    Habilitarà la connexió des d'altres dispositius, com altres ordinadors o telèfons mòbils.

    - stream_auth_method → 1
    Amb això, el que aconseguirem és que quan intentem accedir a les imatges quan ens connectem a la xarxa, se'ns demani una contrasenya que nosaltres escollirem a continuació. En cas que no vulguem contrasenya podem escriure 0 però llavors, tothom amb l'adreça podrà accedir-hi.

    - steam_authentication → (nom d'usuari que vulguem):(contrasenya)
    Aquesta ordre només és útil si en l'anterior li hem dit que volem contrasenya. Primer inserirem el nom d'usuari que vulguem i seguidament de dos punts (:) la contrasenya que demanarà la pàgina.

    - output_pictures off
    Desactiva el fet d'utilitzar captures del vídeo per la seva presentació en cas que es desi. Com que a nosaltres no ens interessa, ho desactivarem.

    En cas que no trobem algun d'aquests paràmetres, fora del mode d'inserció (I), podem escriure /el nom del paràmetre que busquem . És una eina de cerca.
  6. Per acabar aquesta part del projecte, sortirem del mode edició amb la tecla Esc. i desarem els paràmetres utilitzant :wq (write and quit).
Amb això donem per conclosa aquesta part del projecte i podrem passar a la visualització de les imatges.