Sei sulla pagina 1di 7

[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.

com/iot-collegare-arduino-online-enc28j60

SEGUICI SU:
NEWSLETTER Chi Siamo Collabora Pubblicità FORUM ABBONATI

News ed Articoli Tecnici di Elettronica e Tecnologia


Home Accesso / Registrazione
6 Giu 2014 di Ivan Scordato
Seguimi su Google+

Vinci questa stampante 3D con gli


Oscar dell'Open Source

Al giorno d’oggi, come non mai, stiamo assistendo allo sviluppo di una
nuova applicazione: Internet delle cose, o semplicemente IoT. In questo
articolo vedremo come è semplice, utile ed economico collegare in
Internet Arduino tramite un modulo a basso costo ed alcuni esempi Vedi la classifica in Tempo Reale
d’applicazione: come visitare delle pagine Web tramite esso e salvare le
rilevazioni di presenza acquisite tramite un sensore PIR.
IoT: cos'è? Su questo Blog se ne è già parlato ed è possibile trovare tutti gli articoli
riguardante questo argomento nella categoria dedicata.
Prima di tutto vedremo il materiale del quale abbiamo bisogno per raggiungere il
nostro scopo, come effettuare i collegamenti, le possibili applicazioni, un'operazione
di test ed una proposta di applicazione.
Per il nostro esperimento avremo bisogno di:

1. Arduino Uno;
2. Board ENC28J60;
3. Sensore PIR;
4. Sensore temperatura DS18b20;
5. Wires.

Naturalmente sarà necessario disporre di un router connesso in Internet ed un


cavo Ethernet.

Arduino Uno
Sono quasi sicuro che la maggior parte di voi conoscano Arduino, ma visto che
bisogna essere precisi, voglio dedicare giusto qualche riga per dire qualcosa ed
indicare alcuni riferimenti utili.
Tramite la scheda Arduino è possibile imparare i principi fondamentali
dell'elettronica e della programmazione.
Questa fantastica board fondamentalmente si basa su un circuito stampato che

1 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

integra un microcontrollore con i pin connessi alle porte I/O, un regolatore di


tensione ed un'interfaccia USB che permette la comunicazione con il computer per
la programmazione del microcontrollore.
Alla board viene affiancato un ambiente di sviluppo integrato (IDE) disponibile
per più sistemi operativi (per Linux, Apple Macintosh e Windows). Il codice
utilizzato da Arduino è un inguaggio semplice e intuitivo derivato da C e C++
chiamato Wiring, liberamente scaricabile e modificabile.
Arduino Uno non è l'unica board Arduino esistente, infatti ne esistono molte
altre, tutte diverse tra loro e volendo è possibile creare una board Arduino
personalizzata in base alle proprie esigenze.
Il primo link che voglio indicare è quello del sito ufficiale Arduino.
Il secondo collegamento invece è quello della sezione Arduino di questo ricchissimo
blog.

Board Enc28j60
Questa è una board davvero valida ed alternativa alla shield ufficiale basata sul
chip Wiznet W5100 Ethernet Shied.
Il chip Wiznet W5100 montato sulla Ethernet Shield fornisce uno stack di
protocolli per gestire sia TCP che UDP, con un buffer interno di 16kb e supporta fino
a 4 connessioni simultanee.
Sempre sulla stessa è presente uno slot per micro SD utilizzabile per la gestione dei
propri file.
Il suo unico “difetto” è il prezzo che si aggira intorno ai 30 euro.
Utilizzare una board basata sul controller Enc28j60 (datasheet) permette di
abbassare notevolmente i costi per i propri pogetti, e a volte è senz’altro
possibile rendere il proprio progetto più versatile.
Voglio segnalare un progetto che ritengo essere interessante: A credit card sized Archivio PREMIUM
Ethernet Arduino.
Realizziamo un crawler tra open data,
Sensore PIR leggi ed architettura software

Il sensore PIR è un tipo di sensore che misura i raggi infrarossi emessi nel suo
campo visivo ed è, quindi, un sensore capace di stabilire se qualcosa (o qualcuno) è
in movimento in una determinata area. Questo perchè è in grado di individuare ciò
che ha una temperatura superiore allo 0 assoluto ed emette dell’energia sottoforma Come scegliere una stampante 3D

di radiazioni luminose.
Davanti al sensore è presente una lente (lente di Fresnel) che scompone
l’ambiente in fasci in modo da creare le zone necessarie a percepire la differenza di
temperatura generata da un corpo caldo che le attraversa. [FPGA] VHDL, Quartus II, QSys,Nios II,
Esistono diversi modelli di sensori PIR ma tutti svolgono la stessa funzione: se De0-Nano: ricomponiamo i pezzi!

viene rilevato un movimento, lo stato passa da LOW a HIGH.

Sensore di temperatura DS18B20


Il sensore di temperatura DS18B20 è prodotto dalla Maxim IC (datasheet) Corso su Android - Lavoriamo con il
Questo sensore rileva la temperatura in un range di temperatura fra un minimo di Bluetooth del nostro smartphone
-55°C ed un massimo di +125°C con una precisione di +/-0.5°C.
La pecularietà di questo sensore di temperatura è rappresentata dal fatto che viene
identificato da un numero seriale unico di 64-bit memorizzato all'interno di una
ROM presente al loro interno. Questa caratteristica permette di poter utilizzare un
Programmiamo Processing il linguaggio
vasto numero di sensori su di un unico bus di dati, caratteristica di grafico da cui è nato Arduino
fondamentale importanza nella maggior parte di progetti di data-logging e di
progetti basati sul controllo della temperatura.

2 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

Il protocollo di comunicazione utilizzato da questo sensore è lo Unique 1-Wire che


richiede l'utilizzo di un unico pin per la comunicazione. Inoltre, non necessita di
componenti esterni per funzionare. Le sue caratteristiche sono le seguenti:

Alimentazione: da 3.0V a 5.5V [MATLAB] Analisi dei sistemi di controllo

Calibrato direttamente in ° Celsius (Centigradi)


Range di temperature misurabili: da -55°C a +125°C (da -67°F a 257°F)
Accuratezza: ±0.5°C (nel range -10°C / 85°C)
Risoluzione del sensore: da 9-bit a 12-bit (impostabile dall'utente) EOS-Book #13 con ANN FPGA Batterie
Tempo di conversione di temperature in 12-bit word: 750ms Bluetooth Android PCB-ART2 e molto
altro!
Ogni sensore ha un indirizzo univoco a 64-bit memorizzato in una ROM
interna
Settaggi di allarme (non-volatili) definiti dall'utente
Temperature Alarm Condition
Implementazione di una rete neurale
Per eseguire i test che proporrò in seguito, bisogna seguire questo schema per (ANN) in Arduino con Simulink MATLAB
effettuare il collegamento tra i componenti:

PCB ART 2: l'over-stress elettrico

TV, giornali, social network... perché


continuiamo ad essere dei piccoli ebeti?

Corso su Android - Impariamo a


proteggere i nostri dati

Siamo pronti per effettuare il primo test, ma prima parliamo della libreria che
verrà usata: EtherCard.
Per utilizzare il controller ENC28J60 esistono diverse librerie, ma quella che
ritengo essere più completa e comoda da usare è proprio questa. [Bluetooth, la guida definitiva] - Novità e
Il primo passo da fare naturalmente è quello di scaricare l’ultima versione della comandi

libreria ed importarla nell’IDE.


E’ possibile scaricarla quì.
Dopo avere scompattato l’archivio RAR, possiamo importarla nell’IDE cliccando su
Sketch=>Importa libreria=> Add library. Batterie al litio: Battery Management
System
L’esempio che sto per presentare è possibile trovarlo tra quelli della libreria
denominato come webClient.
Ecco il codice quì di seguito:

#include <EtherCard.h> [FPGA] De0-Nano: ecco a voi l'evaluation


board con Cyclone IV e accelerometro
ADXL345
// ethernet interface mac address, must be unique on the LAN

static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];

static uint32_t timer; UBASIC, il nipote del GW-BASIC

3 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

const char website[] PROGMEM = "www.google.com";

// called when the client request is complete

static void my_callback (byte status, word off, word len) {


Robot LittleBot – Stazione di controllo e
Serial.println(">>>");
programmi di gestione.
Ethernet::buffer[off+300] = 0;

Serial.print((const char*) Ethernet::buffer + off);

Serial.println("...");

}
EOS-Book #12 per Elettronici,
Programmatori ed amanti della
void setup () { Tecnologia!
Serial.begin(57600);

Serial.println("\n[webClient]");

if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)


Veicoli alimentati a celle di combustibile: è
Serial.println( "Failed to access Ethernet controller");
l'anno della svolta?
if (!ether.dhcpSetup())

Serial.println("DHCP failed");

ether.printIp("IP: ", ether.myip);


Tracciato elettrocardiografico: ecco un
ether.printIp("GW: ", ether.gwip);
sistema per rilevarlo
ether.printIp("DNS: ", ether.dnsip);

if (!ether.dnsLookup(website))

Serial.println("DNS failed");
Angular Electronics

ether.printIp("SRV: ", ether.hisip);

void loop () { SSD: la guida definitiva


ether.packetLoop(ether.packetReceive());

if (millis() > timer) {

timer = millis() + 5000;


Come sviluppare un oscilloscopio con
Serial.println();
l’iPhone e dominare la trasformata di
Serial.print("<<< REQ "); Fourier: le immagini
ether.browseUrl(PSTR("/foo/"), "bar", website, my_callback);

Sarà mai possibile viaggiare fra le stelle?


Adesso vedremo come è possibile registrare le rilevazioni acquisite tramite il
sensore di movimento.
Anche stavolta utilizzeremo un codice simile a quello precedente, l’unica differenza
riguarda l’URL che viene visitato.
Infatti tramite la funzione GET saremo capaci di inviare il messaggio di allerta ad EOS-Book @4 RFID & NFC

un nostro sito web dove sarà presente una pagina PHP che ha lo scopo di salvare le
rievazioni e l’ora su un database MySQL.
Ecco il codice da caricare su Arduino:
Reballing & Rework: tecniche di saldatura
In precedenza ho parlato di una pagina PHP da creare sul proprio sito per salvare avanzate
i dati ricevuti, ma in realtà sono due: una servirà per ricevere e salvare le
rilevazioni, mentre la seconda servirà per visualizzare le rilevazioni.

4 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

La pagina ricevi.php dovrà contenere il seguente codice:


code
La pagina visualizza.php questo altro: 1 2 3 4 5 6 7 8 9 seguente
> Ultimo >>
<?php

// effettuo la connessione al mysql Segui @ElettronicaOpen 1.755 follower


$host = "host";

$database = "database"; Le categorie di ElettronicaOpenSource


$password = "password"; ANDROID // Android il S.O. di Google
APPLE // iPad iPhone iPod Hacks
$link = mysql_connect($host, $database, $password); ARDUINO // Guide e progetti Open Source
if (!$link) { ANALOGICA ELETTRONICA // Analog
AUDIO PROGETTI // Amplificatori e Valvole
die('non connesso : ' . mysql_error()); AUTOMOTIVE // Car Tuning OBD Harvest
} APPLICATION NOTE // AN e Design Note
MARCATURA CE NORME // Normative e Legal
DATASHEET // Parti e componenti elettronici
// effettuo la connessione al database mysql ELETTRONICA DIGITALE // FPGA VHDL etc.
EMBEDDED // Linux Embedded OS
$db_selected = mysql_select_db('name_database', $link); ENERGIE RINNOVABILI // Energy Harvesting
if (!$db_selected) { FAI-DA-TE // Do-it-Yourself Maker!
GADGETS // HI-TECH e Accessori
die ('Non &egrave; possibile connettersi al database : ' . mysql_error()); HACKS // Hacks & Mods
} GPS/GSM // Guide e Progetti
HARDWARE // Pinouts e Connettori
?> ILLUMINAZIONE // Soluzioni di Illuminotecnica
<p align="center"> LINUX // Linux Embedded e Distro
MATEMATICA // Formule, giochi, persone etc.
<table border="1" width="600" bgcolor="orange"> MEDICALI // Elettromedicali e Radiologia
<tr>
MICROCONTROLLORI // Controllers
MILITARE AVIONICA // Military & Aereospace
<td>Data:</td><td>Stato:</td> OPTOELETTRONICA // Led Oled Display LCD
</tr>
PCB CIRCUITI STAMPATI // Schede
PROGRAMMAZIONE // Software e Firmware
ROBOTICA // PLC e Robot
SCHEMI ELETTRICI // Progetti & Progetti
<?php
SENSORI & MEMS // Data acquisition
$query = mysql_query("SELECT * FROM dati"); POWER ELECTRONICS // SMPS PFC
STAMPANTI 3D // 3D printing
while($row = mysql_fetch_array($query)){
STRUMENTAZIONE // Oscilloscopi & Multimetri
$data = $row['data']; TECH & SCI // Scienza & Tecnologia
TOOLS // Programmers Debugger DEV
$data = $row['stato'];
USB // USB2.0 USB3.0
WIRELESS RFID ZIGBEE // Elettronica senza fili
echo "<tr><td>$data</td><td>$stato</td></tr>";

?>

Siamo giunti alla fine ed è il momento di fare alcune considerazioni.


Come è stato possibile vedere in questo articolo, è possibile realizzare un sistema
IOT funzionante davvero con poco, l’unico limite è la propria fantasia.
Spero che questo articolo riesca a spronare chiunque abbia pensato di realizzare il
proprio progetto
IoT.
Progetti Schemi Elettrici & Circuiti arduino Internet delle cose oscar open source
Login o registrati per inviare commenti

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali

5 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno


accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere
necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere
al Blog

fantastico!

Inserito da Dario.Sciortino il Lun, 09/06/2014 - 22:56.

Complimenti Ivan!! Sono rimasto praticamente incantato dopo la lettura di


questo articolo, a pensare alle infinite possibilità di applicazione... non vedo l'ora
di acquistare il tutto per sperimentare!!
Login o registrati per inviare commenti

Richiesta

Inserito da Matteo B il Ven, 13/06/2014 - 17:17.

Ciao Ivan, grazie per questo atticolo che mi sta tornando parecchio utile per
concludere la mia tesina di maturità, una richiesta, potresti postare di nuovo il
codice della pagina ricevi.php, purtroppo non si vede più.
Complimenti per il lavoro!
Login o registrati per inviare commenti

Grande Ivan. Utente PREMIUM

Inserito da Antonello il Lun, 16/06/2014 - 08:24.

Grande Ivan.
Login o registrati per inviare commenti

microcontrol.it

Heidenhain Anilam Logan Elesta


Sipe CCB Olivetti Inductosyn

Login

Chi è online Ultimi Commenti Segui il FORUM


Ci sono attualmente 18 utenti e Grazie Problemi sottoscrizione abbonamento
51 visitatori collegati. 8 min 20 sec fa sensori di distanza ultrasuoni
problemi pagamento abbonamento Consiglio su un gestionale per la fatturazione GRATUITO
Utenti online
2 ore 52 min fa Schema per lampeggianti a led
Michele.Catana Nessuna visione nostalgica
partitore 60db
ivob 3 ore 10 min fa
Arduino nano errore
ZioTo73 Interessa anche a me
Box arduino uno
5 ore 26 min fa
donatopace Modifica indirizzo IP
USB da 100W
Roberto.Santoni Modbus Master e Slave per PIC32 Timer2
5 ore 36 min fa
Mario.Nevola amplificare un PWM in uscita da un pin di un microcontroller
una giusta via di mezzo
andrea.mellini.50 6 ore 38 min fa Stampante in rete
pasquale.marasca.89 Che strana scelta quella di simulatore USB (IP over USB)

6 di 7 19/06/2014 20.17
[IoT] Collegare Arduino Online - ENC28J60 | ELETTRONICA OPEN ... http://it.emcelettronica.com/iot-collegare-arduino-online-enc28j60

Wild Rabbit 8 ore 40 min fa continua


Simone.Miccoli Grazie per i complimenti…
20 ore 26 min fa

EMCelettronica Srl - P.iva 06433601009

7 di 7 19/06/2014 20.17