<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sistema Allarme Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/sistema-allarme/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/sistema-allarme/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Tue, 16 Mar 2021 07:28:48 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Sistema Allarme Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/sistema-allarme/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pi Pico usare gli interrupt</title>
		<link>https://logicaprogrammabile.it/pi-pico-usare-gli-interrupt/</link>
					<comments>https://logicaprogrammabile.it/pi-pico-usare-gli-interrupt/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 15 Mar 2021 07:00:49 +0000</pubDate>
				<category><![CDATA[Tutorial Raspberry PI]]></category>
		<category><![CDATA[Interrupt]]></category>
		<category><![CDATA[Sistema Allarme]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6605</guid>

					<description><![CDATA[<p>Come gestire un interrupt con la Raspberry Pi Pico In un precedente articolo, utilizzando Arduino UNO avevamo parlato degli interrupt, spiegando cosa sono e come gestirli. Anche la Raspberry Pi Pico, come la maggior parte dei microcontrollori è in grado di gestire gli interrupt. Utilizzando...</p>
<p>The post <a href="https://logicaprogrammabile.it/pi-pico-usare-gli-interrupt/">Pi Pico usare gli interrupt</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Come gestire un interrupt con la Raspberry Pi Pico</h2>
<p>In un precedente articolo, utilizzando <strong>Arduino UNO</strong> avevamo <a href="https://logicaprogrammabile.it/progetti-arduino-gestione-degli-interrupt/">parlato degli interrupt</a>, spiegando cosa sono e come gestirli. Anche la <a href="https://www.raspberrypi.org/products/raspberry-pi-pico/">Raspberry Pi Pico</a>, come la maggior parte dei microcontrollori è in grado di gestire gli interrupt. Utilizzando il linguaggio <a href="http://docs.micropython.org/en/latest/">Micropython</a> questa operazione diventa molto semplice.</p>
<p>Questo meccanismo è molto utile perché sostituisce il <a href="https://it.wikipedia.org/wiki/Polling_(informatica)">meccanismo di polling</a> che in un microcontrollore può essere molto svantaggioso. Ad esempio se devo controllare ciclicamente lo stato di un ingresso non posso mettere il microcontrollore in sleep mode perchè andrei a fermare il controllo del pin mentre un interrupt viene gestito dall&#8217;hardware e quindi è possibile superare questo limite.</p>
<p>Nel caso della Pico, programmata usando Micropython non sono sicuro se questa funzione sia disponibile anche quando il microcontrollore è in sleep mode.</p>
<p><span id="more-6605"></span></p>
<h2>Gestire le interruzioni</h2>
<p>Come accade per Arduino dobbiamo definire una funzione (che verrà richiamata quando avviene l&#8217;evento di interrupt) e definire un pin capace di gestire l&#8217;interrupt.</p>
<p>Nello schema seguente viene mostrato come ho eseguito i collegamenti di un circuito di test.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-6610" src="https://logicaprogrammabile.it/wp-content/uploads/2021/03/Pico_irq.png" alt="Pico irq" width="452" height="351" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/03/Pico_irq.png 452w, https://logicaprogrammabile.it/wp-content/uploads/2021/03/Pico_irq-300x233.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/03/Pico_irq-150x116.png 150w" sizes="(max-width: 452px) 100vw, 452px" /></p>
<p>Mentre il codice seguente descrive le istruzioni necessarie a gestire l&#8217;interrupt:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine
import utime

#definisco il pin 0 come ingresso
#su questo pin è collegato un pulsante con una
#resistenza di pull down
button = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_DOWN)
#definisco il pin 1 come uscita
#su questo pin collego un led e una resistenza da 330 ohm
led = machine.Pin(1, machine.Pin.OUT)

#definisco una funzione che verrà richiamata quando
#viene scatenato l'interrupt
def ev_handler(pin):
    print("bottone premuto")
    
#associo al pin in ingresso la funzione di interrupt
#l'evento videne generato usando il parametro RISING
button.irq(trigger=machine.Pin.IRQ_RISING, handler=ev_handler)

#loop che fa blinkare il led
while True:
    led.toggle()
    utime.sleep(1)</pre>
<p>Dopo le dichiarazione dei pi e della funzione il codice entra nel <strong>ciclo while</strong> ed esegue continuamente la commutazione del pin 1. Non appena premiamo il pulsante collegato al pin 0 viene generato un evento che interrompe il ciclo e richiamata la funzione <strong>ev_handler()</strong>. Terminata l&#8217;esecuzione del codice nella funzione <strong>ev_handler()</strong> viene ripresa l&#8217;esecuzione del codice del ciclo <strong>while()</strong>.</p>
<p>Da notare che l&#8217;interruzione non è asincrona quindi il codice nella funzione <strong>ev_handler()</strong> deve essere il più rapido possibile per non impattare sul codice del ciclo while().</p>
<p>The post <a href="https://logicaprogrammabile.it/pi-pico-usare-gli-interrupt/">Pi Pico usare gli interrupt</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/pi-pico-usare-gli-interrupt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come creare un sistema di allarme con Arduino</title>
		<link>https://logicaprogrammabile.it/come-creare-sistema-di-allarme-arduino/</link>
					<comments>https://logicaprogrammabile.it/come-creare-sistema-di-allarme-arduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 23 Aug 2011 12:42:23 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[lente di Fresnel]]></category>
		<category><![CDATA[PIR]]></category>
		<category><![CDATA[Sensore movimento]]></category>
		<category><![CDATA[Sistema Allarme]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1835</guid>

					<description><![CDATA[<p>Utilizzare un sensore PIR per creare un rilevatore di movimento per sistema di allarme Un rilevatore di movimento è utile non solo per i sistemi di allarme domestici ma anche per rilevare animali che si intrufolano in ambienti chiusi o aperti. La realizzazione di questo...</p>
<p>The post <a href="https://logicaprogrammabile.it/come-creare-sistema-di-allarme-arduino/">Come creare un sistema di allarme con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare un sensore PIR per creare un rilevatore di movimento per sistema di allarme</h1>
<p>Un rilevatore di movimento è utile non solo per i sistemi di allarme domestici ma anche per rilevare animali che si intrufolano in ambienti chiusi o aperti.<br />
La realizzazione di questo sistema è semplice e richiede un investimento esiguo. Ho acquistato per circa 8€ un sensore PIR (Passive Infra-Red) della Parallax molto compatto che dispone di una <a href="http://it.wikipedia.org/wiki/Lente_di_Fresnel" target="_blank">lente di Fresnel</a> e di un circuito di amplificazione che lo rende molto sensibile e capace di rilevare corpi in movimento a distanze di qualche metro.<br />
I pin di collegamento di questo modulo sono tre di cui due per l&#8217;alimentazione ed uno per l&#8217;uscita del segnale.</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter wp-image-1838 size-full" title="PIR - Passive Infra Red " src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR.jpg" alt="Sensore infrarosso di movimento" width="250" height="250" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR.jpg 250w, https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR-150x150.jpg 150w" sizes="(max-width: 250px) 100vw, 250px" /></p>
<p style="text-align: left;">L&#8217;uscita è un singolo bit, alto quando viene rilevato un movimento e basso in mancanza di rilevamento. L&#8217;alimentazione del dispositivo può variare da 3 a 6 Vdc.<br />
Il sensore dispone anche di un selettore per aumentare o diminuire la sua sensibilità.</p>
<p><span id="more-1835"></span>Impiegare questo sensore in un circuito risulta veramente semplice sia nei collegamenti hardware sia nella gestione software.<br />
Vediamo insieme come impiegarlo utilizzando Arduino UNO con lo schema seguente:</p>
<p><img decoding="async" class="aligncenter wp-image-1841 size-full" title="PIR_Sensor_Arduino" src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR_Sensor_Arduino.gif" alt="Arduino PIR Sensor" width="311" height="269" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR_Sensor_Arduino.gif 311w, https://logicaprogrammabile.it/wp-content/uploads/2011/08/PIR_Sensor_Arduino-300x259.gif 300w" sizes="(max-width: 311px) 100vw, 311px" /></p>
<p>L&#8217;uscita del sensore è collegata al pin2 dell&#8217;Arduino UNO precedentemente configurato via software come ingresso. La resistenza da 10Kohm, posta tra il pin2 e la massa, serve per creare un riferimento verso certo (<a href="http://en.wikipedia.org/wiki/Pull-down_resistor" target="_blank">pull-down</a>) per evitare false letture.</p>
<p>Il codice di esempio permette di leggere, a tempi ciclici, lo stato dell&#8217;uscita del sensore PIR e di spedire tramite seriale questo valore. L&#8217;invio del dato risulta interessante per creare un log dei rilevamenti del sensore, magari per creare dei grafici o memorizzarli per una futura consultazione.<br />
Un sistema di allarme che si rispetti possiede giustamente un attuatore necessario a far demordere il tentativo di furto o intrusione tramite una sirena o degli indicatori luminosi. Questo può avvenire tramite i pin dell&#8217;Arduino non utilizzati per pilotare dei relè che agiscono sulla sirena o sulle luci.</p>
<pre class="lang:arduino decode:true">int StatoSensore = 0;

void setup()
{
//Init Seriale
Serial.begin(9600);
//Config porta 2 come ingresso
pinMode(2, INPUT);

}

void loop()
{
//leggo segnale Sensore PIR
StatoSensore = digitalRead(2);
//Invio dati alla seriale
Serial.print(StatoSensore);
//Lettura ogni secondo
delay(1000);

}</pre>
<p>&nbsp;</p>
<p>Sebbene questo codice funzioni, risulta poco efficace in quanto l&#8217;invio dei dati avviene a prescindere dallo stato rilevato dal sensore quindi credo sia meglio inviarli solamente quando questo rileva un movimento. Aggiungendo un blocco <strong>if</strong> otteniamo questa funzionalità:</p>
<pre class="lang:arduino decode:true ">/*
Marco Lai
Ago 2011
PIR Sensor with Parallax 555-28027
*/

int StatoSensore = 0;

void setup()
{
//Init Seriale
Serial.begin(9600);
//Config porta 2 come ingresso
pinMode(2, INPUT);

}

void loop()
{
//leggo segnale Sensore PIR
StatoSensore = digitalRead(2);

//invia i dati solo se rilevo un movimento
if (StatoSensore == HIGH)
//Invio dati alla seriale
Serial.println("PIR ATTIVO");

//Lettura ogni mezzo secondo
delay(500);

}</pre>
<p>&nbsp;</p>
<p>Il dato viene inviato tramite la porta USB per ogni rilevazione di movimento. Questi dati possono essere acquisiti tramite un software capace di leggere dalla porta seriale. Il software deve semplicemente configurarsi per leggere dalla stessa porta che hai selezionato per programmare l&#8217;Arduino UNO:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1854 size-full" title="Sistema di Allarme" src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_Com4.gif" alt="Seleziona porta dove è collegato Arduino Uno" width="400" height="341" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_Com4.gif 400w, https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_Com4-300x255.gif 300w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1855 size-full" title="Arduino_Com4_rc" src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_Com4_rc.gif" alt="Arduino in Risorse del Computer" width="283" height="207" /></p>
<p>Nel mio caso è la COM4 e di seguito uno spezzone di codice C# utilizzato per leggere dalla porta:</p>
<pre class="lang:c# decode:true ">//seleziono nome porta dove è mappato l'Arduino UNO
serialPort1.PortName = "COM4";
//apro la porta seriale
serialPort1.Open();
//creo un gestore di evento per la ricezione
serialPort1.DataReceived += new SerialDataReceivedEventHandler(Data_RX);</pre>
<p>&nbsp;</p>
<p>Data la sua utilità realizzare un sistema di allarme è, grazie a questo sensore, una procedura molto semplice e rapida da realizzare. Nulla ci vieta di utilizzare più sensori PIR per tenere sotto controllo più aree. Questo sensore avendo anche una buona corrente in uscita si presta ad essere collocato anche a diversi metri di distanza dalla board Arduino.</p>
<p>The post <a href="https://logicaprogrammabile.it/come-creare-sistema-di-allarme-arduino/">Come creare un sistema di allarme con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/come-creare-sistema-di-allarme-arduino/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
	</channel>
</rss>
