Configurare sqlite su raspberry pi 3

Per poter usare sqlite3 è necessario installare i relativi pacchetti debian.

Per l’uso come command tools è sufficiente lanciare il comando:

sudo apt-get install sqlite3

mentre per configurare l’uso in ambiente c si deve lanciare il comando:

sudo apt-get install libsqlite3-dev

Per installare ncurses si devono installare i pacchetti developer:

sudo apt-get install libncurses5-dev libncursesw5-dev

Configurazione Bluetooth su raspberry pi 3

La configurazione Bluetooth si trova dentro il file /etc/bluetooth/rfcomm.conf.
All’interno si deve configurare il ssid della rete a cui ci si collega e le relative password di accesso.
Successivamente, per fare il pairing bisogna mettere il dispositivo in modalità di attesa: è sufficiente il comando
sudo hciconfig hci0 piscan

A questo punto il dispositivo si porrà in attesa di essere pareggiato con un altro (la consueta password 1234 dovrebbe essere corretta).

Una volta configurato il tutto, è necessario istruire raspberry a fare lo start del Bluetooth all’avvio. Il comando da inserire in /etc/inittab oppure in /etc/rc.local è

sudo bluez-simple-agent

Nel file inittab si deve caricare una riga per permettere di aprire un terminale attraverso una porta del Bluetooth. Lo supporta sia windows (utilizzando putty) che raspberry.

Creare hotspot WIFI virtuale con windows 7

A partire da windows 7 è possibile utilizzare una chiavina WiFi di quelle super integrate (come la minuscola TP-link WN 725N) per creare una rete virtuale a cui collegarsi con smartphone o tablet.

Per farlo, dopo aver installato i driver del dispositivo wifi e essersi assicurati che funzioni) la situazione dovrebbe essere come quella visibile in figura:

Rete WIFI
Rete WIFI

In particolare il sistema configurerà la schedina come classica scheda di rete (visibile a sinistra con il nome “Connesisone rete wireless).

Ora, per operare come hotspot è necessario avviare il relativo servizio, ovvero creare una scheda virtuale, con il comando:

netsh wlan set hostednetwork mode=allow ssid=MYWIFI key=password keyusage=persistent

fornito all’interno del prompt dei comandi in modalità amministratore.

Ovviamente nel comando è necessario personalizzare il nome della rete e la password.

A questo punto nel pannello di configurazione della rete si vedrà anche la nuova rete wireless (nella figura la colonna  più a destra “Connessione rete wireless 2”).

Questa risulterà, però non connessa.

Per abilitare la connessione è necessario fornire il comando:

netsh wlan start hostednetwork

Successivamente sarà necessario andare sulla connessione “reale”, quella ethernet connessa alla rete e andare nelle sue proprietà.

Qui, si deve scegliere la scheda Condivisione e spuntare “Consenti al altri utenti in rete di collegarsi tramite la connessione internet di questo computer”.

Nel menu a tendina è necessario scegliere “Connessione rete wireless 2”.

A questo punto la funzionalità è abilitata e ci si potrà connettere all’hotspot.

Per spegnere il dispositivo è necessario inviare il comando di stop al servizio:

netsh wlan stop hostednetwork

Ovviamente sarà necessario abilitare il servizio ogni volta che necessita, in quanto all’avvio non sarà disponibile di default.

Video di “Installazione di xamarin”

 

Creazione gcode per pcb

Esistono numerosi strumenti, anche free, che permettono la creazione di file gcode per la fabbricazione di un pcb mediante tecnica cnc.

Lo strumento secondo me più comodo è utilizzabile online, all’indirizzo http://rapid-pcb.com.

Questo permette di generare un file gcode per le forature ed uno per la tracciatura semplicemente inviando i relativi file drl e gerber nel sito.

La generazione del file di foratura richiede, però le seguenti specifiche:

  1. Il formato excellon di tipo 1
  2. Misure in sistema metrico (mm)
  3. le coordinate devono avere il formato “3.3”, ossia 3 cifre intere e tre decimali, senza soppressione degli zeri iniziali

Queste specifiche si inseriscono facilmente dentro DesignSpark pcb. In particolare, per quanto riguarda il drill file, bisogna innanzitutto configurare le coordinate in mm, in tutte le maschere dove compaiono i bottoni “inches/mm”.

Si deve scegliere la riga corrispondente a “Drill Data”, poi Device Setup e qui indicare il “Formato 1”, “Remove Duplicate holes”  e “Output in metric units”. In Integer e Decimal indicare 3.

Per quanto riguarda il Bottom (o Top) copper è necessario indicare al sistema che i fill pattern non siano elaborati in hardware dalla cnc. In pratica si deve togliere la spunta al checkbox “Hardware fills (G36, G37)”, altrimenti in sostituzione di eventuali copper plane verranno generati solamente i bordi.

Configurazione Autologin per raspberry 3

Con la versione jessie di raspbian è cambiata anche la modalità di autologin, rispetto alla vecchia configurazione di inittab.

In pratica c’è un comodo comando da lanciare dentro raspi-config, nei parametri di boot.

Basta scegliere autoboot on conole as pi e il gioco è fatto.

Come ti configuro il controller “THT Arcade console 2P USB Player”

La configurazione di questo controller con raspberry dipende da alcuni parametri settati nei file di configurazione, in alternativa il sistema rileva solo un unico joystick pilotato dalle due levette. Innanzitutto è necessario estrapolare il codice del dispositivo, che deve essere stato rilevato correttamente all’avvio del kernel. Si dà il seguente comando:

# cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=”Xbox Gamepad (userspace driver)”
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=js0 event0
B: PROP=0
B: EV=b
B: KEY=7fdb0000 0 0 0 0 0 0 0 0 0
B: ABS=3001b

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=”Xbox Gamepad (userspace driver) #2″
P: Phys=
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=js1 event1
B: PROP=0
B: EV=b
B: KEY=7fdb0000 0 0 0 0 0 0 0 0 0
B: ABS=3001b

I: Bus=0003 Vendor=16c0 Product=05e1 Version=0101
N: Name=”THT THT Arcade console 2P USB Player”
P: Phys=usb-3f980000.usb-1.4/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:16C0:05E1.0001/input/input2
U: Uniq=
H: Handlers=js2 event2
B: PROP=0
B: EV=1b
B: KEY=3ff 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=16c0 Product=05e1 Version=0101
N: Name=”THT THT Arcade console 2P USB Player”
P: Phys=usb-3f980000.usb-1.4/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:16C0:05E1.0001/input/input3
U: Uniq=
H: Handlers=js3 event3
B: PROP=0
B: EV=1b
B: KEY=fff 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I parametri che servono sono quelli che compaiono al centro della stringa Sysfs=….. /0003:16C0:05e1………

Questi vanno inseriti nel file /boot/cmdline.txt in fondo all’unica riga presente, aggiungendo la stringa:

usbhid.quirks=0x16c0:0x05e1:0x040

Un bel reboot et voilà.

Gestione di video con PiPlay

PiPlay è un ottimo strumento per la gestione dei vari emulatori disponibili in rete.
Dopo averlo un po’ configurato, l’ho installato in auto, insieme a una bella coppia di televisorini da 7 pollici. Questi sono reperibili nei vari mercatini al costo di circa 33€ e quindi rappresentano un’ottima alternativa ai dispositivi all in one, quelli per intenderci dotati di lettore dvd.
L’esperienza d’uso di un raspberry, per quanto riguarda la disponibilità di software è pressoché totale. Esistono ottimi lettori di video e anche ottimi emulatori di console per videogiochi.

Il problema principale di PiPlay risiede nel fatto che permette unicamente di “giocare” e non di vedere video e film (magari scaricati dalla rete, oppure rippati).
D’altra parte, PiPlay è configurato con python e, con un po’ di dimestichezza con l’uso di questo linguaggio, si può fare davvero di tutto.
Quindi, perché non provarci ?

Innanzitutto è meglio utilizzare una distribuzione di Linux da installare in una macchina virtuale. Io ho scelto ubuntu.
Accedere alla distribuzione creando un utente pi e password raspberry (le stesse di piplay) e scaricare, usando firefox, il progetto sorgente del launchmenu.py da github pimame-menu per poterlo vedere ed eventualmente modificare/testare.
Scompattare lo zip dentro la directory /home/pi/pimame.
Se non è già disponibile installare python con il comando apt-get install python3
Infine può essere comodo installare anche sqlite, in quanto gran parte della configurazione di piplay viene mantenuta su questo db.
Poi installare sqlite per vedere l’attuale contenuto del menu di piplay. Dare il comando
# sudo apt-get install sqlite3 libsqlite3-dev

Il database di configurazione di piplay è situato in /home/pi/pimame/pimame-menu/database/config.db

Usando sqlite si possono vedere le varie voci di menu che vengono visualizzate a video, con i vari emulatori disponibili. A queste voci se ne possono aggiungere altre che, per esempio, permettano di vedere video salvati nella memoria della scheda.
Per fare questo, aprire con sqlite il db config.db, poi andare in “Browse data” e selezionare la tabella menu_items. Le varie voci sono facilmente identificabili nell’elenco e si dividono in emulators, games e utilities, nella colonna type.
La colonna “visible” permette di rendere visibile o invisibile le varie voci. Io ho reso invisibili alcuni emulatori che non mi interessano in modo da occupare il minimo dello spazio a video.

Nella colonna “Command” va indicato il comando da lanciare quando si seleziona la voce dall’interfaccia di piplay. Io ho aggiunto per fare una prova il comando omxplayer “/home/pi/video/prova.avi” per testare un semplice video.

Infine, per gestire il caricamento automatico dei video presenti all’interno di una certa cartella, ho predisposto un’apposita funziona in python. Aprire con gedit il file che si trova in /home/pi/pimame/pimame-menu/pmmenu/pmconfig.py e aggiungere, dopo la init, la funzione:

def getVideos(self,directory,menu_items):
#carica i video dalla directory
for root, directories, files in os.walk(directory):
for filename in files:
filepath = os.path.join(root,filename)
menu_item = {'id':100,'label':filename,'icon_id':'','type':'utility','visible':1,'command':'vlc --play-and-exit '+filepath,'rom_path':'','include_full_path':1,'include_extension':0,'override_menu':1,'icon_file':'','icon_selected':'','position':'','scraper_id':''}
menu_items.append(dict(menu_item))

e il richiamo dentro la _init_ con la seguente istruzione:
self.getVideos('/home/pi/pimame/video',config['menu_items'])
subito sotto l’istruzione config['menu_items'] = [dict(zip(keys,value)) for value in values]

Questo fa si che all’interno dell’interfaccia principale di piplay compaiano in automatico anche tutti i video della cartella video e che questi possano essere lanciati cliccando sulla loro icona. Questo file pmconfig.py va poi trasferito nella medesima posizione del raspberry, avendo l’accortezza di modificare l’istruzione vlc (di ubuntu) nella corrispondente omxplayer del mitico raspberry.

Et voilà, il video è servito!

Aggiornamento del 17 Aprile 2016

Su schermi molto piccoli e con bassa risoluzione, quali quelli che si acquistano nelle fiere realizzati apposta per i cruscotti delle automobili, le scritte dei riquadri di piplay sono molto piccole. Praticamente invisibili.

I riquadri che rappresentano film riportano un titolo che non si riesce nemmeno a leggere.

Per ovviare bisogna intervenire in un file che si trova sotto themes/default/theme.yaml, ricercando al suo interno la scritta

num_items_per_row

e

item_height

e correggerle di conseguenza.

Nel mio caso erano num_items_per_row = 6 e item_height = 220. Li ho trasformati in num_items_per_row=2 e item_height=300.

Così facendo le scritte sono tornate ad essere ben visibili, anche se per arrivare agli ultimi film della lista ora bisogna scorrere diverse pagine.

Pistola in legno con elastici

Prendendo spunto dal fantastico tutorial visibile all’indirizzo Tutorial M9 Rubber Band Gun ho deciso di realizzarmi una fantastica pistola in legno con proiettili elastici.
Il tutorial è corredato anche di piani dettagliati di montaggio della pistola, scaricabili all’indirizzo pdf.
Tali piani possono essere stampati e poi ricalcati con una sega a nastro, oppure, come ho fatto io, possono essere tagliati alla cnc, essendo già disegnati a misura.

I piani si compongono di alcuni strati, da incollare tra di loro, di multistrato da 4 mm di spessore.

L’unica cosa a cui bisogna prestare molta attenzione, altrimenti si corre il rischio di dover tagliare più volte le sagome in legno, è che i percorsi nel file pdf non sono tutti chiusi. A prima vista, sembrerebbe di sì, ma se si esegue il taglio ci si accorge che i percorsi di taglio sono calcolati un po’ all’interno e un po’ all’esterno, pregiudicando il corretto allineamento dei pezzi.

Il risultato è visibile in figura

Pistola a elastici
Pistola a elastici cnc

Nella figura sottostante si vede il meccanismo di caricamento degli elastici che, a seconda delle dimensioni, possono arrivare fino a 7-8 consecutivi.

caricamento
caricamento

Infine, un particolare del caricatore che permette di installare degli elastici di riserva in caso di emergenza:

caricatore
caricatore