dilluns, 14 d’octubre del 2013

Previsió del temps

Mentre no arriben alguns components que he demanat, m'he posat a fer probes.

Per començar he fet funcionar el wifi, he utilitzat un dongle que tenia vell ja que el que havia comprat per aquesta finalitat no tenia el driver integrat i sembla que el compilat no li ha fet massa profit.

Els que he fet servir són:

TP-LINK TL-WN721N (aquest si que ha funcionat)
TP-LINK TL-WN725N (el que no ha funcionat)

la diferència principal és que el 725 és en format micro, per tant no ocupa massa i és ideal si es vol posar tot dintre una carcassa, però mentre faig probes, el 721 ja em servirà.

Això si, he tingut que fer la configuració a mà ja que el GUI del raspbian no detecta el dongle (tot i que inicialment si ho feia i funcionava, coses rares...)

Per fer-ho he utilitzar el codi trobat a Adafruit (setting-up-wifi-with-occidentalis) i afegint aquest codi al /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
   wpa-scan-ssid 1
   wpa-ap-scan 1
   wpa-key-mgmt WPA-PSK
   wpa-proto RSN WPA
   wpa-pairwise CCMP TKIP
   wpa-group CCMP TKIP
   wpa-ssid "My Secret SSID"
   wpa-psk "My SSID PSK"
 
iface default inet dhcp

El que també he estat provant, és rebre previsió del temps i dades actualitzades, per aquest fi he volgut fer servir el servei de yahoo! que és molt utilitzat, he trobat dues vies per fer-lo servir.

1. python-weather-api

Aquesta api que podem instal·lar i per tant importar en les nostres feinetes en python permet agafar dades del temps amb yahoo!, weather.com i NOAA.
Les probes han estat una mica confuses, per començar en torna la informació en json i que no controlo gens ni mica i ls segons i mes important és que el buscador de IDs per identificar el lloc que volem que ens agafi les dades, no retornava correctament el codi de Sils, si de Girona per exemple, però en canvi el de Sils m'el retornava malament i em donava error al fer la crida. Un cop l'he trobat no hi ha hagut cap problema i tot perfecte.

2. adafruit forecast.py for pi thermal printer

Buscant buscant he trobat aquest codi, el que m'ha interessat d'aquest codi és que per agafar les dades no utilitzar llibreries externes, yahoo! posa a disposició dels usuaris un servei RSS que podem obtenir mitjançant una URL com la següent:


On w= és l'ID que assigna yahoo al poble que volem i que simplement l'hem de copiar de la URL qual el busquem per http://weather.yahoo.com/spain/.

El valor u=c ens retorna les dades en graus Celsius (c) o Farenheit (f) i així evitar tenir qeu fer nosaltres la conversió.

Per capturar la URL es fa servir urllib i despres es parseja amb parseString que xml.dom.minidom, molt senzill de poder accedir a les dades en un moment.

Aquests sistema també m'agrada perquè et retorna una versió en text del temps com per exemple "partly cloudy (day)", aquest text també esta associat a un codi, per tant podem generar una traducció senzilla a partir d'un vector, o en interficies gràfiques associar a una imatge.

Aquest és el mètode que faré servir.

M'he trobat un problema però, al voler fer-la servir en python3, que és a ón faig funcionat les llibreries per connectar amb la LCD. No és problema greu, ja que el sistema de urllib a python3 ha migrat cap a urllib.request i ha estat tant senzill com canviar l'import a urllib.request i urllib.urlopen(...) a urllib.request.urlopen(...) i tot funciona a la perfecció!

En la pròxima entrada molt segurament parli de com obtenir les IPs d'eth0, wlan0 i la nostra IP d'internet, necessàries per poder connectar a la nostre raspberry i que les poguem mostrar per pantalla.

dilluns, 16 de setembre del 2013

Recopilatòri (software)

Bé, el que vull fer aquí és un petit recopilatòri del programari utilitzat, per si passa alguna desgràcia poder recuperar feina feta ben ràpid.

Per començar he requerit instalar quick2wire, la base sobre la que treballa la llibreria que interactua amb la LCD, aquesta informació l'he tret dels següents links:

Installing the Think Bowl I2C Libraries for Python
I2C Python Library - LCD with the Raspberry Pi

Però primer hem d'instal·lar algo, crec que eren les setuptools per poder instal·lar quick2wire (deixo aquesta dada com a confirmació), quan volguem instal·lar mitjançant:

sudo python3 setup.py install

Ja ens donarà l'error si ens falta alguna cosa per instal·lar.

Molt important és que executem el setup.py amb python3 i no amb python, ja que quick2wire funciona sobre python3.

Aquests passos són suficients per al correcte funcionament amb la LCD, la comanda declarar i per poder treballar amb la capa I2C de mjkdz i perquè treballi correctament amb els pins és:

lcd = i2c_lcd.i2c_lcd(0x20, 1, 4, 5, 6, 0, 1, 2, 3, 7)

Si s'ha canviat el port 0x20 s'ha de tenir en compte.

Amb això ja tindrem la LCD funcionant.

diumenge, 15 de setembre del 2013

Ja funciona la LCD!

He aconseguit fer funcionar la LCD! Per fí!

Els problemes han estat dos, el primer que la "faixa" de cables que feia servir estava mal puntejada, el pin de contrast estava girant amb el RS. El segon, és que per algun motiu no es podia regular el contrast.

El primer problema ha tingut fàcil solució, i ja he pogut connectar i enviar comandes a la LCD, tot OK, però no sortia res a pantalla, quan toquetejava el pin de contrast aconseguia veure els caràcters escrits, per tant sabia que el problema estava en que el contrast tenia un problema!?

Després de cercar alguna possible solució per un munt de foros he trobat algú que havia posat una resistència de 3,9Kohms puntejada amb el pin de terra (o això he entès), per tant, he buscar totes les resistències que he pogut, al final un aparell de 1K, posades en sèrie, puntejat al pin terra de la LCD i... ZAS! Ja tenim test!

Pantalla LCD 16x02 amb I2C a dx.com: Meeeno IIC LCD-1602 Blue Screen LCD Module Shield for Arduino
Pantalla LCD 16x02 sense I2C a dx.com: 1602A 16 x 2 Lines White Character LCD Module w/ Blue Backlight (DC 5V)

dimecres, 11 de setembre del 2013

Tornem-hi!

Doncs això, m'he demanat una altre RBP i mentre acabo de mirar quin problema pot tenir la vella o l'envio a reparar, podré continuar amb el projecte, ara tinc que reprendre una mica el punt en el que estava, no vaig guardar còpia de res, per pràcticament no tenir res fet, tot sigui dit.

Intentar trobar què era el que creia haver solucionat en el moment que va petar tot i creuar els dits perquè no torni a petar altre cop.

Potser per facilitar la feina acabo demanant algun estri més, com un cable per connectar directament a la RBP a la protoboard.

Ja que crec que el problema de l'antiga va ser algun creuament amb algun cable connectat a una sortida del GPIO.... no surt molt del pressupost, uns 10€ i ja tindria tant el cable com la peça que va connectada a la protoboard.

Ja veurem, potser de cara al mes que ve!

dissabte, 1 de juny del 2013

Primera baixa

Doncs bé, sembla que ja hi ha la primera baixa entre els components (que ja tinc tots) i aquest no és mes que la propia Raspberry... alguna cosa ha passat, de fet ja feia uns dies que feia coses rarres i acaba de deixar de donar qualsevol tipus de senyal... aixi que tocarà esperar a reparar-la.

Què hi farem!

En tot cas us poso una mica al dia del que he anat mirant.

Primer és que l'adatador I2C per utilitzar en les LC 16x2 sembla ser que no té un piout 1-1 i que s'ha de remapejar fent servir les llibreries que hi ha per LCDs en python, ha estat en aquest moment (mentre estava en la consola de python) que ha deixat de responde, així que no sé si anava per bon camí.

Els links que he trobat documentació al respecte són els següents:

[SOLVED] MJKDZ brand I2C Controller working with 1602 LCD
I2C Python Library - LCD with the Raspberry Pi

Tindrem que esperar una mica a poder saber si els problemes que havia tingut eren per això!

dimecres, 8 de maig del 2013

Sense tocar, com?

Si recordeu, fa unes setmanes vaig comentar una idea que em va passar pel cap per interactuar amb l'aparell sense tocar-lo, mitjançant un sensor d'ultrasons que detectava la proximitat dels objectes.

He decidit provar un altre sistema (i mes econòmic), els infrarojos.

Diferències que em puc trobar i la forma d'interactuar amb nosaltres?

Infrarojos: La seva utilitat no va gaire més lluny que la de saber si hi ha un objecte aprop o no, però, i si en fem servir diversos? 2 o 3 en línia  Podem saber si la ma passa de dreta a esquerra o a l'invers, poden moure els menús o valors amunt i avall. El seu cost és molt inferior al dels ultrasons, per $2 podem tenir 10 unitats.

Ultrasons: A part de saber si un objecte és davant o no, ens permet calcular la distància, acostant o apropant la mà podríem incrementar o decrementar un valor, no ho veig tant clar per navegar per els menús.

Dir que aquesta idea m'ha vingut després de veure una demostració en viu del Samsung S4, que permet penjar i despenjar trucades passant la ma per sobre, evidentment no serà el mateix sistema, però crec que pot estar força aconseguit.

El seu cost es situa als $2 la unitat.

dijous, 25 d’abril del 2013

Suscipiens temperatus

Ja hem fet hem fet les primeres proves per llegir la temperatura amb el DS18B20 i han anat fantàstiques, seguint les instruccions de Raspberry Pi Spy ha funcionat a a perfecció.

Comentar que jo he demanat el component soldat en una PCB que pel que he pogut comprobar porta un LED que em permet saber si està o no funcionant i ja porta les resistències soldades, pel que m'estalvio espai en components i males soldadures que puguin fer les meves tremoloses mans!



pi@raspberrypi /sys/bus/w1/devices/28-0000045bcb4e $ cat w1_slave
68 01 4b 46 7f ff 08 10 05 : crc=05 YES
68 01 4b 46 7f ff 08 10 05 t=22500
pi@raspberrypi /sys/bus/w1/devices/28-0000045bcb4e $ cat w1_slave
85 01 4b 46 7f ff 0b 10 5f : crc=5f YES
85 01 4b 46 7f ff 0b 10 5f t=24312
pi@raspberrypi /sys/bus/w1/devices/28-0000045bcb4e $ cat w1_slave
69 01 4b 46 7f ff 07 10 5e : crc=5e YES
69 01 4b 46 7f ff 07 10 5e t=22562

Aquestes són les dades que ha agafat, el valor que ens interessa és el t=xxxxx que és la temperatura en milers, per tant, hem obtingut lectures de 22,5 - 24,312 - 22,562.

La temperatura central l'he pres llavors de deixar uns segons un dit a sobre del sensor.

Ara queda treballar amb python i picar una mica de codi :)