Feeds:
Posts
Comments

News flash: le USB parrebbero funzionare correttamente con l’ultimo update del firmware di Carambola.

Come avevo anticipato due giorni fa, ho scaricato l’update del firmware di Carambola ed ho ricompilato il tutto ieri (operazione non brevissima, dato che sono cambiate sia le versioni di gcc che di uclibc in uso, e questo ha implicato una ricompilazione a due passi di praticamente tutta la toolchain), ed ho fatto immediatamente un test con una chiavetta USB: viene riconosciuta tranquillamente, montata correttamente ed ho anche provato a creare qualche file o eseguire codice Erlang senza alcun problema o errore (e senza usare alcun hub).

Ora, è necessario qualche altro test intensivo, ma se tanto mi dà tanto, forse ci siamo…

P.S.: giusto per essere fair, l’unica altra spiegazione che posso dare è che la chiavetta testata ieri era diversa da quella che avevo provato in precedenza, e “di marca” (mentre l’altra era regalata ad una conferenza); non so se questo possa influire in maniera così decisa, ulteriori test vaglieranno tutte le ipotesi sul tavolo.

Netduino, Erlang…

Netduino + Ethernet shield

Netduino + Ethernet shield

Due righe come scusa per pubblicare la foto qui sopra: sto lavorando su una sorta di porting del porting dell’interfaccia Erlang – Java per C# sul .NET Micro Framework, ed in particolare sul Netduino che posseggo; lungo la strada, sto anche debuggando il driver per l’Ethernet shield (questo perchè non ho comprato il Netduino Plus a suo tempo, grave errore)… vi farò sapere!

Avevo promesso un breve update su Carambola, e quindi eccolo qui.

Dico “breve” per il semplice motivo che non ho fatto molti esperimenti fino ad ora: la maggior parte del tempo l’ho infatti spesa per cercare di far funzionare la versione 15B di Erlang sul sistema OpenWRT installato sulla scheda, operazione che posso assicurarvi non è stata completamente banale causa limiti di spazio sulla flash (8 MB sono veramente pochi!) e necessità di patchare la nuova release (sorvolando sui problemi di cross-compilazione con il nuovo Mac che sto usando per lavoro), e per provare i pin GPIO presenti sempre sulla scheda stessa.

Il giudizio complessivo che posso dare ora come ora è il seguente: voto 6.5 in crescendo. Questo perchè:

  • lato connettività, direi che non ci sono particolari problemi: non ho provato le porte wired, se non per fare aggiornamento del sistema, ma con la connessione WiFi ho creato addirittura reti ad-hoc senza nessun problema (se non capire bene che parametri inserire nei file di configurazione). Certo, i chip scaldano abbastanza… sarebbe interessante capire se spegnendo la wireless scalda di meno, dato che magari in un contesto in cui si tiene la scheda collegata ad un router per far girare qualcosa tipo torrent o un mini-serverino (VPN et al.), potrebbe essere una possibilità concreta (in fondo sono gli usi tipici che si fanno con router riprogrammabili con OpenWRT, e ricordo che la Carambola ha di fatto un set hardware di quel tipo)
  • lato connettività hardware (GPIO, SPI, I2C etc), scarseggiamo discretamente: far funzionare i GPIO è in realtà piuttosto semplice (la modalità più facile è leggendo e scrivendo il device /dev/gpio), ma abilitarli non è facile e/o chiarissimo, dato che il chip RT3050 ha i pin che possono funzionare secondo diverse modalità; esistono alcune guide sulla Wiki o sul forum, ed un tool che è necessario scaricare per scrivere alcuni valori nei registri del microprocessore, ma la cosa resta non banale. Con SPI e I2C sembrano esserci un po’ di ritardi lato software, non è chiarissimo se le cose funzionano o meno: in particolare, con SPI pare che le velocità siano discretamente lente. Le cose non vanno meglio con le USB, dove pare che l’hub integrato nella devboard non riesca a reggere benissimo ad alcuni picchi di potenza; pare in realtà che il problema si risolva usando uno hub esterno, il che se risolvesse il problema sarebbe decisamente interessante, vedi punto successivo; non ho ancora testato questa ultima soluzione, ma mi ripropongo di farlo al più presto
  • lo spazio su disco è veramente poco (almeno, per i miei usi): chiaramente, la memoria flash interna viene usata solo per installare i programmi, ma ce ne stanno veramente pochi; per questo, sarebbe molto importante far funzionare la presa USB, anche come repository per applicazioni tipo server Web/FTP/p2p, magari collegando addirittura hard disk esterni (meglio se anche alimentati esternamente, penso)
  • recentemente gli sviluppatori hanno rilasciato una 2.0 del software: l’ho scoperto oggi, ho ricompilato mezzo mondo ed ora ho un’immagine pronta da testare, vedremo se ci sono stati dei benefici…

Ora, ho scritto “in crescendo” perchè alcuni dei problemi riportati qui sopra si stanno risolvendo (anche se mooolto lentamente) soprattutto sui forum, dove se non altro gli sviluppatori hw/sw intervengono spesso e volentieri per aiutare gli utenti, ed il forum stesso inizia ad essere un po’ più frequentato rispetto a qualche mese fa; resta comunque un device utile all’interno di un progetto che seguo nell’ambito del mio dottorato, quindi continuerò ad usarlo e non appena ho qualche statistica ed opinione più ampia non esiterò a pubblicarla (ad un certo punto spero infatti di raggiungere una release stabile del software di cui ho bisogno, così da potermi concentrare nell’uso della scheda invece che nell’uso della sua toolchain di compilazione!).

Peraltro, sto giusto pensando di acquistarne una seconda “ad uso privato”, con tanto di scatola, da usare a casa come piccolo database per salvare dati da sensori…

Finalmente il team di lavoro di Arduino ha rilasciato un aggiornamento del loro IDE: la versione 1.0.1 contiene svariati fix a problemi riscontrati dopo il rilascio della 1.0 qualche mese fa, problemi che nel frattempo mi avevano costretto ad usare la versione Git compilata direttamente da sorgenti (altrimenti la parte Ethernet non funzionava per nulla, almeno nel mio caso; ammetto di non aver ancora verificato che tali problemi ora siano spariti, testerò appena possibile). Altre migliorie riguardano la localizzazione dell’interfaccia, particolare che nomino per secondo per il semplice motivo che a me personalmente non serve (ma sono certo che sia più che utile ad un buon numero di persone).

Un’altra succosa novità riguarda il supporto ad Arduino Leonardo, la nuova board del gruppo (già in vendita nello store): la differenza principale con gli altri modelli (e con l’Uno in particolare) sta nel fatto che ora il microcontrollore integra sia un microcontrollore analogo a quello dell’Uno con in più il chip che funge da interfaccia con il PC (attraverso il cavo USB); questo fa sì che la board appaia di default allo stesso tempo al computer cui è collegata sia come seriale che come coppia mouse + tastiera. Ovviamente, esiste già un set di classi a supporto ed una guida per i primi passi. C’è stato anche un remix di pin, tale per cui gli input analogici sono raddoppiati (alcuni di questi sono condivisi con GPIO e non a sè stanti).

Ammetto di non afferrare appieno le potenzialità di far apparire la board come tastiera e mouse, anche se suppongo quella parte del chip sia riprogrammabile (come era già nell’Uno il circuito corrispondente), se non altro l’unire i due chip in uno unico ha abbassato il prezzo rispetto agli altri di 4 € (+ IVA), quindi alla fin dei conti non è male; non ho in mente un acquisto in questo momento, ma più avanti sicuramente ci farò un pensierino.

Ora non ci resta che attendere l’Arduino Due, che ci era stato promesso in autunno, con microcontrollore a 32 bit: quello sarà sicuramente un acquisto interessante, si vociferava nel forum che sarebbe arrivato in estate, vedremo…

P.S.: ho “in canna” un paio di post hardware, in particolare su Carambola e su altri progettini, appena ho un momento mi ci dedico, promesso!

Ricordate sempre che la risata che bussa alla porta e chiede: “Posso entrare?” non è una vera risata. No! La risata è regina e viene e va come le pare. Non chiede a nessuno e non sceglie il momento più adatto. Dice: “Sono qui”.

[…]

Oh, amico John, è un mondo strano, un mondo triste , un mondo pieno di miserie e dolori e guai; eppure quando arriva, la Regina Risata fa ballare tutti alla sua musica. Cuori sanguinanti, e ossa secche nei cimiteri, e lacrime che bruciano quel che toccano, tutti ballano insieme alla musica della risata con quella bocca senza sorriso. E credetemi, amico John, che è buona a venire, e gentile. Ah, noi uomini e donne siamo come corde tirate di qua e di là. Poi vengono le lacrime e, come pioggia sulle corde, ci tendono finchè la tensione diventa troppa e ci spezziamo. Ma la Regina Risata arriva come il sole, e distende la tensione e così riusciamo ad andare avanti nelle fatiche, qualunque esse siano.

Prototipying

Da così...

Da così...

... a così

... a così

If, someday, your Intel-equipped computer should stop having OpenGL working in the X session, it may be due to the (completely useless) installation of NVidia/ATI drivers… so, open a shell and type in as follows:

sudo apt-get purge nvidia*
sudo apt-get purge fglrx*
sudo apt-get install –reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core
sudo dpkg-reconfigure xserver-xorg
sudo update-alternatives –remove gl_conf /usr/lib/nvidia-current/ld.so.conf

Being a geek is all about your own personal level of enthusiasm, not how your level of enthusiasm measures up to others. If you like something so much that a casual mention of it makes your whole being light up like a halogen lamp, if hearing a stranger fondly mention your favorite book or game is instant grounds for friendship, if you have ever found yourself bouncing out of your chair because something you learned blew your mind so hard that you physically could not contain yourself — you are a geek.

(Source)

Danelectro

Danelectro

New entry nello Studio Siv! E non dico altro… (e se non avete capito, cfr. Wikipedia)

Arduino + Ethernet Shield

Arduino + Ethernet Shield

Some context

So, as I was here today with some residual traces of flu and a cold, I watched a certain (undisclosed) quantity of episodes of TBBT (yeah, yeah, I know, just a couple years later than all the others), and all of a sudden I thought of a very nerdy way of solving a little problem I had here (an idea somewhat similar to this one, at least from a certain point of view).

The problem was the following: I have an Asus Eeebox (one of the first models) that is being used with XBMC as a HTPC, of course without a mouse or a keyboard; I have a little infrared remote for navigating through the menus and stuff. Now, the problem comes when one wants to write something, for example in the search box of the Youtube plugin: neither the smartphone remote controller for XBMC nor the Web page supported those interfaces (at least in pre-11 version of the application), so the only way (besides connecting a keyboard, which I don’t want to use because I don’t want to leave it there hanging around) was to navigate between each key of a virtual keyboard that pops up when going into any search field, using navigation keys or a little surface of the remote control that simulates a mouse. Neither a good solution, would you agree.

A few months back I played with the possibility of changing the firmware of the USB part of the Arduino Uno models, and as I had an Ethernet Shield lying there, along with the Uno already with the resistor in place for placing it in DFU mode, and I had the idea that I could use the Arduino as a remote keyboard… ready for the journey?

The journey

So, the first thing has been to search if someone already modified the LUFA project for allowing an Arduino board to be recognized as a generic keyboard… and (of course) it turned out someone already did it. I downloaded the code from that Web page, installed it and tried the examples: they just work™.

Next move: I put together some code for allowing the Arduino to act as a Web server, showing just a single page with a little form with a text line; each string insterted there is then sent back from the browser to the server, which gets the parameter and sends it through the serial port, using the protocol developed for the keyboard firmware linked above. With this, if the Arduino is connected to a local network and to a computer (through USB), it receives characters from the Web and sends them to the computer as they were typed into a (USB) keyboard. The only difficulty here was that the current binary version of the Arduino IDE seems not to work at all with DHCP, I don’t know for what reason (maybe some voodoo compatibility with my avr compiler), but the git version works just fine (for me, at least).

And, dulcis in fundo: using the Web page was fine, but of course I want to send commands from my Android smartphone, so I wrote some other code packed in a tiny Android application showing basically the same form and directly sending POST requests to the Web server. The entire application does not perform very accurate controls over inputs, it’s a little project in the end and it is supposedly used in a local network (your house’s), where no one should want to crash your Arduino…

Final thoughts

Next week I will get a little enclosure for the Arduino pictured at the beginning of this post; the sketch does not support all possible keybaord symbols, just letters, numbers and a couple of useful punctuation marks, because I think I will just use it for doing searches where I should not need strange things. I also want to add: screw the Eclipse update system, it never works.

As a side note, the Eeebox does not shut down the USB ports when shutted down, so the Arduino remains on and connected even if the computer is not running.

I also took the opportunity to put together some little projects I had on Github in one single repository instead of n repositories: it seems to make more sense.