<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aldus</id>
	<title>raspibo - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aldus"/>
	<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php/Speciale:Contributi/Aldus"/>
	<updated>2026-04-29T13:28:03Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5923</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5923"/>
		<updated>2016-12-08T15:05:56Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Recupero codici del telecomando e replicazione */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi [[Some experiments on Radio Remote Controls ]](apricancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [https://github.com/ninjablocks/433Utils 433Utils]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp ho settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp ho settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i ho sfruttato l'utility RFSniffer &lt;br /&gt;
(in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli)&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5922</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5922"/>
		<updated>2016-12-08T15:05:06Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Recupero codici del telecomando e replicazione */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi [[Some experiments on Radio Remote Controls ]](apricancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [https://github.com/ninjablocks/433Utils 433Utils]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp ho settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp ho settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i ho sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5921</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5921"/>
		<updated>2016-12-08T15:03:33Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Introduzione */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi [[Some experiments on Radio Remote Controls ]](apricancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [https://github.com/ninjablocks/433Utils 433Utils]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp ho settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp ho settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5920</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5920"/>
		<updated>2016-12-08T14:46:53Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione e configurazione librerie su Raspberry PI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [https://github.com/ninjablocks/433Utils 433Utils]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp ho settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp ho settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5919</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5919"/>
		<updated>2016-12-08T14:14:00Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5918</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5918"/>
		<updated>2016-12-08T14:13:06Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.)  SC2260-R4 (standard PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Applicazioni_di_Raspberry_PI&amp;diff=5917</id>
		<title>Applicazioni di Raspberry PI</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Applicazioni_di_Raspberry_PI&amp;diff=5917"/>
		<updated>2016-12-08T14:09:29Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Radiocomandi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Web Server ==&lt;br /&gt;
&lt;br /&gt;
[http://tapion.it/server-con-un-raspberrypi-si-puo-fare-parte-2-nginx-php-fpm-wordpress-sqlit/ Usare il Raspberry Pi come Web Server]&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
[[Raspberry_Pi_Access_Point_WEP2#Firewall_.28iptables.29 | Una 'base' di partenza per un firewall 'manuale']]&lt;br /&gt;
&lt;br /&gt;
== Access Point ==&lt;br /&gt;
&lt;br /&gt;
[[Raspberry PI come access point: l'esempio dell'AP usato al non-corso]]&lt;br /&gt;
&lt;br /&gt;
[[Raspberry_Pi_Access_Point_WEP2 | Access Point con autenticazione WEP2, DNS e Firewall]]&lt;br /&gt;
&lt;br /&gt;
[[Raspberry_Pi_Access_Point | Access Point con autenticazione WEP2]]&lt;br /&gt;
&lt;br /&gt;
== Piratebox ==&lt;br /&gt;
&lt;br /&gt;
http://piratebox.cc/raspberry_pi&lt;br /&gt;
&lt;br /&gt;
== Freedombox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Freedombox]]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.debian.org/FreedomBox Freedombox (Debian wiki)]&lt;br /&gt;
&lt;br /&gt;
[http://ftp.skolelinux.org/pub/freedombox/ Dowload images]&lt;br /&gt;
&lt;br /&gt;
== Applicazioni telefoniche ==&lt;br /&gt;
&lt;br /&gt;
[[Asterisk installazione base]]&lt;br /&gt;
&lt;br /&gt;
[[Configurazione di Ekiga]] client voip per pc&lt;br /&gt;
&lt;br /&gt;
[[Asterisk configurazione]]&lt;br /&gt;
&lt;br /&gt;
[[Generazione chiamate da Asterisk]]&lt;br /&gt;
&lt;br /&gt;
[[Debug di Asterisk]]&lt;br /&gt;
&lt;br /&gt;
[[NCID]]:Filtro per chiamate indesiderate&lt;br /&gt;
&lt;br /&gt;
== Domotica ==&lt;br /&gt;
&lt;br /&gt;
=== Segnali e Comandi ===&lt;br /&gt;
&lt;br /&gt;
[[Interfacciare un Rele']]&lt;br /&gt;
&lt;br /&gt;
[[Rivelatore di 230v]]&lt;br /&gt;
&lt;br /&gt;
[[Una ciabatta controllata da USB]]&lt;br /&gt;
&lt;br /&gt;
[[Leggere un pulsante su GPIO con antirimbalzo software]]&lt;br /&gt;
&lt;br /&gt;
=== Controllo consumi elettrici ===&lt;br /&gt;
&lt;br /&gt;
[[Misurare la corrente con un anello amperometrico]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare la corrente dal contatore elettronico]]&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
[[Raspberry_Pi-Lettura_Temperatura|Lettura Temperatura]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare la Temperatura]]&lt;br /&gt;
&lt;br /&gt;
[[Termostato]]&lt;br /&gt;
&lt;br /&gt;
[[CronoTermostato|CronoTermostato (ThermoRed)]]&lt;br /&gt;
&lt;br /&gt;
[[Thermo]]&lt;br /&gt;
&lt;br /&gt;
== Lavagna multimediale ==&lt;br /&gt;
&lt;br /&gt;
== Laboratorio scolastico (linux terminal server) ==&lt;br /&gt;
&lt;br /&gt;
:[[LTSP|Laboratorio/Aula informatica LTSP]]&lt;br /&gt;
: ..&lt;br /&gt;
: ..&lt;br /&gt;
&lt;br /&gt;
== Remote console per server ==&lt;br /&gt;
&lt;br /&gt;
[[Collegare una porta seriale RS-232]]&lt;br /&gt;
&lt;br /&gt;
== PVR, DVB, TV ==&lt;br /&gt;
&lt;br /&gt;
[[PVR (Personal Video Recorder), DVB, gateway televisivo]]&lt;br /&gt;
&lt;br /&gt;
== Videosorveglianza ==&lt;br /&gt;
&lt;br /&gt;
[[Modulo Camera per Raspberry Pi]]&lt;br /&gt;
&lt;br /&gt;
[[Videosorveglianza con Motion]]&lt;br /&gt;
&lt;br /&gt;
[[Motion con Raspberry Pi Camera on board]]&lt;br /&gt;
&lt;br /&gt;
[[Appunti per un sistema di video, sorveglianza e streaming, indipendente]]&lt;br /&gt;
&lt;br /&gt;
== Radiocomandi ==&lt;br /&gt;
[[Accendere e spegnere 4 led tramite un ricevitore a infrarossi]]&lt;br /&gt;
&lt;br /&gt;
[[Comandare centralina allarme low cost 433Mhz con un raspberry]]&lt;br /&gt;
&lt;br /&gt;
== Raspberry e Arduino insieme: interfacciamento ==&lt;br /&gt;
Oltre ai vari metodi di interfacciamento di Raspberry PI con Arduino, tra cui il protocollo I2C, si può farlo attraverso la porta USB utilizzando la libreria Python Nampy. Maggiori informazioni si trovano qui [http://marcosbox.blogspot.it/2013/01/nanpy-usa-il-tuo-arduino-con-python.html]&lt;br /&gt;
&lt;br /&gt;
== Uno smart player audio da abbinare allo stereo casalingo ==&lt;br /&gt;
&lt;br /&gt;
Sto viluppando un player python basato su gstreamer senza interfaccia se non quella su dbus che segue lo standard mpris2 http://specifications.freedesktop.org/mpris-spec/latest/&lt;br /&gt;
Questo permetterebbe di usare ruspberry come player remoto senza consumare inutili risorse.&lt;br /&gt;
Seguono una cli su dbus per getire il player, una gui pygtk sempre su dbus e una interfaccia web con cherrypy sempre a partire da dbus.&lt;br /&gt;
Sarebbe interessante abbinare un dac amplifier magari basato su t-amp.&lt;br /&gt;
Per il momento il player è sviluppato all'interno di un software per l'automazione di una emittente radiofonica: http://autoradiobc.sf.net (vedi svn)&lt;br /&gt;
&lt;br /&gt;
== Cambiamonete / servizi a pagamento / Totem informativo ==&lt;br /&gt;
&lt;br /&gt;
Raspberry per gestire servizi a pagamento.&lt;br /&gt;
Gestire tramite python il protocollo cctalk http://en.wikipedia.org/wiki/CcTalk e quindi dispositivi per accettare monete e banconote.&lt;br /&gt;
Realizzare quindi servizi a pagamento tramite Totem informativi &amp;amp; Chioschi ...&lt;br /&gt;
Driver CCTALK per gettoniera già disponibile insieme ad hardware di test.&lt;br /&gt;
Aggiungere magari un sensore di prossimità per il risparmio energetico attivando il display solo in presenza di utenti.&lt;br /&gt;
&lt;br /&gt;
== Mini centrale di Controllo Accessi ==&lt;br /&gt;
&lt;br /&gt;
Il Raspberry può diventare una centralina in grado di controllare l’apertura di cancelli pedonali o automatici, porte scorrevoli o sezionali interfacciandola ad un lettore di badge magnetici commerciale. &lt;br /&gt;
Occorre implementare il protocollo Wiegand [ http://en.wikipedia.org/wiki/Wiegand_interface ] per dialogare attraverso un cavo dati di lunghezza fino a 100mt (in condizioni ottimali). La centralina potrebbe funzionare in stand-alone acquisendo in auto-apprendimento il codice delle tessere da autorizzare ad accedere oppure creare una lista di codici all’interno di un file modificabile da Raspbian. Eventualmente potrebbe essere previsto un buffer per contenere fino a un certo numero di timbrature, associate alla data e all’ora in cui è avvenuto il passaggio della tessera per effettuare una sorta di consultazione dello storico eventi.&lt;br /&gt;
&lt;br /&gt;
== Display LCD ==&lt;br /&gt;
&lt;br /&gt;
*[[Nokia 5110 LCD 84x48 px]]&lt;br /&gt;
&lt;br /&gt;
== Chiavette 3G USB ==&lt;br /&gt;
&lt;br /&gt;
*[[Huawei E353 HSPA+ Usb Stick]]&lt;br /&gt;
&lt;br /&gt;
*[[Input/Output tramite sms]]&lt;br /&gt;
&lt;br /&gt;
== Server Stampante Scanner  ==&lt;br /&gt;
*[[PrinterScannerServer]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
[[Personal Portable Server]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto via Internet ==&lt;br /&gt;
[[SSH_Internet]]&lt;br /&gt;
&lt;br /&gt;
== qui la lista continua con la vostra fantasia ==&lt;br /&gt;
&lt;br /&gt;
[[Accensione di un led]]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5916</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5916"/>
		<updated>2016-12-08T14:07:13Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese SC2260-R4 (che è equivalente al PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente,  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5915</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5915"/>
		<updated>2016-12-08T14:04:49Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese SC2260-R4 (che è equivalente al PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato)  per allarmare/disallarmare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quello che ho fatto io, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) e stato interfacciare il comando lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , e attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirenza wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5914</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5914"/>
		<updated>2016-12-08T14:02:12Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese SC2260-R4 (che è equivalente al PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare lo stesso comando replicando il segnale:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quello che ho fatto io, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) e stato interfacciare il comando lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , e attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirenza wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5913</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5913"/>
		<updated>2016-12-08T13:57:53Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Recupero codici del telecomando e replicazione */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
&lt;br /&gt;
[[File:Telecomando.jpg]]&lt;br /&gt;
&lt;br /&gt;
Io mio telecomando utilizza un chip cinese SC2260-R4 (che è equivalente al PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando o mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&lt;br /&gt;
[[File:Ricevitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare lo stesso comando replicando il segnale:&lt;br /&gt;
&lt;br /&gt;
[[File:Trasmettitore test.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quello che ho fatto io, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) e stato interfacciare il comando lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , e attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirenza wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Trasmettitore_test.png&amp;diff=5912</id>
		<title>File:Trasmettitore test.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Trasmettitore_test.png&amp;diff=5912"/>
		<updated>2016-12-08T13:56:55Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Ricevitore_test.png&amp;diff=5911</id>
		<title>File:Ricevitore test.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Ricevitore_test.png&amp;diff=5911"/>
		<updated>2016-12-08T13:55:36Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Telecomando.jpg&amp;diff=5910</id>
		<title>File:Telecomando.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Telecomando.jpg&amp;diff=5910"/>
		<updated>2016-12-08T13:52:44Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5909</id>
		<title>Comandare centralina allarme low cost 433Mhz con un raspberry</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Comandare_centralina_allarme_low_cost_433Mhz_con_un_raspberry&amp;diff=5909"/>
		<updated>2016-12-08T13:43:11Z</updated>

		<summary type="html">&lt;p&gt;Aldus: Comandare centralina allarme low cost 433Mhz con un raspberry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere &amp;quot;relativamente semplice&amp;quot; con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: &amp;quot;perchè non attivare/disattivare la mia centralina di allarme dal raspberry?&amp;quot;. &lt;br /&gt;
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.&lt;br /&gt;
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modulini tx/rx FS1000A ==&lt;br /&gt;
Circa 5 mesi fà,  ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Portata: 20-200mt&lt;br /&gt;
Tensione di alimentazione: da 3,5Vdc a 12Vdc&lt;br /&gt;
Modo di funzionamento: AM&lt;br /&gt;
Velocità di trasmissione: 4 KB/s&lt;br /&gt;
Potenza: 10mW&lt;br /&gt;
Frequenza di trasmissione: 433,92 Mhz&lt;br /&gt;
Dimensioni: 19x19 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO17 (pin0 wiringPi) &lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda il modulo di ricezione le seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tensione di alimentazione: 5Vdc&lt;br /&gt;
Assorbimento a riposo: 4mA&lt;br /&gt;
Frequenza di ricezione: 433,92 Mhz&lt;br /&gt;
Sensibilità: -105dB&lt;br /&gt;
Dimensioni: 30x14 mm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vcc  &amp;lt;-&amp;gt; Raspberry 5v&lt;br /&gt;
DATA &amp;lt;-&amp;gt; (non usato)&lt;br /&gt;
DATA &amp;lt;-&amp;gt; Raspberry BCM GPIO18 (pin1 wiringPi)&lt;br /&gt;
GND  &amp;lt;-&amp;gt; Raspberry GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installazione e configurazione librerie su Raspberry PI ==&lt;br /&gt;
Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.&lt;br /&gt;
&lt;br /&gt;
Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le [http://abyz.co.uk/rpi/pigpio/download.html pigpio], oppure utilizzare le librerie [https://github.com/sui77/rc-switch/wiki/HowTo_Send rc-switch]. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.&lt;br /&gt;
&lt;br /&gt;
L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.&lt;br /&gt;
&lt;br /&gt;
Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successivamente installiamo le wiringPi per l'accesso alla GPIO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://git.drogon.net/wiringPi&lt;br /&gt;
cd wiringPi&lt;br /&gt;
./build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le [[433Utils|https://github.com/ninjablocks/433Utils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/&lt;br /&gt;
git clone git://github.com/ninjablocks/433Utils.git&lt;br /&gt;
cd 433Utils&lt;br /&gt;
git clone https://github.com/sui77/rc-switch.git&lt;br /&gt;
cd RPi_utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1&lt;br /&gt;
&lt;br /&gt;
[[Mappa dei pin su wiringPI| https://projects.drogon.net/raspberry-pi/wiringpi/pins/]]&lt;br /&gt;
&lt;br /&gt;
Quindi per i file code.cpp e codesend.cpp o settato il pin 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int PIN = 1;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mentre per il file RFSniffer.cpp o settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione&lt;br /&gt;
&lt;br /&gt;
== Recupero codici del telecomando e replicazione ==&lt;br /&gt;
Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )&lt;br /&gt;
Io mio telecomando utilizza un chip cinese SC2260-R4 (che è equivalente al PT2260) e quella di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino,  per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi,  dando il comando e premendo i tasti del radiocomando o mappato i due comandi per abilitare/disabilitare la centralina:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546576&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
Received 16546528&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da ciò è possibile sfruttare l'utility codesend per inviare lo stesso comando replicando il segnale:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576&lt;br /&gt;
sending code[16546576]&lt;br /&gt;
pi@raspberrypi ~/433Utils/RPi_utils $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quello che ho fatto io, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) e stato interfacciare il comando lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , e attualmente funziona:D&lt;br /&gt;
&lt;br /&gt;
Prossimamente  devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirenza wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_Volo&amp;diff=2685</id>
		<title>Gruppo Volo</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_Volo&amp;diff=2685"/>
		<updated>2014-04-28T14:09:27Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=Volo&lt;br /&gt;
|descrizione=aerei, dirigibili e quadcopter&lt;br /&gt;
|social=http://raspibo.ofpcina.net/groups/profile/2816/robottini-volanti&lt;br /&gt;
|mailinglist=http://liste.raspibo.org/wws/subscribe/robot.volanti Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list&lt;br /&gt;
|iscritti=Simone, Marco, Razzo, Carmelo [http://raspibo.ofpcina.net/profile/tarmelop tarmelop], [http://raspibo.ofpcina.net/profile/oloturia1979 Oloturia] , Antonio, Marco (sono 2 &amp;quot;Marchi&amp;quot; diversi?), Luigi, Diego, Elia [http://raspibo.ofpcina.net/profile/DasNetz DasNetz],Walter [http://raspibo.ofpcina.net/profile/wave wave], Aldo [http://raspibo.ofpcina.net/profile/aldus Aldus]}}&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
****** BOZZA*****&lt;br /&gt;
&lt;br /&gt;
Progetto di costruzione di un quadricottero controllato da una scheda Arduino UNO e dai sensori di una console WII.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questo lavoro è iniziato per volontà di Giammarco, il quale si è ispirato a un progetto pubblicato sul seguente sito:&lt;br /&gt;
&lt;br /&gt;
http://www.multiwii.com/&lt;br /&gt;
&lt;br /&gt;
In pratica il software che gira sulla scheda Arduino elabora i segnali provenienti dalla ricevente del radiocomando, e quelli provenienti dagli accelerometri e giroscopi della console wii, per stabilizzare o modificare l'assetto del quadricottero permettendogli di traslare o di restare in hovering (volo su punto fisso).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materiale occorrente (lista provvisoria da completare nel prosieguo dei lavori)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; La seguente lista deriva in gran parte da una mail di Giammarco &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- CPU: Arduino Uno rev3  http://www.amazon.com/Arduino-UNO-board-DIP-ATmega328P/dp/B006H06TVG&lt;br /&gt;
&lt;br /&gt;
- SENSORI DI CONTROLLO: accelerometro e giroscopio presi dai joystick della nintendo Wii, per esattezza dal nunchuck e dal wii motion plus, i quali comunicano con connessione I2C. Io li ho usati originali, ma per chi volesse si possono ordinare anche tarocchi per pochi euro direttamente da internet &lt;br /&gt;
&lt;br /&gt;
nunchuck: http://www.amazon.com/Wii-Nunchuk-Nunchuck-Controller-Black-Nintendo/dp/B003YLWJLA&lt;br /&gt;
&lt;br /&gt;
wmp: http://www.amazon.com/Nintendo-Wii-MotionPlus-Motion-Adapter-White/dp/B004V13D0I&lt;br /&gt;
&lt;br /&gt;
-SOFTWARE:&lt;br /&gt;
Per quanto riguarda la fase di controllo della stabilità ho scelto di impiegare un software appositamente creato per il &amp;quot;progetto multiwii&amp;quot;, totalmente freeware scaricabile da qui: https://code.google.com/p/multiwii/downloads/list&lt;br /&gt;
(PS. Progetto multiwii = cpu + nunchuck + wii motion plus) &lt;br /&gt;
&lt;br /&gt;
-TELAIO: &lt;br /&gt;
Mentre per quanto riguarda il telaietto mi sono rifornito da un comune brico come ad esempio Leroy Merlin&lt;br /&gt;
acquistando dei tubi d'alluminio 15mm x 15mm e le basette quadrate sempre d'alluminio di spessore 1mm o su per giù qualche decimo di mm in più. &lt;br /&gt;
&lt;br /&gt;
-MOTORI: &lt;br /&gt;
Turnigy aerodrive sk3 (brushless) 920kv &lt;br /&gt;
http://www.hobbyking.com/hobbyking/store/__18155__Turnigy_Aerodrive_SK3_2830_920kv_Brushless_Outrunner_Motor.html?strSearch=aerodrive%20sk3%20920kv&lt;br /&gt;
&lt;br /&gt;
-ESC: (Electronic Speed Control)&lt;br /&gt;
Turnigy Plush 18A (Bec), ma consiglio un amperaggio leggermente maggiore per non stare al pelo&lt;br /&gt;
https://www.hobbyking.com/hobbyking/store/__4312__TURNIGY_Plush_18amp_Speed_Controller.html?strSearch=turnigy%20plush%201&lt;br /&gt;
&lt;br /&gt;
-ELICHE: &lt;br /&gt;
10 x 4.5 (in pollici)&lt;br /&gt;
254 x 114 (in mm) &lt;br /&gt;
https://www.hobbyking.com/hobbyking/store/__25824__10x4_5_SF_Props_Black_CW_2pc_CCW_2pc_.html&lt;br /&gt;
&lt;br /&gt;
-RADIOCOMANDO: &lt;br /&gt;
Turnigy 9X 9ch &lt;br /&gt;
https://www.hobbyking.com/hobbyking/store/__8991__Turnigy_9X_9Ch_Transmitter_w_Module_8ch_Receiver_Mode_1_v2_Firmware_.html?strSearch=turnigy%209x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-BATTERIA: &lt;br /&gt;
Turnigy 3000mah 3s 30C &lt;br /&gt;
https://www.hobbyking.com/hobbyking/store/__26731__Turnigy_3000mAh_3S_30C_Lipo_Pack_UK_Warehouse_.html?strSearch=3000mah&lt;br /&gt;
&lt;br /&gt;
-CARICABATTERIE: (da acquistare) &lt;br /&gt;
http://www.hobbyking.com/hobbyking/store/__7028__Turnigy_Accucel_6_50W_6A_Balancer_Charger_w_accessories.html&lt;br /&gt;
&lt;br /&gt;
- CAVO PER CARICARE LA BATTERIA: Autocostruito, consiste di due connettori a banana 4mm e di un connettore masschio -femmina 4mm complementare a quello saldato sulla batteria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;  Fine della Lista  &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I lavori svolti fin'ora sono stati eseguiti per verificare il funzionamento dei vari elementi.&lt;br /&gt;
Per prima cosa si è verificato, ed eseguito, il bilanciamento delle eliche. Lavoro basilare per non andare ad introdurre vibrazioni che potrebbero mandare in palla il controllo di stabilità.&lt;br /&gt;
&lt;br /&gt;
Sono stati verificati e programmati tutti gli ESC e, giusto per sentire quanto tira ,è stata montata un'elica su un motore e si è provata la spinta. &lt;br /&gt;
Cercherò di imbastire un piccolo banchetto di prova per misurare bene quanta spinta si può avere da un  motore.&lt;br /&gt;
 &lt;br /&gt;
Si è deciso come fissare i motori al telaio e si è fatto un prestudio sulla disposizione delle schede, e dei sensori, sul supporto centrale.&lt;br /&gt;
&lt;br /&gt;
Lavori da eseguire:  installare i motori, i regolatori, le schede e cablare il tutto. Studiare un ottimo fissaggio per il pacco batteria.&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_Meteo&amp;diff=1229</id>
		<title>Gruppo Meteo</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_Meteo&amp;diff=1229"/>
		<updated>2013-06-19T21:07:18Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=Meteo&lt;br /&gt;
|descrizione=fa bello? fa brutto?&lt;br /&gt;
|social=http://raspibo.ofpcina.net/groups/profile/2963/stazione-meteo-avanzata&lt;br /&gt;
|iscritti=[http://raspibo.ofpcina.net/profile/pat1 Paolo Patruno],Yogi, Vestfalia, &lt;br /&gt;
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], Roberto, &lt;br /&gt;
Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki]&lt;br /&gt;
[http://raspibo.ofpcina.net/profile/Aldus Aldo]}}&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_Didattica&amp;diff=1228</id>
		<title>Gruppo Didattica</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_Didattica&amp;diff=1228"/>
		<updated>2013-06-19T21:05:59Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=Didattica&lt;br /&gt;
|descrizione=imparare facendo, imparare divertendosi!&lt;br /&gt;
|iscritti=[http://raspibo.ofpcina.net/profile/renzo Renzo], Carmelo [http://raspibo.ofpcina.net/profile/tarmelop tarmelop], Gianni, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], Fabrizio, Peppe,  &lt;br /&gt;
Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], Lupo [http://raspibo.ofpcina.net/profile/Desmolupo Desmolupo],Walter [http://raspibo.ofpcina.net/profile/wave wave]&lt;br /&gt;
[http://raspibo.ofpcina.net/profile/Aldus Aldo]}}&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
* [[Un Pulsante di spegnimento per il Raspberry Pi]]&lt;br /&gt;
* [[Scaldiamoci alla luce di un LED]]&lt;br /&gt;
* [[Raspberry Webcam e Musica]]&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1227</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1227"/>
		<updated>2013-06-19T17:17:37Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Come funziona */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo  è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo ==&lt;br /&gt;
Questo è un elenco di strumenti utilizzabili sul Raspberry PI per pilotare un Servo RC senza l'ausilio di driver PWM (HW) esterni&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0'''] &lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
* ....&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1217</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1217"/>
		<updated>2013-06-18T15:29:27Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Strumenti per pilotare un Servo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo ==&lt;br /&gt;
Questo è un elenco di strumenti utilizzabili sul Raspberry PI per pilotare un Servo RC senza l'ausilio di driver PWM (HW) esterni&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0'''] &lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
* ....&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1216</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1216"/>
		<updated>2013-06-18T14:41:54Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Strumenti per pilotare un Servo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo ==&lt;br /&gt;
Questo è un elenco di strumenti utilizzabili sul Raspberry PI per pilotare un Servo RC senza l'ausilio di driver PWM (HW)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0''']&lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
* ....&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1215</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1215"/>
		<updated>2013-06-18T14:41:31Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo ==&lt;br /&gt;
Questo è un elenco di strumenti utilizzabili sul Raspberry PI per pilotare un Servo RC senza l'ausilio di driver PWM (HW)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0''']&lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1214</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1214"/>
		<updated>2013-06-18T14:40:34Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo ==&lt;br /&gt;
Questo è un elenco di strumenti utilizzabili sul Raspberry PI per pilotare un Servo RC senza l'ausilio di driver PWM (HW)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0''']&lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1213</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1213"/>
		<updated>2013-06-18T14:37:12Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Strumenti per pilotare un Servo sul Raspberry PI senza l'ausilio di driver PWM Hardware ==&lt;br /&gt;
* [https://github.com/richardghirst/PiBits/tree/master/ServoBlaster '''ServoBlaster''']&lt;br /&gt;
* [http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/overview '''Occidentalis 2.0''']&lt;br /&gt;
* [https://code.google.com/p/raspberry-gpio-python/wiki/PWM '''PWM in RPi.GPIO''']&lt;br /&gt;
* [https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ '''WiringPi (Software PWM Library)''']&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1212</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1212"/>
		<updated>2013-06-18T14:18:52Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Come funziona */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms, mentre la possibile variazione dell'intervallo tra un impulso e l'altro molte volte porta al non funzionamento del servo o ad un tremolio fastidioso che rende poco fluido il movimenti del perno, quindi assicurarsi sempre che vi siano intervalli di 20ms (o come da specifiche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1211</id>
		<title>Servo (radio control)</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Servo_(radio_control)&amp;diff=1211"/>
		<updated>2013-06-18T14:02:44Z</updated>

		<summary type="html">&lt;p&gt;Aldus: Creata pagina con '== Cosa è == Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare so...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cosa è ==&lt;br /&gt;
Il Servo RC (Radio Control) o comunemente chiamato Servomotore è una piccola scatoletta di plastica da dove fuoriesce un perno (l'alberello) che può ruotare solitamente di 180°. &lt;br /&gt;
&lt;br /&gt;
E' usato molto sia nella robotica per azionare bracci ed effettuare movimenti meccanici, che dagli appassionati dei radiocomandi, sfruttati sui modellini per direzionare piccoli elicotteri, aerei, auto etc etc. All'interno si divide in due parti, una parte meccanica dove è presente un sistema di ingranaggi, usato sia per aumentare la coppia in fase di rotazione e quindi avere una potenza più alta sull'alberello, e anche per diminuire il numero di giri/minuto del motore, altrimenti troppo veloce per questo tipo di uso. Oltre ciò è presente un circuito di controllo composto da un potenziometro resistivo (molte volte è l'alberello stesso) che blocca il motore quando questo si trova sulla posizione desiderata. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Il Servomotore possiede un sistema di pilotaggio molto semplice, possiede due fili per l'alimentazione (rosso e nero/marrone con tensione di lavoro che va da 4.5 a 6.5 Volt) e uno per il segnale di controllo (il colore varia in base al modello).&lt;br /&gt;
&lt;br /&gt;
Il segnale di controllo solitamente è un segnale di tipo impulsivo  [http://it.wikipedia.org/wiki/Pulse-width_modulation (PWM)], e viene decodificato in base alla durata degli impulsi positivi generati in intervalli di circa 20ms (50Hz), da questo treno di impulsi positivi si stabilisce la posizione del servo. Il rapporto tra larghezza dell'impulso e rotazione del perno può variare in base ai modelli ma generalmente è più o meno simile per tutti. Per essere sicuri che il sistema di pilotaggio riesca a pilotare qualsiasi servo questo deve essere in grado di generare impulsi in un intervallo massimo compreso tra 0.25ms e 2.75ms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ad esempio con un treno di impulsi rispettivamente di:&lt;br /&gt;
&lt;br /&gt;
*1ms: il servo si pone a -90° (senso antiorario)&lt;br /&gt;
*1.5ms: il servo si pone a 0° (centrale)&lt;br /&gt;
*2ms: il servo di pone a 90° (senso orario)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quindi, se ad esempio osservassimo ad un oscilloscopio gli impulsi generati per posizionare e lasciare stabile il servo a -90°, ogni 20ms avremmo un segnale digitale alto della durata di 1ms, aumentando questo valore, la posizione del perno piano piano tenderà ad avvicinarsi alla posizione centrale, fin quando la durata del segnale non si fisserà a 1.5ms, una volta arrivati a 1.5ms vorrà dire che saremo nella posizione centrale. Continuando ad aumentare la larghezza dell'impulso, avvicinandoci a 2ms, la posizione del perno continuerà ad avanzare in senso orario fermandosi a 90°, ciò vorrà dire che il segnale sarà temporizzato sui 2ms ed in totale avremo che il perno avrà eseguito una rotazione completa di 180° (-90°,0°,90°).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=-XSXfqd1N58 '''Una ricostruzione in 3D che mostra il funzionamento dei Servo''']&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Servo_(radio_control) '''Servo R/C''']&lt;br /&gt;
*[http://it.wikipedia.org/wiki/Pulse-width_modulation '''Pulse-width modulation''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1210</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1210"/>
		<updated>2013-06-18T13:01:36Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Altre Info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:&lt;br /&gt;
&lt;br /&gt;
 wm1 = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
 wm2 = cwiid.Wiimote(&amp;quot;00:22:11:44:33:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
Altri [https://github.com/abstrakraft/cwiid/tree/master/wmdemo esempi]&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di [http://johnnylee.net/projects/wii/ Johnny Chung Lee] , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf '''Tesi'''].&lt;br /&gt;
&lt;br /&gt;
*Diversi progetti interessanti tra cui la [http://johnnylee.net/projects/wii/ '''Lavagna elettronica''']&lt;br /&gt;
&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth '''Pacchetto bluetooth'''], [http://wiki.debian.org/BluetoothUser '''Installazione bluetooth'''], [https://github.com/abstrakraft/cwiid '''Librerie Cwiid'''], [http://wiibrew.org/wiki/Wiimote '''Wiibrew.org (altre info sul wiimote)''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1209</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1209"/>
		<updated>2013-06-18T12:59:49Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:&lt;br /&gt;
&lt;br /&gt;
 wm1 = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
 wm2 = cwiid.Wiimote(&amp;quot;00:22:11:44:33:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
Altri [https://github.com/abstrakraft/cwiid/tree/master/wmdemo esempi]&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link Utili ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf '''Tesi'''].&lt;br /&gt;
&lt;br /&gt;
*Diversi progetti interessanti tra cui la [http://johnnylee.net/projects/wii/ '''Lavagna elettronica''']&lt;br /&gt;
&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth '''Pacchetto bluetooth'''], [http://wiki.debian.org/BluetoothUser '''Installazione bluetooth'''], [https://github.com/abstrakraft/cwiid '''Librerie Cwiid'''], [http://wiibrew.org/wiki/Wiimote '''Wiibrew.org (altre info sul wiimote)''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1208</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1208"/>
		<updated>2013-06-18T12:57:43Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:&lt;br /&gt;
&lt;br /&gt;
 wm1 = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
 wm2 = cwiid.Wiimote(&amp;quot;00:22:11:44:33:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
Altri [https://github.com/abstrakraft/cwiid/tree/master/wmdemo esempi]&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf '''Tesi'''].&lt;br /&gt;
&lt;br /&gt;
*Diversi progetti interessanti tra cui la [http://johnnylee.net/projects/wii/ '''Lavagna elettronica''']&lt;br /&gt;
&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth '''Pacchetto bluetooth'''], [http://wiki.debian.org/BluetoothUser '''Installazione bluetooth'''], [https://github.com/abstrakraft/cwiid '''Librerie Cwiid'''], [http://wiibrew.org/wiki/Wiimote '''Wiibrew.org (altre info sul wiimote)''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1207</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1207"/>
		<updated>2013-06-18T12:52:43Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Altre Info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:&lt;br /&gt;
&lt;br /&gt;
 wm1 = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
 wm2 = cwiid.Wiimote(&amp;quot;00:22:11:44:33:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
Altri [https://github.com/abstrakraft/cwiid/tree/master/wmdemo esempi]&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf '''tesi'''].&lt;br /&gt;
&lt;br /&gt;
*Diversi progetti interessanti tra cui la [http://johnnylee.net/projects/wii/ '''lavagna elettronica''']&lt;br /&gt;
&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth '''pacchetto bluetooth'''], [http://wiki.debian.org/BluetoothUser '''installazione bluetooth'''], [http://wiibrew.org/wiki/Wiimote '''Wiibrew.org (altre info sul wiimote)''']&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1206</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1206"/>
		<updated>2013-06-18T12:44:45Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione e uso delle librerie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:&lt;br /&gt;
&lt;br /&gt;
 wm1 = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
 wm2 = cwiid.Wiimote(&amp;quot;00:22:11:44:33:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
Altri [https://github.com/abstrakraft/cwiid/tree/master/wmdemo esempi]&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1205</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1205"/>
		<updated>2013-06-18T12:32:56Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione e uso delle librerie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile connettere diversi controller specificando il mac alla funzione connect.&lt;br /&gt;
&lt;br /&gt;
 wm = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1204</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1204"/>
		<updated>2013-06-18T12:31:58Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Il controller wiimote */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una [http://www.youtube.com/watch?v=5s5EvhHy7eQ lavagna elettronica] multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //cosi prelevo i dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //cosi prelevo i dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile connettere diversi controller specificando il mac alla funzione connect.&lt;br /&gt;
&lt;br /&gt;
 wm = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.led = 1 &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1177</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1177"/>
		<updated>2013-06-17T12:12:40Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione e uso delle librerie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una lavagna elettronica, oppure può essere usato in applicazioni didattiche per la fisica oppure puo anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote  con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //cosi prelevo i dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //cosi prelevo i dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile connettere diversi controller specificando il mac alla funzione connect.&lt;br /&gt;
&lt;br /&gt;
 wm = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.led = 1 &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1176</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1176"/>
		<updated>2013-06-17T11:36:42Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione librerie e uso del Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una lavagna elettronica, oppure può essere usato in applicazioni didattiche per la fisica oppure puo anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote  con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installazione e uso delle librerie  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //cosi prelevo i dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //cosi prelevo i dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile connettere diversi controller specificando il mac alla funzione connect.&lt;br /&gt;
&lt;br /&gt;
 wm = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.led = 1 &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1175</id>
		<title>Wiimote</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Wiimote&amp;diff=1175"/>
		<updated>2013-06-17T11:03:41Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Il controller wiimote */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Il controller wiimote ==&lt;br /&gt;
&lt;br /&gt;
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:&lt;br /&gt;
&lt;br /&gt;
*una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi&lt;br /&gt;
*acceleromeri&lt;br /&gt;
*diversi pulsanti&lt;br /&gt;
*led&lt;br /&gt;
*altoparlante&lt;br /&gt;
*vibratore&lt;br /&gt;
*giroscopi (solo per la versione Motion Plus)&lt;br /&gt;
*bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)&lt;br /&gt;
&lt;br /&gt;
tutto ciò con consumi ridotti.&lt;br /&gt;
&lt;br /&gt;
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una lavagna elettronica, oppure può essere usato in applicazioni didattiche per la fisica oppure puo anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote  con circa una decina di euro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installazione librerie e uso del Software  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install bluetooth&lt;br /&gt;
&lt;br /&gt;
Controllare lo stato del bluetooth con:&lt;br /&gt;
 &lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Se non è avviato avviarlo con:&lt;br /&gt;
 &lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
e verificare che sia stata creata l'interfaccia tramite il seguente comando:&lt;br /&gt;
&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per interfacciarsi con il controller basta installare le librerie con:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-cwiid&lt;br /&gt;
&lt;br /&gt;
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:&lt;br /&gt;
&lt;br /&gt;
 import cwiid&lt;br /&gt;
 wm = cwiid.Wiimote()&lt;br /&gt;
  &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti&lt;br /&gt;
&lt;br /&gt;
 wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti&lt;br /&gt;
&lt;br /&gt;
I codici possibili sono:&lt;br /&gt;
* 256 e 512: tasti direzionali rispettivamente sinistra e destra&lt;br /&gt;
* 2048 e 1024: tasti direzionali rispettivamente sopra e sotto&lt;br /&gt;
* 4 e 8: tasti B o A &lt;br /&gt;
* 16, 128, 4096 :tasti volume down, tasto home e tasto volume up&lt;br /&gt;
* 1 e 2: tasto 2 e tasto 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:&lt;br /&gt;
&lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wm.state['ir_src'] //cosi prelevo i dati relativi alla finestra ir&lt;br /&gt;
 wm.state['acc'] //cosi prelevo i dati relativi all'accellerometro&lt;br /&gt;
&lt;br /&gt;
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:&lt;br /&gt;
&lt;br /&gt;
 cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK&lt;br /&gt;
&lt;br /&gt;
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:&lt;br /&gt;
&lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS)&lt;br /&gt;
&lt;br /&gt;
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario &amp;quot;state&amp;quot; facendo riferimento alle chiavi tra apici: &lt;br /&gt;
&lt;br /&gt;
  print wm.state&lt;br /&gt;
  {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:&lt;br /&gt;
&lt;br /&gt;
 wm.state['led'] = 1 // abilito il led 1&lt;br /&gt;
 wm.state['rumble'] = 1 //abilito la vibrazione&lt;br /&gt;
&lt;br /&gt;
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile connettere diversi controller specificando il mac alla funzione connect.&lt;br /&gt;
&lt;br /&gt;
 wm = cwiid.Wiimote(&amp;quot;00:11:22:33:44:55&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/python &lt;br /&gt;
 import cwiid &lt;br /&gt;
 import time &lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Premi 1+2 sul tuo wiimote&amp;quot; &lt;br /&gt;
 wm = cwiid.Wiimote() &lt;br /&gt;
 wm.led = 1 &lt;br /&gt;
 wm.enable(cwiid.FLAG_MOTIONPLUS) &lt;br /&gt;
 wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS &lt;br /&gt;
 print &amp;quot;Connesso!&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
 while True: &lt;br /&gt;
    print wm.state &lt;br /&gt;
    time.sleep(0.2)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Altre Info ==&lt;br /&gt;
&lt;br /&gt;
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore.&lt;br /&gt;
Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario).&lt;br /&gt;
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv.&lt;br /&gt;
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti.&lt;br /&gt;
Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di .... , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa.&lt;br /&gt;
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.&lt;br /&gt;
&lt;br /&gt;
Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf tesi].&lt;br /&gt;
&lt;br /&gt;
Altri link utili:&lt;br /&gt;
*[http://packages.debian.org/wheezy/bluetooth pacchetto bluetooth]&lt;br /&gt;
*[http://wiki.debian.org/BluetoothUser installazione bluetooth]&lt;br /&gt;
*[http://wiibrew.org/wiki/Wiimote Wiibrew.org (WIIMOTE)]&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_Domotica&amp;diff=1108</id>
		<title>Gruppo Domotica</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_Domotica&amp;diff=1108"/>
		<updated>2013-06-13T20:32:28Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=Domotica&lt;br /&gt;
|icona=Domotica.png&lt;br /&gt;
|descrizione=automatizziamo il nostro nido&lt;br /&gt;
|iscritti=Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], Simone, Razzo,  [http://raspibo.ofpcina.net/profile/renzo Renzo], Psini, Peppe, Davide, Lupo [http://raspibo.ofpcina.net/profile/Desmolupo Desmolupo], [http://raspibo.ofpcina.net/profile/albeus Albeus], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], Fabio, Zontt, [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp], [http://raspibo.ofpcina.net/profile/Aldus Aldo]}}&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
* [[A Fridge Magnet]]: magnete da frigorifero implementato con un display e-ink.&lt;br /&gt;
* [[Termostato]]: sensore di temperatura e Raspberry Pi.&lt;br /&gt;
* [[sensore di gas e diodo Zener]]&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;br /&gt;
&lt;br /&gt;
* [[Utente:DavideAlberani]]: voglio farmi un aggeggio che mi avvisa quando c'è posta nella cassetta; per ora ho aperto una [http://raspibo.ofpcina.net/discussion/view/2833/cassetta-per-la-posta discussione sul social network] per ricevere suggerimenti.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=GPIO_aggiuntivi_MCP23x17&amp;diff=811</id>
		<title>GPIO aggiuntivi MCP23x17</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=GPIO_aggiuntivi_MCP23x17&amp;diff=811"/>
		<updated>2013-05-23T00:13:37Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;E’ possibile collegare dei GPIO aggiuntivi al Raspberry Pi in modo da aumentare il numero di pin comandabili.&lt;br /&gt;
&lt;br /&gt;
Ad esempio si possono collegare i chip [http://ww1.microchip.com/downloads/en/devicedoc/21952b.pdf MCP23x17]:&lt;br /&gt;
&lt;br /&gt;
-MCP23017 che usa il protocollo I2C &lt;br /&gt;
&lt;br /&gt;
-MCP23S17 con protocollo SPI.&lt;br /&gt;
&lt;br /&gt;
Questi integrati hanno due PORT con 8 pin ciascuno, una porta di comunicazione I2C o SPI secondo il modello, alimentazione, reset e 2 pin per la gestione degli interrupt.&lt;br /&gt;
&lt;br /&gt;
Possono essere collegati sul bus assieme ad altri chip dello stesso tipo indirizzandoli con tre bit, quindi se ne possono collegare fino ad 8, questo permette di arrivare a comandadare fino 128 pin di input/output.&lt;br /&gt;
&lt;br /&gt;
I pin non hanno funzioni particolari, possono essere solo ingressi o uscite ed è possibile settarne il pullup, ma non ci sono ad esempio funzioni di pwn o altro.&lt;br /&gt;
&lt;br /&gt;
Per la configurazione bisogna settare alcuni registri sul chip per indicare la configurazione delle porte, ingressi, uscite, pullup, interrupt come riportato in questa [https://gist.github.com/ChickenProp/3183960 pagina] oltre che sul datasheet riportato sopra.&lt;br /&gt;
&lt;br /&gt;
I due bus a cui possono essere collegati questi integrati si basano su una configurazione di tipo master-slave, perciò normalmente vengono usati in polling, questo non comporta molto dispendio di CPU però se le variazioni sui pin sono veloci si rischia di perderne.&lt;br /&gt;
 &lt;br /&gt;
In questo [http://www.retrosemi.co.uk/mcp23s17/Getting_started_with_the_mcp23s17.pdf documento] viene illustrato come interagire dialogando sul bus SPI ed utilizzando un programmino in c. &lt;br /&gt;
&lt;br /&gt;
Non vengono utilizzate però le possibilità di utilizzo degli interrupt. &lt;br /&gt;
&lt;br /&gt;
Volendo ottimizzare l’uso di risorse della CPU ci sembrava utile riuscire a sfruttare questa funzione.&lt;br /&gt;
&lt;br /&gt;
In pratica si tratta di collegare uno o due pin dell’integrato ad un pin del GPIO di Raspberry Pi per scatenare la lettura del porta in input quando si verifica un evento. Questo può essere fatto praticamente settando tre registri del MCP23X17.&lt;br /&gt;
&lt;br /&gt;
Le possibilità sono diverse:&lt;br /&gt;
&lt;br /&gt;
- Sulle porte settate come ingressi, ogni singolo pin può generare interrupt, si può settare uno stato predefinito a cui si deve trovare il pin (questo però spesso non é l’ideale, vedi sotto).&lt;br /&gt;
&lt;br /&gt;
- In alternativa é possibile settare i registri in modo che venga emesso un interrupt ad ogni variazione sui pin dichiarati.&lt;br /&gt;
&lt;br /&gt;
La gestione degli interrupt é leggermenre diversa da quanto avviene in altri circuiti, infatti il registro degli interrupt viene resettato appena viene letto il registro degli interrupt oppure il port. &lt;br /&gt;
&lt;br /&gt;
Questo significa che un settaggio come indicato al primo punto genera interrupt a raffica se sul pin arrivano segnali stabili nel tempo e li leggiamo subito.&lt;br /&gt;
&lt;br /&gt;
Per questi test abbiamo utilizzato una scheda [http://pi.cs.man.ac.uk/interface.htm Pi-Face] nella versione già assemblata venduta da Farnell in modo da velocizzare i test.&lt;br /&gt;
&lt;br /&gt;
Qui sotto il codice creato, probabilmente non ancora definitivo: per utilizzarlo salvarlo su un file di testo (es piface.c) e compilare ad esempio con: &lt;br /&gt;
&lt;br /&gt;
 gcc piface.c -o piface &lt;br /&gt;
&lt;br /&gt;
poi lanciarlo con&lt;br /&gt;
&lt;br /&gt;
 ./piface /dev/spi0.0&lt;br /&gt;
&lt;br /&gt;
 /****************************************&lt;br /&gt;
  * basic SPI demo for mcp23s17&lt;br /&gt;
  *&lt;br /&gt;
  *****************************************/&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;linux/spi/spidev.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
 #define CMD_WRITE	0x40&lt;br /&gt;
 #define CMD_READ 	0x41&lt;br /&gt;
 static char	*spiDevice = &amp;quot;/dev/spidev0.0&amp;quot; ;&lt;br /&gt;
 static uint8_t spiMode = 0 ;&lt;br /&gt;
 static uint8_t spiBPW = 8 ;&lt;br /&gt;
 static uint32_t spiSpeed = 5000000 ;&lt;br /&gt;
 static uint16_t spiDelay = 0;&lt;br /&gt;
 // MCP23S17 Registers&lt;br /&gt;
 #define IOCON	0x0A&lt;br /&gt;
 #define IODIRA	0x00&lt;br /&gt;
 #define IPOLA	0x02&lt;br /&gt;
 #define GPINTENA 0x04&lt;br /&gt;
 #define DEFVALA	 0x06&lt;br /&gt;
 #define INTCONA	 0x08&lt;br /&gt;
 #define GPPUA    0x0C&lt;br /&gt;
 #define INTFA    0x0E&lt;br /&gt;
 #define INTCAPA  0x10&lt;br /&gt;
 #define GPIOA	 0x12&lt;br /&gt;
 #define OLATA	 0x14&lt;br /&gt;
 #define IODIRB   0x01&lt;br /&gt;
 #define IPOLB    0x03&lt;br /&gt;
 #define GPINTENB 0x05&lt;br /&gt;
 #define DEFVALB  0x07&lt;br /&gt;
 #define INTCONB  0x09&lt;br /&gt;
 #define GPPUB    0x0D&lt;br /&gt;
 #define INTFB    0x0F&lt;br /&gt;
 #define INTCAPB  0x11&lt;br /&gt;
 #define GPIOB    0x13&lt;br /&gt;
 #define OLATB    0x15&lt;br /&gt;
 &lt;br /&gt;
 int spi_fd;&lt;br /&gt;
 &lt;br /&gt;
 int readconf() &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int pinsetup ()&lt;br /&gt;
 {&lt;br /&gt;
   int fd = 0;&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/export&amp;quot;,O_WRONLY);&lt;br /&gt;
   write(fd,&amp;quot;25\n&amp;quot;,3);&lt;br /&gt;
   close(fd);&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/direction&amp;quot;,O_WRONLY);&lt;br /&gt;
   write(fd,&amp;quot;in\n&amp;quot;,3);&lt;br /&gt;
   close(fd);&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/edge&amp;quot;,O_RDWR);  &lt;br /&gt;
   write(fd,&amp;quot;falling\n&amp;quot;,8);				// i valori possibili sono rising/falling/both/none consigliato falling&lt;br /&gt;
   close(fd);&lt;br /&gt;
   &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/value&amp;quot;,O_RDWR);&lt;br /&gt;
   &lt;br /&gt;
   return fd;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 static uint8_t readByte (uint8_t reg)&lt;br /&gt;
 {&lt;br /&gt;
 	uint8_t tx [4] ;&lt;br /&gt;
 	uint8_t rx [4] ;&lt;br /&gt;
 	struct spi_ioc_transfer spi ;&lt;br /&gt;
 &lt;br /&gt;
 	tx [0] = CMD_READ ;&lt;br /&gt;
 	tx [1] = reg ;&lt;br /&gt;
 	tx [2] = 0 ;&lt;br /&gt;
 &lt;br /&gt;
 	spi.tx_buf =(unsigned long)tx ;&lt;br /&gt;
 	spi.rx_buf =(unsigned long)rx ;&lt;br /&gt;
 	spi.len =3;&lt;br /&gt;
 	spi.delay_usecs = spiDelay ;&lt;br /&gt;
 	spi.speed_hz = spiSpeed ;&lt;br /&gt;
 	spi.bits_per_word = spiBPW ;&lt;br /&gt;
 	ioctl (spi_fd, SPI_IOC_MESSAGE(1), &amp;amp;spi) ;&lt;br /&gt;
 	return rx [2] ;&lt;br /&gt;
 }&lt;br /&gt;
 static void writeByte (uint8_t reg, uint8_t data)&lt;br /&gt;
 {&lt;br /&gt;
 	uint8_t spiBufTx [3] ;&lt;br /&gt;
 	uint8_t spiBufRx [3] ;&lt;br /&gt;
 	struct spi_ioc_transfer spi ;&lt;br /&gt;
 	spiBufTx [0] = CMD_WRITE ;&lt;br /&gt;
 	spiBufTx [1] = reg ;&lt;br /&gt;
 	spiBufTx [2] = data ;&lt;br /&gt;
 	spi.tx_buf&lt;br /&gt;
 		= (unsigned long)spiBufTx ;&lt;br /&gt;
 	spi.rx_buf&lt;br /&gt;
 		= (unsigned long)spiBufRx ;&lt;br /&gt;
 	spi.len&lt;br /&gt;
 		=3;&lt;br /&gt;
 	spi.delay_usecs = spiDelay ;&lt;br /&gt;
 	spi.speed_hz = spiSpeed ;&lt;br /&gt;
 	spi.bits_per_word = spiBPW ;&lt;br /&gt;
 	ioctl (spi_fd, SPI_IOC_MESSAGE(1), &amp;amp;spi) ;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 static void ruota_led()&lt;br /&gt;
 {&lt;br /&gt;
         uint8_t leds;&lt;br /&gt;
         leds = readByte (GPIOA) ;&lt;br /&gt;
         if (leds==4 || leds==0) {&lt;br /&gt;
                 writeByte(GPIOA,128);&lt;br /&gt;
         } else {&lt;br /&gt;
                 writeByte(GPIOA,leds/2);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 /*spi_open&lt;br /&gt;
  *&lt;br /&gt;
  - Open the given SPI channel and configures it.&lt;br /&gt;
  *&lt;br /&gt;
  - there are normally two SPI devices on your PI:&lt;br /&gt;
  *&lt;br /&gt;
  /dev/spidev0.0: activates the CS0 pin during transfer&lt;br /&gt;
  *&lt;br /&gt;
  /dev/spidev0.1: activates the CS1 pin during transfer&lt;br /&gt;
  *&lt;br /&gt;
  */&lt;br /&gt;
 int spi_open(char* dev)&lt;br /&gt;
 {&lt;br /&gt;
 	if((spi_fd = open(dev, O_RDWR)) &amp;lt; 0){&lt;br /&gt;
 		printf(&amp;quot;error opening %s\n&amp;quot;,dev);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 int main(int argc, char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
     unsigned char data = 0xAF;&lt;br /&gt;
     struct timeval tv;&lt;br /&gt;
     int pin25;&lt;br /&gt;
     fd_set set, setbackup;&lt;br /&gt;
     char pin25buf[1024];&lt;br /&gt;
     &lt;br /&gt;
     pin25 = pinsetup();&lt;br /&gt;
     FD_ZERO(&amp;amp;set);&lt;br /&gt;
     FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
     setbackup = set;&lt;br /&gt;
     &lt;br /&gt;
     int val;	&lt;br /&gt;
 	if(argc &amp;lt;= 1){&lt;br /&gt;
 		printf(&amp;quot;too few args, try %s /dev/spidev0.0\n&amp;quot;,argv[0]);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	// open and configure SPI channel. (/dev/spidev0.0 for example)&lt;br /&gt;
 	if(spi_open(argv[1]) &amp;lt; 0){&lt;br /&gt;
 		printf(&amp;quot;spi_open failed\n&amp;quot;);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	writeByte (IODIRA, 0x00) ;&lt;br /&gt;
 	// Port A -&amp;gt; Outputs&lt;br /&gt;
 	writeByte (GPIOA, 0x00) ;&lt;br /&gt;
        writeByte(GPPUA, 0xFF); // set port A pullups on&lt;br /&gt;
        writeByte(GPPUB, 0xFF); // set port B pullups on&lt;br /&gt;
 	writeByte (IODIRB, 0xFF) ;&lt;br /&gt;
 	writeByte (GPINTENB,0xFF); //Abilita l'interrupt sul portB&lt;br /&gt;
 	writeByte (DEFVALB,0xFF); //Setta il valore di default dei pin del port B se un un pin non è a uno emette interrupt&lt;br /&gt;
 	writeByte (INTCONB,0x00);  //Setta il valore di per il confronto se a 1 compara con il valore di DEFVAL altrimenti controlla le variazioni di stato&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
         while (1)&lt;br /&gt;
         {&lt;br /&gt;
             tv.tv_sec = 30;&lt;br /&gt;
             tv.tv_usec = 0;&lt;br /&gt;
 &lt;br /&gt;
             val = select(pin25+1, NULL, NULL, &amp;amp;set, &amp;amp;tv);&lt;br /&gt;
 &lt;br /&gt;
         &lt;br /&gt;
             set = setbackup;&lt;br /&gt;
             if(val &amp;gt; 0)&lt;br /&gt;
             {&lt;br /&gt;
               if(FD_ISSET(pin25,&amp;amp;set))&lt;br /&gt;
               {&lt;br /&gt;
                 write(1,&amp;quot;evento su pin 25\n&amp;quot;,17);&lt;br /&gt;
                 &lt;br /&gt;
                 /* antirimbalzo */&lt;br /&gt;
                 tv.tv_sec = 0;&lt;br /&gt;
                 tv.tv_usec = 50000;&lt;br /&gt;
                 val = select(0, NULL, NULL, NULL, &amp;amp;tv);&lt;br /&gt;
                 /* fine antirimbalzo */  &lt;br /&gt;
             &lt;br /&gt;
 &lt;br /&gt;
                 lseek(pin25,0,SEEK_SET);&lt;br /&gt;
                 read(pin25,pin25buf,1024);&lt;br /&gt;
               }&lt;br /&gt;
               else write(1,&amp;quot;???\n&amp;quot;,4);&lt;br /&gt;
              }&lt;br /&gt;
             else&lt;br /&gt;
             if(val &amp;lt; 0) write(1,&amp;quot;SIGNAL NON BLOCCATO\n&amp;quot;,20);&lt;br /&gt;
             else write(1,&amp;quot;TIMEOUT\n&amp;quot;,8);&lt;br /&gt;
             &lt;br /&gt;
             &lt;br /&gt;
                      // Port B -&amp;gt; Inputs&lt;br /&gt;
          data = readByte (GPIOB) ;&lt;br /&gt;
          printf(&amp;quot;RECEIVED: %.2X\n&amp;quot;,data);&lt;br /&gt;
 	 &lt;br /&gt;
 	 //ruota_led();&lt;br /&gt;
                         &lt;br /&gt;
             &lt;br /&gt;
          }&lt;br /&gt;
          close(spi_fd);&lt;br /&gt;
          return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ulteriori esempi qui: [https://github.com/dcast78/MCP23x17/ su github]&lt;br /&gt;
&lt;br /&gt;
La seguente è una versione di codice funzionante per MCP23017, basata sul codice soprastante, essenzialmente sono stati reimplementati solo i metodi per la scrittura/lettura sul bus i2c.&lt;br /&gt;
&lt;br /&gt;
Può essere utilizzato come nel seguente esempio, per usare l'MCP23017, pilotando degli input provenienti dal PORTA ed indirizzandoli al PORTB:&lt;br /&gt;
&lt;br /&gt;
 ingresso attivo | uscita attiva&lt;br /&gt;
 GPIOA0        ---&amp;gt;    GPIOB0&lt;br /&gt;
 GPIOA1&amp;amp;GPIOA3  -&amp;gt;   GPIOB1&amp;amp;GPIOB3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il funzionamento è abbastanza semplice, vengono settati i registri (si veda il codice per i relativi valori):&lt;br /&gt;
* IODIRA: saranno tutti pin di input&lt;br /&gt;
* IODIRB: saranno tutti pin di output&lt;br /&gt;
* GPPUA: viene settata la resistenza di pullup per tutti gli input&lt;br /&gt;
* DEFVAL: è il registro con cui viene fatto il confronto con GPIOA per scatenare gli interrupts&lt;br /&gt;
* GPINTENA: abilita gli interrupt sul port A&lt;br /&gt;
* INTCONA: sceglie con quale modalità far scattare gli interrupts, se il bit è a 1 confrontando GPIOA con DEFVAL se a 0 solo nei cambi di stato (nel nostro caso erano tutti a 0 quindi l'interrupt scattava una volta quando veniva premuto uno dei tasti e una volta quando veniva rilasciato);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La configurazione del circuito è semplice ed è la seguente:&lt;br /&gt;
&lt;br /&gt;
I pulsanti sono collegati sul primo pin a massa, mentre l'altro agli ingressi del PORTA. In output (PORTB) sono collegati i LED con le relative resistenze, che finiscono anch'esse a massa;&lt;br /&gt;
&lt;br /&gt;
Sugli altri pin il collegamento è il seguente:&lt;br /&gt;
&lt;br /&gt;
* A0,A1,A2,Vss: GND&lt;br /&gt;
* RESET,Vdd: VCC(3,3V)&lt;br /&gt;
* SDA,SCL: GPIO3 e GPIO5 (per la comunicazione con il rasp sul bus i2c)&lt;br /&gt;
* INTA: collegato alla GPIO25 del rasp (per l'invio sei segnali di interrupt)&lt;br /&gt;
&lt;br /&gt;
Nota: Viene usata una bitmask di uno in xor sul PORTB a causa del fatto che con la resistenza di pullup a on sugli ingressi i bit saranno tutti a 1, quindi il cambio di stato si avrà portando il bit a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/****************************************&lt;br /&gt;
  * basic i2c demo for mcp23017&lt;br /&gt;
  *****************************************/&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;linux/i2c-dev.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // MCP23x17 Registers&lt;br /&gt;
 #define IOCON	0x0A&lt;br /&gt;
 #define IODIRA	0x00&lt;br /&gt;
 #define IPOLA	0x02&lt;br /&gt;
 #define GPINTENA 0x04&lt;br /&gt;
 #define DEFVALA 0x06&lt;br /&gt;
 #define INTCONA 0x08&lt;br /&gt;
 #define GPPUA    0x0C&lt;br /&gt;
 #define INTFA    0x0E&lt;br /&gt;
 #define INTCAPA  0x10&lt;br /&gt;
 #define GPIOA	 0x12&lt;br /&gt;
 #define OLATA	 0x14&lt;br /&gt;
 #define IODIRB   0x01&lt;br /&gt;
 #define IPOLB    0x03&lt;br /&gt;
 #define GPINTENB 0x05&lt;br /&gt;
 #define DEFVALB  0x07&lt;br /&gt;
 #define INTCONB  0x09&lt;br /&gt;
 #define GPPUB    0x0D&lt;br /&gt;
 #define INTFB    0x0F&lt;br /&gt;
 #define INTCAPB  0x11&lt;br /&gt;
 #define GPIOB    0x13&lt;br /&gt;
 #define OLATB    0x15 &lt;br /&gt;
&lt;br /&gt;
 //MPC23017 address&lt;br /&gt;
 #define DEVICE_ADDRESS 0x20 &lt;br /&gt;
&lt;br /&gt;
 int i2c_fd;&lt;br /&gt;
&lt;br /&gt;
 int pinsetup ()&lt;br /&gt;
 {&lt;br /&gt;
  int fd = 0;&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/export&amp;quot;,O_WRONLY);&lt;br /&gt;
  write(fd,&amp;quot;25\n&amp;quot;,3);&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/direction&amp;quot;,O_WRONLY);&lt;br /&gt;
  write(fd,&amp;quot;in\n&amp;quot;,3);&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/edge&amp;quot;,O_RDWR);&lt;br /&gt;
  write(fd,&amp;quot;falling\n&amp;quot;,8);// i valori possibili sono rising/falling/both/none consigliato falling&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/value&amp;quot;,O_RDWR);&lt;br /&gt;
  return fd;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int readByte(uint8_t regist){&lt;br /&gt;
	uint8_t pkt_d[2];&lt;br /&gt;
	pkt_d[0] = regist;&lt;br /&gt;
        pkt_d[1] = 0;&lt;br /&gt;
	if (write(i2c_fd, &amp;amp;pkt_d, 1) != 1) {&lt;br /&gt;
		perror(&amp;quot;write error in readByte&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        if (read(i2c_fd, &amp;amp;pkt_d, 2) != 2) {&lt;br /&gt;
		perror(&amp;quot;read error in readByt&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return (int) pkt_d[0];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int writeByte( uint8_t regist, uint8_t value){&lt;br /&gt;
	uint8_t pkt_d[2];&lt;br /&gt;
        pkt_d[0] = regist;&lt;br /&gt;
	pkt_d[1] = value;&lt;br /&gt;
        if (write(i2c_fd, &amp;amp;pkt_d, 2) != 2) {&lt;br /&gt;
		perror(&amp;quot;write error in writeByte&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return 1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int i2c_open(char* dev)&lt;br /&gt;
 {&lt;br /&gt;
	if((i2c_fd = open(dev, O_RDWR)) &amp;lt; 0){&lt;br /&gt;
		printf(&amp;quot;error opening %s\n&amp;quot;,dev);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        if (ioctl(i2c_fd, I2C_SLAVE, DEVICE_ADDRESS) &amp;lt; 0) {&lt;br /&gt;
		perror(&amp;quot;error setting I2C_SLAVE&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return 0;&lt;br /&gt;
 }&lt;br /&gt;
 int main(int argc, char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
    unsigned char data = 0xAF;&lt;br /&gt;
    struct timeval tv;&lt;br /&gt;
    int pin25;&lt;br /&gt;
    fd_set set, setbackup;&lt;br /&gt;
    char pin25buf[1024];&lt;br /&gt;
&lt;br /&gt;
    pin25 = pinsetup();&lt;br /&gt;
&lt;br /&gt;
    FD_ZERO(&amp;amp;set);&lt;br /&gt;
    FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
&lt;br /&gt;
    int val;&lt;br /&gt;
        if(argc &amp;lt;= 1){&lt;br /&gt;
		printf(&amp;quot;too few args, try %s /dev/i2c-0\n&amp;quot;,argv[0]);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	// open and configure i2c channel. (/dev/i2c-0 for example)&lt;br /&gt;
	if(i2c_open(argv[1]) &amp;lt; 0){&lt;br /&gt;
		printf(&amp;quot;i2c_open failed\n&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        &lt;br /&gt;
        writeByte(GPPUA, 0xFF); // setto pullups sul PORTA&lt;br /&gt;
	writeByte(IODIRA, 0xFF); // setto PORTA come ingressi&lt;br /&gt;
        writeByte(GPINTENA,0xFF); //Abilita gli interrupts sul PORTA&lt;br /&gt;
        //writeByte(DEFVALA,0xFF); //Setta il valore di default del PORTA (usato per la configurazione alternativa)&lt;br /&gt;
        writeByte(INTCONA,0x00);  //Setta il registro per far scattare interrupt alle variazioni di stato&lt;br /&gt;
        //writeByte(GPIOA,0x00); //setto a zero tutti i bit del port A,  probabilmente non è mportante essendo il pullup a on&lt;br /&gt;
	writeByte(IODIRB,0x00); // setto PORTB come uscite&lt;br /&gt;
        &lt;br /&gt;
        while (1)&lt;br /&gt;
        {&lt;br /&gt;
            tv.tv_sec = 30;&lt;br /&gt;
            tv.tv_usec = 0;&lt;br /&gt;
            val = select(pin25+1, NULL, NULL, &amp;amp;set, &amp;amp;tv);&lt;br /&gt;
            if(val &amp;gt; 0)&lt;br /&gt;
            {&lt;br /&gt;
              if(FD_ISSET(pin25,&amp;amp;set))&lt;br /&gt;
              {&lt;br /&gt;
                write(1,&amp;quot;evento su pin 25\n&amp;quot;,17);&lt;br /&gt;
                /* antirimbalzo */&lt;br /&gt;
                tv.tv_sec = 0;&lt;br /&gt;
                tv.tv_usec = 50000;&lt;br /&gt;
                val = select(0, NULL, NULL, NULL, &amp;amp;tv);&lt;br /&gt;
                /* fine antirimbalzo */&lt;br /&gt;
                read(pin25,NULL,0);&lt;br /&gt;
               }&lt;br /&gt;
              else write(1,&amp;quot;???\n&amp;quot;,4);&lt;br /&gt;
              }&lt;br /&gt;
            else {&lt;br /&gt;
		 FD_ZERO(&amp;amp;set);&lt;br /&gt;
		 FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
		 write(1,&amp;quot;TIMEOUT\n&amp;quot;,8);&lt;br /&gt;
		 }&lt;br /&gt;
          // Port A -&amp;gt; Inputs&lt;br /&gt;
          data = readByte (GPIOA) ;&lt;br /&gt;
	  data = (data^0xff); // metto in xor con una maschera di 1 per avere il giusto valore in uscita&lt;br /&gt;
          printf(&amp;quot;RECEIVED: %.2X\n&amp;quot;,data);&lt;br /&gt;
	  // Port B -&amp;gt; Output&lt;br /&gt;
	  writeByte(GPIOB,data);&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
         close(i2c_fd);&lt;br /&gt;
         return 0;&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Può essere compilato con:&lt;br /&gt;
 gcc test_i2c.c -o test_i2c&lt;br /&gt;
&lt;br /&gt;
Per lanciarlo:&lt;br /&gt;
 ./test_i2c /dev/i2c-1&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=GPIO_aggiuntivi_MCP23x17&amp;diff=806</id>
		<title>GPIO aggiuntivi MCP23x17</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=GPIO_aggiuntivi_MCP23x17&amp;diff=806"/>
		<updated>2013-05-19T17:50:09Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;E’ possibile collegare dei GPIO aggiuntivi al Raspberry Pi in modo da aumentare il numero di pin comandabili.&lt;br /&gt;
&lt;br /&gt;
Ad esempio si possono collegare i chip [http://ww1.microchip.com/downloads/en/devicedoc/21952b.pdf MCP23x17]:&lt;br /&gt;
&lt;br /&gt;
-MCP23017 che usa il protocollo I2C &lt;br /&gt;
&lt;br /&gt;
-MCP23S17 con protocollo SPI.&lt;br /&gt;
&lt;br /&gt;
Questi integrati hanno due PORT con 8 pin ciascuno, una porta di comunicazione I2C o SPI secondo il modello, alimentazione, reset e 2 pin per la gestione degli interrupt.&lt;br /&gt;
&lt;br /&gt;
Possono essere collegati sul bus assieme ad altri chip dello stesso tipo indirizzandoli con tre bit, quindi se ne possono collegare fino ad 8, questo permette di arrivare a comandadare fino 128 pin di input/output.&lt;br /&gt;
&lt;br /&gt;
I pin non hanno funzioni particolari, possono essere solo ingressi o uscite ed è possibile settarne il pullup, ma non ci sono ad esempio funzioni di pwn o altro.&lt;br /&gt;
&lt;br /&gt;
Per la configurazione bisogna settare alcuni registri sul chip per indicare la configurazione delle porte, ingressi, uscite, pullup, interrupt come riportato in questa [https://gist.github.com/ChickenProp/3183960 pagina] oltre che sul datasheet riportato sopra.&lt;br /&gt;
&lt;br /&gt;
I due bus a cui possono essere collegati questi integrati si basano su una configurazione di tipo master-slave, perciò normalmente vengono usati in polling, questo non comporta molto dispendio di CPU però se le variazioni sui pin sono veloci si rischia di perderne.&lt;br /&gt;
 &lt;br /&gt;
In questo [http://www.retrosemi.co.uk/mcp23s17/Getting_started_with_the_mcp23s17.pdf documento] viene illustrato come interagire dialogando sul bus SPI ed utilizzando un programmino in c. &lt;br /&gt;
&lt;br /&gt;
Non vengono utilizzate però le possibilità di utilizzo degli interrupt. &lt;br /&gt;
&lt;br /&gt;
Volendo ottimizzare l’uso di risorse della CPU ci sembrava utile riuscire a sfruttare questa funzione.&lt;br /&gt;
&lt;br /&gt;
In pratica si tratta di collegare uno o due pin dell’integrato ad un pin del GPIO di Raspberry Pi per scatenare la lettura del porta in input quando si verifica un evento. Questo può essere fatto praticamente settando tre registri del MCP23X17.&lt;br /&gt;
&lt;br /&gt;
Le possibilità sono diverse:&lt;br /&gt;
&lt;br /&gt;
- Sulle porte settate come ingressi, ogni singolo pin può generare interrupt, si può settare uno stato predefinito a cui si deve trovare il pin (questo però spesso non é l’ideale, vedi sotto).&lt;br /&gt;
&lt;br /&gt;
- In alternativa é possibile settare i registri in modo che venga emesso un interrupt ad ogni variazione sui pin dichiarati.&lt;br /&gt;
&lt;br /&gt;
La gestione degli interrupt é leggermenre diversa da quanto avviene in altri circuiti, infatti il registro degli interrupt viene resettato appena viene letto il registro degli interrupt oppure il port. &lt;br /&gt;
&lt;br /&gt;
Questo significa che un settaggio come indicato al primo punto genera interrupt a raffica se sul pin arrivano segnali stabili nel tempo e li leggiamo subito.&lt;br /&gt;
&lt;br /&gt;
Per questi test abbiamo utilizzato una scheda [http://pi.cs.man.ac.uk/interface.htm Pi-Face] nella versione già assemblata venduta da Farnell in modo da velocizzare i test.&lt;br /&gt;
&lt;br /&gt;
Qui sotto il codice creato, probabilmente non ancora definitivo: per utilizzarlo salvarlo su un file di testo (es piface.c) e compilare ad esempio con: &lt;br /&gt;
&lt;br /&gt;
 gcc piface.c -o piface &lt;br /&gt;
&lt;br /&gt;
poi lanciarlo con&lt;br /&gt;
&lt;br /&gt;
 ./piface /dev/spi0.0&lt;br /&gt;
&lt;br /&gt;
 /****************************************&lt;br /&gt;
  * basic SPI demo for mcp23s17&lt;br /&gt;
  *&lt;br /&gt;
  *****************************************/&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;linux/spi/spidev.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
 #define CMD_WRITE	0x40&lt;br /&gt;
 #define CMD_READ 	0x41&lt;br /&gt;
 static char	*spiDevice = &amp;quot;/dev/spidev0.0&amp;quot; ;&lt;br /&gt;
 static uint8_t spiMode = 0 ;&lt;br /&gt;
 static uint8_t spiBPW = 8 ;&lt;br /&gt;
 static uint32_t spiSpeed = 5000000 ;&lt;br /&gt;
 static uint16_t spiDelay = 0;&lt;br /&gt;
 // MCP23S17 Registers&lt;br /&gt;
 #define IOCON	0x0A&lt;br /&gt;
 #define IODIRA	0x00&lt;br /&gt;
 #define IPOLA	0x02&lt;br /&gt;
 #define GPINTENA 0x04&lt;br /&gt;
 #define DEFVALA	 0x06&lt;br /&gt;
 #define INTCONA	 0x08&lt;br /&gt;
 #define GPPUA    0x0C&lt;br /&gt;
 #define INTFA    0x0E&lt;br /&gt;
 #define INTCAPA  0x10&lt;br /&gt;
 #define GPIOA	 0x12&lt;br /&gt;
 #define OLATA	 0x14&lt;br /&gt;
 #define IODIRB   0x01&lt;br /&gt;
 #define IPOLB    0x03&lt;br /&gt;
 #define GPINTENB 0x05&lt;br /&gt;
 #define DEFVALB  0x07&lt;br /&gt;
 #define INTCONB  0x09&lt;br /&gt;
 #define GPPUB    0x0D&lt;br /&gt;
 #define INTFB    0x0F&lt;br /&gt;
 #define INTCAPB  0x11&lt;br /&gt;
 #define GPIOB    0x13&lt;br /&gt;
 #define OLATB    0x15&lt;br /&gt;
 &lt;br /&gt;
 int spi_fd;&lt;br /&gt;
 &lt;br /&gt;
 int readconf() &lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int pinsetup ()&lt;br /&gt;
 {&lt;br /&gt;
   int fd = 0;&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/export&amp;quot;,O_WRONLY);&lt;br /&gt;
   write(fd,&amp;quot;25\n&amp;quot;,3);&lt;br /&gt;
   close(fd);&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/direction&amp;quot;,O_WRONLY);&lt;br /&gt;
   write(fd,&amp;quot;in\n&amp;quot;,3);&lt;br /&gt;
   close(fd);&lt;br /&gt;
 &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/edge&amp;quot;,O_RDWR);  &lt;br /&gt;
   write(fd,&amp;quot;falling\n&amp;quot;,8);				// i valori possibili sono rising/falling/both/none consigliato falling&lt;br /&gt;
   close(fd);&lt;br /&gt;
   &lt;br /&gt;
   fd = open(&amp;quot;/sys/class/gpio/gpio25/value&amp;quot;,O_RDWR);&lt;br /&gt;
   &lt;br /&gt;
   return fd;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 static uint8_t readByte (uint8_t reg)&lt;br /&gt;
 {&lt;br /&gt;
 	uint8_t tx [4] ;&lt;br /&gt;
 	uint8_t rx [4] ;&lt;br /&gt;
 	struct spi_ioc_transfer spi ;&lt;br /&gt;
 &lt;br /&gt;
 	tx [0] = CMD_READ ;&lt;br /&gt;
 	tx [1] = reg ;&lt;br /&gt;
 	tx [2] = 0 ;&lt;br /&gt;
 &lt;br /&gt;
 	spi.tx_buf =(unsigned long)tx ;&lt;br /&gt;
 	spi.rx_buf =(unsigned long)rx ;&lt;br /&gt;
 	spi.len =3;&lt;br /&gt;
 	spi.delay_usecs = spiDelay ;&lt;br /&gt;
 	spi.speed_hz = spiSpeed ;&lt;br /&gt;
 	spi.bits_per_word = spiBPW ;&lt;br /&gt;
 	ioctl (spi_fd, SPI_IOC_MESSAGE(1), &amp;amp;spi) ;&lt;br /&gt;
 	return rx [2] ;&lt;br /&gt;
 }&lt;br /&gt;
 static void writeByte (uint8_t reg, uint8_t data)&lt;br /&gt;
 {&lt;br /&gt;
 	uint8_t spiBufTx [3] ;&lt;br /&gt;
 	uint8_t spiBufRx [3] ;&lt;br /&gt;
 	struct spi_ioc_transfer spi ;&lt;br /&gt;
 	spiBufTx [0] = CMD_WRITE ;&lt;br /&gt;
 	spiBufTx [1] = reg ;&lt;br /&gt;
 	spiBufTx [2] = data ;&lt;br /&gt;
 	spi.tx_buf&lt;br /&gt;
 		= (unsigned long)spiBufTx ;&lt;br /&gt;
 	spi.rx_buf&lt;br /&gt;
 		= (unsigned long)spiBufRx ;&lt;br /&gt;
 	spi.len&lt;br /&gt;
 		=3;&lt;br /&gt;
 	spi.delay_usecs = spiDelay ;&lt;br /&gt;
 	spi.speed_hz = spiSpeed ;&lt;br /&gt;
 	spi.bits_per_word = spiBPW ;&lt;br /&gt;
 	ioctl (spi_fd, SPI_IOC_MESSAGE(1), &amp;amp;spi) ;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 static void ruota_led()&lt;br /&gt;
 {&lt;br /&gt;
         uint8_t leds;&lt;br /&gt;
         leds = readByte (GPIOA) ;&lt;br /&gt;
         if (leds==4 || leds==0) {&lt;br /&gt;
                 writeByte(GPIOA,128);&lt;br /&gt;
         } else {&lt;br /&gt;
                 writeByte(GPIOA,leds/2);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 /*spi_open&lt;br /&gt;
  *&lt;br /&gt;
  - Open the given SPI channel and configures it.&lt;br /&gt;
  *&lt;br /&gt;
  - there are normally two SPI devices on your PI:&lt;br /&gt;
  *&lt;br /&gt;
  /dev/spidev0.0: activates the CS0 pin during transfer&lt;br /&gt;
  *&lt;br /&gt;
  /dev/spidev0.1: activates the CS1 pin during transfer&lt;br /&gt;
  *&lt;br /&gt;
  */&lt;br /&gt;
 int spi_open(char* dev)&lt;br /&gt;
 {&lt;br /&gt;
 	if((spi_fd = open(dev, O_RDWR)) &amp;lt; 0){&lt;br /&gt;
 		printf(&amp;quot;error opening %s\n&amp;quot;,dev);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 int main(int argc, char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
     unsigned char data = 0xAF;&lt;br /&gt;
     struct timeval tv;&lt;br /&gt;
     int pin25;&lt;br /&gt;
     fd_set set, setbackup;&lt;br /&gt;
     char pin25buf[1024];&lt;br /&gt;
     &lt;br /&gt;
     pin25 = pinsetup();&lt;br /&gt;
     FD_ZERO(&amp;amp;set);&lt;br /&gt;
     FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
     setbackup = set;&lt;br /&gt;
     &lt;br /&gt;
     int val;	&lt;br /&gt;
 	if(argc &amp;lt;= 1){&lt;br /&gt;
 		printf(&amp;quot;too few args, try %s /dev/spidev0.0\n&amp;quot;,argv[0]);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	// open and configure SPI channel. (/dev/spidev0.0 for example)&lt;br /&gt;
 	if(spi_open(argv[1]) &amp;lt; 0){&lt;br /&gt;
 		printf(&amp;quot;spi_open failed\n&amp;quot;);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	writeByte (IODIRA, 0x00) ;&lt;br /&gt;
 	// Port A -&amp;gt; Outputs&lt;br /&gt;
 	writeByte (GPIOA, 0x00) ;&lt;br /&gt;
        writeByte(GPPUA, 0xFF); // set port A pullups on&lt;br /&gt;
        writeByte(GPPUB, 0xFF); // set port B pullups on&lt;br /&gt;
 	writeByte (IODIRB, 0xFF) ;&lt;br /&gt;
 	writeByte (GPINTENB,0xFF); //Abilita l'interrupt sul portB&lt;br /&gt;
 	writeByte (DEFVALB,0xFF); //Setta il valore di default dei pin del port B se un un pin non è a uno emette interrupt&lt;br /&gt;
 	writeByte (INTCONB,0x00);  //Setta il valore di per il confronto se a 1 compara con il valore di DEFVAL altrimenti controlla le variazioni di stato&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
         while (1)&lt;br /&gt;
         {&lt;br /&gt;
             tv.tv_sec = 30;&lt;br /&gt;
             tv.tv_usec = 0;&lt;br /&gt;
 &lt;br /&gt;
             val = select(pin25+1, NULL, NULL, &amp;amp;set, &amp;amp;tv);&lt;br /&gt;
 &lt;br /&gt;
         &lt;br /&gt;
             set = setbackup;&lt;br /&gt;
             if(val &amp;gt; 0)&lt;br /&gt;
             {&lt;br /&gt;
               if(FD_ISSET(pin25,&amp;amp;set))&lt;br /&gt;
               {&lt;br /&gt;
                 write(1,&amp;quot;evento su pin 25\n&amp;quot;,17);&lt;br /&gt;
                 &lt;br /&gt;
                 /* antirimbalzo */&lt;br /&gt;
                 tv.tv_sec = 0;&lt;br /&gt;
                 tv.tv_usec = 50000;&lt;br /&gt;
                 val = select(0, NULL, NULL, NULL, &amp;amp;tv);&lt;br /&gt;
                 /* fine antirimbalzo */  &lt;br /&gt;
             &lt;br /&gt;
 &lt;br /&gt;
                 lseek(pin25,0,SEEK_SET);&lt;br /&gt;
                 read(pin25,pin25buf,1024);&lt;br /&gt;
               }&lt;br /&gt;
               else write(1,&amp;quot;???\n&amp;quot;,4);&lt;br /&gt;
              }&lt;br /&gt;
             else&lt;br /&gt;
             if(val &amp;lt; 0) write(1,&amp;quot;SIGNAL NON BLOCCATO\n&amp;quot;,20);&lt;br /&gt;
             else write(1,&amp;quot;TIMEOUT\n&amp;quot;,8);&lt;br /&gt;
             &lt;br /&gt;
             &lt;br /&gt;
                      // Port B -&amp;gt; Inputs&lt;br /&gt;
          data = readByte (GPIOB) ;&lt;br /&gt;
          printf(&amp;quot;RECEIVED: %.2X\n&amp;quot;,data);&lt;br /&gt;
 	 &lt;br /&gt;
 	 //ruota_led();&lt;br /&gt;
                         &lt;br /&gt;
             &lt;br /&gt;
          }&lt;br /&gt;
          close(spi_fd);&lt;br /&gt;
          return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La seguente è una versione di codice funzionante per MCP23017, basata sul codice soprastante, essenzialmente sono stati reimplementati solo i metodi per la scrittura/lettura sul bus i2c.&lt;br /&gt;
&lt;br /&gt;
Può essere utilizzato come nel seguente esempio, per usare l'MCP23017, pilotando degli input provenienti dal PORTA ed indirizzandoli al PORTB:&lt;br /&gt;
&lt;br /&gt;
 ingresso attivo | uscita attiva&lt;br /&gt;
 GPIOA0        ---&amp;gt;    GPIOB0&lt;br /&gt;
 GPIOA1&amp;amp;GPIOA3  -&amp;gt;   GPIOB1&amp;amp;GPIOB3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il funzionamento è abbastanza semplice, vengono settati i registri (si veda il codice per i relativi valori):&lt;br /&gt;
* IODIRA: saranno tutti pin di input&lt;br /&gt;
* IODIRB: saranno tutti pin di output&lt;br /&gt;
* GPPUA: viene settata la resistenza di pullup per tutti gli input&lt;br /&gt;
* DEFVAL: è il registro con cui viene fatto il confronto con GPIOA per scatenare gli interrupts&lt;br /&gt;
* GPINTENA: abilita gli interrupt sul port A&lt;br /&gt;
* INTCONA: sceglie con quale modalità far scattare gli interrupt, cioè confrontando GPIOA con DEFVAL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La configurazione del circuito è semplice ed è la seguente:&lt;br /&gt;
&lt;br /&gt;
I pulsanti sono collegati sul primo pin a massa, mentre l'altro agli ingressi del PORTA. In output (PORTB) sono collegati i LED con le relative resistenze, che finiscono anch'esse a massa;&lt;br /&gt;
&lt;br /&gt;
Sugli altri pin il collegamento è il seguente:&lt;br /&gt;
&lt;br /&gt;
* A0,A1,A2,Vss: GND&lt;br /&gt;
* RESET,Vdd: VCC(3,3V)&lt;br /&gt;
* SDA,SCL: GPIO3 e GPIO5 (per la comunicazione con il rasp sul bus i2c)&lt;br /&gt;
* INTA: collegato alla GPIO25 del rasp (per l'invio sei segnali di interrupt)&lt;br /&gt;
&lt;br /&gt;
Nota: Viene usata una bitmask di uno in xor sul PORTB a causa del fatto che con la resistenza di pullup a on sugli ingressi i bit saranno tutti a 1, quindi il cambio di stato si avrà portando il bit a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;/****************************************&lt;br /&gt;
  * basic i2c demo for mcp23017&lt;br /&gt;
  *****************************************/&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;linux/i2c-dev.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // MCP23x17 Registers&lt;br /&gt;
 #define IOCON	0x0A&lt;br /&gt;
 #define IODIRA	0x00&lt;br /&gt;
 #define IPOLA	0x02&lt;br /&gt;
 #define GPINTENA 0x04&lt;br /&gt;
 #define DEFVALA 0x06&lt;br /&gt;
 #define INTCONA 0x08&lt;br /&gt;
 #define GPPUA    0x0C&lt;br /&gt;
 #define INTFA    0x0E&lt;br /&gt;
 #define INTCAPA  0x10&lt;br /&gt;
 #define GPIOA	 0x12&lt;br /&gt;
 #define OLATA	 0x14&lt;br /&gt;
 #define IODIRB   0x01&lt;br /&gt;
 #define IPOLB    0x03&lt;br /&gt;
 #define GPINTENB 0x05&lt;br /&gt;
 #define DEFVALB  0x07&lt;br /&gt;
 #define INTCONB  0x09&lt;br /&gt;
 #define GPPUB    0x0D&lt;br /&gt;
 #define INTFB    0x0F&lt;br /&gt;
 #define INTCAPB  0x11&lt;br /&gt;
 #define GPIOB    0x13&lt;br /&gt;
 #define OLATB    0x15 &lt;br /&gt;
&lt;br /&gt;
 //MPC23017 address&lt;br /&gt;
 #define DEVICE_ADDRESS 0x20 &lt;br /&gt;
&lt;br /&gt;
 int i2c_fd;&lt;br /&gt;
&lt;br /&gt;
 int pinsetup ()&lt;br /&gt;
 {&lt;br /&gt;
  int fd = 0;&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/export&amp;quot;,O_WRONLY);&lt;br /&gt;
  write(fd,&amp;quot;25\n&amp;quot;,3);&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/direction&amp;quot;,O_WRONLY);&lt;br /&gt;
  write(fd,&amp;quot;in\n&amp;quot;,3);&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/edge&amp;quot;,O_RDWR);&lt;br /&gt;
  write(fd,&amp;quot;falling\n&amp;quot;,8);// i valori possibili sono rising/falling/both/none consigliato falling&lt;br /&gt;
  close(fd);&lt;br /&gt;
&lt;br /&gt;
  fd = open(&amp;quot;/sys/class/gpio/gpio25/value&amp;quot;,O_RDWR);&lt;br /&gt;
  return fd;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int readByte(uint8_t regist){&lt;br /&gt;
	uint8_t pkt_d[2];&lt;br /&gt;
	pkt_d[0] = regist;&lt;br /&gt;
        pkt_d[1] = 0;&lt;br /&gt;
	if (write(i2c_fd, &amp;amp;pkt_d, 1) != 1) {&lt;br /&gt;
		perror(&amp;quot;write error in readByte&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        if (read(i2c_fd, &amp;amp;pkt_d, 2) != 2) {&lt;br /&gt;
		perror(&amp;quot;read error in readByt&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return (int) pkt_d[0];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int writeByte( uint8_t regist, uint8_t value){&lt;br /&gt;
	uint8_t pkt_d[2];&lt;br /&gt;
        pkt_d[0] = regist;&lt;br /&gt;
	pkt_d[1] = value;&lt;br /&gt;
        if (write(i2c_fd, &amp;amp;pkt_d, 2) != 2) {&lt;br /&gt;
		perror(&amp;quot;write error in writeByte&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return 1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int i2c_open(char* dev)&lt;br /&gt;
 {&lt;br /&gt;
	if((i2c_fd = open(dev, O_RDWR)) &amp;lt; 0){&lt;br /&gt;
		printf(&amp;quot;error opening %s\n&amp;quot;,dev);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        if (ioctl(i2c_fd, I2C_SLAVE, DEVICE_ADDRESS) &amp;lt; 0) {&lt;br /&gt;
		perror(&amp;quot;error setting I2C_SLAVE&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        return 0;&lt;br /&gt;
 }&lt;br /&gt;
 int main(int argc, char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
    unsigned char data = 0xAF;&lt;br /&gt;
    struct timeval tv;&lt;br /&gt;
    int pin25;&lt;br /&gt;
    fd_set set, setbackup;&lt;br /&gt;
    char pin25buf[1024];&lt;br /&gt;
&lt;br /&gt;
    pin25 = pinsetup();&lt;br /&gt;
&lt;br /&gt;
    FD_ZERO(&amp;amp;set);&lt;br /&gt;
    FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
&lt;br /&gt;
    int val;&lt;br /&gt;
        if(argc &amp;lt;= 1){&lt;br /&gt;
		printf(&amp;quot;too few args, try %s /dev/i2c-0\n&amp;quot;,argv[0]);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	// open and configure i2c channel. (/dev/i2c-0 for example)&lt;br /&gt;
	if(i2c_open(argv[1]) &amp;lt; 0){&lt;br /&gt;
		printf(&amp;quot;i2c_open failed\n&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
        &lt;br /&gt;
        writeByte(GPPUA, 0xFF); // set port B pullups on&lt;br /&gt;
	writeByte(IODIRA, 0xFF); // setto port A tutti input&lt;br /&gt;
        writeByte(GPINTENA,0xFF); //Abilita l'interrupt sul portB&lt;br /&gt;
        writeByte(DEFVALA,0xFF); //Setta il valore di default dei pin del port B se un un pin non Ã¨ a uno emette interrupt&lt;br /&gt;
        writeByte(INTCONA,0x00);  //Setta il valore di per il confronto se a 1 compara con il valore di DEFVAL altrimenti controlla le variazioni di stato&lt;br /&gt;
        writeByte(GPIOA,0x00); //setto a zero tutti i bit del port A, anche se probabilmente non è mportante essendo il pullup a on&lt;br /&gt;
	writeByte(IODIRB,0x00); // setto il port b come output&lt;br /&gt;
        &lt;br /&gt;
        while (1)&lt;br /&gt;
        {&lt;br /&gt;
            tv.tv_sec = 30;&lt;br /&gt;
            tv.tv_usec = 0;&lt;br /&gt;
            val = select(pin25+1, NULL, NULL, &amp;amp;set, &amp;amp;tv);&lt;br /&gt;
            if(val &amp;gt; 0)&lt;br /&gt;
            {&lt;br /&gt;
              if(FD_ISSET(pin25,&amp;amp;set))&lt;br /&gt;
              {&lt;br /&gt;
                write(1,&amp;quot;evento su pin 25\n&amp;quot;,17);&lt;br /&gt;
                /* antirimbalzo */&lt;br /&gt;
                tv.tv_sec = 0;&lt;br /&gt;
                tv.tv_usec = 50000;&lt;br /&gt;
                val = select(0, NULL, NULL, NULL, &amp;amp;tv);&lt;br /&gt;
                /* fine antirimbalzo */&lt;br /&gt;
                read(pin25,NULL,0);&lt;br /&gt;
               }&lt;br /&gt;
              else write(1,&amp;quot;???\n&amp;quot;,4);&lt;br /&gt;
              }&lt;br /&gt;
            else {&lt;br /&gt;
		 FD_ZERO(&amp;amp;set);&lt;br /&gt;
		 FD_SET(pin25,&amp;amp;set);&lt;br /&gt;
		 write(1,&amp;quot;TIMEOUT\n&amp;quot;,8);&lt;br /&gt;
		 }&lt;br /&gt;
          // Port A -&amp;gt; Inputs&lt;br /&gt;
          data = readByte (GPIOA) ;&lt;br /&gt;
	  data = (data^0xff); // metto in xor con una maschera di 1 per avere il giusto valore in uscita&lt;br /&gt;
          printf(&amp;quot;RECEIVED: %.2X\n&amp;quot;,data);&lt;br /&gt;
	  // Port B -&amp;gt; Output&lt;br /&gt;
	  writeByte(GPIOB,data);&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
         close(i2c_fd);&lt;br /&gt;
         return 0;&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Può essere compilato con:&lt;br /&gt;
 gcc test_i2c.c -o test_i2c&lt;br /&gt;
&lt;br /&gt;
Per lanciarlo:&lt;br /&gt;
 ./test_i2c /dev/i2c-1&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=669</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=669"/>
		<updated>2013-04-13T23:01:31Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione/Configurazione LIRC e test di funzionamento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo del pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessita più della ricompilazione del kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_1, KEY_2, KEY_3, KEY_4.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_2&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupa essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio disabilitare.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta il relativo led si accenderà, mentre premendo per la seconda volta lo stesso tasto si spegnerà.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=668</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=668"/>
		<updated>2013-04-13T22:56:36Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione/Configurazione LIRC e test di funzionamento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo del pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessita più della ricompilazione del kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_1, KEY_2, KEY_3, KEY_4.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_2&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupa essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio disabilitare.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta i led si accenderanno, mentre premendo per la seconda volta lo stesso tasto si spegneranno.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=667</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=667"/>
		<updated>2013-04-13T22:53:21Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione/Configurazione LIRC e test di funzionamento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo del pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessità di dover ricompilare il kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_1, KEY_2, KEY_3, KEY_4.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_2&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupa essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio disabilitare.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta i led si accenderanno, mentre premendo per la seconda volta lo stesso tasto si spegneranno.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=666</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=666"/>
		<updated>2013-04-13T22:45:10Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione/Configurazione LIRC e test di funzionamento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo del pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessità di dover ricompilare il kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_0, KEY_1, KEY_2, KEY_3.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_0&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupea essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome del telecomando che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio spegnere.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta i led si accenderanno, mentre premendo per la seconda volta lo stesso tasto invece si spegneranno.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=665</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=665"/>
		<updated>2013-04-13T22:43:24Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Installazione/Configurazione LIRC e test di funzionamento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo del pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessità di dover ricompilare il kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_1, KEY_2, KEY_3, KEY_4.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_0&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupea essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome del telecomando che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio spegnere.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta i led si accenderanno, mentre premendo per la seconda volta lo stesso tasto invece si spegneranno.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=664</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=664"/>
		<updated>2013-04-13T22:42:28Z</updated>

		<summary type="html">&lt;p&gt;Aldus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;br /&gt;
&lt;br /&gt;
Il VS1838B ha 3 piedini (1 OUTPUT ,2 GND, 3 VCC). E' stato collegato con il piedino 1 alla GPIO23 che sarà il nostro ingresso per i segnali che poi dovranno essere decodificati da LIRC http://www.lirc.org ,  &lt;br /&gt;
il piedno 2 a GROUND e il piedino 3 alla 3,3V.&lt;br /&gt;
&lt;br /&gt;
Mentre i miei &amp;quot;stupendi e luminescenti&amp;quot; led blu sono stati collegati alla GPIO17,GPIO27,GPIO24 e GPIO25 che fungeranno da OUTPUT per l'accensione e lo spegnimento di questi (o qualsiasi altra cosa).&lt;br /&gt;
&lt;br /&gt;
==Installazione/Configurazione LIRC e test di funzionamento==&lt;br /&gt;
Di fondamentale importanza è stato l'utilizzo della pacchetto LIRC (http://www.lirc.org/) che è stato incluso nelle ultime versioni di Raspbian &lt;br /&gt;
e quindi non si necessità di dover ricompilare il kernel per poter abilitare i suoi moduli.&lt;br /&gt;
L'installazione è la configurazione di LIRC è molto semplice, per prima cosa installiamo il pacchetto eseguendo il comando:&lt;br /&gt;
 sudo apt-get install lirc&lt;br /&gt;
Aggiungiamo queste righe al file /etc/modules&lt;br /&gt;
 lirc_dev&lt;br /&gt;
 lirc_rpi gpio_in_pin=23&lt;br /&gt;
in cui abilitiamo i moduli e impostiamo che i segnali arriveranno dall'output del ricevitore infrarossi sulla GPIO23&lt;br /&gt;
Modifichiamo/Creiamo il file /etc/lirc/hardware.conf e aggiungiamo la seguente configurazione per il nostro hardware:&lt;br /&gt;
 LIRCD_ARGS=&amp;quot;--uinput&amp;quot;&lt;br /&gt;
 LOAD_MODULES=true&lt;br /&gt;
 DRIVER=&amp;quot;default&amp;quot;&lt;br /&gt;
 DEVICE=&amp;quot;/dev/lirc0&amp;quot;&lt;br /&gt;
 MODULES=&amp;quot;lirc_rpi&amp;quot;&lt;br /&gt;
 LIRCD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
 LIRCMD_CONF=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ricarichiamo la configurazione eseguendo i comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
&lt;br /&gt;
Ora per testare che effettivamente il nostro ricevitore infrarossi sia stato collegato bene possiamo dare i seguenti comandi:&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 mode2 -d /dev/lirc0&lt;br /&gt;
&lt;br /&gt;
Ora puntando il telecomando verso il ricevitore e premendo un tasto dovremmo vendere comparire delle righe denominate &amp;quot;space&amp;quot; e &amp;quot;pulse&amp;quot;, se ciò avviene il tutto è stato configurato bene,&lt;br /&gt;
se ciò non avviene ricontrollate che abbiate eseguito tutti i suddetti passi come descritto.&lt;br /&gt;
&lt;br /&gt;
Il prossimo passo è quello di mappare i nostri tasti del telecomando con alcune key che potete scegliere dal namespace valido dando il &lt;br /&gt;
seguente comando:&lt;br /&gt;
 irrecord --list-namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora utilizzando sempre irrecord creiamo la nostra &amp;quot;mappatura&amp;quot; delle frequenze eseguendo i comandi:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
 irrecord -d /dev/lirc0 /home/pi/lircd.conf&lt;br /&gt;
&lt;br /&gt;
Seguite le istruzioni riportare e assegnate le chiavi del namespace che preferite , io per il mio esperimento ho scelto KEY_1, KEY_2, KEY_3, KEY_4.&lt;br /&gt;
Per concludere la mappatura dei vostri tasti premete invio e sarà generato il file di configurazione che al suo interno sarà del tipo:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  begin remote&lt;br /&gt;
  name  rasptest&lt;br /&gt;
  flags RAW_CODES|CONST_LENGTH&lt;br /&gt;
  eps            30&lt;br /&gt;
  aeps          100&lt;br /&gt;
  gap          106713&lt;br /&gt;
      begin raw_codes&lt;br /&gt;
            name KEY_0&lt;br /&gt;
             8891    4442     558     559     535     583&lt;br /&gt;
              565     535     563     554     535     561&lt;br /&gt;
              586     536     557     558     538     581&lt;br /&gt;
              565    1652     534    1670     577    1647&lt;br /&gt;
              590    1633     554    1682     556    1679&lt;br /&gt;
              565    1637     552    1682     555     561&lt;br /&gt;
              536    1667     571    1675     569     535&lt;br /&gt;
              563    1671     566     534     557     559&lt;br /&gt;
              536     582     564    1653     536     560&lt;br /&gt;
              587     535     564    1650     586     535&lt;br /&gt;
              556    1658     586    1633     555    1682&lt;br /&gt;
              562&lt;br /&gt;
            name KEY_1&lt;br /&gt;
             8938    4419     585     512     556     540&lt;br /&gt;
              556     581     592     493     574     540&lt;br /&gt;
              555     588     584     495     572     559&lt;br /&gt;
              535    1683     556    1657     612    1608&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ora copiatelo nelle configurazioni di lirc:&lt;br /&gt;
 &lt;br /&gt;
 sudo mv /home/pi/lircd.conf /etc/lirc/lircd.conf&lt;br /&gt;
&lt;br /&gt;
e ricaricatelo con:&lt;br /&gt;
 sudo /etc/init.d/lirc start&lt;br /&gt;
 sudo /etc/init.d/lirc stop&lt;br /&gt;
&lt;br /&gt;
Ora potete testare la mappatura del telecomando appena configurato dando il comando:&lt;br /&gt;
 irw&lt;br /&gt;
&lt;br /&gt;
Ad ogni tasto del telecomando premuto comparirà il tasto che gli è stato mappato con accanto il nome del telecomando (nel mio caso &amp;quot;rasptest&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ora scriviamo la configurazione per irexec che si occupea essenzialmente di eseguire dei comandi sul nostro raspbian, mentre nel nostro caso richiamerà il programma dello step successivo:&lt;br /&gt;
&lt;br /&gt;
Quindi creiamo il file .lircrc in /home/pi e inseriamo la seguente configurazione:&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -a 17 //comando eseguito alla prima pressione del tasto mappato su KEY_1&lt;br /&gt;
    config = sudo python test_led_2.py -s 17 // comando eseguito alla seconda pressione del tasto mappato su KEY_1 &lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_2&lt;br /&gt;
    config = sudo python test_led_2.py -a 27&lt;br /&gt;
    config = sudo python test_led_2.py -s 27&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_3&lt;br /&gt;
    config = sudo python test_led_2.py -a 24&lt;br /&gt;
    config = sudo python test_led_2.py -s 24&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
 begin&lt;br /&gt;
    prog = irexec&lt;br /&gt;
    remote = rasptest&lt;br /&gt;
    button = KEY_4&lt;br /&gt;
    config = sudo python test_led_2.py -a 25&lt;br /&gt;
    config = sudo python test_led_2.py -s 25&lt;br /&gt;
    repeat = 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rasptest&amp;quot; è il nome del telecomando che avevo associato al mio telecomando, lo trovate comunque nel file /etc/lirc/lircd.conf (parametro &amp;quot;name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dovendo abilitare dei pin della GPIO ho scritto questo banalissimo programma che in base ai parametri passati abilita e disabilita il relativo pin della GPIO.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 import sys, getopt&lt;br /&gt;
  def main(argv):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setwarnings(False)&lt;br /&gt;
    outputOn = -1&lt;br /&gt;
    outputOff = -1&lt;br /&gt;
    try:&lt;br /&gt;
       opts, args = getopt.getopt(argv,&amp;quot;ha:s:&amp;quot;,[&amp;quot;acceso=&amp;quot;,&amp;quot;spento=&amp;quot;])&lt;br /&gt;
       except getopt.GetoptError:&lt;br /&gt;
         print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
         sys.exit(2)&lt;br /&gt;
       for opt, arg in opts:&lt;br /&gt;
         if opt == '-h':&lt;br /&gt;
           print 'test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt;'&lt;br /&gt;
           sys.exit()&lt;br /&gt;
         elif opt in (&amp;quot;-a&amp;quot;, &amp;quot;--acceso&amp;quot;):&lt;br /&gt;
           outputOn = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-s&amp;quot;, &amp;quot;--spento&amp;quot;):&lt;br /&gt;
           outputOff = int(arg)&lt;br /&gt;
       if outputOn != -1:&lt;br /&gt;
         print 'Abilito &amp;quot;', outputOn&lt;br /&gt;
         GPIO.setup(outputOn,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOn, GPIO.HIGH)&lt;br /&gt;
       if outputOff != -1:&lt;br /&gt;
         print 'Disabilito &amp;quot;', outputOff&lt;br /&gt;
         GPIO.setup(outputOff,GPIO.OUT)&lt;br /&gt;
         GPIO.output(outputOff, GPIO.LOW)&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
 test_led_2.py -a &amp;lt;GPIOpin_led_on&amp;gt; -s &amp;lt;GPIOpin_led_off&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-a sta per la GPIO che voglio abilitare e -s sta per la GPIO che voglio spegnere.&lt;br /&gt;
&lt;br /&gt;
ora eseguendo il comando &lt;br /&gt;
 irexec &amp;amp;&lt;br /&gt;
&lt;br /&gt;
e premendo i tasti che abbiamo mappato, noteremo che la prima volta i led si accenderanno, mentre premendo per la seconda volta lo stesso tasto invece si spegneranno.&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=663</id>
		<title>Accendere e spegnere 4 led tramite un ricevitore a infrarossi</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Accendere_e_spegnere_4_led_tramite_un_ricevitore_a_infrarossi&amp;diff=663"/>
		<updated>2013-04-13T21:55:46Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hardware==&lt;br /&gt;
E' stato usato un Raspberry PI modello B rev2, &lt;br /&gt;
un ricevitore infrarossi universale che lavora sui 38khz (VS1838B), &lt;br /&gt;
un mini telecomando universale da 38khz e 4 led blu (per gli altri colori probabilmente sarebbe il caso di inserire anche delle resistenze)&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Applicazioni_di_Raspberry_PI&amp;diff=662</id>
		<title>Applicazioni di Raspberry PI</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Applicazioni_di_Raspberry_PI&amp;diff=662"/>
		<updated>2013-04-13T21:46:55Z</updated>

		<summary type="html">&lt;p&gt;Aldus: /* Radiocomandi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== firewall ===&lt;br /&gt;
=== access point ===&lt;br /&gt;
&lt;br /&gt;
[[Raspberry PI come access point: l'esempio dell'AP usato al non-corso]]&lt;br /&gt;
&lt;br /&gt;
=== Piratebox ===&lt;br /&gt;
=== centralino asterisk ===&lt;br /&gt;
=== domotica gestione luci ===&lt;br /&gt;
&lt;br /&gt;
[[Interfacciare un Rele']]&lt;br /&gt;
&lt;br /&gt;
[[Rivelatore di 230v]]&lt;br /&gt;
&lt;br /&gt;
[[Una ciabatta controllata da USB]]&lt;br /&gt;
&lt;br /&gt;
[[Leggere un pulsante su GPIO con antirimbalzo software]]&lt;br /&gt;
&lt;br /&gt;
=== domotica controllo consumi elettrici ===&lt;br /&gt;
&lt;br /&gt;
[[Misurare la corrente con un anello amperometrico]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare la corrente dal contatore elettronico]]&lt;br /&gt;
&lt;br /&gt;
=== domotica termostato gestione caldaia ===&lt;br /&gt;
&lt;br /&gt;
[[Misurare la Temperatura]]&lt;br /&gt;
&lt;br /&gt;
[[Termostato]]&lt;br /&gt;
&lt;br /&gt;
=== lavagna multimediale ===&lt;br /&gt;
=== Laboratorio scolastico (linux terminal server) ===&lt;br /&gt;
&lt;br /&gt;
:[[LTSP|Laboratorio/Aula informatica LTSP]]&lt;br /&gt;
: ..&lt;br /&gt;
: ..&lt;br /&gt;
&lt;br /&gt;
=== Parata ParTot: laboratorio per una installazione di post-elettronica in salsa di software libero ===&lt;br /&gt;
La parata ParTot quest'anno si terrà il 15 giugno e ci sarà un laboratorio ad essa collegato per creare una installazione &amp;quot;toccare per credere&amp;quot;&lt;br /&gt;
http://www.fest-festival.net/index/index.php/progetti/parata-par-tot&lt;br /&gt;
&lt;br /&gt;
Questa la presentazione provvisoria del laboratorio:&lt;br /&gt;
Perfetta integrazione di materiali biologici con pura elettronica e informatica libera: useremo patate e cetrioli come terminazioni “nervose” per pilotare microcomputer; svilupperemo un software per elaborare questi segnali e creare ambientazioni luminose e sonore con effetti stupefacenti. Il tutto ovviamente riciclando rifiuti elettronici e a risparmio energetico, anche perchè l'energia elettrica potrebbe essere prodotta dalle nostre gambe su apposite cyclette. Componentistica: Makey Makey, raspberry, python, led ...&lt;br /&gt;
&lt;br /&gt;
Il laboratorio sarà coordinato dalla Ofpcina&lt;br /&gt;
&lt;br /&gt;
=== remote console per server ===&lt;br /&gt;
&lt;br /&gt;
[[Collegare una porta seriale RS-232]]&lt;br /&gt;
&lt;br /&gt;
=== PVR (Personal Video Recorder, DVB, gateway televisivo ===&lt;br /&gt;
&lt;br /&gt;
(se non è la sezione giusta, spostate pure)&lt;br /&gt;
&lt;br /&gt;
''Opzioni da approfondire: [http://elinux.org/RPi_VerifiedPeripherals#USB_TV_Tuners_and_DVB_devices elenco su elinux]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sto sperimentando un sistema basilare per videoregistrare da DVB-T (digitale terrestre) con il Raspberry Pi.&lt;br /&gt;
Al momento sto utilizzando:&lt;br /&gt;
* Raspberry Pi (modello B, 256 MB di RAM)&lt;br /&gt;
* Scheda DVB-T August DVB-T205&lt;br /&gt;
* aggiungerò disco fisso esterno alimentato, una volta che il setup mi soddisferà&lt;br /&gt;
&lt;br /&gt;
==== Scheda per la ricezione ====&lt;br /&gt;
&lt;br /&gt;
La August DVB-T205 non è stata una scelta particolarmente felice: distribuiscono driver per Linux, ma solo per kernel della serie 2.x.&lt;br /&gt;
Per fortuna c'è un porting già pronto, che ho clonato in [[https://github.com/alberanid/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0 questo repository]].&lt;br /&gt;
Seguendo le istruzioni è relativamente semplice ricompilarlo per il proprio kernel 3.1.9 o 3.2.x&lt;br /&gt;
&lt;br /&gt;
==== Prime prove ====&lt;br /&gt;
&lt;br /&gt;
Andranno installati anche tutti i soliti pacchetti necessari in questi casi (farò l'elenco completo prossimamente), come dvb-tools, dvbtune e dvb-apps.&lt;br /&gt;
Per una prima prova, basterà eseguire:&lt;br /&gt;
 scan /usr/share/dvb/dvb-t/it-All | tee channels.conf&lt;br /&gt;
&lt;br /&gt;
Alla fine, nel file channels.conf avrete una lista dei canali che potete ricevere.&lt;br /&gt;
Ora apriamo un secondo terminale e sintonizziamoci su Rai 5, per vedere Passepartout di/con/su/per Philippe Daverio, che sappiamo bene essere l'unica cosa decente in tv:&lt;br /&gt;
 tzap -c channels.conf -r 'Rai 5'&lt;br /&gt;
&lt;br /&gt;
Se signal non è zero, siamo a cavallo.&lt;br /&gt;
&lt;br /&gt;
Tornando sul primo terminale (tzap va lasciato aperto), possiamo provare a registrare:&lt;br /&gt;
 cat /dev/dvb/adapter0/dvr0 &amp;gt; rai5.mpeg2&lt;br /&gt;
&lt;br /&gt;
Lasciate passare qualche minuto, interrompete con ctrl+c e vedrete che il file rai5.mpeg2 conterrà il vostro streaming audio e video.&lt;br /&gt;
&lt;br /&gt;
==== MythTV ====&lt;br /&gt;
&lt;br /&gt;
Non sono sicuro sia la scelta migliore, ma la mia idea è installarci un backend MythTV, ed eventualmente un frontend web.&lt;br /&gt;
Devo ancora configurarlo per bene, ma di base bisogna creare l'opportuno database su MySQL, lanciare X11 ed eseguire mythtv-setup (fare riferimento ad altre guide).&lt;br /&gt;
Una volta completata la configurazione, il backend è pronto a partire. Una cosa su cui ho perso un po' di tempo, è il fatto che il backend non partiva perché di default il mio Raspberry non supporta IPv6, ed in quel caso MythTV non parte senza alcun messaggio di errore significativo.&lt;br /&gt;
Il supporto IPv6 è comunque incluso nel kernel, ed è sufficiente un modprobe ipv6 (e poi aggiungere ipv6 in /etc/modules, in modo che venga caricato ad ogni avvio) per farlo partire.&lt;br /&gt;
&lt;br /&gt;
Il problema principale di MythTV è la sua pesantezza: richiede MySQL ed un backend sempre in esecuzione. Inoltre, a meno che non si voglia utilizzarlo con il suo frontend sul client (che impone di aver installato su client e server la stessa versione di MythTV), a questo si deve aggiungere apache e mythweb, per avere una interfaccia via browser.&lt;br /&gt;
Senza overclock, lo streaming video tra backend e frontend è praticamente impossibile (e forse anche con overclock); restano invece perfettamente funzionanti le altre funzionalità, come la registrazione.&lt;br /&gt;
&lt;br /&gt;
Dato che a me interessa solo la possibilità di videoregistrare, forse proverò anche http://andreas.vdr-developer.org/vdradmin-am/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== vdradmin-am ====&lt;br /&gt;
&lt;br /&gt;
Vdradmin-am è una interfaccia web per '''vdr''' ( http://www.tvdr.de/ , che di suo già avrebbe una interfaccia web, forse un po' meno usabile, ma comunque funzionale).&lt;br /&gt;
Vdr si presenta molto più leggero e performante di MythTV, e non richiede MySQL.&lt;br /&gt;
Sarei orientato ad utilizzarlo; ora lo scoglio principale è dovuto al fatto che non ho un hub usb alimentato disponibile: collegando insieme la scheda dvb-t ed una scheda wireless usb, il raspberry non regge (neanche con un alimentatore da 1A).&lt;br /&gt;
Me ne procurerò uno quanto prima ed proseguirò con l'installazione ed il setup.&lt;br /&gt;
&lt;br /&gt;
=== Videosorveglianza ===&lt;br /&gt;
=== Radiocomandi ===&lt;br /&gt;
[[Accendere e spegnere 4 led tramite un ricevitore a infrarossi]]&lt;br /&gt;
&lt;br /&gt;
=== Raspberry e Arduino insieme: interfacciamento ===&lt;br /&gt;
=== Uno smart player audio da abbinare allo stereo casalingo ===&lt;br /&gt;
&lt;br /&gt;
Sto viluppando un player python basato su gstreamer senza interfaccia se non quella su dbus che segue lo standard mpris2 http://specifications.freedesktop.org/mpris-spec/latest/&lt;br /&gt;
Questo permetterebbe di usare ruspberry come player remoto senza consumare inutili risorse.&lt;br /&gt;
Seguono una cli su dbus per getire il player, una gui pygtk sempre su dbus e una interfaccia web con cherrypy sempre a partire da dbus.&lt;br /&gt;
Sarebbe interessante abbinare un dac amplifier magari basato su t-amp.&lt;br /&gt;
Per il momento il player è sviluppato all'interno di un software per l'automazione di una emittente radiofonica: http://autoradiobc.sf.net (vedi svn)&lt;br /&gt;
&lt;br /&gt;
=== Cambiamonete / servizi a pagamento / Totem informativo ===&lt;br /&gt;
&lt;br /&gt;
Raspberry per gestire servizi a pagamento.&lt;br /&gt;
Gestire tramite python il protocollo cctalk http://en.wikipedia.org/wiki/CcTalk e quindi dispositivi per accettare monete e banconote.&lt;br /&gt;
Realizzare quindi servizi a pagamento tramite Totem informativi &amp;amp; Chioschi ...&lt;br /&gt;
Driver CCTALK per gettoniera già disponibile insieme ad hardware di test.&lt;br /&gt;
Aggiungere magari un sensore di prossimità per il risparmio energetico attivando il display solo in presenza di utenti.&lt;br /&gt;
&lt;br /&gt;
=== Mini centrale di Controllo Accessi ===&lt;br /&gt;
&lt;br /&gt;
Il Raspberry può diventare una centralina in grado di controllare l’apertura di cancelli pedonali o automatici, porte scorrevoli o sezionali interfacciandola ad un lettore di badge magnetici commerciale. &lt;br /&gt;
Occorre implementare il protocollo Wiegand [ http://en.wikipedia.org/wiki/Wiegand_interface ] per dialogare attraverso un cavo dati di lunghezza fino a 100mt (in condizioni ottimali). La centralina potrebbe funzionare in stand-alone acquisendo in auto-apprendimento il codice delle tessere da autorizzare ad accedere oppure creare una lista di codici all’interno di un file modificabile da Raspbian. Eventualmente potrebbe essere previsto un buffer per contenere fino a un certo numero di timbrature, associate alla data e all’ora in cui è avvenuto il passaggio della tessera per effettuare una sorta di consultazione dello storico eventi.&lt;br /&gt;
&lt;br /&gt;
=== Lettura e monitoraggio temperatura ===&lt;br /&gt;
&lt;br /&gt;
*[[Raspberry_Pi-Lettura_Temperatura|Lettura Temperatura]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display LCD ===&lt;br /&gt;
&lt;br /&gt;
*[[Nokia 5110 LCD 84x48 px]]&lt;br /&gt;
&lt;br /&gt;
=== Chiavette 3G USB ===&lt;br /&gt;
&lt;br /&gt;
*[[Huawei E353 HSPA+ Usb Stick]]&lt;br /&gt;
&lt;br /&gt;
*[[Input/Output tramite sms]]&lt;br /&gt;
&lt;br /&gt;
=== qui la lista continua con la vostra fantasia ===&lt;/div&gt;</summary>
		<author><name>Aldus</name></author>
	</entry>
</feed>