<?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>Internet delle cose Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/internet-delle-cose/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/internet-delle-cose/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 17:08:44 +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>Internet delle cose Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/internet-delle-cose/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 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 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 fetchpriority="high" 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="(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>
		<item>
		<title>Caratteristiche tecniche del Flyport Ethernet</title>
		<link>https://logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/</link>
					<comments>https://logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 15 Apr 2013 07:59:34 +0000</pubDate>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[Internet delle cose]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3530</guid>

					<description><![CDATA[<p>Informazioni dettagliate sul modulo Flyport Ethernet Con i precedenti tutorial abbiamo visto tutti i passaggi per configurare l&#8217;ambiente di sviluppo e come caricare il nostro primo programma sul modulo Flyport ethernet senza però conoscere il modulo stesso. In questo articolo verrei analizzare le potenzialità di...</p>
<p>The post <a href="https://logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/">Caratteristiche tecniche del Flyport Ethernet</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Informazioni dettagliate sul modulo Flyport Ethernet</h3>
<p>Con i precedenti tutorial abbiamo visto tutti i passaggi per configurare l&#8217;ambiente di sviluppo e come caricare il nostro primo programma sul modulo <strong>Flyport ethernet</strong> senza però conoscere il modulo stesso. In questo articolo verrei analizzare le potenzialità di questo dispositivo, informazioni utili per poter sceglierlo nei nostri progetti.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/04/Flyport_Ethernet.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3532" alt="Flyport Ethernet" src="https://logicaprogrammabile.it/wp-content/uploads/2013/04/Flyport_Ethernet.png" width="300" height="182" /></a></p>
<p>Le sue <strong>dimensioni</strong> sono di <strong>5 cm x 3.5 cm</strong>, caratteristica sempre apprezzata nelle installazioni dove le dimensioni contenute sono un fattore richiesto.</p>
<p><span id="more-3530"></span><br />
Il <strong>microprocessore</strong> che governa il modulo è il modello della serie PIC24F (<strong>PIC24FJ256</strong>) prodotto dalla <strong>Microchip</strong>, troviamo inoltre il controller <strong>ethernet ENC424j600</strong>, sempre prodotto da <strong>Microchip</strong>. Il processore opera a <strong>16bit</strong> capace di eseguire, con i suoi <strong>32MHz di clock</strong>, 16 milioni di istruzioni al secondo, possiede <strong>256 KByte di Flash</strong> e <strong>16KB di RAM</strong>. L&#8217;interfaccia di rete è una <strong>10/100 Base-T</strong>.<br />
Troviamo collegato sul pcb anche un quarzo da <strong>32.768Mhz</strong> necessario al modulo <strong>RTCC</strong> (Real Time Clock and Calendar) implementato nel microprocessore PIC24F.</p>
<p>Le <strong>porte digitali sono 18</strong>, di cui 14 rimappabili (possibilità di configurarle come ingressi o come uscite), le <strong>porte analogiche sono 4</strong> con una risoluzione di <strong>10bit</strong> (valori da 0 a 1023). Inoltre possiamo configurare <strong>4 porte UART</strong>, <strong>9 canali PWM</strong>, una porta <strong>SPI</strong> e una porta <strong>I2C</strong>.</p>
<p>Il modulo ospita una<strong> memoria flash</strong> seriale da ben <strong>16Mbit</strong> (SST25VF016Bb), utile per memorizzare le pagine html che poi verranno impiegate ad esempio dal webserver interno.</p>
<p>Il <strong>Flyport Ethernet</strong> può essere <strong>alimentato</strong> sia a <strong>5Vdc</strong> sia a <strong>3.3Vdc</strong>.</p>
<p>L&#8217;intervallo di temperature in cui il modulo può operare va da <strong>-20°C a +85°C.</strong> Questi valori sono veramente interessanti permettendo l&#8217;installazione in ambienti anche estremi.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3541" alt="Flyport DIagramma a blocchi" src="https://logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock.png" width="586" height="353" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock.png 586w, https://logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock-300x180.png 300w" sizes="auto, (max-width: 586px) 100vw, 586px" /></a></p>
<h4>Flyport framework</h4>
<p>All&#8217;interno del microprocessore troviamo, il <strong>bootloader</strong>, un sistema operativo real-time (<strong>freeRTOS</strong>), lo <strong>stack TCP/IP</strong> e l&#8217;<strong>Openpicus Framework</strong>.<br />
Il bootloader è un piccolo software che risiede nella flash del microcontrollore <strong>PIC24F</strong>. Questo software permette di caricare il programma scritto con l&#8217;<strong>Openpicus IDE</strong> dentro la flash del microcontrollore, tramite la porta seriale UART. Inoltre permette di avviare il programma o di resettarlo. Questa scelta permette di usare solamente il convertitore usb seriale piuttosto che impiegare un programmatore esterno più complesso per tutte le fasi di programmazione e di debug.<br />
Il sistema operativo real time è basato su FreeRTOS, realizzato per girare su diversi dispositivi embedded. L&#8217;Openpicus framework integra lo stack TCP/IP tramite questo sistema operativo e permette così di facilitare la gestione di TCP/IP. Nonostante questa semplificazione è comunque richiesta una minima esperienza nell&#8217;uso delle reti e della loro configurazione.</p>
<p>Il modulo, o per meglio dire il sistema Openpicus, si dimostra utile in moltissime applicazioni, da quelle puramente hobbistiche a quelle industriali. Credo che conoscerne il funzionamento e la sua programmazione si davvero utile per arricchire le nostre competenze e per avere dalla nostra un utile strumento da utilizzare anche in campo lavorativo.</p>
<p>E poi è <strong>made in Italy</strong>!</p>
<p>The post <a href="https://logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/">Caratteristiche tecniche del Flyport Ethernet</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Pachube, utilizzo con Netduino o Arduino (Introduzione)</title>
		<link>https://logicaprogrammabile.it/pachube-utilizzo-netduino-arduino/</link>
					<comments>https://logicaprogrammabile.it/pachube-utilizzo-netduino-arduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 28 Jun 2011 14:16:19 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Internet delle cose]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[Pachue]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1681</guid>

					<description><![CDATA[<p>Pachube, come creare un feeds aggiornabile con Netduino o Arduino Pachube è uno dei tanti servizi online che offrono un&#8217;applicazione web aggiornabile tramite dispositivi elettronici come Netduino, Arduino, smartphone, PC o altri sistemi capaci di interagire con Internet. Banalmente possiamo definirlo un &#8220;datalogger on line&#8221;...</p>
<p>The post <a href="https://logicaprogrammabile.it/pachube-utilizzo-netduino-arduino/">Pachube, utilizzo con Netduino o Arduino (Introduzione)</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Pachube, come creare un feeds aggiornabile con Netduino o Arduino</h1>
<p>Pachube è uno dei tanti servizi online che offrono un&#8217;applicazione web aggiornabile tramite dispositivi elettronici come Netduino, Arduino, smartphone, PC o altri sistemi capaci di interagire con Internet.<br />
Banalmente possiamo definirlo un &#8220;<a href="http://en.wikipedia.org/wiki/Data_logger" target="_blank">datalogger</a> on line&#8221; capace di registrare dati provenienti dai dispositivi e di creare grafici che ne mostrano l&#8217;andamento nel tempo.<br />
<strong> Pachube</strong> certamente è un buon servizio che dimostra lo sviluppo di applicazioni dell&#8217;<a href="http://it.wikipedia.org/wiki/Internet_delle_cose" target="_blank">Internet delle cose</a>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1700 size-full" title="logo Pachube" src="https://logicaprogrammabile.it/wp-content/uploads/2011/06/logo.gif" alt="Logo Pachube" width="303" height="94" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/06/logo.gif 303w, https://logicaprogrammabile.it/wp-content/uploads/2011/06/logo-300x93.gif 300w" sizes="auto, (max-width: 303px) 100vw, 303px" /></p>
<p>Anche io ho voluto realizzare la mia applicazione per semplice curiosità e per condividere la mia esperienza.</p>
<p>Iniziamo registrandoci al servizio Pachube. Al momento in cui scrivo sono disponibili tre tipi di piani tariffari, tra cui uno gratuito. La differenza sostanziale tra essi, è il numero di dati che possiamo caricare sul sito e il tempo di memorizzazione degli stessi.<br />
Per una piccola applicazione fortunatamente è sufficiente creare un account gratuito. La registrazione richiede solo pochi dati come il Nome Utente e una casella e-mail valida. Una volta compilati tutti i campi clicchiamo sul pulsante Sign Up, verrà spedita automaticamente una mail contenente il link di attivazione del vostro account. Successivamente l&#8217;attivazione Pachube fornisce una <strong>API Key</strong> che viene utilizzata per autorizzare le nostre applicazioni.</p>
<p><span id="more-1681"></span>Il passo seguente è quello di creare un <strong>feed</strong> per memorizzare i dati inviati da un dispositivo remoto.<br />
Clicchiamo sul link <strong>Create a Feed</strong> dal menu <strong>My Account</strong>. Le informazioni da inserire sono diverse, molto intuitive, che identificano una precisa locazione geografica e il tipo di dispositivo utilizzato.<br />
Prima di salvare <span style="text-decoration: underline;">dobbiamo aggiungere</span> almeno un <strong>datastream</strong>, fondamentale per memorizzare e rappresentare i dati provenienti dal nostro dispositivo.<br />
Clicchiamo su <strong>Add a datastream</strong> per crearne uno. Il campo <strong>ID</strong> serve ad identificare il datastream all&#8217;interno del Feed, può essere un valore numerico o testuale, <strong>Tags</strong> specifica alcune parole chiave descrittive per il datastream, <strong>Units</strong> rappresenta l&#8217;unita di misura per i dati del datastream e <strong>Symbol</strong> rappresenta la dicitura dell&#8217;unità di misura.</p>
<p>I valori realmente necessari per la creazione di un feed sono il suo nome e l&#8217;ID del datastream, gli altri campi possono essere lasciati in bianco ma è comunque <span style="text-decoration: underline;">consigliabile</span> compilarli per dare tutte le informazioni per interpretare i dati e capirne la provenienza.</p>
<p>Salviamo il Feed cliccando sul pulsante <strong>Save</strong>.</p>
<blockquote><p>In questo esempio reale ho creato un Feed che monitorizza il carico della cpu del mio pc, potete osservare i dati recandovi a questo indirizzo http://pachube.com/feeds/28933</p></blockquote>
<p>Pachube aggiorna la finestra mostrando le impostazioni del Feed appena creato. In questa finestra troviamo tre link, JSON, XML e CSV, sotto la voce <strong>Feed Format</strong>. Questi tre formati sono quelli accettati da Pachube per interagire da remoto con il Feed. Quello che preferisco è il formato XML, cliccando sul link viene caricata una nuova finestra che mostra la struttura del file XML. Nella barra degli indirizzi viene mostrato il percorso del file XML.</p>
<p>La documentazione presente sul sito è molto chiara. In questa sezione troviamo il codice XML necessario per aggiornare il Feed (possiamo anche apprendere come leggere, creare e cancellare i Feed da remoto).<br />
Ho modificato il codice XML della guida in base alle impostazioni del Feed e del datastream che ho precedentemente creato:</p>
<pre class="lang:xhtml decode:true ">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;eeml xmlns="http://www.eeml.org/xsd/0.5.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1
http://www.eeml.org/xsd/0.5.1/0.5.1.xsd"&gt;
&lt;environment&gt;

&lt;title&gt;Cpu_Usage&lt;/title&gt;

&lt;status&gt;live&lt;/status&gt;

&lt;description&gt;Monitoraggio Carico CPU&lt;/description&gt;

&lt;tag&gt;Carico Cpu&lt;/tag&gt;
&lt;tag&gt;Monitor&lt;/tag&gt;

&lt;data id="CpuLoad"&gt;
&lt;current_value&gt;10&lt;/current_value&gt;
&lt;max_value&gt;100&lt;/max_value&gt;
&lt;min_value&gt;0&lt;/min_value&gt;
&lt;/data&gt;

&lt;/environment&gt;
&lt;/eeml&gt;
&lt;pre&gt;</pre>
<p>&nbsp;</p>
<p>Prima di creare un applicazione basata su un dispositivo hardware ne ho sviluppato una in C# che permette di testare tutta la procedura per interagire con il Feed.</p>
<p>Il codice si basa sulla classe <strong>WebClient</strong> e permette con alcune righe di codice di eseguire l&#8217;aggiornamento</p>
<pre class="lang:c# decode:true ">String UpdateData1 = "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;" +
"&lt;eeml xmlns=\"http://www.eeml.org/xsd/0.5.1\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"version=\"0.5.1\" " +
"xsi:schemaLocation=\"http://www.eeml.org/xsd/0.5.1 " +
"http://www.eeml.org/xsd/0.5.1/0.5.1.xsd\"&gt;&lt;environment&gt;" +
"&lt;status&gt;live&lt;/status&gt;&lt;data id=\"CpuLoad\"&gt;&lt;current_value&gt;";

String UpdateData2 = "&lt;/current_value&gt;&lt;/data&gt;&lt;/environment&gt;&lt;/eeml&gt;";

try
{
String Value = "";
WebClient pachube = new WebClient();

//WebProxy mio_proxy = new WebProxy("Inserire nome proxy", 8080);
//pachube.Proxy = mio_proxy;

pachube.Headers.Add("X-PachubeApiKey", "Inserisci la tua API Key");

//questo codice recupera la percentuale di carico della CPU (testato su win XP)
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
 "SELECT * FROM Win32_Processor");

foreach (ManagementObject queryObj in searcher.Get())
{
Value = queryObj["LoadPercentage"].ToString();
}

Byte[] Data = Encoding.UTF8.GetBytes(UpdateData1 + Value + UpdateData2);

pachube.UploadData("Inserisci indirizzo file XML", "PUT", Data);

Console.WriteLine("Aggiornamento eseguito con successo");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}</pre>
<p>&nbsp;</p>
<p>Le prime variabili contengono il codice <strong>XML</strong> che permette di aggiornare il datastream. Ho diviso il listato XML in due parti in modo da inserire, via codice, il dato della variabile <strong>Value</strong> all&#8217;interno dei tag XML <strong>&lt;current_value&gt;&lt;/current_value&gt;</strong>.</p>
<p>Creiamo un&#8217;istanza di oggetto dalla classe <strong>WebClient</strong>, specifichiamo la nostra API key tramite il metodo <strong>Add</strong> della collection <strong>Headers</strong>.<br />
Recuperiamo il valore della percentuale di carico della CPU ed assegnamolo alla variabile <strong>Value</strong>.<br />
Creiamo la stringa XML completa e convertiamola in un array di Byte (necessario per l&#8217;invio tramite WebClient). In fine aggiorniamo il Feed tramite il metodo <strong>UploadData</strong>.<br />
Nel metodo UploadData dobbiamo specificare, come primo parametro, il nome del file .xml relativo al Feed ( recuperabile dai link presenti sotto la voce <strong>Feed Formats</strong>).</p>
<p>Eseguendo questo codice in modo ciclico, ad esempio utilizzando un timer, Pachube realizzerà, con i dati inviati, un grafico sull&#8217;andamento del carico della CPU:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1718 size-medium" title="pachubeGraph" src="https://logicaprogrammabile.it/wp-content/uploads/2011/06/pachubeGraph-300x102.gif" alt="Grafico Pachube" width="300" height="102" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/06/pachubeGraph-300x102.gif 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/06/pachubeGraph.gif 756w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>Questi dati vengono memorizzati, nel caso dell&#8217;account free per un mese.</p>
<p>I campi di applicazione di questo servizio sono numerosi, possiamo collegare al pc dei sensori ed inviare i dati ai Feed Pachube e condividerli con la comunità.<br />
Il passo successivo che mi interessa realizzare è il porting di questa applicazione desktop su Netduino o Arduino.</p>
<p>The post <a href="https://logicaprogrammabile.it/pachube-utilizzo-netduino-arduino/">Pachube, utilizzo con Netduino o Arduino (Introduzione)</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/pachube-utilizzo-netduino-arduino/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
