<?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>IOT Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/iot/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/iot/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 13 Nov 2022 10:22:09 +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>IOT Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/iot/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino MKR Zero e WIZ850io</title>
		<link>https://logicaprogrammabile.it/arduino-mkr-zero-wiz850io/</link>
					<comments>https://logicaprogrammabile.it/arduino-mkr-zero-wiz850io/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Sun, 13 Nov 2022 09:51:59 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Ethernet Shield]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[w5500]]></category>
		<category><![CDATA[wiz850]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6782</guid>

					<description><![CDATA[<p>Collegare una scheda ethernet WIZ850 ad Arduino MKR Arduino dispone di diverse shield che permettono di collegarci a una rete lan cablata come ad esempio la MKR ETH. Esistono sul mercato altri dispositivi che svolgono la stessa funzione con costi contenuti e form factor molto...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-mkr-zero-wiz850io/">Arduino MKR Zero e WIZ850io</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Collegare una scheda ethernet WIZ850 ad Arduino MKR</h1>
<p>Arduino dispone di diverse shield che permettono di collegarci a una rete lan cablata come ad esempio la <a href="https://amzn.to/3hCuwl6">MKR ETH</a>. Esistono sul mercato altri dispositivi che svolgono la stessa funzione con costi contenuti e form factor molto piccoli. Uno di questi e la scheda WIZ850io prodotta da <a href="https://amzn.to/3O1DLHt">WIZnet</a>, dotata di chip wiznet w5500 lo stesso utilizzato per la MKR ETH.</p>
<p>Questa scheda ha una dimensione del pcb di 25mm X 23mm e un costo di circa 20 euro. Di seguito la pin function della scheda:</p>
<figure id="attachment_6785" aria-describedby="caption-attachment-6785" style="width: 447px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-6785 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2022/11/wiz850io.png" alt="wiz850 form factor and pinfunction" width="447" height="320" srcset="https://logicaprogrammabile.it/wp-content/uploads/2022/11/wiz850io.png 447w, https://logicaprogrammabile.it/wp-content/uploads/2022/11/wiz850io-300x215.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2022/11/wiz850io-150x107.png 150w" sizes="(max-width: 447px) 100vw, 447px" /><figcaption id="caption-attachment-6785" class="wp-caption-text">wiz850io pins function</figcaption></figure>
<p>Come possiamo vedere l&#8217;alimentazione della scheda richiede una tensione di 3.3V, è quindi consigliato utilizzare schede con tensione di funzionano di 3.3v, questo per avere i livelli logici con questa tensione. Il bus di comunicazione è affidato all&#8217;interfaccia SPI. La figura seguente mostra i collegamenti tra una Arduino MKR Zero e la scheda WIZ850io:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6788" src="https://logicaprogrammabile.it/wp-content/uploads/2022/11/MKR_Zero_wiz850io.png" alt="MKR Zero connect to WIX850io" width="731" height="358" srcset="https://logicaprogrammabile.it/wp-content/uploads/2022/11/MKR_Zero_wiz850io.png 731w, https://logicaprogrammabile.it/wp-content/uploads/2022/11/MKR_Zero_wiz850io-300x147.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2022/11/MKR_Zero_wiz850io-150x73.png 150w, https://logicaprogrammabile.it/wp-content/uploads/2022/11/MKR_Zero_wiz850io-585x286.png 585w" sizes="(max-width: 731px) 100vw, 731px" /></p>
<p>in dettaglio i collegamenti descritti nella tabella seguente:</p>
<table align="center">
<tbody>
<tr>
<th>Pin Arduino</th>
<th>Pin WIZ850io</th>
</tr>
<tr>
<td>VCC</td>
<td>3.3V</td>
</tr>
<tr>
<td>GND</td>
<td>GND</td>
</tr>
<tr>
<td>Reset</td>
<td>RSTn</td>
</tr>
<tr>
<td>MISO (10)</td>
<td>MISO</td>
</tr>
<tr>
<td>SCK (9)</td>
<td>SCLK</td>
</tr>
<tr>
<td>MOSI (8)</td>
<td>MOSI</td>
</tr>
<tr>
<td>SS (7)</td>
<td>SCNn</td>
</tr>
</tbody>
</table>
<p>Per verificare se tutti i collegamenti sono stati eseguiti correttamente possiamo utilizzare il codice seguente (esempio linkstatus della libreria Arduino ethernet):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="cpp">#include &lt;SPI.h&gt;
#include &lt;Ethernet.h&gt;

void setup() {
  //inizializzo la wiz850io
  //il pin chip select è stato collegato al pin 7
  //della scheda arduino. se lo collegate in un altro pin dovete
  //modificare il numero del pin all'interno del metodo init()
  Ethernet.init(7);
  
  //inizializzazione seriale
  Serial.begin(9600);
}

void loop() {
  //verifico se il cavo lan è collegato e se esiste un link
  //con una periferica ethernet
  auto link = Ethernet.linkStatus();
  Serial.print("Link status: ");
  switch (link) {
    case Unknown:
      Serial.println("Unknown");
      break;
    case LinkON:
      Serial.println("ON");
      break;
    case LinkOFF:
      Serial.println("OFF");
      break;
  }
  delay(1000);
}</pre>
<p>Questa scheda permette di implementare una interfaccia di rete cablata in tutte le schede Arduino dotate di porta SPI.</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-mkr-zero-wiz850io/">Arduino MKR Zero e WIZ850io</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-mkr-zero-wiz850io/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MQTT, installare Mosquitto sul Raspberry PI</title>
		<link>https://logicaprogrammabile.it/mqtt-installare-mosquitto-raspberry-pi-progetti-iot/</link>
					<comments>https://logicaprogrammabile.it/mqtt-installare-mosquitto-raspberry-pi-progetti-iot/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 11 Jan 2021 07:00:45 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Raspberry PI]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[MQTT]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6442</guid>

					<description><![CDATA[<p>Utilizzare MQTT nei progetti iot MQTT (Message Queue Telemetry Transport) è un protocollo di comunicazione progettato per trasferire messaggi occupando una banda molto ridotta. Per questo viene spesso impiegato in ambito IoT. Il metodo di trasmissione e ricezione dei messaggi è asincrono e si basa...</p>
<p>The post <a href="https://logicaprogrammabile.it/mqtt-installare-mosquitto-raspberry-pi-progetti-iot/">MQTT, installare Mosquitto sul Raspberry PI</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare MQTT nei progetti iot</h1>
<p>MQTT (Message Queue Telemetry Transport) è un protocollo di comunicazione progettato per trasferire messaggi occupando una banda molto ridotta. Per questo viene spesso impiegato in ambito IoT. Il metodo di trasmissione e ricezione dei messaggi è asincrono e si basa su una architettura publish/subscribe (mittente/destinatario).</p>
<p>Il mittente ed il destinatario non possono però scambiarsi messaggi direttamente tra loro ma necessitano di un intermediario chiamato dispatcher o broker.</p>
<p>Lo scambio di dati avviene in questo modo: il mittente (publisher) invia un messaggio al dispatcher. I destinatari, a loro volta, scelgono quali messaggi ricevere comunicandolo al dispatcher. Il dispatcher quindi invia il messaggio solo ai dispositivi che si nono iscritti (subscribe) per la ricezione dei messaggi.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6446" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/pub_sub_mqtt.jpg" alt="" width="603" height="228" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/pub_sub_mqtt.jpg 603w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/pub_sub_mqtt-300x113.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/pub_sub_mqtt-150x57.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/pub_sub_mqtt-585x221.jpg 585w" sizes="(max-width: 603px) 100vw, 603px" /></p>
<p><span id="more-6442"></span></p>
<p>Se al dispatcher sono collegati diversi mittenti e destinatari come è possibile scegliere a chi mandare il messaggio o da chi riceverlo?</p>
<h2>MQTT utilizza i Topics</h2>
<p>Il meccanismo di scambio dati si basa utilizzando i topics, una struttura gerarchica simile a quella per la gestione delle directory in un files system.</p>
<p>Quindi il mittente decide un topic sul quale pubblica un messaggio, ad esempio</p>
<pre>/sensore1</pre>
<p>il destinatario può leggere il messaggio abbonandosi al topics:</p>
<pre>/sensore1</pre>
<p>La figura illustra quanto detto:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6447" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt.jpg" alt="" width="834" height="436" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt.jpg 834w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt-300x157.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt-150x78.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt-768x401.jpg 768w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/send_receiv_mqtt-585x306.jpg 585w" sizes="auto, (max-width: 834px) 100vw, 834px" /></p>
<p>Riepiloghiamo i concetti in questi pochi punti:</p>
<ul>
<li>I messaggi non sono inviati direttamente ai destinatari;</li>
<li>Viene utilizzato un dispatcher o broker che permette lo scambio dei messaggi tra mittenti(publisher) e destinatari(subscriber)</li>
<li>Il dispatcher organizza i messaggi in topics e gli ridistribuisce ai destinatari che si sono abbonati al topic.</li>
<li>Tutti i dispositivi collegati al dispatcher possono inviare o ricevere messaggi.</li>
<li>Solitamente il dispatcher non memorizza i messaggi.</li>
</ul>
<h2>Installare MOSQUITTO</h2>
<p>L&#8217;elemento fondamentale in una architettura <strong>MQTT</strong> è il dispatcher o <strong>broker</strong>. Se i nostri dispositivi sono collegati ad internet possiamo utilizzare un servizio web oppure nei casi di un sistema stand alone, utilizziamo un nostro broker da installare su una scheda Raspberry PI.</p>
<p>Un software open source che potrebbe essere utilizzato per i nostri lavori è <a href="https://mosquitto.org/">Eclipse Mosquitto</a>, un broker molto leggero installabile su single board computer come il Raspberry PI.</p>
<p>Apriamo un terminale sul nostro Raspberry, o colleghiamoci con un client ssh, digitiamo il seguente commando:</p>
<pre>sudo apt-get install mosquitto</pre>
<p>premiamo invio e attendiamo il download e l&#8217;installazione del software.</p>
<p>Testiamo l&#8217;installazione verificando che il broker MQTT sia in esecuzione:</p>
<pre>sudo service mosquitto status</pre>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6451" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mosquitto_status.jpg" alt="" width="757" height="402" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mosquitto_status.jpg 757w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mosquitto_status-300x159.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mosquitto_status-150x80.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mosquitto_status-585x311.jpg 585w" sizes="auto, (max-width: 757px) 100vw, 757px" /></p>
<p>in particolare bisogna notare la presenza della stringa Active: active (running).</p>
<p>Per fermare il servizio utilizziamo il seguente comando:</p>
<pre>sudo service mosquitto stop</pre>
<p>mentre per avviarlo digitiamo:</p>
<pre>sudo service mosquitto start</pre>
<p>oppure stoppare e riavviare il servizio con un singolo comando:</p>
<pre>sudo service mosquitto restart</pre>
<h2>Installare client MQTT</h2>
<p>Una volta installato il broker sul Raspberry PI eseguiamo delle prove utilizzando un programma per pubblicare un topic e un programma per abbonarsi.</p>
<p>Digitando il seguente comando installeremo quanto richiesto:</p>
<pre>sudo apt-get install mosquitto-clients</pre>
<p>Attendiamo il completamento dell&#8217;installazione e se non si sono verificati errori dovremmo avere disponibili i seguenti programmi</p>
<pre>mosquitto_sub
mosquitto_pub</pre>
<p>come si intuisce dal nome il primo è il programma che funge da <strong>subscriber</strong> mentre il secondo è il programma che funge da <strong>publisher</strong>.</p>
<p>Per poter eseguire un semplice test apriamo due finestre terminale o, se ci colleghiamo al Raspberry da un altro host, due sessioni ssh.</p>
<p>Sul primo terminale abboniamoci a un topic eseguendo questo commando:</p>
<pre>mosquitto_sub -h localhost -t "mio_topic"</pre>
<p>(ci stiamo abbonando al topic denominato <strong>mio_topic</strong> che viene gestito dal broker che gira sulla macchina <strong>localhost</strong>)</p>
<p>Nella seconda finestra terminale lanciamo il publisher per inviare un messaggio al broker sul topic <strong>mio_topic</strong>:</p>
<pre>mosquitto_pub -h localhost -t "mio_topic" -m "ciamo mondo"</pre>
<p>Nelle immagini seguenti potete osservare lo scambio dei messaggi</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6454" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic.jpg" alt="" width="757" height="402" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic.jpg 757w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic-300x159.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic-150x80.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic-585x311.jpg 585w" sizes="auto, (max-width: 757px) 100vw, 757px" /></p>
<p>Nel primo terminale mi metto in ascolto sul topic chiamato <strong>mio_topic</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6455" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_1-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>sul secondo terminale invio il messaggio &#8220;ciao mondo&#8221; al topic <strong>mio_topic</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6456" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_2.jpg" alt="" width="757" height="402" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_2.jpg 757w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_2-300x159.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_2-150x80.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mio_topic_2-585x311.jpg 585w" sizes="auto, (max-width: 757px) 100vw, 757px" /></p>
<p>Nel primo terminale osservo la ricezione del messaggio<strong> &#8220;ciao mondo&#8221;</strong>.</p>
<p>Questi due programmi sono molto utili per esercitarci e capire meglio come funziona il protocollo <strong>MQTT</strong>.</p>
<p>The post <a href="https://logicaprogrammabile.it/mqtt-installare-mosquitto-raspberry-pi-progetti-iot/">MQTT, installare Mosquitto sul Raspberry PI</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/mqtt-installare-mosquitto-raspberry-pi-progetti-iot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 passi per installare un webserver LAMP sul Raspberry PI</title>
		<link>https://logicaprogrammabile.it/5-passi-installare-webserver-lamp-raspberry-pi/</link>
					<comments>https://logicaprogrammabile.it/5-passi-installare-webserver-lamp-raspberry-pi/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 04 Jan 2021 07:00:29 +0000</pubDate>
				<category><![CDATA[Tutorial Raspberry PI]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[Servizio web]]></category>
		<category><![CDATA[Web Server]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6404</guid>

					<description><![CDATA[<p>Installare LAMP su Raspberry PI In quei progetti dove diverse schede interagiscono tra loro, scambiandosi e memorizzando dati, potrebbe risultare utile avere un mini server (LAMP) per la memorizzazione e l&#8217;elaborazione dei dati. In questo caso niente di più flessibile di un computer embedded come...</p>
<p>The post <a href="https://logicaprogrammabile.it/5-passi-installare-webserver-lamp-raspberry-pi/">5 passi per installare un webserver LAMP sul Raspberry PI</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Installare LAMP su Raspberry PI</h1>
<p>In quei progetti dove diverse schede interagiscono tra loro, scambiandosi e memorizzando dati, potrebbe risultare utile avere un mini server (LAMP) per la memorizzazione e l&#8217;elaborazione dei dati. In questo caso niente di più flessibile di un computer embedded come una Raspberry PI.</p>
<p>Nel mio caso mi sono trovato a realizzare un sistema composto da diverse schede Arduino MKRZero + MKR ETH che acquisiscono dati da dei sensori analogici. Questi dati invece di essere memorizzati su scheda SD ho deciso di inviarli ad un database locale, dato che le schede sono collegate alla stessa lan. Per limitare i costi ho inserito un Raspberry PI configurato come server LAMP (Linux + Apache + Mysql + Php).</p>
<p>In questo articolo vediamo come installare tutto il necessario per creare un server LAMP con Raspberry PI seguendo questi 5 passi:</p>
<ol>
<li><a href="#L1">Installare server web apache</a></li>
<li><a href="#L2">Installare motore PHP</a></li>
<li><a href="#L3">Installare database relazionale Mysql (MAriaDB)</a></li>
<li><a href="#L4">Installare software di gestione PhpMyAdmin</a></li>
<li><a href="#L5">Configurare utenti e privilegi</a></li>
</ol>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6434" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/schema.jpg" alt="" width="715" height="506" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/schema.jpg 715w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/schema-300x212.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/schema-150x106.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/schema-585x414.jpg 585w" sizes="auto, (max-width: 715px) 100vw, 715px" /></p>
<h2 id="L1">1. Installare Apache</h2>
<p>Il <a href="https://httpd.apache.org/">server Apache</a> permette di avere un server HTTP locale capace di elaborare le richieste dei client collegati alla stessa rete. Per l&#8217;installazione si utilizza il commando seguente :</p>
<pre>sudo apt-get install apache2</pre>
<p>Premiamo invio e alla richiesta di continuare digitiamo S e nuovamente invio</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6408" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190822-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Terminata l&#8217;installazione digitiamo il seguente comando per leggere l&#8217;indirizzo ip della scheda Raspberry PI</p>
<pre>hostname -I</pre>
<p>premendo invio verrà visualizzato l&#8217;ip assegnato alla scheda.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6410" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-190952-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>apriamo il browser su un pc della stessa rete e digitiamo nella barra degli indirizzi l&#8217;ip della scheda. Se il server apache è stato installato correttamente dovreste visualizzare una schermata come la seguente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-6411" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038.jpg" alt="" width="779" height="867" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038.jpg 812w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038-270x300.jpg 270w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038-135x150.jpg 135w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038-768x854.jpg 768w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191038-585x651.jpg 585w" sizes="auto, (max-width: 779px) 100vw, 779px" /></p>
<h2 id="L2">2. Installare PHP</h2>
<p>Il passo successivo è quello di installare il motore PHP che permetterà di eseguire tutti gli script php contenuti nelle pagine web. Digitiamo il seguente comando:</p>
<pre>sudo apt-get install php</pre>
<p>premiamo invio, confermiamo l&#8217;installazione digitando S e nuovamente invio.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6413" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191257-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Terminata l&#8217;installazione procediamo a verificare che il motore php sia stato installato correttamente. Portiamoci sulla directory seguente:</p>
<pre>cd /var/www/html/</pre>
<p>elenchiamo ora i file presenti nella cartella con il comando:</p>
<pre>ls -l</pre>
<p>dovrebbe esserci un solo file, index.html. rimuoviamolo con il seguente comando</p>
<pre>sudo rm index.html</pre>
<p>Ora utilizzando un editor di testo creiamo una nuova pagina , index.php, eseguendo questo comando</p>
<pre>sudo nano index.php</pre>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6415" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191731-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Premiamo invio e digitiamo nel&#8217;editor di testo nano la seguente istruzione</p>
<pre>&lt;?php echo(phpinfo()) ?&gt;</pre>
<p>Per salvare il file index.php premiamo sulla tastiera i tasti CTRL+O e per uscire i tasti CRTL+X</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6416" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191812-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>nuovamente eseguiamo un elenco dei files contenuti nella cartella html con il comando:</p>
<pre>ls -l</pre>
<p>dovremmo avere un solo file, index.php:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6417" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191840-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>dal browser precedentemente aperto ricarichiamo la pagina (oppure digitiamo nuovamente l&#8217;ip della scheda Raspberry) e se tutto sta girando correttamente dovremmo visualizzare le informazioni relative al motore php, come di seguito:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6418" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906.jpg" alt="" width="950" height="881" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906.jpg 950w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906-300x278.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906-150x139.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906-768x712.jpg 768w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-191906-585x543.jpg 585w" sizes="auto, (max-width: 950px) 100vw, 950px" /></p>
<p>Se il server web non risponde potremmo provare a riavviarlo digitando questo comando:</p>
<pre>sudo service apache2 restart</pre>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6419" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/Immagine-2021-01-02-192051-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<h2 id="L3">3. Installare MySQL</h2>
<p>Mysql è un RDBMS molto diffuso in ambiente web. Sviluppato come progetto open source è poi stato acquisito da Oracle. Attualmente è disponibile sotto licenza GNU e anche commerciale. Nel nostro Raspberry installeremo <a href="https://mariadb.org/">mariaDB</a> un progetto totalmente open che si basa sul codice sorgente di MySql. Per eseguire l&#8217;installazione digitiamo il seguente comadndo:</p>
<pre>sudo apt-get install mariadb-server</pre>
<p>confermiamo digitando S e premendo invio</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6420" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_install.jpg" alt="" width="661" height="578" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_install.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_install-300x262.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_install-150x131.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_install-585x512.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<h2 id="L4">4. Installate PhpMyAdmin (opzionale)</h2>
<p>Se siete arrivati fin qui la parte server è stata installata correttamente. Ora possiamo installare un software scritto in php che permette di interagire con il server MySql, tramite una comoda interfaccia web. Eseguiamo quindi il seguente comando per avviare l&#8217;installazione e la configurazione di PhpMyAdmin:</p>
<p>sudo apt-get install phpmyadmin</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6426" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_install-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Confermiamo digitando S e premendo invio per avviare il download del software e la sua installazione.</p>
<p>Dopo qualche istante ci viene richiesto di selezionare il server web installato sul Raspberry in modo tale che phpmyadmin esegua le sue configurazioni. Selezioniamo con la barra spaziatrice la voce apache2, con il tasto tab ci spostiamo sul pulsante &lt;ok&gt;. Premiamo invio per continuare:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6422" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config2-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Successivamente viene mostrata una nuova finestra per poter configurare il database mysql. Selezioniamo il pulsante &lt;Sì&gt; e premiamo invio:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6423" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config3-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>Ora digitiamo una password per l&#8217;utente phpmyadmin e premiamo invio:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6424" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config4-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>ripetiamo digitando e confermando la password, continuiamo premendo invio:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6425" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadmin_config5-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>dopo qualche istante l&#8217;installazione terminerà.</p>
<p>Proviamo ora a verificare se l&#8217;installazione del software phpmyadmin è avvenuta con successo. Portiamoci nuovamente sul browser e digitiamo nella barra degli indirizzi il seguente link</p>
<p>[ip raspberry]/phpmyadmin</p>
<p>dovremmo visualizzare la schermata di login come segue:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6431" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadminlogin.jpg" alt="phpmyadmin login" width="652" height="582" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadminlogin.jpg 652w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadminlogin-300x268.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadminlogin-150x134.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/phpmyadminlogin-585x522.jpg 585w" sizes="auto, (max-width: 652px) 100vw, 652px" /></p>
<p>digitiamo come nome utente phpmyadmin e come password quella inserita nella procedura guidata per eseguire l&#8217;accesso all&#8217;interfaccia web.</p>
<p>l&#8217;utente phpmyadmin non ha privilegi che permettano la gestione dei databases. Nel prossimo passo provvederemo a creare un utente che possieda tutti i privilegi.</p>
<h2 id="L5">5. Creare un utente per gestire il database</h2>
<p>I comandi seguenti servono a creare un utente con tutti i privilegi di amministrazione del database. In questo modo protremmo accedere tramite phpmyadmin per creare e gestire i nostri databases.</p>
<p>Il comando seguente permette di avviare la console mysql in modo tale da poter inviare comandi sql all&#8217; RDBMS:</p>
<pre>sudo mariadb</pre>
<p>e premiamo invio:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6437" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui.jpg" alt="" width="661" height="418" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui.jpg 661w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui-300x190.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui-150x95.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui-420x265.jpg 420w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/mariadb_ui-585x370.jpg 585w" sizes="auto, (max-width: 661px) 100vw, 661px" /></p>
<p>ora creiamo un utente, nel mio caso con nome marco, tra apici inseriamo anche una password:</p>
<pre>CREATE USER marco@localhost IDENTIFIED BY 'inserisci la tua password';</pre>
<p>ricordati di terminate la stringa sql con il simbolo di punto e virgola. Premiamo invio per per eseguire la query:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6436" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/query.jpg" alt="" width="693" height="450" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/query.jpg 693w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/query-300x195.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/query-150x97.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/query-585x380.jpg 585w" sizes="auto, (max-width: 693px) 100vw, 693px" /></p>
<p>ora l&#8217;utente marco è stato creato ma come l&#8217;utente phpmyadmin non ha nessun privilegio e non puo effettuare nessuna operazione. Assegniamo quindi a questo utente tutti i privilegi eseguendo questa query:</p>
<pre>GRANT ALL PRIVILEGES ON *.* TO marco@localhost;</pre>
<p>premiamo invio per eseguire la query:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6438" src="https://logicaprogrammabile.it/wp-content/uploads/2021/01/grant_privileges.jpg" alt="" width="693" height="450" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/01/grant_privileges.jpg 693w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/grant_privileges-300x195.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/grant_privileges-150x97.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2021/01/grant_privileges-585x380.jpg 585w" sizes="auto, (max-width: 693px) 100vw, 693px" /></p>
<p>usciamo dal dal database eseguendo il seguente comando:</p>
<pre>exit;</pre>
<p>riavviamo il servizio mysql eseguendo il seguente comando</p>
<pre>sudo service mysql restart</pre>
<h2>Conclusioni</h2>
<p>Utilizzando un Raspberry PI dal costo contenuto è possibile creare un hub di rete capace di eseguire un server LAMP con adeguate prestazioni. In questo modo è possibile integrare un sistema di schede che piuttosto che memorizzare i dati in una propria memoria può invece inviare i dati su un database relazionale con tutti i vantaggi che ne derivano.</p>
<p>The post <a href="https://logicaprogrammabile.it/5-passi-installare-webserver-lamp-raspberry-pi/">5 passi per installare un webserver LAMP sul Raspberry PI</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/5-passi-installare-webserver-lamp-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Configura con successo l&#8217;Arduino cloud</title>
		<link>https://logicaprogrammabile.it/configura-con-successo-larduino-cloud/</link>
					<comments>https://logicaprogrammabile.it/configura-con-successo-larduino-cloud/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 04 May 2020 06:00:50 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[IOT]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6302</guid>

					<description><![CDATA[<p>Come utilizzare l&#8217;Arduino cloud Nello scorso articolo abbiamo capito come attivare la Arduino sim e come configurare l&#8217;Arduino MKR GSM 1400. Inoltre abbiamo visto come sia possibile inviare dati alla scheda utilizzando il Network Monitor. In questo articolo andremmo a creare un elemento Thing utilizzando...</p>
<p>The post <a href="https://logicaprogrammabile.it/configura-con-successo-larduino-cloud/">Configura con successo l&#8217;Arduino cloud</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come utilizzare l&#8217;Arduino cloud</h1>
<p>Nello <a href="https://logicaprogrammabile.it/configurare-arduino-sim-mkr-1400/">scorso articolo</a> abbiamo capito come attivare la <strong>Arduino sim</strong> e come configurare l&#8217;<strong>Arduino MKR GSM 1400</strong>. Inoltre abbiamo visto come sia possibile inviare dati alla scheda utilizzando il <strong>Network Monitor</strong>.</p>
<p>In questo articolo andremmo a creare un elemento <strong>Thing</strong> utilizzando l&#8217;<strong>Arduino Cloud</strong> e a scrivere il codice per la <strong>MKR GSM 1400</strong> in modo da poter <strong>inviare dei dati sul cloud</strong>.</p>
<p>Seguiamo questo indirizzo <a href="https://create.arduino.cc/iot/">https://create.arduino.cc/iot/</a>. Nella home dell&#8217;<strong>Arduino Cloud</strong> (al momento ancora in versione <strong>beta</strong>) possiamo creare un nuovo <strong>Thing</strong>, ovvero un contenitore di oggetti grafici che hanno il compito di visualizzare dati provenienti dalla scheda oppure di inviarli.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6274" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_thing.jpg" alt="add new thing" width="263" height="105" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_thing.jpg 263w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_thing-150x60.jpg 150w" sizes="auto, (max-width: 263px) 100vw, 263px" /></p>
<p>Cliccando sul bottone <strong>Add New Thing</strong> verrà caricata una pagina in cui inserire il <strong>nome del Thing</strong> e la scheda da associare nostro progetto IoT.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6275" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/create_thing.jpg" alt="add new thing form" width="609" height="185" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/create_thing.jpg 609w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/create_thing-300x91.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/create_thing-150x46.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/create_thing-585x178.jpg 585w" sizes="auto, (max-width: 609px) 100vw, 609px" /></p>
<p>Nel combobox <strong>Select Board</strong> selezioneremmo la scheda <strong>GSM 1400</strong> che abbiamo configurato nel precedente articolo. Clicchiamo ora sul pulsante <strong>CREATE</strong>.</p>
<p><span id="more-6302"></span></p>
<p>Ci ritroveremo nella pagina principale del <strong>Thing</strong> che abbiamo appena creato.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6306" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/thing.jpg" alt="arduino Thing" width="700" height="333" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/thing.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/thing-300x143.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/thing-150x71.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/thing-585x278.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Attualmente sono disponibili 4 Tab. Nel tab <strong>Properties</strong> verranno elencate tutte le variabili del Thing. Queste variabili potranno essere richiamate nello sketch. Nal tab <strong>Dashboard</strong> verranno rappresentate le variabili sotto forma di oggetti grafici, pulsanti e indicatori. Nel tab <strong>Webhooks</strong> possiamo scambiare dati con altri servizi. Nel tab <strong>Board</strong> sarà possibile associare una scheda al Thing, questa associazione è molto importante perchè va a mettere in relazione la scheda selezionata con la chiave memorizzata nel crypto chip della GSM 1400. Se la chiave del crypto chip non coincide con la chiave della scheda che abbiamo caricato nel Device Manager, la comunicazione non potrà avvenire.</p>
<h1>Creare delle proprietà</h1>
<p>Torniamo nel tab <strong>Properties</strong> e clicchiamo sul bottone <strong>ADD PROPERTY</strong>. Verrà caricata una nuova pagina contenente un form come quello in figura:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6309" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_proprty.jpg" alt="add property at thingh" width="700" height="665" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_proprty.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_proprty-300x285.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_proprty-150x143.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_proprty-585x556.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Nel campo <strong>Name</strong> inseriamo un <strong>nome identificativo</strong> per la proprietà, questo nome sarà copiato anche sul campo <strong>Variable Name</strong>. Se lo riteniamo opportuno possiamo cambiare il <strong>Variable Name</strong>. Il nome inserito nel campo <strong>Variable Name</strong>, sarà utilizzato all<strong>&#8216;interno del codice dello sketch</strong>.</p>
<p>Inseriamo per esempio il nome &#8220;temperatura&#8221;.</p>
<p>Nella combobox <strong>Type</strong> selezioniamo la voce <strong>Temperature sensor (Celsius)</strong>. Vengono visualizzati due nuovi campi dove inserire il valore <strong>minimo</strong> e <strong>massimo</strong> che la variabile temperatura dovrà avere. Inseriamo come valore minimo 0°C e come valore massimo 100°C.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6315" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/temp.jpg" alt="Temperature" width="700" height="411" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/temp.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/temp-300x176.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/temp-150x88.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/temp-585x343.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Compiliamo anche la sezione <strong>Permission</strong>, <strong>Update </strong> e <strong>History</strong>.</p>
<p>Nella sezione <strong>Permission</strong> possiamo scegliere <strong>Read Only</strong> se il dato viene inviato dal dispositivo al cloud Arduino, mentre sceglieremo <strong>Read &amp; Write</strong> se abbiamo la necessita di aggiornare la variabile temperature dall&#8217;Arduino cloud.</p>
<p>La sezione <strong>Update</strong> ci permette di ricevere i dati a tempi prestabiliti (utilizzando la textbox per indicare un tempo) oppure riceverli quando il dato ha una variazione rispetto al dato precedentemente inviato.</p>
<p>La sezione history crea un grafico utilizzando uno storico dei dati inviati dalla scheda.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6316" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/parametri.jpg" alt="thing Paraeters" width="700" height="379" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/parametri.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/parametri-300x162.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/parametri-150x81.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/parametri-585x317.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Ora non ci resta che cliccare sul bottone <strong>ADD PROPERTY</strong> per confermare la nostra proprietà.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6317" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/riepilogo.jpg" alt="Riepilogo temperatura" width="700" height="107" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/riepilogo.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/riepilogo-300x46.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/riepilogo-150x23.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/riepilogo-585x89.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Andiamo nel tab <strong>Dashboard</strong> è osserviamo la presenza di un elemento che visualizzerà il dato proveniente dalla scheda.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6318" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/dashboard_1.jpg" alt="Dashboard proprieta" width="700" height="403" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/dashboard_1.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/dashboard_1-300x173.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/dashboard_1-150x86.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/dashboard_1-585x337.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Per il momento non aggiungiamo nessun&#8217;altra proprietà e dedichiamoci alla scrittura del codice.</p>
<h1>Installazione delle librerie</h1>
<p>Apriamo l&#8217;<strong>Arduino IDE</strong> e creiamo un <strong>nuovo sketch</strong>. Importiamo tutte le librerie per lavorare con l&#8217;<strong>Arduino cloud</strong>. Da <strong>Gestore Librerie</strong> (combinazione di tasti Ctrl+Maiusc+i) cerchiamo la libreria <strong>ArduinoIotCloud</strong>:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6320" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreriaiot.jpg" alt="Aggiungi libreria iot" width="700" height="394" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreriaiot.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreriaiot-300x169.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreriaiot-150x84.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreriaiot-585x329.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>procediamo con l&#8217;installazione cliccando sul pulsante <strong>Installa</strong>. Il gestore delle librerie indicherà che sono indispensabili delle librerie aggiuntive:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6321" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreria_dipendenze.jpg" alt="dipendenze librerie" width="700" height="438" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreria_dipendenze.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreria_dipendenze-300x188.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreria_dipendenze-150x94.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/libreria_dipendenze-585x366.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Installiamole tutte come richiesto.</p>
<h1>Scrivere il codice per la scheda MKR GSM 1400</h1>
<p>Il codice seguente mostra come collegarsi all&#8217;<strong>Arduino Cloud</strong> e come aggiornare la variabile temperatura definita precedentemente nel <strong>Thing</strong>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="avrasm">//Includo le librerie seguenti
#include &lt;ArduinoIoTCloud.h&gt;
#include &lt;Arduino_ConnectionHandler.h&gt;

//creo una costante dove contenere il think_id
//questo dato possiamo ottenerlo andando nel pannello di controllo
//dell'arduino cloud
const char THING_ID[]      = "a42be6ce-3158-4843-a29b-a36e1c90256f";

//in queste costanti inserisco i dati relativi alla sim arduino
const char GPRS_APN[]      = "prepay.pelion";
const char PINNUMBER[]     = "0000";
const char GPRS_LOGIN[]    = "arduino";
const char GPRS_PASSWORD[] = "arduino";

//questa è la variabile temperatura che abbiamo definito nelle proprietà del Thing
CloudTemperature temperatura;

//creo la connessione all'arduino cloud usando la rete gsm
GSMConnectionHandler ArduinoIoTPreferredConnection(PINNUMBER, GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD);

void setup() {
  // inizializzo la seriale
  Serial.begin(9600);
  //attendo che tutto sia pronto
  delay(1500);
  
  //inizializzo con l'id del clous
  ArduinoCloud.setThingId(THING_ID);
  //specifico la variabile che ho inserito nel thing e le sue caratteristiche
  ArduinoCloud.addProperty(temperatura, READ, ON_CHANGE, NULL);

  //inizializzo la connessione con la'rduino cloud
  //specificando il canale di comunicazione
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  //attivo i messaggi di debug
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  //trigghero l'arduino cloud
  ArduinoCloud.update();

  //genero dei valori casuali per la variabile temperatura
  temperatura = random(0, 100);
  //visualiazzo sul serial monitor il valore della variabile
  Serial.print("send data ");
  Serial.println(temperatura);
  attendo 10 s tra gli aggiornamenti
  delay(10000);

}</pre>
<p>I commenti che ho inserito nel codice descrivono il lavoro svolto dalle istruzioni.</p>
<p>Compiliamo e carichiamo il codice sulla Arduino GSM 1400. Terminato il caricamento apriamo il Serial monitor e osserviamo le fasi che portano a stabilire la connessione con l&#8217;Arduino Cloud.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6331" src="https://logicaprogrammabile.it/wp-content/uploads/2020/05/serial_output.jpg" alt="Serial monitor output" width="700" height="306" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/05/serial_output.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/05/serial_output-300x131.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/05/serial_output-150x66.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/05/serial_output-585x256.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Sul <strong>serial monitor</strong> osserviamo la stringa <strong>Device ID</strong>, questo valore deve essere identico a quello riportato nel tab Board. La stringa <strong>Thing ID</strong> invece deve essere identica a quella che viene indicata sulla pagina del Thing che abbiamo creato.</p>
<p>Apriamo una finestra del browser e colleghiamoci all&#8217;<strong>Arduino Cloud</strong> andando sulla dashboard del <strong>Thing</strong>. Osservando l&#8217;elemento grafico temperatura, dovremmo riscontrare gli stessi valori che la scheda sta trasmettendo.</p>
<p>In questo articolo abbiamo visto come configurare l&#8217;<strong>Arduino cloud</strong> e come trasmettere dei dati usando la <strong>MKR GSM 1400</strong>. Vedremo prossimamente anche come inviare dati dall&#8217;Arduino cloud alla scheda.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/configura-con-successo-larduino-cloud/">Configura con successo l&#8217;Arduino cloud</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/configura-con-successo-larduino-cloud/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Scopri come configurare Arduino sim e MKR 1400</title>
		<link>https://logicaprogrammabile.it/scopri-come-configurare-arduino-sim-mkr-1400/</link>
					<comments>https://logicaprogrammabile.it/scopri-come-configurare-arduino-sim-mkr-1400/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Sun, 26 Apr 2020 16:18:15 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[IOT]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6260</guid>

					<description><![CDATA[<p>Creare dispositivi IoT con Arduino Un dispositivo IoT, tipicamente, ha bisogno di avere un circuito elettronico in grado di acquisire ed elabora dati (provenienti da sensori o da comandi esterni), un mezzo di trasmissione (molto spesso basato su un segnale  a radio frequenza) e un...</p>
<p>The post <a href="https://logicaprogrammabile.it/scopri-come-configurare-arduino-sim-mkr-1400/">Scopri come configurare Arduino sim e MKR 1400</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Creare dispositivi IoT con Arduino</h1>
<p>Un <a href="https://it.wikipedia.org/wiki/Internet_delle_cose">dispositivo IoT</a>, tipicamente, ha bisogno di avere un circuito elettronico in grado di acquisire ed elabora dati (provenienti da sensori o da comandi esterni), un mezzo di trasmissione (molto spesso basato su un segnale  a radio frequenza) e un sistema remoto capace di memorizzare, elaborare e gestire i dati.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6265" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot.jpg" alt="schema dispositivo iot" width="700" height="319" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot-300x137.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot-150x68.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot-585x267.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Le caratteristiche del microcontrollore sono scelte in base alla potenza di calcolo e alla sua capacità di risparmiare energia. Molte applicazioni IoT sono spesso installate in luoghi remoti dove non è possibile avere una alimentazione stabile e duratura, quindi l&#8217;unica fonte di energia è demandata all&#8217;uso di una batteria.</p>
<p><span id="more-6260"></span></p>
<p>I mezzi di comunicazione più diffusi che vengono utilizzati in ambito IoT sono, <a href="https://lora-alliance.org/">LoRa</a>, <a href="https://www.sigfox.com/en">Sigfox</a>, <a href="https://it.wikipedia.org/wiki/Narrowband_IoT">NB</a> e rete cellulare(2G/3G/4G). La scelta tra questi sistemi avviene principalmente in base alla copertura, alla posizione geografica del dispositivo IoT e ai costi di gestione.</p>
<p>Questo articolo si basa sull&#8217;utilizzo di una Arduino Sim e una scheda Arduino MKR GSM 1400.</p>
<p><strong>La Arduino SIM può essere utilizzata solamente con Arduino Cloud.</strong></p>
<h1>Come attivare la Sim Arduino</h1>
<p>Quando riceviamo la sim Arduino, prima di poterla utilizzare, dobbiamo procedere alla sua attivazione. Sulla custodia della sim viene riportato un link (<a href="https://store.arduino.cc/digital/sim/activation">https://store.arduino.cc/digital/sim/activation</a>) che porta ad una pagina web in cui è possibile inserire il codice <strong>ICCID</strong> presente sulla sim:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6269" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/Arduino-Sim.jpg" alt="Arduino Sim" width="500" height="415" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/Arduino-Sim.jpg 500w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/Arduino-Sim-300x249.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/Arduino-Sim-150x125.jpg 150w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>Dopo aver inserito il codice clicchiamo sul pulsante NEXT. Nella pagina successiva, andremmo a leggere e accettare i termini di utilizzo (<strong>ARDUINO SIM TERMS AND CONDITIONS</strong>). Clicchiamo nuovamente sul pulsante NEXT per confermare.</p>
<p>Nella pagina successiva ci sarà un riepilogo sulle informazioni del nostro account e sul costo del servizio. Continuiamo cliccando sul pulsante NEXT. Nella pagina successiva dovremmo inserire i dati di pagamento per poi procedere cliccando sul pulsante <strong>Complete Payment</strong>.</p>
<p>La sim a questo punto è in fase di attivazione e prima di utilizzarla dovremmo attendere una mail di conferma.</p>
<h1>Come gestire la Arduino SIM</h1>
<p>Per verificare le impostazioni e il traffico dati della nostra Arduino SIM dobbiamo andare sul <strong>device manager</strong> (<a href="https://create.arduino.cc/devices/">https://create.arduino.cc/devices/</a>). Scorrendo e arrivando in fondo alla pagina, vedremmo la nostra sim e il suo stato.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6270" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_gestione.jpg" alt="Gestione arduino sim" width="500" height="355" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_gestione.jpg 500w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_gestione-300x213.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_gestione-150x107.jpg 150w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>Per i dettagli è sufficiente cliccare sull&#8217;icona della sim attiva:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6271" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_det.jpg" alt="Dettagli utilizzo sim card arduino" width="700" height="253" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_det.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_det-300x108.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_det-150x54.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/arduino_sim_det-585x211.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>In questa pagina troviamo anche delle informazioni che dovranno essere inserite nel codice dello sketch che andremmo a scrivere:</p>
<table id="sim_data" align="center">
<tbody>
<tr>
<td>APN</td>
<td>prepay.pelion</td>
</tr>
<tr>
<td>Username</td>
<td>arduino</td>
</tr>
<tr>
<td>Password</td>
<td>arduino</td>
</tr>
<tr>
<td>Pin</td>
<td>0000</td>
</tr>
</tbody>
</table>
<h1>Aggiungere una scheda al Device Manager</h1>
<p>Dopo aver attivato la <strong>Arduino SIM</strong> dobbiamo associare nel <strong>Device Manager</strong> (<a href="https://create.arduino.cc/devices/">https://create.arduino.cc/devices/</a>) una <strong>scheda Arduino</strong> che potrà interagire con il cloud Arduino. Le schede abilitate all&#8217;uso del cloud Arduino sono le seguenti:</p>
<ul>
<li>MKR 1000</li>
<li>MKR WiFi 1010</li>
<li>MKR GSM 1400</li>
<li>MKR NB 1500</li>
<li>Nano 33 IoT</li>
<li>MKR WAN 1300</li>
<li>MKR WAN 1310</li>
</ul>
<p>Nel mio caso utilizzerò una MKR GSM 1400.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6281" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_new_board.jpg" alt="Add new booard to cloud" width="700" height="327" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_new_board.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_new_board-300x140.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_new_board-150x70.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/add_new_board-585x273.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Clicchiamo sull&#8217;icona <strong>ADD NEW BOARD</strong>. Verrà caricata una pagina con una procedura guidata che permetterà di associare la nostra scheda al <strong>Device Manager</strong>.</p>
<p>Nella prima pagina della procedura guidata, selezioniamo la scheda da utilizzare:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6282" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/select_board.jpg" alt="select board mkr gsm 1400" width="700" height="368" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/select_board.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/select_board-300x158.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/select_board-150x79.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/select_board-585x308.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>clicchiamo sull&#8217;icona Arduino MKT GSM 1400. Nella schermata successiva, vengono indicate le fasi per configurare la MKR GSM 1400:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6284" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400.jpg" alt="mkr gsm 1400" width="700" height="334" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400-300x143.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400-150x72.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400-585x279.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Clicchiamo sul pulsante START per andare avanti. La prima fase della procedura guidata indica che dobbiamo scaricare il plugin <strong>Arduino Create Agent</strong>, il cui compito è quello di mettere in comunicazione la scheda collegata al pc con la procedura di configurazione on line.</p>
<p>Clicchiamo sul pulsante <strong>DOWNLOAD</strong>:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6285" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin.jpg" alt="download arduino create agent" width="700" height="344" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin-300x147.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin-150x74.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin-585x287.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Una volta cliccato sul pulsante, la procedura mostra che dopo aver terminato il download del file, dobbiamo eseguire un doppio click su di esso e seguire le istruzioni:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6286" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin_1.jpg" alt="install arduino agent" width="700" height="324" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin_1.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin_1-300x139.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin_1-150x69.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/download_plugin_1-585x271.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Dopo l&#8217;installazione dell&#8217;<strong>Arduino Create Agent</strong>, la procedura guidata indicherà che la comunicazione con il plugin è avvenuta con successo:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6287" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/ACA_install_ok.jpg" alt="install aca ok" width="700" height="322" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/ACA_install_ok.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/ACA_install_ok-300x138.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/ACA_install_ok-150x69.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/ACA_install_ok-585x269.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Andiamo avanti cliccando sul pulsante <strong>NEXT</strong>. Nella schermata successiva viene richiesto di collegare la scheda al pc. Quindi procediamo collegando, tramite cavo usb, la scheda MKR GSM 1400 al nostro computer:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6288" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/usb_gsm_1400.jpg" alt="usb gsm 1400" width="700" height="286" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/usb_gsm_1400.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/usb_gsm_1400-300x123.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/usb_gsm_1400-150x61.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/usb_gsm_1400-585x239.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Dopo qualche istante il plug <strong>Arduino Create Agent</strong>, aggiornerà la procedura guidata on line che la scheda MKR 1400 è stata collegata al computer.</p>
<p>A questo punto otterremo la seguente schermata dove assoceremmo un nome alla nostra scheda:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6289" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400_name.jpg" alt="gsm 1400 board name" width="700" height="327" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400_name.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400_name-300x140.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400_name-150x70.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_1400_name-585x273.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Inseriamo un nome identificativo, ad esempio gsm_1400 e andiamo avanti cliccando sul pulsante NEXT.</p>
<p>Ora la procedura indica se vogliamo configurare il <strong>Crypto Chip</strong> presente nella MKR GSM 1400. Questa procedura è importante perché aumenta il livello di sicurezza della comunicazione tra la scheda e l&#8217;Arduino Cloud.</p>
<p>Clicchiamo su CONFIGURE e attendiamo la fine della configurazione del Crypto Chip.</p>
<p>Nella schermata successiva ci viene chiesto di inserire la scheda SIM. Io in questa fase ho scollegato la scheda dalla porta usb, ho inserito la sim e ricollegato la scheda alla porta usb.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6290" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/insert_sim.jpg" alt="insert arduino sim" width="700" height="327" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/insert_sim.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/insert_sim-300x140.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/insert_sim-150x70.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/insert_sim-585x273.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Quindi clicchiamo nuovamente sul pulsante NEXT.</p>
<p>Nella schermata successiva viene visualizzato uno sketch di esempio. Lasciamo questo codice invariato e clicchiamo sul pulsante <strong>ENTER GSM DATA</strong>:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6291" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_data.jpg" alt="arduino enter gsm data" width="700" height="341" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_data.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_data-300x146.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_data-150x73.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/gsm_data-585x285.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Ora viene richiesta la compilazione dei campi relativi ai parametri della Arduino SIM. <a href="#sim_data">Questi parametri</a> gli abbiamo già incontrati quando abbiamo configurato la Arduino SIM.</p>
<p>Inseriamoli nei relativi campi e clicchiamo sul pulsante UPLOAD</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6295" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/upload.jpg" alt="upload sketch" width="700" height="341" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/upload.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/upload-300x146.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/upload-150x73.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/upload-585x285.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Terminato l&#8217;upload dello sketch sulla Arduino GSM 1400, la procedura guidata prova a stabilire una connessione con la scheda utilizzando la rete gsm:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6296" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/iot_cloud.jpg" alt="iot connection to arduino cloud" width="700" height="283" /></p>
<p>Se tutto funziona correttamente otterremo la schermata del Network Monitor:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6297" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/network_monitor.jpg" alt="Network monitor" width="700" height="337" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/network_monitor.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/network_monitor-300x144.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/network_monitor-150x72.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/network_monitor-585x282.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>In questa schermata possiamo accendere o spegnere il led on board della MKR GSM 1400. Scrivendo sulla textbox la stringa ON e cliccando sul bottone SEND potremo osservare che sulla scheda il led viene effettivamente acceso.<br />
Per spegnerlo sarà sufficiente inserire la stringa OFF e premere nuovamente sul bottone SEND.</p>
<p>Terminiamo la procedura guidata cliccando sul pulsante PLAY.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-6299" src="https://logicaprogrammabile.it/wp-content/uploads/2020/04/finish.jpg" alt="arduino cloud " width="700" height="348" srcset="https://logicaprogrammabile.it/wp-content/uploads/2020/04/finish.jpg 700w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/finish-300x149.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/finish-150x75.jpg 150w, https://logicaprogrammabile.it/wp-content/uploads/2020/04/finish-585x291.jpg 585w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Nel prossimo articolo andremmo a creare una THING utilizzando l&#8217;Arduino cloud e a scrivere del codice per spedire o ricevere dei dati.</p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/scopri-come-configurare-arduino-sim-mkr-1400/">Scopri come configurare Arduino sim e MKR 1400</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/scopri-come-configurare-arduino-sim-mkr-1400/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raspberry PI Compute module 3 CM3</title>
		<link>https://logicaprogrammabile.it/raspberry-pi-compute-module-3-cm3/</link>
					<comments>https://logicaprogrammabile.it/raspberry-pi-compute-module-3-cm3/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 20 Jan 2017 20:36:15 +0000</pubDate>
				<category><![CDATA[Notizie]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[raspberry]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=5367</guid>

					<description><![CDATA[<p>Nuova versione della Compute Module Recentemente è stata presentata la versione 3 della Compute Module ispirata all&#8217;architettura della Raspberry PI 3. Questa scheda è pensata principalmente per un utilizzo industriale e per essere installata in sistemi embedeed. Questa soluzione basata sul processore Broadcom BCM2837 (1.2GHz,...</p>
<p>The post <a href="https://logicaprogrammabile.it/raspberry-pi-compute-module-3-cm3/">Raspberry PI Compute module 3 CM3</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Nuova versione della Compute Module</h1>
<p>Recentemente è stata presentata la versione 3 della <strong>Compute Module</strong> ispirata all&#8217;architettura della <strong>Raspberry PI 3</strong>. Questa scheda è pensata principalmente per un utilizzo industriale e per essere installata in sistemi embedeed. Questa soluzione basata sul processore <strong>Broadcom BCM2837</strong> (1.2GHz, 64bit, quad-core, 1GB Ram) permette di avere un modulo molto più performante del precedente (presentato nel 2014 e basato sul processore <strong>BCM2835</strong>) mantenendo, in gran parte, la retro compatibilità col <strong>Compute Module 1</strong>. La versione standard del <strong>CM3</strong> è dotata di un modulo di memoria <strong>eMMC da 4GB</strong> che permette di ospitare il sistema operativo mentre la versione Lite è sprovvista di tale memoria e quindi sarà necessaria una memoria SD esterna come avviene per la Raspberry PI 3.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5444" src="https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-small-500x280.jpg" alt="Compute Module 3" width="500" height="280" srcset="https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-small-500x280.jpg 500w, https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-small-500x280-300x168.jpg 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>Per sviluppare il proprio prototipo è stata realizzata la carrier board<strong> Compute Module IO Board V3</strong> (CMIO3) che agevola la rapida prototipazione del progetto e di eseguire quindi i relativi test di funzionamento prima di spostare il <strong>Computer Module 3</strong> sul prodotto finale.</p>
<p><span id="more-5367"></span></p>
<p>Probabilmente la fondazione vuole ampliare la propria presenza sia in ambito industriale sia nel settore IoT, mercato in forte espansione dove tutte le grandi aziende stanno investendo le proprie risorse.<br />
Il <strong>Compute Module 3</strong> è molto compatto, le sue dimensioni sono quelle di una classica memoria DDR2 <strong>SoDIMM</strong>. Questo form factor permette l&#8217;installazione del modulo tramite un socket SoDIMM montato sul proprio pcb.</p>
<p>Per risparmiare spazio e per avere un costo molto inferiore alla <strong>Raspberry PI 3</strong>, nel modulo non sono stati implementati i circuiti wireless, ethernet e i vari connettori come HDMI, camera e DSI. Molti pin del SoC BCM2837 sono collegati direttamente ai pin del modulo SoDIMM. E&#8217; necessaria una certa accortezza nell&#8217;interfacciamento del modulo alla circuiteria esterna e nell&#8217;implementazione delle funzionalità wifi e ethernet.</p>
<p>Penso che il lavoro più arduo per la fondazione sia sicuramente garantire il massimo supporto verso questo prodotto e di rendere <strong>Raspbian</strong> sempre più stabile e performante con caratteristiche che si adattino alle esigenze del mercato industriale e <strong>IoT</strong>.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5446" src="https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-IO-Board-Mounted_Overhead-500x383.jpg" alt="Compute Module 3 IO board" width="500" height="383" srcset="https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-IO-Board-Mounted_Overhead-500x383.jpg 500w, https://logicaprogrammabile.it/wp-content/uploads/2017/01/Compute-Module-IO-Board-Mounted_Overhead-500x383-300x230.jpg 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>Il prezzo per la versione Standard sarà intorno ai 30€ mentre la versione Lite avrà un prezzo sui 25€.</p>
<p>The post <a href="https://logicaprogrammabile.it/raspberry-pi-compute-module-3-cm3/">Raspberry PI Compute module 3 CM3</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/raspberry-pi-compute-module-3-cm3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pi ZERO il primo Raspberry PI a 5 dollari</title>
		<link>https://logicaprogrammabile.it/pi-zero-primo-raspberry-pi-5-dollari/</link>
					<comments>https://logicaprogrammabile.it/pi-zero-primo-raspberry-pi-5-dollari/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 02 Dec 2015 16:08:11 +0000</pubDate>
				<category><![CDATA[Notizie]]></category>
		<category><![CDATA[Domotica]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[raspberry]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=4939</guid>

					<description><![CDATA[<p>Pi Zero il computer più economico della storia La fondazione Raspberry PI (www.raspberrypi.org) ci stupisce nuovamente introducendo la piccola PI ZERO, una nuova scheda dalle dimensioni disarmanti e dal costo di appena 5 dollari. Un piccolo computer (o meglio una piccola scheda madre) che permetterà...</p>
<p>The post <a href="https://logicaprogrammabile.it/pi-zero-primo-raspberry-pi-5-dollari/">Pi ZERO il primo Raspberry PI a 5 dollari</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Pi Zero il computer più economico della storia</h1>
<p>La fondazione <strong>Raspberry PI</strong> (<a href="https://www.raspberrypi.org/" target="_blank">www.raspberrypi.org</a>) ci stupisce nuovamente introducendo la piccola <strong>PI ZERO</strong>, una nuova scheda dalle dimensioni disarmanti e dal costo di appena <strong>5 dollari</strong>. Un piccolo <strong>computer</strong> (o meglio una piccola scheda madre) che permetterà di realizzare una miriade di progetti investendo una cifra irrisoria, ala portata di tutti.<br />
Se qualche anno fa eravamo abituati ad avere in allegato alle riviste di tecnologia un dvd in omaggio piuttosto che piccoli gadget elettronici, oggi sembra incredibile vedere la <strong>PI Zero</strong> allegata alla rivista <a href="https://www.raspberrypi.org/magpi/" target="_blank"><strong>MagPI</strong></a>! Un computer in omaggio allegato alla rivista!</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-4965 size-full" title="Raspberry Pi Zero" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPI_Zero.png" alt="Raspberry Pi Zero" width="225" height="225" srcset="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPI_Zero.png 225w, https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPI_Zero-150x150.png 150w" sizes="auto, (max-width: 225px) 100vw, 225px" /></p>
<p>Nonostante il prezzo di lancio di 5 dollari, il SoC utilizzato (Broadcom <strong>BCM2835</strong>) è identico a quella della Raspberry PI Model A+ ma con una frequenza da <strong>1GHz </strong>e una Ram da <strong>512MB</strong>.</p>
<p><span id="more-4939"></span></p>
<p>Per capire meglio la famiglia di schede, ho realizzato una tabella comparativa che mostra quali siano le differenze principali tra i vari modelli, allo scopo di avere un riferimento quando vorremo acquistarne una:</p>

<table id="tablepress-1" class="tablepress tablepress-id-1">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2"><img loading="lazy" decoding="async" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPiZero.png" alt="Raspebrry pi Zero" width="112" height="112" class="aligncenter size-full wp-image-4962" /></th><th class="column-3"><img loading="lazy" decoding="async" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPiA_plus.png" alt="Raspberry PI A+" width="126" height="107" class="aligncenter size-full wp-image-4959" /></th><th class="column-4"><img loading="lazy" decoding="async" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPiModelB-150x101.png" alt="Raspberry PI Model B" width="150" height="101" class="aligncenter size-thumbnail wp-image-4960" /></th><th class="column-5"><img loading="lazy" decoding="async" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPiModelB_Plus-150x103.png" alt="Raspberry PI Model B Plus" width="150" height="103" class="aligncenter size-thumbnail wp-image-4961" /></th><th class="column-6"><img loading="lazy" decoding="async" src="https://logicaprogrammabile.it/wp-content/uploads/2015/12/RaspberryPi2-150x101.png" alt="Raspberry PI 2 Model B" width="150" height="101" class="aligncenter size-thumbnail wp-image-4958" /></th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">Raspberry PI</td><td class="column-2">PI ZERO</td><td class="column-3">Model A+</td><td class="column-4">Model B</td><td class="column-5">Model B+</td><td class="column-6"> 2 Model B</td>
</tr>
<tr class="row-3">
	<td class="column-1">Tipo SoC</td><td class="column-2">Broadcom BCM2835</td><td class="column-3">Broadcom BCM2835</td><td class="column-4">Broadcom BCM2835</td><td class="column-5">Broadcom BCM2835</td><td class="column-6">Broadcom BCM2836</td>
</tr>
<tr class="row-4">
	<td class="column-1">Processore</td><td class="column-2">ARMv11 single core</td><td class="column-3">ARMv6 single core</td><td class="column-4">ARMv6 single core</td><td class="column-5">ARMv6 single core</td><td class="column-6">ARMv7 Quad Core</td>
</tr>
<tr class="row-5">
	<td class="column-1">Frequenza CPU</td><td class="column-2">1GHz</td><td class="column-3">700MHz</td><td class="column-4">700MHz</td><td class="column-5">700MHz</td><td class="column-6">900MHz</td>
</tr>
<tr class="row-6">
	<td class="column-1">Ram</td><td class="column-2">512MB SDRAM</td><td class="column-3">256MB SDRAM</td><td class="column-4">256MB SDRAM</td><td class="column-5">512MB SDRAM</td><td class="column-6">1GB SDRAM</td>
</tr>
<tr class="row-7">
	<td class="column-1">Numero Porte USB</td><td class="column-2">1</td><td class="column-3">1</td><td class="column-4">2</td><td class="column-5">4</td><td class="column-6">4</td>
</tr>
<tr class="row-8">
	<td class="column-1">Porta Ethernet</td><td class="column-2">NO</td><td class="column-3">NO</td><td class="column-4">SI</td><td class="column-5">SI</td><td class="column-6">SI</td>
</tr>
<tr class="row-9">
	<td class="column-1">Numero porte GPIO</td><td class="column-2">40</td><td class="column-3">40</td><td class="column-4">26</td><td class="column-5">40</td><td class="column-6">40</td>
</tr>
</tbody>
</table>
<!-- #tablepress-1 from cache -->
<p>Questa nuova scheda a mio parere si candida per essere <strong>impiegata</strong> principalmente nei progetti elettronici del segmento <strong>domotica</strong> e <strong>IoT</strong> poiché il suo basso assorbimento di energia e le dimensioni contenute (lunghezza 65mm, altezza 30mm, Spessore 5mm) sono certamente una caratteristica peculiare.</p>
<p>La tabella seguente compara i vari assorbimenti tra le schede PI</p>

<table id="tablepress-2" class="tablepress tablepress-id-2">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2">Zero</th><th class="column-3">A+</th><th class="column-4">B</th><th class="column-5">B+</th><th class="column-6">2B</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">IDLE</td><td class="column-2">100mA</td><td class="column-3">100mA</td><td class="column-4">360mA</td><td class="column-5">200mA</td><td class="column-6">230mA</td>
</tr>
<tr class="row-3">
	<td class="column-1">Riproduzione Video Full HD</td><td class="column-2">140mA</td><td class="column-3">140mA</td><td class="column-4">420mA</td><td class="column-5">240mA</td><td class="column-6">290mA</td>
</tr>
</tbody>
</table>
<!-- #tablepress-2 from cache -->
<p>La <strong>ZERO</strong> ha assorbimenti in linea con la A+, nonostante abbia il processore overcloccato a 1GHz. Per progetti dove l&#8217;alimentazione è un punto critico (circuiti alimentati a batteria) si potrebbe agire sui file di configurazione, della distribuzione <strong>Raspbian</strong>, per diminuire la velocità di clock (test che personalmente  non ho provato).</p>
<p>In conclusione credo che questa scheda sia un ottima opportunità per chi ha intenzione di arricchire il proprio bagaglio tecnico in ambiente Linux e per realizzare progetti con un investimento davvero irrisorio.</p>
<p>The post <a href="https://logicaprogrammabile.it/pi-zero-primo-raspberry-pi-5-dollari/">Pi ZERO il primo Raspberry PI a 5 dollari</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/pi-zero-primo-raspberry-pi-5-dollari/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino. Utilizzare la rete GSM per progetti IoT</title>
		<link>https://logicaprogrammabile.it/arduino-gsm-utilizzare-rete-gsm-progetti-iot/</link>
					<comments>https://logicaprogrammabile.it/arduino-gsm-utilizzare-rete-gsm-progetti-iot/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 13 Jul 2015 13:56:35 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[Internet delle cose]]></category>
		<category><![CDATA[IOT]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=4687</guid>

					<description><![CDATA[<p>Come utilizzare Arduino e rete gsm per progetti IoT Sentire parlare di progetti IoT è quasi diventata una moda e nonostante la realizzazione di progetti più o meno interessanti, possiamo confermare che il mercato è in forte espansione e l&#8217;industria sta investendo ingenti capitali. Uno...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-gsm-utilizzare-rete-gsm-progetti-iot/">Arduino. Utilizzare la rete GSM per progetti IoT</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Come utilizzare Arduino e rete gsm per progetti IoT</h3>
<p>Sentire parlare di progetti IoT è quasi diventata una moda e nonostante la realizzazione di progetti più o meno interessanti, possiamo confermare che il mercato è in forte espansione e l&#8217;industria sta investendo ingenti capitali. Uno degli aspetti chiave dell&#8217;internet delle cose è sicuramente la remotizzazione dei dispositivi. Vengono perciò progettate reti dedicate, come la <a href="http://www.sigfox.com/en/" target="_blank">rete Sigfox</a> oppure il sistema <a href="http://lora-alliance.org/" target="_blank">LoRa</a> caratterizzate da lunghe distanze operative e bassi consumi.<br />
Un altro canale di comunicazione che sta ritornando in uso è la rete gsm, forte della sua alta percentuale di copertura del territorio nazionale e un uso ormai semplificato grazie a libreria pronte all&#8217;uso.<br />
Nonostante i moduli GSM abbiano un consumo energetico maggiore rispetto a quelli SigFox e LoRa, rimane comunque un sistema molto valido soprattutto in attesa che anche nel nostro paese vengano realizzate reti IoT dedicate.</p>
<p>Esistono diverse shield gsm o moduli stand alone che permettono di costruire circuiti capaci di dialogare tra loro a grandi distanze. La shield ufficiale Arduino è da tempo indisponibile, nonostante esiste una seconda versione, viste le diatribe tra le due società Arduino, ho preferito usare un altro prodotto ed in particolare quello sviluppato da Mikroelektronica che si basa sul modulo M95A perché  ha un costo contenuto ed è compatibile con la libreria ufficiale disponibile nell&#8217;ide sviluppato da Arduino.cc.</p>
<p><span id="more-4687"></span></p>
<p>Di seguito potete vedere il modulo e la sua pin function</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-4697 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2015/06/gsm2click.png" alt="arduino gsm mikroelektronika mikrobus gsm2click board" width="209" height="198" /></p>
<p style="text-align: center;"><a href="https://logicaprogrammabile.it/wp-content/uploads/2015/06/PINOUT_GSM2Click.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4714" src="https://logicaprogrammabile.it/wp-content/uploads/2015/06/PINOUT_GSM2Click.png" alt="PINOUT_GSM2Click" width="137" height="170" /></a></p>
<p>Mikroelektronica, oltre ha produrre diversi tipi di compilatori, ha un suo sistema di sviluppo hardware composto da delle schede chiamate <a href="http://www.mikroe.com/click/" target="_blank">Click Boards</a> che si collegano tra loro utilizzando il <a href="http://www.mikroe.com/downloads/get/1737/mikrobus_specification.pdf" target="_blank">Mikro Bus</a>.</p>
<p>La comunicazione tra la GSM2click ed Arduino avviene tramite UART. Esiste anche la Arduino UNO click shield ma purtroppo non possiamo utilizzarla perché la libreria gsm utilizza la SoftwareSerial sui pin 2 e 3 mentre nella Arduino UNO click shield la seriale è collegata ai pin 0 e 1.<br />
Quindi dovremmo adattare i collegamenti Arduino UNO e la GSM2click seguendo questo semplice schema:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-4700 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2015/06/SchemaArduinoGSMclick.png" alt="Arduino gsm 2 click" width="430" height="256" srcset="https://logicaprogrammabile.it/wp-content/uploads/2015/06/SchemaArduinoGSMclick.png 430w, https://logicaprogrammabile.it/wp-content/uploads/2015/06/SchemaArduinoGSMclick-300x179.png 300w" sizes="auto, (max-width: 430px) 100vw, 430px" /></p>
<p>Il modulo GSM2Click utilizza sia l&#8217;alimentazione a 3.3Vdc sia quella a 5Vdc. I pin TX e RX del modulo vanno rispettivamente collegati al pin 2 e pin 3 di Arduino (quelli utilizzati dalla SoftwareSerial della libraria GSM). Il pin7 di Arduino va collegato al pin RST che in pratica corrisponde al PowerKey del modulo M95.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4704" src="https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2click_Arduino.jpg" alt="GS2Click arduino UNO gsm" width="448" height="296" srcset="https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2click_Arduino.jpg 448w, https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2click_Arduino-300x198.jpg 300w" sizes="auto, (max-width: 448px) 100vw, 448px" /></p>
<h4>Codice di esempio</h4>
<p>Prima di caricare il codice dobbiamo inserire nel modulo GSM2Click una SIM attiva con relativo credito telefonico. Nonostante il modulo possa funzionare senza l&#8217;ausilio di un&#8217;antenna consiglio assolutamente il suo impiego per aumentare il segnale ricevuto e soprattutto evitare disadattamenti di impedenza del trasmettitore RF.</p>
<p>Il codice seguente inizializza il modem del modulo M95 e ne ricava il codice IMEI:</p>
<pre class="lang:arduino decode:true ">// libraria GSM
#include &lt;GSM.h&gt;

//creo un oggetto modem
GSMModem modem;

String IMEI = "";
float tempo_prec, tempo =0;

void setup()
{
//init seriale
Serial.begin(9600);
delay(100);

Serial.println("Avvio modem...");

//memorizzo il tempo corrente
tempo_prec = millis();

//inizializzo il modem e verifico il suo stato
if (modem.begin())
{
//memorizzo il tempo corrente
tempo= millis();

//calcolo il tempo di avvio del modem
Serial.print("Modem avviato in ");
Serial.print((tempo - tempo_prec)/1000);
Serial.println(" secondi.");

}
else
//avvisami in caso di errore
Serial.println("ERRORE, nussuna risposta dal modem.");

Serial.println("Leggo il codice IMEI");

//ottengo il codice imei
IMEI = modem.getIMEI();

//verifico il codice e lo visualizzo
if (IMEI != NULL)
{
Serial.print("Codice IMEI= " + IMEI);
}
else
{
Serial.println("ERRORE: lettura codice IMEI fallita!");
}
}

void loop()
{

}</pre>
<p>La classe GSM permette di semplificare la comunicazione col modulo utilizzando una sintassi molto elementare. Abbiamo comunque la possibilità di scendere nel dettaglio utilizzando i comandi AT. La Quectel fornisce dettagliate documentazioni relative a tutti i sui moduli, in questo modo possiamo ottimizzare il nostro codice accedendo solo alle funzioni specifiche del modulo.</p>
<p>Per provare ad utilizzare i comandi AT, ho modificato il circuito elettrico prelevando il segnale sul pin STA del modulo GSM2Click, questo perchè prima di inviare un comando devo assicurarmi che il modulo sia attivo e funzionante.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4713" src="https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2Click_AT.png" alt="GSM2Click_AT" width="461" height="265" srcset="https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2Click_AT.png 461w, https://logicaprogrammabile.it/wp-content/uploads/2015/06/GSM2Click_AT-300x172.png 300w" sizes="auto, (max-width: 461px) 100vw, 461px" /></p>
<p>Questo il codice che testa la comunicazione tramite comandi AT:</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;

#define rxPin 2
#define txPin 3

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

String risp_at = "";
char message[50];

void setup() {
// put your setup code here, to run once:
mySerial.begin(9600);
Serial.begin(9600);

pinMode(6, INPUT);
pinMode(7, OUTPUT);

//verifico se il modulo è attivo
if(digitalRead(6) == LOW)
{
//attivo il moduloinviando un livello
//logico alto al pin PWK (Power Key)
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
}

//attendi l'avvio del modulo
while(digitalRead(6) == LOW)
{
delay(100);
Serial.print(".");
}

//Invio il comando 'AT' per verificare la
//risposta del modulo
mySerial.write("AT");
mySerial.write(10);
mySerial.write(13);

delay(500);

//attendo finchè non ricevo dati dal modulo
while(mySerial.available())
{
risp_at += (char)mySerial.read();
}

if(risp_at.length() &gt; 0)
{
risp_at.toCharArray(message, risp_at.length());
Serial.println(risp_at);
}
}

void loop()
{
delay(10);
}</pre>
<p>&nbsp;</p>
<p>Volendo possiamo utilizzare direttamente il Serial Monitor per inviare comandi AT al modulo. In pratica invio il comando ad Arduino UNO che lo rigira al modulo M95 e viceversa, i dati inviati dal modulo M95 vengono spediti al serial monitor tramite Arduino UNO. Questo è un ottimo metodo per testare comandi At e capirne il funzionamento.</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;

#define rxPin 2
#define txPin 3

SoftwareSerial mySerial(rxPin,txPin); // RX, TX

void setup(){

Serial.begin(9600);
Serial.println("Arduino serial initialized!");
delay(10);

mySerial.begin(9600);
Serial.println("Software serial initialized!");
delay(10);

pinMode(6, INPUT);
pinMode(7, OUTPUT);

//verifico se il modulo è attivo
if(digitalRead(6) == LOW)
{
//attivo il moduloinviando un livello
//logico alto al pin PWK (Power Key)
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
}

}

void loop()
{
if(Serial.available())
{
mySerial.write(Serial.read());
}

if(mySerial.available())
{
Serial.write(mySerial.read());
}
}</pre>
<p>Ora possiamo usare il Serial Monitor come se fosse collegato direttamente al modulo M95.<br />
Lanciamo il Serial Monitor ed assicuriamoci di avere impostata la velocità di comunicazione a 9600bps e di selezionare il ritorno carrello e la nuova linea (NL &amp; CR).</p>
<p>Proviamo a scrivere sul serial monitor il comando AT e clicchiamo sul pulsante invia. Il modulo risponderà con questa stringa:</p>
<pre class="lang:arduino decode:true ">OK //comando eseguito correttamente</pre>
<p>La risposta OK informa che il comando AT è stato eseguito correttamente.<br />
Possiamo verificare ed esempio quale sia il livello del segnale della rete GSM inviando al modulo questi caratteri AT+CSQ<br />
il risultato, nel mio caso è il seguente:</p>
<pre class="lang:arduino decode:true ">+CSQ: 26,0

OK</pre>
<p>il comando CSQ è riconosciuto valido e il suo valore è 26,0. Questi dati possono essere interpretati utilizzando il manuale del modulo M95.</p>
<p>Le istruzioni AT sono molto semplici e permettono di eseguire sia comandi sia settaggi di impostazioni. Per ulteriori esempi non dovete fare altro che leggerli dal manuale!</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-gsm-utilizzare-rete-gsm-progetti-iot/">Arduino. Utilizzare la rete GSM per progetti IoT</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-gsm-utilizzare-rete-gsm-progetti-iot/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Memorizzare dati su un sito web con PHP e Mysql</title>
		<link>https://logicaprogrammabile.it/memorizzare-dati-server-remoto-php-e-mysql/</link>
					<comments>https://logicaprogrammabile.it/memorizzare-dati-server-remoto-php-e-mysql/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 29 Jul 2013 09:36:09 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Internet delle cose]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Servizio web]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3714</guid>

					<description><![CDATA[<p>Introduzione all&#8217;internet delle cose con Arduino, PHP e Mysql Il termine &#8216;internet delle cose&#8216; sta diventando sempre più popolare per due motivi fondamentali, il primo riguarda la grande diffusione dei dispositivi programmabili come Arduino e Netduino (senza tralasciare  il sistema OpenPicus e il RaspberryPI) con...</p>
<p>The post <a href="https://logicaprogrammabile.it/memorizzare-dati-server-remoto-php-e-mysql/">Memorizzare dati su un sito web con PHP e Mysql</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Introduzione all&#8217;internet delle cose con Arduino, PHP e Mysql</h3>
<p>Il termine &#8216;<strong>internet delle cose</strong>&#8216; sta diventando sempre più popolare per due motivi fondamentali, il primo riguarda la grande diffusione dei dispositivi programmabili come <strong>Arduino</strong> e <strong>Netduino</strong> (senza tralasciare  il sistema <strong>OpenPicus</strong> e il <strong>RaspberryPI</strong>) con la loro relativa semplicità di utilizzo, mentre il secondo motivo è dovuto alla necessità di conoscere in tempo reale cosa questo dispositivo sta facendo e come sia possibile controllarne le funzionalità, anche a distanza.<br />
Tutto questo è strettamente legato alla diffusione della<strong> rete 3G e degli smartphone</strong> che permettono di avere una <strong>connessione ad internet</strong> pressoché ovunque.</p>
<p>Questo scenario rende interessante lo <strong>sviluppo di nuove tipologie di applicazioni</strong> legate appunto al controllo e allo scambio dati tra dispositivi hardware collegati ad internet.</p>
<p>Esistono numerosi prototipi ma anche esempi reali che dimostrano come l&#8217;utilizzo di <strong>sistemi embedded+internet</strong> creino infrastrutture, anche complesse, controllabili. Il classico esempio riguarda la gestione del traffico che nelle nostre città viene gestito da semplici semafori che regolano il traffico in modo statico. Utilizzando <strong>dispositivi smart</strong> è possibile ottimizzare questo sistema migliorando la viabilità, evitando ingorghi e facendo risparmiare energia e carburante. Ma le applicazioni sono davvero notevoli e sono tutte orientate al risparmio energetico e al migliorare il nostro modo di vivere.</p>
<p><span id="more-3714"></span></p>
<p>Di seguito sono elencate le categorie dove maggiormente verranno sviluppati dispositivi riconducibili all&#8217;internet delle cose</p>
<ul>
<li>Domotica</li>
<li>Controllo inquinamento ambientale cittadino</li>
<li>Monitoraggio Ambientale</li>
<li>Energie rinnovabili, Smart Grid</li>
<li>Illuminazione pubblica intelligente</li>
<li>Sistemi per il rilevamento tempestivo degli incendi</li>
<li>Controllo delle acque, tra cui livello degli argini.</li>
<li>Controllo e gestione degli accessi con tecnologia RFID</li>
<li>Agricoltura, irrigazione intelligente.</li>
<li>Sorveglianza di pazienti e anziani in abitazioni isolate.</li>
<li>Miglioramento processi industriali, gestione magazzino.</li>
</ul>
<p><a href="http://www.gartner.com/newsroom/id/2209615" target="_blank">Gartner ha identificato l&#8217;IOT</a> come una delle <strong>10 tecnologiche trainanti</strong> per il 2013.</p>
<p>Per quello che ci riguarda dobbiamo dotarci di un dispositivo capace di connettersi ad internet, nel mio caso utilizzerò l&#8217;<strong>Arduino Ethernet</strong>, di una connessione internet e di un server web capace di elaborare le richieste inviate dall&#8217;Arduino.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/07/SchemaIOT.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3730" src="https://logicaprogrammabile.it/wp-content/uploads/2013/07/SchemaIOT.png" alt="INTERNET DELLE COSE" width="600" height="250" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/07/SchemaIOT.png 600w, https://logicaprogrammabile.it/wp-content/uploads/2013/07/SchemaIOT-300x125.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a><br />
Il progetto di questo tutorial permette di acquisire un segnale analogico, di inviarne il valore al server remoto che lo memorizzerà in una tabella del database MySql.<br />
L&#8217;invio dei dati avviene tramite <strong>architettura <a href="http://it.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a></strong>. Praticamente i <strong>valori acquisiti da Arduino</strong> verranno <strong>inviati utilizzando l&#8217;URL</strong>.<br />
Lato server, uno <strong>script PHP</strong> recupererà i valori dall&#8217;url e li memorizzerà sul database.</p>
<blockquote><p>se non disponete di un server web remoto potete installarne uno nella vostra macchina locale utilizzando <a href="http://www.apachefriends.org/it/xampp-windows.html" target="_blank">XAMPP</a>. Il pacchetto installa automaticamente il server web Apache, l&#8217;interprete PHP ed il server MySql.</p></blockquote>
<p>Iniziamo subito con il codice che ho caricato sull&#8217;Arduino:</p>
<pre class="lang:arduino decode:true ">#include &lt;SPI.h&gt;
#include &lt;Ethernet.h&gt;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//indirizzo server web (locale)
IPAddress server(192, 168, 0, 140);

//indirizzo ip dell'Arduino
IPAddress ip(192, 168, 0, 200);

EthernetClient client;

String strURL = "";
float temp = 0;

void setup()
{
Serial.begin(9600);

if (Ethernet.begin(mac) == 0)
{
Serial.println("Configurazione DHCP fallita!");
Ethernet.begin(mac, ip);
}

delay(1000);

}

void loop()
{
UpdateTemp();

while(client.available())
{
char c = client.read();
Serial.print(c);
}

if (!client.connected())
{
Serial.println();
Serial.println("Disconnesso.");
client.stop();
}

//esegui la richiesta ogni 10 secondi
delay(10000);
}

void UpdateTemp()
{
Serial.println("Connessione...");

if (client.connect(server, 80))
{
Serial.println("Connesso");
//acquisisco il valore analogico dal sensore MCP9700
//vedi questo articolo
//logicaprogrammabile.it/mcp9700a-netduino-sensore-temperatura-analogico
temp = analogRead(0);

//creo l'url utilizzanso una stringa
strURL = "GET /arduino/index.php?valore=";
strURL += (int)temp;
strURL += "&amp;localita=Sardegna HTTP/1.1";

//invio la richiesta al server
client.println(strURL);
client.println("Host: localhost");
client.println("Connection: close");
client.println();
//chiudo la connessione
client.stop();
}
else
{
Serial.println("Errore Connessione");
}
}</pre>
<p>&nbsp;</p>
<p>Il codice esegue una connessione al server locale e, dopo aver acquisito il segnale proveniente dal sensore analogico, costruisce l&#8217;indirizzo URL inserendo due parametri, il valore analogico acquisito e la località:</p>
<p style="text-align: center;">/arduino/index.php?valore=120&amp;localita=Sardegna</p>
<p>La pagina index.php ha il compito di recuperare i parametri e di caricarli sul database. Questo è il codice <strong>PHP</strong>:</p>
<pre class="lang:php decode:true ">&lt;?php
//controllo se sono presenti i parametri valore e localita
if(isset($_GET['valore']) &amp;&amp; isset($_GET['localita']))
{
//Recupero il valore del parametro "valore"
$valore = $_GET['valore'];

//Recupero il valore del parametro "localita"
$localita = $_GET['localita'];

//eseguo la connessione al database sul server locale
//inserendo nome utente e password
$link = mysql_connect('localhost', 'root', 'root');

//gestione degli errori
if (!$link) {die('Impossibile connettersi: ' . mysql_error());}

//seleziono il databse di nome arduino
mysql_select_db("arduino") or die( "Impossibile selezionare il database.");

//creo una stringa sql di inserimento con i valori
//recuperati dall'url
$sql = "INSERT INTO `arduino`.`tbl_temperature`
(
`ID` ,
`Tempo_Server` ,
`Tempo_Locale` ,
`Valore` ,
`Localita`
)
VALUES
(
NULL , CURRENT_TIMESTAMP , NULL , '" . $valore . "', '" . $localita . "'
);";

//eseguo la query
$retval = mysql_query( $sql, $link );

//gestione degli errori
if(! $retval ){die('Impossibile eseguire la query: ' . mysql_error());}

//chiudo la connessione al db
mysql_close($link);
}
?&gt;</pre>
<p>Tramite <strong>phpMyAdmin</strong> ho creato un database di nome <strong>Arduino</strong> e una tabella di nome <strong>tbl_Temperature</strong>. Il codice sql per creare la tabella è il seguente:</p>
<pre class="lang:mysql decode:true ">CREATE TABLE `tbl_temperature` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Tempo_Server` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Tempo_Locale` datetime DEFAULT NULL,
`Valore` int(11) NOT NULL,
`Localita` varchar(50) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;</pre>
<p>Utilizzando Arduino, PHP e Mysql siamo riusciti a realizzare un piccolo sistema IOT. Certamente bisogna imparare ad utilizzare anche le tecnologie lato server per far interagire Arduino, ma con un po di impegno è possibile realizzare applicazione molto interessanti.</p>
<p>In questo tutorial non ho approfondito l&#8217;installazione e la configurazione di <strong>XAMPP</strong>, ne l&#8217;uso di <strong>PHP e MySql</strong> perché sarebbe stato necessario un tutorial dedicato, molto più lungo e forse dispersivo.</p>
<p>The post <a href="https://logicaprogrammabile.it/memorizzare-dati-server-remoto-php-e-mysql/">Memorizzare dati su un sito web con PHP e Mysql</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/memorizzare-dati-server-remoto-php-e-mysql/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
	</channel>
</rss>
