Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EDITORIALE ron1ca n
Rivist a mensile, anno XXV n. 233
MARZO 2019 ·
riempirsi di offerte per un viaggio ai Caraibi, non dopo aver effettuato Elisa Guarniero (0331 ~ 752668)
ricerche relative a questa meta in Internet, ma dopo un paio di (@) elisa.guarniero@elettronicain.it
telefonate con un amico. Direzione, Redazione, Pubblicit à
FUTURA GROUP srl- Divisione Editoriale
Oppure vedere la
via Adige 11 - 21013 Garlarate NA)
pubblicità di un prodotto 1J Tel. 0331-752668
Ad oggi almeno il 90°/o della posta dopo che ne avevate Abbonamenti
che arriva alle nostre caselle è discusso via mai l. Annuo 1O numeri Euro 45,00
Estero 1O numeri Euro 45,00 (digitale)
Fatti ai quali molte
costituto da,n} essaggi indesideratL:o , Le richieste d i abbona,mento vanno inviate a:
persone si stanno FUTURA GROUP sr[
già contrassegnat a come SPAM. abituando piano piano, via Adige 11 , 21013 Gallarate 0/A)
ma che sono di una Il Tel. 0331-752668
oppure tramite il sito
gravità inaudita: un atteggiamento che rischia di farci fare la fine della
https://ww w.e/ettronicain. it/abbonamenti!
rana bollita.
Distribuzione per l'Italia
Altro che il GDPR sulla protezione dei dati! Ed anche ammesso SO.DI.P. Angelo Patuzzi S.p.A.
che questo insieme di leggi abbia tutti i requisiti per limitare questi via Bettola 18- 20092 C inisello Balsamo (MI)
•
Il
•
'
Networking
Mercury System
loT & Connectivity •
Made Simple
RUBRICH E •
01 Editoriale ARTICOL I
05 Q&A Questions & Answers
09 Embedded iOT NETW RKING
Digitai Transformation of Things
23 Neopixel con WiFi
13 Componenti & Sistemi Realizziamo installazioni luminose
NeoPixel con Fishino e NodeMCU
17 Appuntamenti & Eventi controllati via Wi-Fi da PC o da
122 Scienza & Tecnologia Raspberry Pi tramite una libreria
Python.
126 Fonti Rinnovabili
NET ORKINC 1
J
31 Mercury System
loT & Connectivity
Progetto di Copertina Made Simple
Sistema di sviluppo modulare
che semplifica le applicazioni di
connettività e loT: basato su schede
combinabili come mattoncini LEGO,
su un completo framework software
e permette scalabilità e modularità.
Prima Puntata.
Networking
Neopixel a
controllo WiFi
2
•
'
CONTENUTI
Hi-Tech
Raspberry Pi
Home Automation
con OpenCV 4
Strumentazione
Generatore
di segnali DDS
97
Didattica
Antennino, un
Corso CIP
gateway per loT
NETWORKINC
57 ANTENNINO,
57
un·gateway per loT
Una nuova applicazione della board Antennino
che realizza un gateway utilizzando un
software open source con cui realizzare un
109
pannello di controllo (Dashboard) per i nostri
dispositivi wireless.
Prima puntata.
RAS RRY Pl
STRUMENTAZI NE 97 Home Automation -= -_ - -
Hl-TEC H DI ATTI A
87 Spettrometro su PC 109 Conoscere ed usare le Core
Utilizziamo la piattaforma basata sui lndipendent Peripherals
.
sensori deii'AMS in abbinamento al Personal Scopriamo nuove periferiche CIP dei
Computer e grazie a un software ad hoc microcontrollori Microchip emettiamole
tracciamo sullo schermo le curve di spettro alla prova con esempi di test realizzati con
frutto dell'analisi eseguita. la nostra board di sviluppo Curiosity. Quarta
puntata
3
•
Microchip, uno dei fornitori leader, con un completo portfolio per la gestione
e monitoraggio dell'alimentazione, offre la potenza, la flessibi lità e la sicurezza
necessari per scegliere sempre la giusta soluzione per ogni tuo progetto.
Il nome e logo Microch1p ed illogo Mtcrochip sono march11ndustnali registrati d1 M1crochip Technology lncorpornted negli U.S.A e altn Stati Tutt1 gli altn marchi
1ndustnali appartengono a1 rispettiVI titolan.
C 2019 Microchip Technology lnc. Tutti 1 diritti riservati. DS20006065A. ~:1EC22301ta01 /19
QUESTIONS & ANSWERS
l\ VN Er-·
- Reach Further
((}) rDEMIA
ARKESSA
... ..
SCAN THIS QR CODE
•
TO GET STARTED
..,.,.net .., l=-
cUICC-testpack
_.....
#,....,.. _ _,_ ...
- -
5
,..--------- ~
--
-~
NMI
- lDO
SW4
sws
RESET
1
SPI
--..
~
l !j . _
6
QUESTIONS &ANSWERS
Loss • loss due to reslstance o No contaci = no loss • loss due lo IC current draw O No contaci " no loss
Mounting Area Il 2 components x Extremely large core o 1 component o 1 component (ìndustry's smallest)
New current sensor with MI element provides 3 advantages: contactless detection, compact, and zero loss
messo a punto un sensore di corrente consumi (0,07 mA - l 00 volte inferiore ai unicamente il campo magnetico generato
contactless a magnete-impedenza con prodotti convenzionali) e vanta il formato dalla corrente.
perdite di potenza minime. La richiesta di più piccolo del settore (3,5 x3,5mm). Nelle illustrazioni viene evidenziata la par-
sensori in grado di misurare correnti, Questo sensore utilizza per la prima volta ticolare configurazione del nuovo sensore
soprattutto di basso livello, è cresciuta lo speciale filo amorfo sviluppato da mettendo in evidenza le differenze rispet-
enormemente negli ultimi anni. L'impiego Aichi Steel Corp., progettato per rilevare to alle tecnologi e precedenti, cor'ltactless
di sensori di Hall, una delle tecnologie i campi magnetici, e che presenta un o meno.
normalmente utilizzate, presenta solita- rilevamento ad alta sensibilità con basso
mente notevoli consumi di corrente e consumo energetico. Si prevede che il
bassa sensibilità, dato che una parte di risultato sarà l'adozione di questa tec- Web Forum
corrente viene assorbita all'interno dello nologia in un gran numero di ambiti per e supporto tecnico
stesso sensore. accelerare l'loT.
ROHM ha sviluppato recentemente un in- Questo sensore dispone tra l'altro di una Hai un problema con uno
novativo sensore di corrente a magnete- funzione integrata di cancellazione di dei circuiti pubblicati?
impedenza (MI) a bassa corrente ed alta eventuali campi magnetici di disturbo, Vorresti effettuare una modifica?
sensibilità che consente il rilevamento evitando l'impiego di una schermatura. Accedi al nostro Web Forum
completamente contactless di corrente. Il Generalmente, nei prodotti conven- dove i nostri tecnici
sensore è stato sviluppato associando la zionali, l'errore di misura si veriftca per (ma anche gli altri lettori)
produzione di semi conduttori all'elemento i campi magnetici di disturbo, come ti aiuteranno a chiarire qualsiasi
a magnete-impedenza (MI) di Aichi Steel. quelli geomagnetici (cioè terrestri), che dubbio di natura tecnica.
Il risultato è un sensore contactless di determinano la necessità di usare shield Collegati a:
corrente che elimina la necessità di as- per bloccare le interferenze. Nel nuovo
sorbire corrente all'interno del sensore per sensore di Rohm viene utilizzato un parti- www.elettronicain.it /webforum
misurarla. Il sensore stesso ha bassissimi colare cablaggio che permette di rilevare
7
•
•
'
••
Il Bluetooth Special lnte-
rest Group ha annunciato
.... oca 1zzare con tempo reale {RTLS), come
quelli utilizzati per il trac-
l
l'implementazione, nella ciamento delle risorse,
release 5.1 del protocollo,
di una nuòva funziona-
l ue oo l
nonché i sistemi di posi-
zionamento interno {l PS),
lità di ricerca che rivolu- come quelli per la segna-
zione la localizzazione. letica interna. La nuova
La nuova funzionalità funzionalità di rilevamen-
• permette ai dispositivi di to della direzione aggiun-
determinare la direzione ge al Bluetooth 5, forte-
•
di un segnale Bluetooth, mente orientato all'loT,
consentendo in tal modo a diventare sempre più
lo sviluppo di soluzioni protagonista tra i link wi-
di prossimità Bluetooth reless che si contendono
in grado di comprendere l'Internet delle cose. La
la direzione del disposi- funzione di ricerca della
tivo così come i sistemi direzione è inclusa nella
di posizionamento Blue- versione 5.1 della specifi-
tooth che possono lo- ca Bluetooth Core; inoltre
calizzare con precisione Launch Studio, lo stru- ·
al centimetro. Fino ad oggi le mento SIG Bluetooth utilizzato
soluzioni di prossimità {tipo i per qualificare i nuovi prodotti
Beacon) utilizzavano il Blue- Bluetooth, è in fase di aggior-
tooth per capire quando due dispositivi erano vicini e namento per supportarla.
quanto. Con la nuova funzionalità di ricerca della dire-
zione, il Bluetooth approda ai sistemi di localizzazione in www.bluetooth.com
9
' '
Microsoft China ha inaugurato a Area è un grande distretto indu- inizierà ad aprile di quest'anno la
Shangai il suo più grande laborato- striale esteso in un'area di 522 km propria attività di ricerca e sviluppo,
rio del mondo dedicato allo svilup- quadrati, comprendente grattacieli, che si concentrerà non solo sull'in-
po di soluzioni di intelligenza arti- fabbriche di automobili e acciaierie, telligenza artificiale e sull'laT. ma
ficiale e di applicazioni dell'Internet . fabbriche locali di aziende straniere, anche su argomenti di grande in-
of Things. ma anche zone abitative dove pos- teresse come gestione dei big data,
Frutto di un accordo tra il governo sono risiedere gli occupati. In essa cloud computing, block-chain, re-
distrettuale di Pudong New Area, gli insediamenti sono ripartiti in altà virtuale e realtà aumentata
Zhangjiang Group e Microsoft, l'in- zone distinte per settori di business industriale.
sediamento sorge a Zhangjiang, come la finanza (Luijazui). lo svilup- L'attività del laboratorio congiunto
Shanghai e copre un'area di po ad alta tecnologia (Zhangjiang). non si limiterà alla ricerca, allo svi-
100.000 metri quadrati, edificata l'esportazione (Jinqiao) e il com- luppo e all'industrializzazione nelle
su un'isola artificiale. Pudong New mercio (Waigaoqiao). Il laboratorio suddette applicazioni, ma anche
della creazione di un supporto alle
aziende che si occupano di loT.
La cooperazione farà pieno uso
delle consistenti risorse di ricerca
scientifica del colosso Zhangjiang,
che verranno orientate anche a
promuovere l'integrazione e la tra- •
'
www.china.org.cn
•
--------------------~.,
•
10
>Il robot in ospedale: Konica Minolta e IIT
•
11
è lo strumento più importante -
rio elettronico da cui si esige
ma di tutto la possibilità di regolare
buona risoluzione la tensione e la corrente cv
--
---
----
di uscita, requisiti soddisfatti da questi nuovi •
---
---
- __ ,
alimentatori. Mantengono i valori impostati --- \
in modo affidabile e indipendentemente dalle cc ---
fluttuazioni della tensione di alimentazione o
del carico collegato. -----
------
• -----
ALIMENTATORE LINEARE CON DOPPIA
0J16Q2C ---
----
USCITA REGOLABILE
0·16V G-2A
---
•
\ •
,
Cod. AL2X3005 Prezzi IVA inclusa.
AMT49105, driver MOSFET BLDC certificato ASIL-8
Allegro MicroSystems Europe annun- caratteristiche esclusive che riducono
cia I'AMT491 05, il suo più recente dri- il consumo energetico complessivo, in
ver MOSFET di alimentazione a canale linea con le attuali richieste in ambito
N conforme . ISO-26262. AMT49105 automotive.
semplifica la progettazione dei sistemi L'AMT49105 è un'eccellente soluzio-
motore e riduce l'ingombro, integrando i ne per applicazion i industriali e au-
requisit i dei sistemi analogici di potenza. tomobilistiche ad alta potenza, quali
Grazie a un robusto gate drive di usci- ventole di raffreddamento del motore,
ta, questo dispositivo può essere uti- I'AMT49105 dispone di ricetrasmet- sistemi frenanti e applicazioni con più
lizzato in una vasta gamma di applica- t itore LIN, alimentazione regolata per pompe in cui l'alimentazione spazia da
zioni, comprese le applicazioni per di microprocessore, monitor di fase per 5,5 V a 50 V.
potenza fino ed oltre ad 1 kW. Inoltre il controllo BLDC senza sensori e altre www.allegromicro.com
97
rispetto a un classico disposi-
tivo mobile. Inoltre, ottenere
sensibilità del tempo di transito
degli impulsi.
ri e un front-end analogico ECG un'elevata precisione nelle mi- www.maximintegrated.com
13
•
'
14 •
Il nuovo mi ero a 8 bit STM8L050 di ST VCNL4030X01, nuovo sensore
incrementa le funzionalità luminoso ambientale e di prossimità
STMicroelectronics sta in- . -u Vishay ha presentato un nuovo striali e automobilistiche.
Advanced features on 8 p lns
crementando l'integrazione sensore di prossimità e sen- Questo dispositivo può esse-
di nuove funzionalità nei mi- sore di luminosità ambienta- re usato per realizzare sensori
crocontrollori a 8 bit a basso le completamente integrato, di prossimità per il blocco del
costo, bassa potenza, come con quattro diverse opzioni touchscreen su smartphone
il nuovo STM8L050. L'STMBL di indirizzo dello slave. Con la e tablet al fine di risparmiare
a basso consumo energeti- tecnologia Filtron, il disposi- energia; rilevamento di presen-
co incorpora varie periferi- tivo VCNL4030X01 combina i za per l'attivazione di display in
che analogiche, un controller nali e un timer in tempo reale rilevatori fotografici per luce di notebook, automobili e disposi-
OMA e EEPROM dati separa- a bassa potenza (RTC) con prossimità e ambientale, un IC tivi consumer e industriali.
ta, il tutto in un package S0-8 allarme programmabile e wa- di condizionamento del segna- www.vishay.com
• •
econom1co, con un mass1mo keup periodici, consentendo ai le, un ADC a 16 bit e un IRED
di sei 1/0 utente. Sfruttando progettisti di ridurre al minimo ad alta potenza in un compatto
il potente ed efficiente core i componenti analogici esterni. package da 4 mm per 2,36 mm
STM8 della ST con clock fino Inoltre, il supporto per un clock per O, 75 mm. Il senso re, qualifi-
a 16 MHz, I'STM8L050 offre esterno o interno fino a 16 cato AEC-Q101, è dotato di una
elevate prestazioni per pro- MHz migliora ulteriormente funzione di interruzione e sup-
dotti con risorse limitate come la flessibilità per bilanciare le porta l'interfaccia di comunica-
2
sensori industriali, giocattoli, prestazioni con risparmi sulla zione 1( per dispositivi mobili e
schede di accesso, controller distinta base (BOM). Altre ca- applicazioni domestiche, indu-
di e-bike, domotica o prodotti ratteristiche includono 8Kbyte
di illuminazione, cartucce per di memoria Flash an-chip, •
- stampanti intelligenti, e cari- 1Kbyte di RAM, due timer a 16
cabatterie. Oltre a due com- bit, un timer a 8 bit e interfacce Wolfspeed presenta il
di connettività e debug tra cui
paratori, I'STM8L050 dispone
di un convertitore analogico- SPI, 12C, UART e SWIM. diodo Si C di 5/\ generazione
digitale a 12 bit (AOC) a 4 ca- www.st.com
Wolfspeed, società comple- no praticamente perdite di
tamente controllata da Cree, commutazione - dovute a
• •
ha introdotto la 5" genera- un recupero Inverso quas1
Toshiba Memory presenta i primi zione (C50) di diodi Schottky nullo - e alla caduta di ten-
Si Cda 1700 V ottimizzati per sione diretta più bassa del
dispositivi di memoria UFS Vers. 3.0 applicazioni nel campo delle settore. Ciò genera efficien-
energie rinnovabili della rica- ze e sistemi più elevat i, più
Toshiba Memorv Europe rica di veicoli elettrici, in am- piccoli, più modeni, più velo-
GmbH (TME) ha avviato la bito industriale, inclusi inver- ci e più economici rispetto ai
consegna dei campioni della ter solari e di turbine eoliche, dispositivi bipolari al silicio
versione da 128 GB dei primi caricabatterie e alimentatori (Si). La famiglia di prodotti
dispositivi di memoria Flash di continuità (UPS). CSO combina queste carat-
sul mercato conformi alla ver- Il 1700V C50 è disponibile teristiche con la nuova op-
sione 3 delle specifiche Uni- in commercio sia in formato zione di package TO- 24 7-2,
versai Flash Storage (U FS). dado nudo che in formato che lo rende ideale per am-
La nuova linea di prodotti l nuovi dispositivi integrano package, offrendo ai pro- bienti ad alto inquinamento
utilizza le memorie flash 30 una memoria flash 30 BiCS gettisti un portfolio versatile come caricabatterie e in-
BiCS FLASH a 96 strati all'a- FLASH a 96 strati e un control- che può essere utilizzato in verter solari fuori bordo che
vanguardia dell'azienda ed è lore in un package standard diverse soluzioni. Si affianca richiedono alta potenza ed
disponibile in tre tagli di capa- JEOEC da 11,5 x 13mm. Il con- alla linea att uale di MOSFET elevata tensione.
cità: 128GB, 256GB e 512GB. trollore effettua la correzio- 1700V, forniti in package www.wolfspeedcom
Con prestazioni di lettura/ ne degli errori, il livellamento T0-24 7-4 Plus ottimizzato,
scrittura ad alta velocità e un dell'usura, la traduzione degli che fornisce un isolamen-
basso consumo energetico, indirizzi logici a livello fisico e to elettrico supplementare
i nuovi dispositivi sono ideali la gestione dei blocchi difet- adatto per ambienti ad alto
per applicazioni quali i dispo- tosi, consentendo agli utenti inquinamento.
sitivi mobili, gli smartphone, i di semplificare lo sviluppo dei l nuovi diodi Schottky di
tablet e i sistemi di realtà vir- sistemi. Wolfspeed non presenta-
tuale/aumentata. www.toshiba-memorv.com
15
•
cod. YM397 cod. SETCONDELE cod. YM403 cod. KITFUSSX30
SET 1000 PEZZI DI LED SET CONDENSATORI ElffiROLITICI SET 100 CONDENSATORI KIT FUSIBILI82 PEZZI6X30
3MM -VARI COLORI 12 VALORI POLIESTERE - VARIE CAPACITA ... . VALORI ASSORTITI
..... .................... , ...................... . ., ....................................... , ...... . ........................................... • ........... .... l ............................ .
l • • • • ••• o ........... l •••• o l • l • ' ••••••••• .. .. . .......... .. .. .... . .................... .. .................. . • l • • .. l • • l • • • • • .. .. • • .... l •••
SET 300 PEZZI LED 3-5 MM SET 50 TRIMMER DI PRECISIONE SET 500 PEZZI LED 5MM SET COMPONENTI ELffiRONICI
VARI COLORI MULTIGIRI· MONTAGGIO VERTICALE VARI COLORI ASSORTITI
.. o • • • • • • • • • • • t .. • • • .. • • • .. .. • • • • • • • • • ............ . • • • • • • l ......................... o • l o ••••• o •••••
·························-·-··· -·-·-·-····· ··· .................... l ···············-···-··· - · · ·
' >
. --
• - l
.:. '-
••
•
. . .. ..
.. ..... ...........
'
...
•• • • • •• •••••• •
··········---·-············ ····-·-······· ..... o ···~·-···-·-· - ·-····· ........... . ................ .. ·········-·······-·-······· ••••• l . . . . . . o .. • • ' • • .. • • ............. . ...... .
SET 300 TRANSISTOR ASSORTITI SET COMPONENTI ELETTRONICI SET INDUTTANZE 24 VALORI SET RESISTENZE SMD 0805
T0-92 VARI CON PIASTRA EALIMENTATORE 10 PEZZI PER VALORE DA 3,6 KOHM A1OMOHM
• • • • l ... . l ••• t ..... t . . . . . . . . . - .... l •• o o o •••••••• t •• o •••••••••••• t ••••••••• t • • .. o • o o • • • l •••••••
••••• o • o •• l • • • • • • • • o • • • • • • ••••• t
.·
........"... .. ... ..... ••
-
.....
.
"""
"""
~
.:.. \" . ,.
•'''' "' ..... 4& ......... ..
-· ~
n
,,,,., .. " l ••••
'
...._... ..,n
a a
. ... .. .. .. .. .. .... .... . ..... ... .............. .
' • o • • • • • • • • • • • ' • • .. • • • .. • • • • •••••••••••••• o • ' •• ••• l • • •• o • l • • • • • .. • • • • • • • • • • • l ............. t • .. • • o • • ' . . . . . . . o • • • .. • • .. • ••• t . . . . . . . . . . . . . . . o .. l . . ..
SET DIODI ZENER SET RESISTENZE SMD 0805 PSET CONDENSATORI CERAMICI SET DIODI RADDRIZZATORI
10 PEZZI PER VALORE DA OA3,6 KOHM 22 VALORI-lO PEZZI PER VALORE 100 PEZZI
.. t ........... o • o • o •• •••• o • • .. • • o • o • • o ••••••• ol • • • • • • .. • • • • ................ o •• o .............. . • • • • • • • • • • • • o ....................... o .... l .... .
······•••o••t40oto•••••o••············· ·······
{.
• ............. . •• ,, . . . . . . . . . ,.. ....... o•l•tol•oo •••• • • • • • • • • • • • • • • • • .. • • •••••• o .... - .......... .
···············~··--···············
l • • • • • .. • • • • • • • • • • • • • • • • .. • • • • .. .. •
••••• 00
SET TRIMMER MONTAGGIO SET CONDENSATORI MULTISTRATO SET TRIMMER MONTAGGIO SET 70 PZ ZOCCOLI ALAMELLA
ORIZZONTALE - ASSORTITI VARI VALORI-l OPEZZI PER VALORE VERTICALE - ASSORTITI ASSORTITI
.................... ······· ·················· ·····••o• oooo ··········~········· •·•••·••• ·······o•l••·•• ................................ .
•·o·•····· · . ······· ············· ············-·
•
17
>25-29 MARZO 2019
DATE 2019
FIRENZE
www.date-conference.com
•
...
18
•
/
Dal 2 al 5 aprile 2019 si svolgeranno stry 4.0 connettendosi all'ecosistema di l Internet of Things, Robotics, Wearable
in contemporanea al MINO - Milano pro-Maker o Maker 4.0 sia per esplorare e Wireless - e organizzatore di mani-
lnnovation District le nuove edizioni le nuove potenzialità della manifattu- festazioni fieristiche, eventi, convegni e
di: IOTHINGS, ITALIA5G, EMBEDDE- ra permesse dallo sviluppo del digitale seminari formativi che offrono occasioni
DIOT, IOENERGY, AI+BOTS World e ma anche per trovare talenti e ridurre lo di dibattito, confronto, scambio com-
BLOCKCHAIN Now. Novità 2019 loMO- skill shortage. lnnovability dal 2000 è il merciale e networking tra aziende, isti-
BILITY e MAKER 4.0. Otto eventi riu- punto di riferimento italiano della filiera tuzioni e mercati.
niti per creare INNOVABILITY HUB: un di operatori nel settore delle tecnologie
esclusivo punto di aggiornamento sulle digitali "disruptive"- in particolare M2M www.iothingsmilan.com
tecnologie più "disruptive" e per favorire
la trasformazione digitale delle aziende.
INNOVABILITY HUB è una piattaforma
pronta per ospitare ed includere nella
programmazione anche iniziative realiz-
zate dalle singole aziende, sfruttando la
sinergia con l'evento. È possibile realiz-
zare queste attività non solo durante le
t re giornate dei nostri event i (3-5 aprile)
ma anche nella giornata precedente (2
aprile).
L'area espositiva vedrà la presenza di im-
portanti player internazionali e di azien-
de specializzate che rappresenteranno
la completa filiera loT, nelle component i
hardware, software e servizi integra-
ti. Nell'ambito della manifestazione, il
giorno 5 aprile prende il via Maker 4.0 è
il primo evento dedicato alle aziende che
vogliono fare Open lnnovation su lndu-
L'elenco aggiornato di tutte le Mostre Mercato del 2019 è disponibile sul sito www.elettronicain.it
sul quale è anche possibile scrivere un commento sulle fiere visitate.
L'elenco completo def più importanti eventi nazionali e internazionali.dielettroni ca, sicur~zza e fonti rinnov(lllili,è disponibile sul nostro sito~
http:i o, w.elettronicain.itlmyMain/Fiere/p_fj~re.asp ·..··.·.•. •.~ . ~. . .·
19 '
t
~
~
~
~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
~
ABBONAMEN TO ~
~
ANNUALE ~
~ on-line
compilando il modulo riportato
nella pagina "Abbonamenti" del
nostro sito www.elettronicain.it.
~mai l
scrivendo a
abbonati@elettronicain.it
.
• Neopaxe1c
on Wifi
T
atewaY per IO
con i dati riportati nel coupon a lato.
• Antennino, un g
di segnali oos
~posta
• Generatore
ornetro sU PC
• spettr
comp'ilando il modulo di .
abbonamento riportato a lato e
inviandolo al seguente indirizzo:
FUTURA GROUP srl
Mese dopo mese realizza i Progetti Via Adige 11
descritti sulla rivista, rimani aggiornato 21013 Gallarate (VA)
con i nostri Corsi, approfondis ci
la conoscenza delle tecniche e dei ~telefono
telefonando a
componenti più avanzati con +39-0331-752668
i nostri Tutorial e le nostre News.
·' desidero abbonarmi per un
·' ''''''''''''''''''''''''''''''''''''''''''''''''''''''
l anno alla rivista Elettronica In.
Riceverò i seguenti omaggi:
• D
• ARCUINO UNO - Programmazione
avanzata e Librerie di sistema
D Impara l'elettronica sperimentando
D Primi passi in elettronica
D Ardui no e le tecniche
RISPARMIA FINO AL 25% di programmazione
dei microcontrollori ATMEL
-- ----------------·-
Via:
La possibilità
CAP:
di leggere
gratuitamente Città:
la versione digitale
Provincia: Telefono:
di Elettronica In
e-mail:
Data: Firma:
l.
Resto in attesa di vostre disposizioni per il pagamento.
Ai sensi dell'art. 13 del D.Lgs. 196/2003, in tema di protezione dei
dati personali, FUTURA GROUP srl informa che i dati liberamente
forniti attraverso la compilazione del presente modulo saranno
trattati e conservati in conformità a tutte le normativa vigenti. l
dati suddetti saranno trattati su supporto cartaceo e informatico,
mediante sistemi di protezione atti alla tutela della riservatezza, per
finalità connesse all'esecuzione dei rapporti contrattuali instaurati.
Inviare in busta chiusa a:
FutuUa
Group
DIiJ itmi ~
FUTURA GROUP srl
'
Via Adige 11 • 21013 Gallarate (VA)
Tel. +39-0331-752668
•
l
35SO
€ 54,00
cod.CP728 TELECAMERA lP WiFi MOTORIZZATA
da 2MPX ONVIF
Permette la visione da remoto tramite smartphone con
sistema Android e iOS. Consente di registrare video sulla
memoria dello smartphone tramite apposita APP, oppure
su micro SD Card (max. 128GB, acquistabile separatamente).
Dispone di microfono e di altoparlante che permettono di
parlare e ascoltare da remoto.
Realizziamo
lcuni anni fa l'americana Adafruit
installazioni luminose lndustries ha rivoluzionato il mercato
NeoPixel con dei LED introducendo i propri NeoPixel,
la cui caratteristica principale è di
Fishino e NodeMCU integrare, in un unico package, un LED
controllati via RGB e il rispettivo controller. L'intento di
Adafruit era chiaramente quello di
Wi-Fi da PC o da andare incontro al mondo Ardui no
Raspberry Pi tramite semplificando la gestione dei LED, integrando nello stesso
package sia il controllar che il led RGB. Da allora i NeoPixel si
una libreria Python. sono diffusi ampiamente tra il pubblico anche e soprattutto
perché oltre a integrare il controller possono essere collegati
in cascata e indirizzati individualmente, controllandone
singolarmente il colore e la luminosità. All'interno di ciascun
LED NeoPixel si trova un LED SMD RGB (solitamente un 5050
23 '
•
~IJIIIIJIIJIIIJIIJIIIJIIIIIIJIIIIIJIIIJiliJJJIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJIIIIIII
::::
: *' ':~ .
;,. : ·.. ··_.·, ' .. _,:,-:'.',·.. :.-- :·,'': : .. ;, .. ::: '·. .. ., .,
• ;i>
• .•. ·,; ••• :. •. • •• • .·· E : . :••
., ;_ . '~: da circa 20 lumen} e un integrato WS2811 o
~List~t~ f . · ·•· :· : ·:.;.. ,
. ..
: •
.. · · · · ·.·• .'· ·. ·... ...- ~' WS2812 che svolge il ruolo di driver. Un microcon-
': '. ··.. ;; -" .. ·. . -.: .
·.. #defihè 'MY SSIIl' c4imì6 ssi d'' ·· ·· · . .• · .· dimostrato la loro versatilità: illuminazione interna
. - . tdef'i~e" ·MY:PASS. cimia: passwora" - .. : · ...\· ...~·.· ·.·: .~ .~·.. : ·: · ·· ed esterna, gadget, vestiti luminosi, LED wall e
; <. '# defihe ·t.EDS,:56'· · · · - ·•· . " · · .•,. ·. · ·::. · .... ,,..
-.:· . lJ#f~.ef.i.h'e l~AQriR ·.. J9Z). ·l6&J ~l:;..~ J9 ' molti altri ancora. In molti progetti, il microcontrol-
. :.·;#def'i:ne·· GATE 1.92l , ·.1·68. 1' ·' '1. . ·.. ·> · ·;
". :. ·T ' .
. '·:.:.·_-
#def'in~ . . SUB• .....
·.' ., ".1.
'·' • ·,. • . •
.,.>.tl '••· ···•-·:END 'SE'WP. ·.: ·,.~. _·.···.·: ·• oppure è connesso via USB al PC per ricevere co-
- .. ...: 'i>''··: . .l : .k F •
,. ,.
mandi rendendo così difficile l'installazione di que-
~
< :; :·
' Adafrui.:t..;NeoPixel··: strtp " = · Ad~frt.l'ìtJ~eo.eixel(tEDS, •. ~· sti progetti in posti remoti senza dover ricorrere a
· PIN'';, ,.NEO GRB "+ NEO KHZ800)· ·. . . . . . .· ·. · . ..
"'/tu~·d,~~ ~ !~A.PDR.',_.· .: ·....• ;.·' :. . . -·· . ·: . . ·. . ~- ···:.:.······ lunghi cablaggi o all'aggiornamento dello sketch -
, . · lPAddr.e.s s· ip(~PADDR); · ·... .
, . · : . XPAdàr;ess gatewa,y(GATE) ;,·: · ..... . ogni volta che si deve cambiare animazione.
··.,.... ·~· 1PAd.dt!esS··sùJ>net ~sua>; ; ' ::: :,. ,.. ::. '.' .. . .. .
void sétup(} {
-
.. ..
.....: .' ',.
. ... ::'
~·
..
:·
.. ..:
NeoPixel sparse per casa tramite WiFi, senza dover
-· . ... .... ~' ·, ...
· ' ·... whl l·e (lFis·nfn(). ..resetCi)'; t ··<·: . ... ;"; ·. . · · :. ogni volta modificare lo sketch caricato sui mi-
delay{500) i : . . . ·· :..•... · · ··. · crocontrollori; collegheremo Fishino Guppy a una
.... l .Fishino. s~tMod!1($T,o\liQr(f!OoE); \.' ·.' · · • .· .·. ••.•. . ·. ·•. : : • stella NeoPixel mentre NodeMCU sarà collegato a
.......••·. ·• whi7le(!Fishi no. begìn{MY...§.~J[},•: MX~~Ass) ) . . t . é • • . • ·..
· ·· .. '.· delayfS0~);; ... ··'- .... -...•. · ·.··. ··: ........ una striscia NeoPixel da 150 LED (tutti e due sono
•
;_,,' ~ l ·· ·······•·•' •"'''' "' dotati del chip ESP8266 che fornirà la connettività
·· #if.def IPADDR , · · · · · ,,:.~· · · · ·~ ,, ·. · . ·. ··, ... .
. · F.ishino.conf'ig(ip, gateway, subnet); · .,_. ... ...... . WiFi), mentre come controller software utilizze-
-. #' l e · -·_-· - .- ·. ·:. ·. '· ;.'·. · .·.
- _e ·s _, . · · ..,.- .· . . . . . ·.··:·. ·.
:.>:. Fl!>Hin.o . s~as~:a rtOHCP();. ····· · · _ ....... ·.' ··:.:" remo un programma in Python (con una libreria
" ".~~nd~~fl~{Fishino~ statu~·() !~. ~TATIQ~l~or~~P:)·.: ~ · ·.· ... ·, ·. · g
sviluppata appositamente} che potrà essere ese-
':de,i~y (500); ' ·. ·;', '' '", ·:·.... . . ':.\ guito sia su un PC Windows che su Raspberry Pi e
.
·. ' ..
'
.
'!,_'
·. .
.:
'
: .
'
-}_,.
. :·
'
.
. '
. ;," ···:... " " ' .. ' : .,,
. . ..
.
·'
...
·,,
'
: -,.
. ,. '· ; ;. ,,
::. . :·.: ·: ::,'· ·, ', ·, .:_. --!- ' .
. -
.
k . ·... .-.
. ' . . che manderà, tramite la rete WiFi, i vari effetti da
!l.
. .. · ': . .Uap'. o ègio(PORt); ;. :; '.. •• : h ;: • • •.••• !• ,,
~ . .
.. ·-; ; _ _;; . riprodurre a tutti i dispositivi NeoPixel connessi.
·. -.. ~, :
. . . ' ~ ..
" . . ..
. .. ,, .. - ·_::.: ' -
.
.
.
:
:.:j
.;
,:·
c..'· .. :
.
. -
" ::,, :·
• una striscia NeoPixel da 30 LED/ metro da 5
: .,- - . .'' . : ,;. . . '.~ ·.' ,' . : '
.. ,_.. . .
metri (cod. STRIP150LED);
pac e.··5
''i·· ..·.·rr~~ek(etSk~· ~et·_. '.0 Udp ••pal_ · ·.Ers. eS,Pa*·.çke)) p i
0 3 'lZ~.· ::=::;:: . .. · •·. ·. ·. ;i ·· .
.' • . ..\ •.. ·...
··
• una stella NeoPixel con 56 LED (cod. FT1300M);
· · ~·: .· ~cha r packetBuffi!r[.pack.e t Si.zeJ; ... · _ . . . . .. • un alimentatore da 5 volt DC con potenza corret-
. ·.. ·• ·len:· :::; .Udp. r~ad(pàcRetBU.ffet',. . ~pà~ketSi~é); ....
" :· 'ff (len > '·0) { ' : · · ',c,_ · " . . . ••.. · ,; tamente dimensionata (cod. MW05005); --
. . ·· · :pa·c~etBU,ffer[lenJ.. ~ .:0; ··. · ·· • una resistenza da 4 70 ohm;
. '; ... '} ' "'. .. ". .. . ' .. ,. .
.. ' ... ,_ ·.
.· ....
_;.
. · . . .. fpr :( int i·=e; i<LEDS: * 3; 'i~~3) {; . . . • due condensatori da 1.000 IJF, 6 volto superiori;
. •.· r :: .{iO.t)(byte*)(packe~Buffer)[i]; .·· . · · · · ....
. · · · ... g :•= (int)(oyt e*)(packetBuffer)[i+1J,;> :.· ... · • una scheda Fishino Guppy (cod. GUPPY);
.· ,; ·....· ·. · • · b ·· ~ . (int)'(bY'té.*)(packe1:Buffer)Eit;2].;.• · :. · • una scheda NodeMCU (cod. NODEMCUESP);
· ···.··.·stri·p ~'setPl.x~Içb1orCìi3.i .'g ·~ · .:, b);•.··· · · · · r,
' .l . .· .·.. ·. ·. ·. · . • ·. ~- ·. '. · .: ·. '. '.·. ·.:..' . '., . ;, . • un convertitore di livelli logici 3,3 ~ 5 volt (cod .
;_..:
"·c . " ,.......... ' . . ,. ·_ ' . ' '·-; . .
.. ·:. '"
._. .~trìp.show()'; ·
'' } ' .; ... ' ' "- .. LLCTTL);
·Q
• cavi per cablaggio e jumper;
-. ;:
. . .' ..: '. ~ : ..
• una scheda Raspberry Pi 3 con relativa microSD
'
:. : -;. -.;
':: :'
. ·"
•=- '
e alimentatore (cod. RASPKITV7) .
24
l
Quando si lavora con i ~eoPixel è molto impor- giornamento Fi rmware" nella sezione "Documen-
tante dimensionare l'alimentatore perchè bisogna tazione" del sito). Per prepararci a programmare
considerare che un LED di questa tipologia può NodeMCU dobbiamo invece aprire le impostazioni
arrivare ad assorbire 60 milliampere se acceso a deii'IDE tramite il menu "File" e cliccare sull'icona
luce bianca al là massima luminosità: moltiplicando a destra della voce "URL aggiuntive per il Gesto-
questo valore per i 150 LED che troviamo nella re Schede"; si aprirà una finestra dove potremo
striscia di 5 metri otteniamo un assorbimento di incollare la stringa:
ben 9 ampere. http:tfarduino.esp8266.com/stable/package_
Altri due accorgimenti che dobbiamo prendere esp8266com_ indexjson.
quando lavoriamo con questi LED sono sicuramen- Dopo aver fatto questo primo passaggio possiamo
te l'utilizzo del condensatore .e della resistenza: il installare la scheda, cliccando dalla schermata
condensatore va collegato ai cavi di alimentazione principale dell'l DE Strumenti->Scheda->Gestore
rispettando la giusta polarità per livellare l'iniziale schede... si aprirà la finestra "Gestore schede"; nella
picco di tensione generata dall'ali mentatore che casella di ricerca scriviamo "esp8266" e installiamo
andrebbe a danneggiare i LED; la resistenza va l'ultima versione di "esp8266 by ESP8266 Com-
collegata tra il pin del microcontrollore e la linea munity': A questo punto nella sezione Strumenti
dati (pin DI N) della striscia NeoPixel (non serve se -> Scheda, dovremo vedere la scheda NodeMCU
utilizzate la stella perchè è già stata prevista nel 1.0 sotto la sezione "ESP8266 Modules": selezio-
PCB). niamola e cambiamo il parametro "Upload speed"
Solo se utilizzeremo un NodeMCU avremo bisogno in 115.200. L'ultimo passaggio per completare la
di un convertitore di livelli logici, perché questa configurazione del nostro ambiente di sviluppo
scheda utilizza una logica a 3,3 volt, mentre i (necessario per tutte e due le schede) è quello di •
NeoPixel hanno bisogno di essere pilotati con una scaricare la libreria di gestione dei NeoPixel distri-
logica a 5 volt (in realtà si potrebbe mantenere una buita da Adafruit tramite questo link:
logica da 3,3 volt se l'alimentazione dei NeoPixel https:tfgithub.comladafruit!Adafruit_ NeoPixel
fosse compresa tra i 3,3 e i 3,8 volt, ma noi abbia- Scarichiamo lo zip e scompattiamolo nella car-
mo un alimentatore da 5 volt). tella "libraries" di Arduino, poi riavviamo l'l DE per
Per prima cosa scarichiamo l'archivio dei file di importare la nuova libreria; ora siamo pronti per
questo progetto da GitHub (https:tfgithub.coml aprire lo sketch "Neo Py _ Fishino" (selezionando
open-electronics/NeoPv) dove troveremo sia gli come scheda "Arduino Nano" nel menu Strumenti):
sketch per le due schede che i sorgenti in Python modifichiamo i valori MY - SSID e MY - PASS della
della libreria, inclusi alcuni esempi di animazione. nostra rete WiFi e il numero di LED che intendiamo
Prepariamo l'ambiente di sviluppo Arduino lDE connettere alla scheda, lasciamo invece invariato
per poter programmare tutte e due le schede: il valore di PORTe di PIN; per settare un lP statico
per quanto riguarda Fishino dobbiamo scaricare decommentiamo e modifichiamo la riga di IPADDR,
dal sito www.fishino.it le li brerie e verificare che la infine carichiamo lo sketch su Fishino.
versione del firmware sia allineata con la versione Connettiamo ora al PC la scheda NodeMCU e
delle librerie (per i dettagli visitate la pagina "Ag- apriamo lo sketch "N eoPy _ NodeMCU " (sei ezio-
J' '
25
' -
•
" l
3
4700
~ Fig. 2
Schema dei
collegamenti con
Fishino Guppy e
striscia NeoPixel.
5V
GND Condensatore 6V lOOOuF
~ Fig. 3
Schema dei 4700
collegamenti
con NodeMCU
e striscia
03
NeoPixel.
Condensatore 6V lOOOuF ~
3,3V
+5V DC
GND GND
'
VIN 3V3
•
26
lllllllllllllllllll ll lllllll lllllllll l ll lllllllllllll lll llll llll llll ll l
• '
27
'-
'
-
settare il quinto LED a verde il comando sarà darà errore di compilazione, salviamo e premiamo
oggetto.Set(4, (0, 255, O)); F5 per eseguire il programma: se tutto è stato
1 oggetto.SetAII((R, G, B)} molto simile al comando impostato correttamente vedremo i NeoPixel sulla
precedente, ma in questo caso setti amo tutti i stella animarsi. ..
~
LED sullo stesso colore facendo attenzione alle Possiamo istanziare quanti oggetti vogliamo, ad
doppie parentesi; ad esempio per settare tutti esempio con il seguente programma istanziamo
i LED a blu il comando sarà oggetto.SetA/1((0, O, sia la stella che la striscia NeoPixel per poi colorarle
255)); una di bianco e l'altra di rosso:
1 oggetto.SetBrightness(L} serve a settare a tutti
i LED una percentuale di luminosità L {valore from neopy import NeoPy
compreso tra O e 100), valore di default 80; ad stella= NeoPy(56, "192.168.1.3")
esempio per settare metà della luminosità il striscia= NeoPy(150, ''192.168.1.19'')
comando sarà oggetto.Set8rightness(50); stella.SetA11((255, 255, 255))
1 oggetto.Wheei(V} restituisce un valore di tipo {R, stella. Show()
G, B) in base al parametro V passato {valore striscia.SetA11((255, 0, 0))
compreso tra O e 255 che passa tutti i colori); striscia. Show()
ad esempio per settare tutti i LED a un colore
random il comando sarà oggetto.SetAII(oggetto. Nel repository del progetto scaricato da GitHub r
28
l
•
...
nano test.py • DW: giorno della settimana, valore da O a 6 (dove
O è domenica e 6 è sabato) oppure * significa
Copiamo il codice del piccolo programma scritto "tutti";
,. in precedenza per accendere la stel la un LED alla • COMMAND: il comando da eseguire (ricordiamo-
volta e chiudiamo il file salvandolo con CTRL+X, poi ci di inserire sempre il percorso completo del fi le
Y e INVIO. Python).
Ora proviamo ad eseguire il programma con il
( comando: Spostiamoci in fondo al file e scriviamo questa riga:
••
La stella NeoPixel si illuminerà proprio come Abbiamo appena impostato l'esecuzione del
quando abbiamo lanciato lo stesso programma sul nostro test.py al minuto zero, di ogni ora, di ogni
PC; questo serve ad evitare di tenere acceso un PC giorno del mese, di ogni mese, di ogni giorno della
,.
per fare da controller WiFi a tutte le installazioni settimana; salviamo e chiudiamo il file con CTRL+X,
NeoPixel: piuttosto terremo acceso Raspberry Pi poi Y e INVIO, attendiamo quindi lo scoccare della
che è molto più compatto e meno esoso di energia nuova ora per l'avvio dello script e verifichiamo
elettrica. che la stella si accenda proprio come se avessimo
Immaginiamo ora di aver creato diversi programmi lanciato lo script a mano: in questo modo possia-
in Python sul nostro Raspberry Pi; ogni pro- mo programmare l'esecuzione di tutti gli script che
gramma esegue degli effetti diversi sul le nostre vogliamo aggiungendo nuove righe nel crontab.
installazioni NeoPixel e devono essere eseguito in •
. determinati momenti della giornata . CONCLUSIONI
Sarebbe molto scomodo ricordarsi di lanciarli a Con i NeoPixel controllati in WiFi e il sistema delle
mano ogni volta e per questo ci viene in aiuto schedulazioni su Raspberry Pi potremo, ad esem-
crontab; crontab è uno schedu latore presente in pio, piazzare una striscia LED ·in camera e simulare
Raspbian a cui possiamo indicare l'esatto momen- l'alba a una determinata ora per realizzare una
to in cui vogliamo lanciare un programma: al primo sveglia luminosa; oppure potremo creare dei sim-
impatto la sintassi risulterà un po' complicata, ma patici effetti luminosi in giardino dopo il tramonto.
la anal izzeremo nel dettaglio. Inoltre, piazzando i LED in alcune stanze di casa,
Digitiamo il comando: potremo accenderli in maniera temporizzata e ran-
domica per simulare la nostra presenza in casa o,
crontab -e ancora, potremo collegare dei sensori a Raspberry
Pi e comandare l'illuminazione in base alloro
La prima volta ci verrà chiesto quale editor vo- stato. []
.. gliamo usare per editare il file delle schedulazioni
digitiamo il comando:
2 (Nano)
, •
29
#Fieradei1Eiettronica2019
1000 YOOO
SCAMBI I''I~~KEf~
F l ERA
1000
NARIA l
di FRANCESCO FICILI
Sistema di sviluppo
modulare che
semplifica le
applicazioni di
connettività e loT:
basato su schede
combinabili come
mattoncini LEGO, internet degli oggetti (o loT, se preferite),
ossia la capacità di determinati oggetti,
su un completo equipaggiati con sensori e attuatori, oltre
framework software e che con interfacce wireless, di connetter-
si alla rete Internet e scambiare dati
permette scalabilità e attraverso di essa, si sta rivelando uno
modularità. dei trend tecnologici più interessanti
degli ultimi anni. l primi esempi di
Prima Puntata. applicazioni commerciali a larga diffusione si stanno iniziando a
vedere nelle nostre case, in particolare nell'ultimo periodo, con
la diffusione degli assistenti vocali di Amazon e Google e
ulteriori esempi si avranno nell'immediato futuro, con
l'introduzione di ulteriori categorie di oggetti connessi.
'
31
'
Diventa quindi interessante nel panorama degli svi- piuttosto complessi, come nel caso di dispositivi
luppatori e dei maker cominciare a interessarsi alla alimentati a batteria o dotati di soluzioni di energy
materia, in modo da essere pronti a sviluppare le harvesting.
proprie applicazioni o ad estendere al mondo dell'loT Ultimo requisito, ma non per importanza, è che
quelle esistenti. Tuttavia sviluppare un·applicazione almeno per le fasi di prototipazione e per le applica-
loT (o quantomeno la parte embedded di essa) può zioni più da "maker': il nostro sistema permetta un
risultare un compito tutt'altro che facile: innanzitut- assemblaggio meccanico robusto ed il più semplice
to bisogna procurarsi un hardware (o un sistema di possibile, minimizzando fili volanti, saldature e
schede elettroniche) adatto allo scopo e a riguardo in generale connessioni poco pulite. In sostanza
va osservato che nell'ambito loT l'hardware può trovare sul mercato un sistema di sviluppo che
essere molto differente a seconda dell 'applicazione, racchiuda in sé tutte queste caratteristiche non è
oltre che in funzione del particolare attuatore o cosa semplice.
sensore necessario al dispositivo connesso. A questa necessità, sempre più crescente, risponde
Oltre a questa problematica di base, il nostro il Mercury System.
hardware dovrà essere dotato di connettività alla
rete specifica che vogliamo utilizzare per la nostra DI COSA SI TRATTA?
applicazione. Anche in questo caso, per quel che Mercury System è essenzialmente un sistema di
riguarda applicazioni loT o di connettività in generale, sviluppo modulare, hardware/software, specifi-
la situazione può variare da applicazione a appli- camente progettato per permettere lo sviluppo di
cazione, a seconda del tipo specifico di network: applicazioni loT e in generale orientate alla connet-
possiamo avere soluzioni WiFi, GSM/GPRS, Zigbee, tività. Il sistema è composto da un set eterogeneo
fino ad arrivare alle tecnologie più recenti come di componenti hardware su schede dedicate, che
LoRa e Sigfox. appartengono alle famiglie descritte qui di seguito.
Naturalmente dovremo anche avere a disposizio- • Base Board (BB): è il "cervello" di tutto il sistema
ne un ambiente di sviluppo SW che ci permetta di e contiene l'unità logica principale (un microcon-
scrivere e compilare il codice embedded del nostro trollore) oltre ai vari bus di comunicazione ed
dispositivo. Sarà inoltre necessario soddisfare i interfacce per connettersi al resto del sistema.
requisiti di alimentazione del nostro oggetto, che Inoltre la BB contiene un semplice sistema di ali-
• nel caso di applicazioni loT posso essere anche mentazione con integrato un sistema di ricarica
l l
l l
l Power l
Power
l l
l 12C
l
l l
l Power
l
~ Fig. 1 l Power
l
Esempio
di connessione
dei vari l l
componenti
HW del sistema
Mercury.
l Expansion Board
l
L.. ...1
32
•
~ Fig. 2
Alcune schede
del sistema
Mercury.
Servo Ultrasonic
Relay
Neopixel Base Board
WiFi
BT Modem Mode m
•
....._;_~t";- . .. }.. ~:··
~;
..-....---- .. .·.--.....l.../ '
....-
~-- .
. •. .• .•••-
• • •
~ -...-. ..... .,. . ' '
•
per batterie LiPo, in grado di soddisfare i requisiti quando necessario. An che in questo caso le
di potenza dei sistemi più semplice {tendenzial- schede possono essere diverse, a seconda del
mente fino ad 1A). È inoltre dotata di un bootlo- particolare requisito di potenza o di alimenta-
ader USB, in modo da poter essere facilmente zione {batteria, energy harvesting solare, energy
riprogrammata. Questa scheda può esistere in harvesting piezo, eccetera).
diverse varianti, a seconda del microcontrollore • Expansion Board (EB}: queste schede per-
impiegato. mettono di connettere il sistema planarmente,
• Modem Board (MB}: è la scheda che imple- offrendo una maggiore espandibilità rispetto
menta la connettività verso la rete {o verso un alla classica configurazione "stackable': che è co-
dispositivo esterno, come ad esermpio uno munque sempre possibile. In alcuni casi queste
smartphone). Può esistere in diverse varianti, a schede possono anche contenere delle perife-
seconda dell'interfaccia di network {WiFi, GSM/ riche, come display LCD, battery socket, aree di
GPRS, Bluetooth, ZigBee, LoRa, ecc.). Viene prototipazione eccetera.
interfacciata con la 88 attraverso un'interfaccia • Brain-Less Board (BL}: a questa famiglia
dedicata. appartengono le schede slave controllerless,
• Slave Board (SB}: a questa famiglia apparten- ossia senza intelligenza a bordo. In genere
gono tutte le periferiche di sistema. Si tratta queste schede contengono sensori o attuatori
essenzialmente dei vari sensori ed attuatori molto semplici, che possono essere interfacciati
che possono essere utilizzati per lo sviluppo di direttamente al GPl O della 88, senza necessità
applicazioni con il Mercury System. Esempi tipici di una connessione via bus. Sono pensate per
sono schede dotate di relé, sensori di tempe- applicazioni cost-sensitive, essendo in genere
ratura, servo controller, sensori ad ultrasuoni, meno costose delle equivalenti SB.
ecc. Le SB sono dotate di un microcontrollore
locale, che implementa un set di comandi per la La Fig. 1 mostra un esempio (puramente teorico) di
gestione del sensore o dell'attuatore specifico, in connessione dei vari componenti HW del Mercu-
modo da semplificarne la gestione e consentire ry System, nel quale vengono utilizzate tutte le
una maggiore scalabilità. Si interfacciano alla BB famiglie di schede. La Fig. 2 mostra, invece, alcuni
2
tram ite un collegamento 1C {multidrop) o UART esempi di 88, SB, MB ed EB.
{peer-to-peer), a seconda dei casi. Slave Board e Modem Board sono fornite pre-pro-
• Power Board (PB): è la scheda che permette grammate con un firmware che implementa un set
di soddisfare i requisiti di potenza del sistema, di comandi dedicato che consente una gestione di
'
33
. ~ -- - -·. - - - - - ~ -- - -
Batterv Charger
Mercury Connector
USB Connector
•
Voltage Regulator
ON/OFF Switch
34
l
y
••
... ~ Fig. 5
Schema a
•
blocchi della
88110.
-· •
.. Power
AnO
UART 12C GPIOs
Power /AN x UART GPIOs
Power
..
Power
Power
l
•
l GPlO
• uno switch di alimentazione principale a slitta. di batterie allitio modello MCP73831, sempre pro-
Nella Fig. 5 è riportato lo schema a blocchi della dotto dalla Microchip. A valle del circuito di ricarica
8811 O, della quale nelle pagine seguenti riportiamo troviamo il regolatore U4, modello MCP1825S, che
•
lo schema elettrico e il piano di montaggio dei com- fornisce una tensione regolata a 3,3V al resto dei
ponenti. Come si può vedere, il cuore dell'intero si- componenti della scheda. Inoltre, dal momento che
• stema è un microcontrollore PIC18F46JSO, prodotto il PIC18F46JSO non è dotato di EEPROM interna
da Microchip Technology. Il micro si interfaccia ai è stata aggiunta una memoria esterna 12C(U2), in
due connettori Mercury, tram.ite i quali può gestire, particolare una 24LC16 da 16kbit, in modo da
attraverso i bus e le linee digitali presenti, le altre soddisfare anche eventuali requisiti di stoccaggio
schede che compongono il sistema (Modem Board, dati non volatili. Infine la scheda è dotata di alcuni
Slave 8oard, eccetera). elementi di contorno, come i LED LD1, LD2, LD3 (a
Inoltre la 8811 Oè dotata di un collegamento USB disposizione dell'utente), il pulsante SW1 (che oltre
slave, che funge sia da entry point per il bootloader ad essere utilizzato per far entrare il sistema in boot
che garantisce la possibilità di aggiornare il FW, mode, può essere utilizzato anche dall'utente) ed
oltre che da sorgente di alimentazione principale infine i partitori facenti capo agli ingressi analogici
per il sistema (nel caso non si voglia utilizzare I'USB ANO ed AN 1, che permettono di rilevare lo stato
•
per alimentare il sistema si può alternativamente della sorgente di alimentazione principale e della
utilizzare il connettore CN6). La scheda può anche tensione di batteria.
essere alimentata a batteria, tramite il connettore
CN3 (JST a due terminali, standard molto diffuso per LE MODEM BOARO (MB)
le batterie allitio). Un'eventuale batteria collegata Come abbiamo visto in precedenza, la scheda che
(
viene anche ricaricata dalla sorgente di alimenta- garantisce al Mercury System le caratteristiche di
zione principale tramite l'integrato U3, un caricatore connettività, indispensabili per lo sviluppo di appli-
..
• '
35
•
'Ili t lllllllllll llll JIli l t Ili t l J1111111 J Ili l fIli l Il J l fil t Il l JIli J Ili l J liJlt-J lt 1J Jl Ili llJ-,JultJ~i lJ 111·1J l LJJilliJJI-J l
cazioni loT, è la Modem Board. zio ne di tipo peer-to-peer è anche disponibile una
Le MB sono interfacciate alla BB tramite una con- linea UART. In Fig. 7 è rappresentato un esempio di
nessione UART dedicata ed altre linee di controllo connessione con quattro Slave Board.
(che possono variare da mode m a modem). Tutte Le Slave Board possono essere suddivise in diverse
queste linee di comunicazione e controllo sono sottofamiglie, in funzione della periferica specifica
inglobate all'interno del Mercury Modem Connector. montata:
Il supporto di tecnologie di connettività emergenti • Sensor SB;
può essere quindi facilmente supportato con l'intro- • Actuator SB;
duzione di nuove Modem Board, quindi un elevanto • Communication SB; •
'
37
·piano di MONTAGGIO '
Elenco Componenti:
U2: 24LC16BT-I/SN
U3: MCP73831T-2ACI/OT Varie
U4: MCP1825S-3302E/DB - Strip maschio 8 vie - Connettore 2x1 Ovie passo 2m m
X1: Quarzo 8 MHz - Strip maschio 1Ovie - Connettore micro-USB
X2:Quarzo 32. 768kHz -Connettore JST 2 vie passo 2m m - Circuito stampato S1435
•
pensata una maniera alternativa per la connes- hanno dei connettori di espansione che permettono
sione, in sostituzione della classica configurazione di interconnettere tra di loro diverse EB e possono
1/stackable" (Arduino-like), che, pur essendo sempre avere caratteristiche aggiuntive, come display LCD
possibile, è sicuramente scomoda se devono essere integrati, battery socket, aree di prototipazione, ecc.
connesse più di 2-3 schede. Questa configurazio- In Fig. 11 e Fig. 12 sono riportati due esempi di
•
ne alternativa è consentita dalle Expansion Board, Expansion Board: la EB 11 O(Expansion Board dual-
che non sono altro che schede contenenti diversi slot) e la EB21 O(Expansion Board con LCD display).
Standard Mercury Connector sockets, intercon-
nessi tra di loro. Questo consente di connettere le LE POWER BOARO (PB)
schede planarmente, anziché nella configurazione Nonostante le BB siano equipaggiate con un
"stackable': o anche di effettuare connessioni miste semplice circuito di alimentazione, questo può non
con entrambe le tipologie. Inoltre queste schede essere sufficiente a soddisfare molti dei requisiti
Sub-Families Examples
~ Tabella 1
Sèhsor 585 · ~· ;.
~ ltrasuon i, Infrarossi, Temperatura&Umidità, PIR', Gas
Sottofamiglie
di Slave Board.
,.,. -·
Sensor, Qualità dell'aria,-Analog lhput, Accelerom.etro.
- . ·; ::.
38
•
,
t
' 1 t 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 t 1 1 1 r • 1 1 1 1 1 1 1 1 1 1 1 1 1 1 t 1 1 1 1 1 ' 1 1
t
UserLED
~ Fig. 8 - SB110, Relay Slave Board.
~ Programmer
Connector
• di alimentazione che possono essere richiesti Relays
·"""'
'
UserLED
~ Fig. 10
Address Programmer SB310,
Ultrasonic
Di p Switch Connector
Slave Board.
39
'
Mercury
Connector #1 ---
,___ Mercury
Connector 1*2
~ Fig. 11 _ 88 Program&Debug ~
EB 11 O, Expansion Connector
Board dual-slot.
MCU ";
Address •
Buses --~
Expansions --~
EB Programmer
Connector
Mercury _______, c" " ' - - - - - - -BB Program&Debug
Fig. 12 Connector #2
EB210, Connector
Expansion Board
Alphanumeric
,..,.
LCD 16x2. •
40
•
~ f~t~rl fIl t 1111.l l Ili l l li i l t 111111 ClJ [ltJ JIl t 1l t t JIli l t l l l*l-11111 J llllll tJJ-111111 t l l Il JIl f~J==L~tJ;~III J,llll JIl l l 111111 ~
~ Fig. 13
Architettura
SW del Mercury
System
Framework.
l
l~~
l co~
l~
l~
l~
-
l l
11 l~~
~ Fig. 14
MSF e user ~l l~ro
~
l~
application.
~l
l~
::J
~l
~l l~
Questo livello è a suddiviso in due componenti framework per la gestione della comunicazione, dei
principali: servizi di sistema, ecc. L'utente deve unicamente
• PML: Peripheral Management Layer, preoccuparsi dell'applicazione loT da sviluppare.
• SSL: System Services Layer.
- OSL (Operative System Layer): questo livello INSTALLAZIONE DEL FRAMEWORK
implementa un lightweight RTOS che fornisce L'MSF può essere scaricato dallink http:lfbitlyl
alcuni servizi infrastrutturali di base come tabelle MercurySF oppure dalla pagina web della BB 11 O
di schedulazione per i task, eventi, SW Timer, https:/ www.futurashop.it/BaseBoardBB 11 OMercury.
alarm e via di seguito. Nella sezione Documentazione e link utili di tale
pagina cliccate su Framework Mercury ed avviate il
Utilizzando I'MSF è possibile sviluppare le appli- download.
cazioni in maniera molto semplificata, potendo Una volta scaricato il pacchetto ed avviata l'instal-
sfruttare tutte le API messe a disposizione dal lazione vedrete comparire la schermata di welcome,
41
'
[81111:1111)] TI = JDJIIIUWWDDIIIIfDJIIHUID-IIHIIDI.IDIIIIIIDHRUDlUIIII~
necessari
per l'utilizzo XC8 Compiler 1.45 https:l www.microchip.com/development-tools/pic-and-dspic-
deii'MSF. downloads-archive
~ MercurySystem Se.tup x
Seled the additional tasks you would Jike setup to perfonn while instaDing La base board per il sistema Mercury {cod. 88110) è in vendita
MerourySystem. then click Next. presso Futura Elettronica al prezzo di € 23,00.
Tutte le altre board sono disponibili an-indirizzo
http://bit.ly/SistemaMercurv
Additional icons:
Il prezzo si intende IVA compresa.
0 Create desktop roon
0 Create start menu fokier
Il materiale va richiesto a: ·
'---l
c N
_ .e x t >__,l [ :
Futura Elettronica, Via Adige 11, 21013 Gallarate (VA)
Tel : 0331-799775 - http://www.futurashop.it
42
40ctn
. . . •.•. • ••••.
•••
. ,,
•• verslo~'::::
:
cod. inclusa. •
IVA
•e 1.299,00 • •
•••• ••••••
montata
Versio~~RAG/M
cod. IVA inclusa.
e 699,oo
Cod. 3DRAG/K
•
'
45
schema ELETTRICO
'
'
+VB +SV
USB 01
SV L1
1
4 1
RS VIN sw
SWlo.
5 GNO SWlb Cl 6
VIN VOUT
5
3
3
U2 5
EN U3 es
L03 PRG 4
1 FB
STA +
GND GND
R6 BATl ClO es
, , ,
Rl 7,28 C2 + C3 + C4 17 19 Cl
vcc VCC
14
c
RB4 L04
19
ANO GSM
R2 R4 + es C&
40 3
LED
41 8
RI
1 12
• TX
44 14
RX
' ICSP 43 1
DN/OrF
18 38 6
MCLR RST
PGO 17
PGD GND
PGC l&
PGC
2~ w
Pl 11 +VB
RB3
(,~0
•
3 RlO 4 Ul
LO l R16 RlS R14 R13 15
RDG
VCC 3
ANT
L02 5 32 10
RD7 CHl U&
2& 11 9 y P2
CH2 PRG
27 12
• CH3
30 13 14 LOS
02 CH4 LED
10 GND
RB2
IN l 20
21
25
03 +VB
9 04
RBl
IN2 3(, +VB
RC2 1,2 1,& \
"'
24
RAS vcc vcc
R12 42 5 3
BUZl SDA ZD
37 4
SCL U4 YD us
22 8 7 5
R17 VREF+ INT2 XD
2 8
INTl
GND GND GND
OZl 3,&
allettati e può essere personalizzato per adattarlo connessione in caso di emergenza, oltre che da
ad altri impieghi similari. un minitrasmettitore leggerissimo che la persona
Il sistema è composto da un'unità basata su che potrebbe necessitare d'aiuto deve portare
modulo GSM quad-band (850, 900, 1.800 an d addosso. L: ampia copertura del sistema TX-RX
1.900 MHz) quindi capace di agganciare tutte le radio operante a 433 MHz consente di rendere
ret i disponibili, a tutto vantaggio di una celere sicura la t rasmissione della richiesta d'allarme
46
CARATTERISTICHE
dal minitrasmettitore alla base anche in grandi ricevitore radio e il modulo GSM, oltre che la me- TECNICHE
appartamenti, nelle ville e persino dal giardino o da moria esterna; il suo compito è facilitato dal fatto
un piano all'altro. che, riguardo alla gestione del comando radio, non
~ Frequenza di ricezione radio:
deve occuparsi della decodifica in quanto U6 non 433.92 MHz
IL SISTEMA · è un semplice ricevitore radio, ma qualcosa di più
Fatta questa premessa, diamo dunque uno completo, giacché integra la decodifica. Infatti I'RX-
sguardo al nostro telesoccorso, analizzandone il 4MHCS è un ricevitore RF in AMa 433,92MHz ad ~ Invio di SMS
di allarme
circuito con la premessa che descriveremo l'unità elevata sensibilità e selettività, con decodifica HCS
base ma non quella portatile, giacché quest'ultima integrata, capace di decifrare l'algoritmo rolling-
è un minitrasmettitore 811 0-HCS-TX-1 venduto code Keeloq della Microchip, il quale prevede ~ Effettuazione di telefonate
già pronto e collaudato dalla Futura Elettronica stringhe di trasmissione contenenti un codice base di allarme
(www.futuroshop.it ); di questo ci limitiamo a spie- fisso e un codice variabile a 32 bit. Quindi questo
gare che si basa su un encoder HCS300 rolling- ibrido sintonizza il segnale inviato dai trasmettitori
code, ossia capace di generare un codice differente compatibili (Aurei HCS-TX-1 /2/3 OVO, TX1 / 2/ 3- ~ Numeri di telefono abbinabili.
ad ogni trasmissione, così da garantire la massima HCS-433 HCS, TX-2/4/6 M-HCS, TX- 12 CH) e 8
sicurezza ed esclusività del comando. Il codice provvede a confrontarne il codice contenuto con
generato viene poi utilizzato per modulare in AM quello o quelli memorizzati (nella propria EEPROM
~ Tensione di alimentazione:
OOK un minitrasmettitore UHF sintonizzato su i interna, dove vengono scritte le sole parti fisse del
sv
433 MHz, che irradia il segnale nell'ambiente. codice di ogni TX) durante l'autoapprendimento:
L'unità base è in grado di ricon oscere e prevedere se tra i codici in memoria c'è quello trasmesso, il
i codici trasmessi dal minitrasmettitore (o da più modulo attiva una delle sue quattro uscite (CH 1, ~ Corrente assorbita:
minitrasmettitori) perché implementa l'algoritmo CH2, CH3, CH4) nella modalità impostata tramite max1 A
di decodifica HCS300 e l'unica condizione impo- l'apposito piedino, altrimenti nulla accade e il mo-
sta per sincronizzarsi è l'esecuzione dell'apposita dulo si predispone a una nuova ricezione.
procedura, che prende il via con la pressione del Le uscite sono open-collector e in numero di quat-
pulsante a bordo del circuito; spiegheremo questo tro perché l'ibrido può essere .gestito da minitra-
tra breve. smettitori ad 1, 2 o 4 canali; ogni canale è attivo. a
Vediamo dunque di cosa si tratta, analizzando livello basso (transistor in saturazione) e a riposo a
lo schema elettrico del circuito, la cui gestione livello alto (transistor interdetto).
è stata affidata a un microcontrollore Microchip Trattandosi di un decader rolling-code, è previsto
PIC1 8F46K20-I/PT; la scheda è modulare e come un sistema di salvaguardia nel caso di pressioni a
mostra lo schema elettrico, si presta alla realizza- vuoto dei pulsanti, ovvero di trasmissioni fuori por-
zione di più applicazioni, tant'è che l'abbiamo già tata; l'utilità si spiega considerando che una volta
utilizzata nel fascicolo n o 223 per il progetto "Save appreso un trasmettitore, il decader si sincronizza
my child" seppure equi paggiata con una differente con il suo encoder e applicando l'algoritmo Keeloq,
dotazione hardware. Qui, infatti, manca l'accele- grazie a un contatore interno sa, ad ogni trasmis-
rometro (quindi non montiamo quello che nello sione, che codice aspettarsi; però se una o più
schema elettrico è siglato U5 e neppure I'U4) ma trasmissioni van no a vuoto, il decader potrebbe
abbiamo in più il ricevitore radio ibrido e un pulsan- non riuscire più a identificare il minitrasmettitore,
te ad esso dedicato. che pure risulta appreso perché il suo codice base
Il microcontrollore è programmato affinché legga è stato scritto nella memoria. Per limitare questa
lo stato logico delle linee di uscita del modulo ra- possibilità, il decader ammette uno scostamento,
dioricevente (ibrido Aurei RX-4MHCS) allo scopo di vale a dire riconosce come valida una trasmissione
ril evare l'arrivo di un codice di richiesta di soccorso, purché contemplata nelle 64 possibili combina-
il pulsante di avvio della procedura di autoappren- zioni che succedono all'ultima ricevuta, secondo
dimento e sincronizzazione del trasmettitore da l'algoritmo Keeloq; nel caso il codice ricevuto rientri
abbinare all'unità base, ma anche per gestire il in questo margine, al suo riconoscimento il deca-
modulo cellulare (GSM). der HCS si rimette in passo, cioè azzera il proprio
Notate che il circuito prevede elementi che pos- contatore e da quel momento ripristina anche la
sono essere montati o meno, proprio perché lo "finestra di tolleranza" di 64 trasmissioni a vuoto.
abbiamo concepito come piattaforma di sviluppo Se invece viene superato questo limite, il minitra-
espandibile. smettitore non verrà più riconosciuto e occorrerà
Qui, il microcontrollore deve limitarsi a gestire il apprenderlo nuovamente.
'
47
Il modulo radioriceven-
te utilizzato in questo
progetto è I'RX-4MHCS viene utilizzato come semplice ingresso attivo a
della Aurei, che integra un zero logico, ovvero collegato a massa ad esempio
ricevitore sintonizzato sui mediante interruttori.
433,92 M Hz cui segue un La variazione dello stato dell'ingresso IN2 genera
demodulatore d'ampiez- portano come la trasmissione di SMS o l'esecuzione di telefonate,
za on/off e un decader le uscite di un decader bi- come farebbe un qualsiasi telecontrollo GSM e può
HCS300 della Microchip imple- nario a quattro bit; è stata creata essere impiegato, ad esempio, per rilevare l'aper-
mentato integrando l'algoritmo per l'abbinamento ai trasmettitori tura della porta di casa o di una finestra o avvertire
Keeloq in un microcontrollore. a 12 canali dell'Aurei. se una persona su una sedia a rotelle cade: in que-
Quest'ultimo decifra i codici ri- La piedinatura dei moduli è sto caso specifico si può applicare sotto la seduta
cevuti, memorizza quelli richiesti comunque la stessa, anche se una piastra a pulsanti come quella del progetto del
nella fase dì autoappren~imento cambia il signi,ficato dellé uscite: Save my chi ld, che avverte quando la persona non
e dispone di quattro linee di 1/0 2) GND è più presente.
con le quali gestisce altrettanti 3) Antenna IN2 può anche essere collegato all'uscita di un
transistor NPN in configurazione 7) GND sensore P.l. R. per rilevare se la persona si muove,
open-collector, secondo lo sche- B) Test Point ovvero a un interruttore reed applicato alla porta
ma visibile nel riquadro di Fig. A. Uscita analogica RX di casa; quest'ultima situazione è molto utile per
Esistono due versioni di questo 9) Pulsante di programmazione monitorare persone affette dal Morbo di Alzheimer,
modulo: in quella da noi impie- connesso a massa che se escono di casa senza essere accompagnate
gata il microcontrollore assegna 1O) Uscita bit di peso O possono smarrirsi, ma anche persone con proble-
a ciascuna delle uscite uno dei Uscita CH1 mi psichici che necessitano di un controllo da parte
canali di un trasmettitore HCS 11) Uscita bit di peso 2 di parenti o personale sanitario.
quadricanale, fermo restando che Uscita CH2 Tornando al microcontrollore, vediamo che un altro
se si apprende un TX monoca- 12) Uscita bit di peso 4 pin inizializzato come input è RB3, sempre dotato
nale si attiva la sola uscita CH 1 Uscita CH3 di pull-up interno, che serve a leggere il pulsante
(piedino 1O) e se si apprende un 13) Uscita bit di peso 8 P1 (utilizzato per forzare l'accensione del modulo
bicanale si conta solo su CH1 e Uscita CH4 cellulare, che normalmente è spento). •
CH2 (piedini 10 e 11). 14) Uscita LED - Connesso Sempre all'inizializzazione degli 1/ 0, RB4 è impo-
L'altra versione del modulo è la RX all'anodo del LED, catodo a stato come ingresso per leggere, tramite il parti-
4MHCS-4B e in questa i quattro massa tore resistivo R1 ed R2, l'accensione del circuito ad
1/0 del microcontrollore si com- 15) Vcc (+SVolt) opera del doppio deviatore SW 1b; il partito re serve •
48
daii'USB, SWb porta la tensione d'ingresso alla da RAO, RA 1 e RA2.
RB4, che implementandone la lettura nel firmware La linea RC2 è inizializzata come output e produce
consente di capire se è presente l'alimentazio- una serie di impulsi digitali quando il cicalino pie-
ne della rete; tale funzione è utile a realizzare zoelettrico BUZ1 deve produrre la nota acustica di
l'allarme antiblackout. Invece nel funzionamento avviso prevista dal firmware; altri due output sono
a batteria RB4 permette al microcontrollore di RD6 e RD7, cui è affidato il compito di accendere i
saperlo e attuare eventuali strategie di conteni- LED LD1 e LD2.
mento dei consumi (ad esempio la riduzione degli Terminiamo l'analisi degli 1/0 con RDO, RD2, RD3,
intervalli di accensione del cellulare). La linea RB4 è RC5, che insieme alle RX e TX deii'UART costi-
l'unico modo che il firmware ha per capire quando tuiscono l'interfaccia verso il modulo cellulare
il circuito sta funzionando a batteria, perché se SIMBOOC della SI MCom, che nel circuito è montato
U1 riceve alimentazione anche quando RB4 è a su un'apposita scheda adattatrice da inserire
zero volt significa che il circuito funziona a batteria, nell'apposito connettore previsto sul circuito stam-
mentre se è alimentata sta funzionando con la pato. La compatta scheda contenente il cellulare
tensione prelevata daii'USB. GSM SIMBOOC dispone di un connettore d'anten-
Restando in tema di alimentazione, la linea ANO na MMCX 90 ° e si connette allo stampato base
viene utilizzata per leggere il livello della tensio- mediante uno strip maschio 2x1 O poli a passo 2
ne, fornita dalla batteria allitio, che alimenta il mm sul quale risultano disponibili l'alimentazione,
microcontrollore e il resto del circuito, eccetto il la linea di controllo dell'accensione (PWR), tutti
ricevitore radio; se il firmware lo prevede, permette i segnali e le linee di comunicazione seriale da e
di porre in shutdown l'insieme quando la batteria si verso il modulo GSM. La scheda viene fornita già
sta scaricando, ovvero al disotto di una certa soglia assemblata e richiede un'antenna GSM dotata di •
di tensione. connettore MMCX.
Torniamo all'inizializzazione degli 1/0 e vediamo Il modulo scambia con il microcontrollore i dati sui
che le linee RCO, RE1, RE2 ed RA 7 sono inizializ- messaggi trasmessi (quelli di allarme) e ricevuti
zate come input, che sono stati provvisti di pull-up (quelli di configurazione) att(averso I'UART del PIC,
esterno e serviranno a leggere i canali del ricevi- che serve anche per i comandi di impostazione
tore ibrido (il pull-up è reso necessario dal fatto del cellulare; il resto delle linee riguarda segnali di
che gli output del modulo sono open-collector). stato: RD2 legge l'uscita per il LED di "campo" che
Ogni volta che uno di questi cambierà di stato, il viene ripetuto da LD4, mentre RD3 legge il Ring
micro ordinerà l'invio di un SMS o di una telefonata lndicator, ossia il contatto del cellulare che fornisce
secondo le impostazioni fatte canale per canale, il livello logico alto quando viene ricevuta una tele-
come verrà spiegato più avanti. fonata. La linea RDO permette il reset del modulo
RC3, RC4, RBO e RD4 sono le linee assegnate e RC5 provvede all'accensione e allo spegnimento;
all'accelerometro U4, che però è disponibile per reset e ON/OFF sono implementati dalla circuiteria
futuri sviluppi in quanto non viene gestito dal a bordo della scheda su cui il SIMBOOC è montato.
firmware; idem per U5, che sarebbe stato gestito La scheda, contiene il cellulare SIMBOOC, un
LED di campo
LED radiocomando
Pulsante reset
~ A sinistra
La parte posteriore
del contenitore
riporta LED, pulsante
di reset e connettori.
'
49
·piano di MONTAGGIO
: =- -
""""-
---=oJ.-
--o~ _;= ~...,
~ 't •'
,
,."\• "••.. • • t~
\ 4
' _11. €:
"T.~ .- '
.... • -, •
' ·,'•
~
~ • " ll
•• •
~
' •" ·~ -
- •
,._,L~_:;::==-~-_.-.:
l ~ ~~ ~ ._
C-_-1<0-_---~- . , ; .:. • ' ' r' c
. ,
• f '••' ~
,.;,
c • ~
..
# ..~·"
• • •
,.-i · • • ,. .•. .r
J,k.t~--,._=~•.
~ -! ~ =-
~
~='"=--- ""' { .. ' • '
•
l • • •' - ~ _. ...
.,
=- ::
- -: ~ ; ·' • • .. 1 -, - ... • ' .,. • l • t • " :. ::_ ~~ ~ -=- f ' ' .. ~ • ! . f ~ : • • ~ i ' - t • ; ~ --= ~ :- "' - f • • • ~ - i_
Elenco Componenti:
es
LD3: LED 3 mm rosso ClOU
D1, D2, D3: MBRA140T3G LDS
04: MMSD4148T1G
DZ1: Zener 2,7V SOOmW
[Q] P2
R1 4 R16 o
-z 0
DODO §g
L1: lnduttanza 4,7 ~H 770mA N 0 C3 C4
R15 R1 3
Varie: - Morsetto 2 poli 2.54mm (3 pz.) - Connettore JST 2 vie passo 2 mm c.s.
-Connettore 2x10 femmina passo 2 mm - Pin Strip maschio 6 vie - Circuito stampato S1361 (85x51 mm)
connettore d'antenna MMCX a 90 ° e uno strip in un'ora; siccome abbiamo scelto una cella da 500
maschio 2x1 O poli a passo 2m m sul quale risulta- mAh, questa si caricherà in meno di un'ora. ...
50
'
abbiamo inscatolato la scheda: nello specifico è inviati da qualsiasi telefono purché il relativo SMS
stato utilizzato un contenitore in plastica compo- comprenda la password, anche se per velocizzare
sto da una parte superiore una inferiore stampate alcuni comandi abbiamo previsto che quelli inviati
in 30 con del filamento di PLA nero (Fig. 2). dai numeri in lista possano essere impartiti senza
Quanto al ricevitore RF, necessita anch'esso di una bisogno di password. Per i comandi di aggiunta
sua antenna, la quale può essere costituita sem- e rimozione numeri dalla lista, la richiesta della
plicemente da uno spezzone di filo in rame rigido password fa sì che a gestire la lista sia solo una
con guaina, lungo 17 cm, da saldare (sguainandone persona abilitata a farlo.
l'estremità quanto basta) nella piazzola che porta Passiamo ora alla descrizione dei comandi e alle
al piedino 3 dell'ibrido U6. relative sintassi, con la premessa che il circuito ac-
Ricordate che per poter utilizzare il telesoccorso cetta anche SMS contenenti più di un comando; in
è necessario inserire una SIM attiva nell'apposito tal caso i comandi devono essere separati ognuno
lettore della scheda contenente il modulo GSM. da quello successivo mediante una virgola.
Il primo comando che esaminiamo è quello di
IMPOSTAZIONE E COMANDI modifica della password e consta di un SMS del
Completata l'installazione dovete configurare tipo PWDxxxxx;pwd, dove al posto di xxxxx si deve
l'unità; tale operazione si effettua da SMS, quindi scrivere la nuova password (composta cinque
inserite nel portaSIM del modulo 71 00-FT1308M cifre) mentre pwd indica la password attuale. La
una SIM pronta all'uso senza il PIN di sicurezza, password predefinita è 12345.
annotatene il numero telefonico corrispondente, La memorizzazione di uno degli otto numeri abili-
quindi con un cellulare impartite i comandi previsti, tati ad inviare comandi di configurazione si effettua
che sono tutti riportati nella Tabella 1. inviando un SMS nel cui testo sia contenuto il testo
Le prime cose da fare sono configurare i numeri NUMx+nnnnnnnnnnnnn;pwd, dove al posto di x
della lista di quelli che il sistema chiamerà o cui deve essere scritto quale dei numeri (posizione) si
destinerà gli SMS di allarme; per facilitare la pro- sta memorizzando, al posto delle n va il numero
cedura, essendo il sistema protetto da password mentre pwd è l'attuale password. Il tutto va scritto
.
in tale operazione, è stata prevista la modalità di senza spaz1.
Easy Setup: nel periodo immediatamente succes- Sono ammessi numeri di 19 cifre ed il +è quello
• sivi all'accensione, il sistema memorizza il primo che, nel prefisso internazionale composto dai
numero telefonico che gli effettua una chiamata e cellulari, sostituisce lo 00. Per esempio, l'in-
lo considera il primo numero della lista (il periodo serimento del numero 00398911512 in terza
di attesa dura fin quando il LED giallo lampeggia e posizione si opera con un comando del tipo:
alla ricezione della telefonata lo stesso LO 1 si spe- NUM3+398911512;pwd. La password è ne-
gne). Questo potrà eseguire modifiche anche senza cessaria solamente quando si tenta di salvare
password; comunque i comandi possono essere un numero in una posizione già occupata da un
'
! Fig. 2
La scheda montata
e aoplicata alla base
l "
del contenitore.
52
FUNZIONE COMANDO SMS VALORE PREDEFINITO PWD NECESSARIA
ATIIVO IN ASSENZA
LIVELLO LOGICO DI ALLARME PER INGRESSO 2 LIV2:b
DI TENSIONE
ATIIVO IN PRESENZA
LIVELLO LOGICO DI ALLARME VARIAZIONE LIV2:V
DI TENSIONE
RICHIESTA LIVELLO LI V?
ATIENZIONE! RICHIESTA
TESTO ALLARME RADIOCOMANDO PREMUTO TIN1A:xxxxxxxxxxx
D'AIUTO
TESTO ALLARME INGRESSO 2 QUANDO È ASSENTE TENSIONE ALLARME!! INGRESSO
TI N2B:xxxxxxxxxxx
(max 100 caratteri} 2 BASSO
TESTO ALLARME INGRESSO 2 QUANDO È PRESENTE TENSIONE ALLARME!! INGRESSO
TI N2A:xxxxxxxxxxx
(max 100 caratteri} 2ALTO
53
'
•
' '
altro; invece, se si deve inserire un numero in una comando di impostazione dei numeri cui dirigere
posizione vuota basta inviare un SMS con il testo le chiamate o gli SMS di allarme: per impostazione
NUMx+nnnnnnnnnnnnn. predefinita nel firmware e dopo ogni reset totale, il
La rimozione di un numero si effettua con un SMS sistema dirige sia le chiamate, sia gli SMS, a tutti
che contenga il testo NUMx;pwd; al posto della x i numeri memorizzati nella lista. Ne consegue che
va scritto il numero della posizione nella quale si per escluderne alcuni bisogna inviare i comandi
trova l'indicativo da cancellare, mentre pwd è la di disattivazione: SMSxxxxxxxx:OFF;pwd oppure '
sol ita password. Ad esempio, per rimuovere dalla VOCxxxxxxxx:OFF;pwd specificando le posizioni •
lista memorizzata il quarto numero, occorre un da escludere. Questo, se si desidera escludere dei
messaggio che contenga: NUM4;pwd . Per richie- numeri,altr imenti non occorre fare alcunché.
dere la lista dei numeri memorizzati nel circuito Il sistema invia un SMS al numero telefonico che
occorre inviare un SMS con il seguente testo: occupa il primo posto della lista ogni volta che
'
NUM?;pwd. La scheda risponde al numero del te le- riceve alimentazione. Tale funzione può essere
•
fono dal quale proviene l'interrogazione. disabilitata/abilitata con i comandi AVVO (disatti-
-E possibile conoscere in ogn i momento la qualità va) e AVV 1 (attiva); il testo predefinito è SYSTEM
del segnale GSM inviando il comando QUAL?; il STARTUP.
sistema risponde con un SMS contenente l'attuale Passiamo ai comandi che permettono di memoriz-
situazione. Il messaggio viene inviato al telefono zare o sovrascrivere il testo degli SMS da inviare:
che ha impartito il comando. la sintassi è del ti po TINn:xxxxxxxxx, dove n deve
Passiamo ai messaggi di configurazione e stato essere 1 per il rad iocomando e 2 per l'allarme
degli input: LIV? permette di conoscere lo stato dovuto al l'ingresso 2, mentre le x corrispondono
dell'ingresso IN2, che in questa applicazione può al testo del messaggio, testo che deve avere una
funzionare solo a livello di tensione, quindi per lunghezza non superiore ai 100 caratteri.
esso viene rilevato solo se va a livello basso (a Un'impostazione indispensabile è quella del tem-
massa) o a livello alto (per esempio quando è aper- po di osservazione dell'IN\ che si effettua con il
to). Per l'ingresso è possibile definire un tempo di comando OSS 1:ss, dove al posto di ss va il tempo
inibizione, mediante il comando INI2:mm (al posto (compreso fra Oe 59 secondi): specifica al circuito
di mm vanno messi i minuti di interdizione); l'inibi - per quanto tempo il pulsante del minitrasmettito- '
zione serve a evitare continui invii di segnalazion i re debba rimanere premuto per evitare la genera-
•
di allarme se l'ingresso, nella modalità a livello, zione di falsi allarmi dovuti a pressioni involontarie
rimane aperto. o a segnali di disturbo che potrebbero passare nei
Analogo è il discorso per l'input da radiocomando, collegamenti.
per il quale si definisce sia un tempo di osse rvazio- Si può definire anche un tempo di osservazione per
'
ne (ossia quanto tempo deve permanere il segnale IN2, con le stesse modalità, impartendo il coman-
all'uscita del ricevitore per considerarlo allarme e do OSS2:ss; anche in questo caso il tempo serve
far partire SMS e telefonate) sia un intervallo di ad evitare falsi allarmi se abbinate l'input a contatti
inibizione utile ad evitare che se il tasto del tra- per porte o PIR.
smettitore viene premuto ripetutamente partano Da SMS potete anche richiedere i tempi attual-
sequenze di telefonate ed SMS. mente impostati (comando OSS?).
Per definire quali numeri della lista debbano Ch iudiamo la panoramica sui comand i con
ricevere le telefonate, si deve inviare il messaggio quello che ripristina le impostazioni predefinite:
VOCxxxxxxxx:ON;pwd, considerando che valgono le è RES;pwd. Il messaggio di risposta a questo
stesse regole della gestione dei numeri cui dirigere comando da SMS è "Reset eseguito':
gli SMS di notifica. Il resto dei comandi è descritto nella Tabella 1, cui
Per la disattivazione degli SMS o delle chia- rimandiamo per ogni approfondimento.
mate vocali sono previsti due comandi distinti:
SMSxxxxxxxx:OFF;pwd disattiva l'invio di messaggi APPREN DIMENTO DEl TRASMETTITORI
e VOCxxxxxxxx:OFF;pwd disabilita le telefonate. Le Passiamo adesso alla sezione dei radiocomando:
x rappresentano le posizioni dei numeri che non per garantire la ri cezione del segnale trasmesso
devono ricevere segnalazioni di richiesta di aiuto dal minitrasmettitore portatile che la persona da
da radiocomando o di allarme rilevato dall'ingresso proteggere indosserà, sarà necessario memorizza-
a livello di tensione IN2. re nel modulo RX 4MHCS il codice di trasmissione
Adesso occorre fare una precisazione riguardo al del relativo trasmettitore.
54
Per eseguire questa operazione è necessario
portare il trasmettitore vicino al ricevitore, ma non
attaccato al modulo: tenete lo a mezzo metro di di-
stanza. Ricordiamo che è possibile far apprendere
solo i trasmettitori con Manufacturer Code Futura
•
Elettronica, giacché encoder e decader Keeloq
hanno una parte fissa di codice che è univoca per
ciascun costruttore; acquistando TX e modulo RX
4MHCS dalla Futura Elettronica il problema è già
risolto.
La procedura di autoapprendimento si avvia ! A destra
La richiesta di aiuto parte
premendo e rilasciando il pulsante di programma-
premendo il tasto del mini
zione P2; l'entrata nella fase di apprendimento è trasmettitore.
segnalata dal lampeggia del LED LD5 rapidamente
per 1O secondi: durante questo tempo, operando
nelle vicinanze del RX 4MHCS, la pressione di un per circa 5 secondi e comunque fino a quando il
qualsiasi tasto del trasmettitore sarà appresa dal LED non smette di lampeggiare, al che occorre
ricevitore. L'avvenuta programmazione del RX 4M- rilasciare P2. Cinque lampeggi del LED in sequenza
HCS viene indicata dal LED con luce fissa, dopo indicheranno l'avvenuta cancellazione della me-
di che si spegne. In questo caso tutti i pulsanti moria, allorché nessun trasmettitore con codifica
disponibili nel trasmettitore sono stati codificati e HCS sarà riconosciuto (perché la cancellazione non
la pressione di ognuno attiverà la relativa uscita. è possibile selettivamente ma solo per tutti i codici •
Se utilizzate un trasmettitore monocanale, che è appresi) e le uscite saranno impostate in modalità
la cosa più consigliabile, viene appreso solo quello, impulsiva.
ma sappiate che l'apprendimento, riguardando il
codice trasmesso, è valido anche se il TX è plurica- CONCLUSIONI •
nale e non va ripetuto per ciascun canale. Anche questo progetto, come il Save my child,
La procedura appena descritta va ripetuta se si consente di realizzare con semplicità un sistema
desidera abbinare all'unità più di un trasmettitore, di avviso a distanza (telesoccorso, se preferite) in
quindi per ogni ulteriore TX la si ripete pari-pari. grado di tutelare la salute e l'incolumità delle per-
L'autoapprendimento di un trasmettitore ad uno, sone più fragili, attraverso un mezzo di comunica-
due, tre o quattro canali può essere eseguito indif- zione efficace e diffuso come la telefonia cellulare.
•
ferentemente tramite la pressione di un qualsiasi La disponibilità a bordo di periferiche opzionali
tasto, poiché il micro gestisce la sequenza bit stan- consente di espandere le possibilità di utilizzo e di
dard per l'assegnazione di ogni singolo canale. personalizzare il sistema per adattarlo a condizioni
Notate che sebbene le uscite possano funzionare particolari, semplicemente aggiungendo accelero-
in modalità bistabile o impulsiva, dopo l'autoap- metro ecc. e adeguando il firmware. D
prendimento è impostata per default quella di tipo
monostabile; ciò non guasta affatto, perché il mi-
crocontrollore la predilige, in quando il firmware ri-
leva la transizione del livello logico su una qualsiasi
delle quattro uscite. Se si impostasse la modalità
bistabile, in caso di attivazione del minitrasmetti- Cosa occorre?
tore il micro riceverebbe un segnale di allarme ogni
Il telesoccorso GSM, dotato di modulo cellulare e ricevitore radio,
due pigiate del pulsante e ciò potrebbe limitare la
(cod. GSMALARM) è in vendita presso Futura Elettronica al
possibilità, per la persona in difficoltà, di chiedere prezzo di Euro 95,00. La batteria allltio (cod. PLIB500NEW)
soccorso. è acquistabile separatamente al prezzo di Euro 4,50. Il
trasmettitore radio monocanale (cod. HCS-TX-1) è disponile a
Completiamo la descrizione dell'apprendimento
Euro 17,00. l file STL del contenitore plastico stampato in 30
con la procedura di cancellazione della memo- sono scaricabili dalla scheda on-line del prodotto. l prezzi si
ria dei codici: per cancellare la memoria dell' RX intendono IVA compresa.
4M HCS bisogna premere e rilasciare il pulsante
Il materiale va richiesto a:
P2 e quando LED verde LD5 inizia a lampeggiare,
premere nuovamente il tasto tenendolo premuto Futura Elettronica, Via Adige 11, 21013 Gallarate (VA)
Tel: 0331-799775 - http://www.futurashop.it
55
•
IN CONCOMITANZA CON
o J
SPRING EDITION
di MIRKO UCOLINI
57
:~. ....., ·'· ,;,,
'·, sentato riel fastici·olO 'n,~:~l~S) per '.,~. compatibilità-nell.a-CZonllètsrooe, ,,- mo potuto utilizzare lo stesso hardware di An-
'·: l~inuro,~ei dati-~1 ~attui~ RFMs9-- ~ef, d~ti. ~- _,: , _~:~=-~:~._ ,": ,:,.:_~-~: ·:,. :,;,:. ~~ ~ : : , ~I tennino, ma progettare da zero e realizzare una
:" aveuam~~:tlut(lizzatb ~na·:cÒ'sttutfa ·:~·~- 'Il' 'PetJtPII~r~~ \n1:a ~j~lin:gu~ ftan:t if ,;~:~ ,~ nuova scheda, dove per la connettività sfruttia-
" ~,
1
~+;:~."c tte si chiaroa's~ra'l;'t ti q~at~ ,: ·,:~:,' :Che f~,ecia doliu~icijte:: ,i iìue:: men.;'. -"· : :·. mo un modulo ESP32 e quindi illink WiFi, che ci
·:· ;!: , :i.." •., .,_.•~ - ,,_;,, - .!: .. • ~; ~ '" '""· ::;··:.. ,~ • ,,,,;-;; '· -i:!l:. '7 • .,ii·. -' ~ --:: i'·,,, ..,·' • -.·-"' :.,i:i· t!!!':i! ·'.'. • ,, • *.,, '" ::.'i'"' "- - -~;,, r.",';' •' • ~.. ,~. ,,, ;: ''"
~.: p~rroette ·dr:,rmpaçch.ett,are dé1 ,:; , . -,; ,th, ,~Unp ~pee1e.dt ~sQeranto (Jer,b1t~ l
_,m, farà da bridge verso il mondo di Internet.
,,.... . ''• il!:: 'i:. . ,,,•.:::·· -:r """~."- • ~·· ,_,_ .::.;;.- -,.;;-":. ::·" • r:!·:. ;"'- "·'''- , ~,r::·- ,,_;,. lliA • ~7 -;, ::.·:. -, ··-" - ,:' :;,,:: " ·;··, 1 "';;:;;,
,., ffiOÒU(~ ri'çe~eQtS~ _ .. , (ieçliriaZI'Ofle f1lig,iote perLìJ ilUlO-:·'' ,h :,: ... :_ ":" • e più complesso; inoltre è praticamente tutto
~. ·:,.:- ~ei;~Gate~a~ c~e ~~ ndretn~~~a :·:'. ,·:h ·:::> ..~·.:, Bo''err\11~'~cJ~d·(:àrquest~- f~rmato~~.;~ realizzato con moduli commerciali da innestare
-.:· .... '1- ::t= '·oil ~-1 " !i'· .. ,;;,;.. :::'if ,,. "'",. ;; ... · - - ... "'''·" ,... - •.. ;::- ·"' .·,;,.
;,f,
:: .'; • ;;;,:i' :l!! L - ,;-:-, • '" .:. ~i: ; ',;,.:;: .. '"' "- f11 ' • ·:i:- • ,:j·::: ,·;, •F .,: : ·i'·-:i "'" - " .Jo'i' ii' -.';. '-lJ ·l -:;• ·i' •• ;;, ..- c:.· li' ::·'i: ".':
Arduino e lo faremo comunicare con il modulo
·.·: 1~etiali,zzare~dese~:ializzarel [ dii,ti;;:. _:: urh https.:Jàrtluinojson.org "'." -::· _,.~, .,. RFM69. Come certamente saprete I'ESP32
~ . eta _s.ta.rnbia-t~ ira: f nQ.di~n.tennifio~.·. T bttps:lgittì:ub1.c omibb'l.iutch'òn~ ~ · :. supporta in modo nativo la connettività TCP/IP
·,F. },', ., l:l!' !l!! ::;, ,,. -· -· :;._ :;; .:. •• ·.';,';,. ;; 'l· - ;jfi ~ ;; -;,_ - ;, -
·:. . ed i'f'.uateway. ~Jilllathtq. la·':do:bb'ia-. "\ _..~rduinoJ~fl per . chi ·,vol~-$.se: ap·;- .:
,, .' .,, - _,,,,. ' "' 'i'':: """- '':
. ~. -ruo·.,alla eter"oge,nt;!a archit:gttur~· ": - pro,fondire .i·,cqncetti ~Jia base di ~,, .- . ·:.·:. del nostro ecosistema di sensori verso la rete in-
:j!- :~·; :.·:: ".;:,·'o :::i.j'·•- ;;~dc ' .:<::: - - .::.•;: .•i: ' •fl_: '~" -.:: ;;_ ·..·i: '.' ·H. :- ;; "' .::.-:: -, ::.· ·ii~ • -,,.: 'l ;-::;;i;
-.", - dei ,tllQ.~tJli impJeg~ttsu Af,l.tepnjJlQ. _ ·: Jso:n ~. rinf~esçar~ a(çune concetti,, ,. ·: ternet e quindi potremo realmente parlare di loT.
":·:_:. è·s41 G·~t~~w_~v.~.,- ,-: : : ·, : ·: . , ·~: ~.·i.', ·_ ·: -" :.' f!=>ri.P~,rru~nt~ttdet c*+vi sugge~ ,' , . Dopo una attenta valutazione delle possibili
.·: ,- l·':modl.tl-i Antennino sbn'o basati:.·
., .. ., "'"''' ·.-:. -;ij-
~. riamo'anchè ifsuo òttimo li6.ro·! ;, ,.·:;:·:
"'i:;~,, . ;;. ,:::·, t ljl .. ... ·;;: • :: - ~
alternative per quanto riguarda la scelta del sof-
~~·~. ~~ 11li~fo~bri.t.nlllor~ ~1sç ~:. s:6it~'" ·. -_::·- ~~ttps::tar.duìn-ajson~brg~li"ookr'·' ;'.c
• ,. _,. ...... :: ... j• • .. __ . ' ··;t . 11 -:: •• '" .,.,, .:.
tware per la Dashboard, l'attenzione si è posata
-',;_ afteijtf~ il mod~,lo .~ate~~~ è:.:, ··:,, _:. · -~.:, ~a ·n ~~are cheThin~~~~atd ~uttJ: -.~,:~ ·~ su un software open source (Licenza Apache)
"
, 6'asatd,st1un mid:ocon~'ro~lore ·~· - . ' ~.:, ffUe di configurazio·ne "delle ·varie:
"' .. '"''il :: ii ·:', ·: ~ ·i' .:. •;'.'i' ;!." ~ " •• 'l' •;; ,. ~;-, !H: ,.:. ;; """' ,;- ,· :ii ';_l .li ',. ·ii:·" ·i::::]-· , "' ''i- .
che viene rilasciato in due versioni: una versione
~·. · RISt a·3'tbito: . :, . ~:· ,. ·:."' ,.:L. ·_· ·. entità:-pr:èsenti sonahtlportabiH ·:· -, Community Edition ed una versione Professional.
:ti
·: ciùintU~Ia·:ra~presén~'azl·on·e aiaati
::- _, .. , ,~·" .,,,,;;_ ;, '''
:~'·...
'. -~"- ~~d.asport~bili'in formatd :Tson -:, :_ .':.·
'" " , ,,,
',~,, . .·' : · - ,,., . - "
- ,''t:;', .., _ .
_,,:;, . - "' ·- .
• ·:m ~i- ~·,. ·~ :l:.. ~.~
Si scarica da https:llthingsboard.io.
,:. sulle due·:ar~hitett'ur:a è,dtverr- ·:.·: ·~. . . e quindi' il tempo de'd1~ato a~èt ·~ ., ,
" ... ::: :::g ;;:; ;:; .: jJI;; ., • :.. - :: :i· .:i'l:. , :l· -· ,;;.·i: -" ""-:ii. · .i: ·':. - -:'i' ,. :: ~'' ·i:·,.- . J .:i :;;
La versione Community Edition può essere
"· sa e.aélottari:t:h:t una Struct::per ·'· approfondire questo formato è .... installata su Raspberry Pi, su un PC Windows, su
,:,: ~ c'..~n:Cnu~idè"re"';infprma%iohi'
,,
~ i riscbi~ , sJcurament.e b.en.· sp"eso. '. . un server Linux (Ubuntu - CentOS), su Google
't! !"'"'-"'''"'" :::::- ,, ,,. ....
-,~ ~ ~ ,.,,,;; ,.,..;;' ... ;: "''''' .. .. .. . ;;•
58
software ma interfacceremo i nostri Antennino byte, che è anche la dimensione minima di un
tramite protocollo MQTI direttamente verso pacchetto.
ThingsBoard impiegando il nostro Gateway. MQTI fornisce tre tipi di Quality of Servi ce. l tre
La piattaforma Thingsboard comunica in modo livelli di servizio sono:
nativo tramite·protocollo MQTT. • O. At most once (al più una volta}: i messaggi
vengono consegnati in base al miglior effort
MQTT: CONOSCIAMOLO MEGLIO di rete, per cui possono avvenire perdite o
Tutto nasce nel 1999 dall'impegno di due inge- repliche di informazione;
gneri, Andy Stanford-Ciark (IBM} e Arlen Nipper • 1. At least once (almeno una volta): si assicura
(Arcom, oggi Cirrus Link) concentrati nel trovare l'arrivo del messaggio, ma possono avvenire
una soluzione per monitorare pozzi e asset repliche;
remoti delle aziende petrolifere Texane. Idearono • 2. Exactly once (esattamente una volta}: si
quello che viene indicato con l'acronimo MQn assicura che i messaggi arrivino esattamente
(Message Queuing Telemetry Transport} e nello una volta.
stesso anno rilasciarono la prima versione.
Dopo tre anni dalla pubblicazione fu annunciato Gli sviluppatori di Thingsboard hanno in un
che I'M QTT sarebbe stato standardizzato dalla certo senso integrato un Broker MQTT nella loro
OASIS e nell'ottobre del 2014 MQTI ha final- piattaforma e quindi il Gateway che andremo
mente ricevuto il suggello della standardizzazio- a realizzare in questa puntata comunica con lo
ne e attualmente è disponibile la versione 3.1.1 . specifico Broker MQTI di Thingsboard il quale
MQTI si è subito affermato in ambito loT. supporta solo i due livelli QoS O ed 1.
Il protocollo oggi è open, disponibile con licenza •
Fig. l
Architettura
MQTT.
temperature MOTI-Broker
sensor
'
59
' '
ai vari client che lo hanno sottoscritto. TCP permanentemente aperta verso il Broker. Se
Pertanto i clienti non devono conoscersi tra loro: questa connessione viene interrotta per qualche
comunicano solo sull'argomento cui desiderano circostanza, il broker MQTT può bufferizzare
sottoscrivere aggiornamenti. tutti i messaggi e inviarli al client quando questi
Questa architettura consente soluzioni altamen- tornerà in linea. Un client può essere allo stesso
l
te scalabili senza dipendenze tra i produttori di tempo un publisher che un subscriber chiara-
• dati e i consumatori di dati, quindi si possono mente su topic diversi.
• avere architetture completamente eterogenee. '
La differenza con HTTP è che un cl ient non deve IL GATEWAY
eseguire un polling per ricevere le informazioni Per quanto riguarda il Gateway abbiamo pen-
~abella 1 di cui ha bisogno, ma è il Broker che notifica sato di realizzare una basetta con il minimo di
Comparazione gli aggiornamenti sui topics che il client ha componenti presaldati a bordo per privilegiare la
tra ESP8266 e sottoscritto, nel caso ci sia qualcosa di nuovo. modularità. Per quanto riguarda i moduli, sono
ESP32. • •
Pertanto ogni client MQTT ha una connessione facilmente reperibili dal sito www.futurashop.it.
•
.. • • . • . . . . . •. . .
•
•. . .. - . ' - ... • .r ' •. . :ESP3t:· .. ~--r:'-· '.~.._ -t~·/ 1 t:t··-,. -:·,t l
. .
• Specifiche '
ESP8266 ' • • ~
··- ' • .
-~-
'·. • . l
·:.
MCU Xtensa Single-Core 32 bit L106 Xtensa Duai-Core 32 bit LX6 600 DMIP
802.11 b/g/n Wi-Fi Ves, HT20 Ves HT40
Bluetooth None Bluetooth 4.2 and below
Tipica! Frequency 80Mhz 160 Mhz
SRAM 160 KBytes 512Kbytes
Flash SPI Flash, up to 16 M Byte SPI Flash, up to 16M Byte
GPl O 17 36
Hardware/Software PWM None l 8 Channels 1 l 16 Channels
SPI/12C/12S/UART 2/1/2/2 4/2//2/2
'
ADC 10-bit 12-bit
CAN none 1
Ethernet lnterface None yes
Touch Sensors None Ves
Working Temperature 4ooc -125 o 40°c -125 o
60
•
Preferences x
Settings Network
Sketchbook location:
Nella prima stesura del progetto ci eravamo La Tabella 1 riassume in modo conciso le diffe-
orientati sul modulo ESP8266, ma proseguendo renze tra i due moduli.
nella realizzaz ione ci siamo resi conto che sa- Quello che salta subito all'occhio è la maggiore
rebbe stato meglio passare al fratello maggiore: disponibilità di memoria RAM (quasi triplicata).
I'ESP32. la frequenza di clock raddoppiata, il maggior
o x
..... --
fd,[ Sltftch Tooll 111o
=p;;
--
fiJ tr~c:Odol 19 a~
.................
........... o~oSNn · l
,"
l lac J'""""
· ~~ ~ .
li ... , _
--
~ "&:12 'o\'fo ... Mon ...
Cl•'hShoft•M
Clrl • SMI• ~
4 t uo<r1-
~ SOMd: . , l S2IXr
U H...:.l"""
Rl*"' q 1()10 "IOJ,IiU"" • Arol.o'IO no
•
44 I U..l...:..
n 11,....1.,. fldl Moòf" '"CIO" ~ Atdl.ono Il
1 lJ,o'ld A1GuinD USI
......
11 11-cl..,. "-t.t.ar~ ~ "No OTA. (lMgot .li'JI)"
t H.cl""""
~
t" (/ l ùo-:1.,
• h Kl~
-
, _ Dfb.lg lr.oet~· ) ~ldAtdwlo
AIOJIIO ITo or 'ro Mrl
Aldl.o110 NG or o1c1er
.&.rdu'110 Robot c~
'
-- • ArduiiiO llobol Motor
""'"""""'
lSI'J2 '111-loiOCU.
(SPl.Z P'~(!) ICi\
5piMUII ~ll tNng
~NINA-W\0- {ESnl)
~ Fig. 3
"""'ou Selezione della
lOUHDlZ""l
"""'""""u
Oon9Jfl'l T
ftfl Podort U
scheda.
.
61
!'.·:·~~-~-.~~-~.:.~:··~·.:·,;~~,,~ -;.-,~-o--.--- ~-.--.-,-~c--:---·-~·~.-.~;_"'·~~ -~-:; :-···:<. -.~!
....
....... . .
. . '
~
\ .
.
.\ .
.
.
'
! Fig. 4
uno script che permette di fare scaricare tutto
La EEPROM quello che ci serve dalla interfaccia IDE di Ardu-
•
sul modulo. 1no.
Assicuriamoci di avere l'ultima versione dell'l DE
di Ardui no, poi andiamo per prima cosa ad ag-
giungere il supporto al modulo ESP32. Per fare
ciò, dobbiamo aprire l'l DE di Arduino selezionare
dalla voce di menu File/Preferences ed aprire la
scheda visibile nella Fig. 2.
Inseriamo quindi il seguente URL https:/1
dl.espressifcom/dllpackage_ esp32_ index.json nel
box "Additional Boards Manager URL" e cliccare
su "OK".
numero di GPl O, ma la cosa più importante è la Riavviamo quindi L'l DE di Ardui no e se tutto è
presenza di due Core. filato liscio dovremmo trovare una serie di board
Un core è deputato alla gestione dello stack aggiuntive che usano il modulo ESP32. Dal
TCP-IP e l'altro dedicato alla gestione del nostro menu, selezioniamo la scheda desiderata come
Sketch; questo consente di avere maggiore visibile nella Fig. 3.
stabilità del codice. Mentre nel caso del chip Dovrete altresì caricare le librerie utilizzate nel
ESP8266 lo stesso core deve gestire sia la progetto. Per agevolarvi nel compito abbiamo
connessione TCP-IP che lo sketch dell'utente e inse rito nella cartella lib del repository Gih Hub,
non è raro il verificarsi di situazioni di stalla che un file .zip contenente tutte le librerie relative al
portano al blocco del codice o a dei malfunzio- Gateway: inserite solo quelle che non avete già
namenti. nella vostra cartella delle librerie Ardui no, perché
alcune potrebbero essere già presenti perché
UTILIZZARE L'ESP32 NELL'l DE ARDUI NO avete già compilato uno sketch relativo ai moduli
Per poter utilizzare i moduli ESP32 è necessario Antennino.
installare quella che viene chiamata la Toolchain: Riavviamo quindi L'l DE Ardui no, cosicché siamo
• un insieme di strumenti e librerie . pronti ad aprire lo sketch del Gateway, compilar-
Per agevolare l'utente è stato messo a punto lo e caricarlo sul Gateway.
- o x
~ Fig. 5 /wlOfooNI
~eSirw'.dl
quattro opzioni J l
t..~~
l' liUJ
SéNJ~
di memoria. • 11 lla;a
~Il ~~~
l 't·"·\H J
1 . 1 t~ Pt!!t~O'I~ "'ff.ult' - - - • Def~l
• ' ' :.t~ Cor. Oeo<.JQ l.tVti: 'Non( ""ÌI'I!INÌ a~JS flASl-1)
No OTA ~ API'J
~~ SP!FfS Il-ve APPS w1111 or~
Pr09f~I'Wl'l«: 'AVFJSP ~r )
~ Fig. 6 •
••
·s
Massima
memoria •
l i H.l\~l '"'" "::'•u.c-"!"J · b"
disponibile
con t'opzione L
! & .t.1\~t~ • .. rtn.a r. •
di partizione .. # j,_! l!" l ~......
'••~l· ~
A.nS::d..::J) b •
•-r~ . h
"Default".
62
•
LA MEMORIA PER LO SKETCH Proviamo a selezionare l'opzione "default". Com- ~ Fig. 7
Il chip ESP32 è dotato di una memoria Flash pilando lo sketch vedremo (Fig. 6) che saranno Massima
esterna, visibile in figura (Fig. 3). Tale chip Flash, disponibili al massimo 1310720 Byte. Mentre memoria
disponibile
viene impiegato per memorizzare software, dati, in Fig. 7, selezionando l'opzione "No OTA (large
con l'opzione
parametri di configurazione ecc ... APP) avremo a disposizione 2097152 Byte. di partizione
Questa memoria esterna viene collegata al chip Scegliamo quindi questa opzione per il nostro "No OTA (Large
via bus SPI e può avere una dimensione massi- progetto. APP)".
- ma di 16Mb. Le altre opzioni sono: la velocità in di comunica-
•
Il modulo ufficiale Espressif (ESP-WROOM-32)
monta un chip da 4Mb. Normalmente non vedia-
mo i chip ESP32 e il modulo Flash perché sono PIN RFM69 ESP32 ~ Tabella 2
'
racchiusi all'interno di una schermatura me- Pin utilizzati per la
tallica che nella Fig. 4 è stata rimossa a scopo RST GPI04 "
comunicazione.
dimostrativo. NSS GPI05
Lo spazio di memoria complessivo del chip Flash
SCK GPI01B
viene partizionato in diverse parti, ognuna delle
quali ha uno scopo specifico . MIS O GPI019 •
'
i_ * ·~lud~ •~ib . h ,
~' h .-.clud• ~cW.ino.7•on . h >
l i"cluA~ < ~~·~?n•i& . h~
• linc lucl~ M•truh_Gn< . h>
// f inelud• <Adaf rult_!SDllO,.h>
~ Fig. 8
Il messaggio
di log nella
finestra dei
report dell'ICE.
'
63
schema ELETTRICO
15 \ .J35 1035 ~
12 U1
114( 1032 1017 - - - - - -
13 12
13 1033 ' - - - - - - - - - - - - - - ; TX
:::GPI025 l '
12 '1026 1025 - - - - - - - - - - - - - - - - - ON/OFF
+3V3 +3V3
11 '1027 1026
10 1027 ,J.;;8,20
"GPIOI4 U3
vcc
U4
ANT
CONN3 LC01
SCL
~ SOA - •
~ SDA SCL GND VCC GNO
>----- 1015 1022 ---.,
P1 1021 ---.,
~o • 'Ili.
'Ili•
•q GNO +3V3
RESET _L
,;,: 'fJ77. .
L...__ _ _ _ _ _____,.._ - - - - - - - - - - -
zione della porta seriale, la frequenza max del COME CARICARE LO SKETCH
bus SPI del chip Flash, la modalità del funziona- Per evitare prob lemi, prima di avviare il cari-
mento del chip Flash e la modali tà di debug. camento dello sketch dal la interfaccia l DE di
'
( RTt. GPI014 Il HSPI MOS! ]I TOUCH4 Jl ADC2 CH4 Jl GPJ013 l ( GPJOlS l[ ADC2 CH3 l[ TOUCH3 ] ( HSPI CSO ]l Rlt_GPI013 l
•
VII':
64
•
Arduino è necessario tenere pigiato il pulsante
"BOOT" che si trova alla destra del connettore
PIN GPRS
._"' ,-
ESP32 !! Tabella 4
TX "' 'i:
Pin dedicati al
. ,.. ,., GPI016
microUSB, potremo poi rilasciarlo quando ini- ····:o ·• modulo GPRSe
zierà ad apparire il messaggio di log presente in RX GPI017
Fig. 8. Se tutto procede in modo corretto al ter-
mine il modulo si resetterà e potremo testarne
il funzionamento aprendo la finestra della porta
seriale per verificare i messaggi di LOG. Alcuni e nella Tabella 2 riportiamo un riepilogo dei pin
messaggi importanti vengono riportati anche sul utilizzati per la comunicazione SPI.
display OLED. La comunicazione tra il modulo ESP32 ed il
2
modulo RTC avviene tramite il protocollo I C. In
MODULO GPRS Tabella 3 abbiamo un riepilogo dei pin impiegati,
Il Gateway potrebbe essere impiegato anche anche in questo caso sono stati utilizzati dei
in una installazione nella quale la connettività pin configurati in modo predefinito per svolgere
Wi-Fi non sia presente e per ovviare a questo questa funzionalità, ossia quelli deii'RTC.
abbiamo previsto di fornire connettività tramite L'esigenza di impiegare un modulo RTC è dovuta
un piccolo modulo GSM-GPRS. alla necessità da parte del Gateway di inviare
Il modulo che utilizzeremo monta il chip SIM800 pacchetti telemetrici verso Thingsboard che
che lavora nella banda di frequenze 1.800 M Hz, contengano un Timestamp corretto. Questo
1.900 M Hz, 850 M Hz, 900 M Hz ed ha una velo- non è necessario per sensori che comunicano
cità massima di trasferimento dati di 85,6 kbps. direttamente in MQTT con ThingsBoard. Sul sito
L'impiego del protocollo MQTT non richiede si trovano diversi tutorial che spiegano come •
grande larghezza di banda e quindi una con- implementarli.
nessione GPRS è più che sufficiente. Inoltre, È presente anche un piccolo display OLED che
2
attualmente sul mercato sono apparse numero- viene pilotato tramite protocollo 1 C e che quindi
se aziende che forniscono SIM specifiche per il condivide il Bus con il chip 8TC DS3231. Partico-
mondo IOT ed i prezzi sono molto interessanti. lare attenzione va posta alla pin-out del modulo
Per il momento lo abbiamo previsto a bordo del- OLED perché alcuni modelli che si trovano in
la scheda, poi nei prossimi numeri tratteremo un commercio hanno i pin di alimentazione invertita.
articolo specifico per il suo impiego nel Gateway. L'al imentazione a 3,3V per il modulo RFM69 e
Il modulo GPRS necessita di tensione di alimen- per il modulo RTC viene ricavata dal regolatore
tazione che deve essere nel range 3,4~4,4V DC a bordo del modulo ESP32 il quale a scopo di
con una corrente massima di 2A (nella fase di test può essere alimentato tramite il cavo USB
trasmissione), quindi abb iamo la necessità di ag- impiegato per caricare lo sketch Ardui no, mentre
giungere un modulo di alimentazione switching e per l'uso in produzione e soprattutto quando
dovremo prevedere anche un adattatore di livelli si impiega il modulo GPRS, sarà necessario
logici per la comunicazione seriale tra il ESP32 alimentarlo tramite un alimentatore esterno
ed il modulo GPRS in seguito alla discrepanza di collegato al connettore CONN1 (Tabella 4).
tensione di alimentazione e al fatto che il modu- Per la connessione dell'antenna del modulo
lo ESP32 non è 5V-tolerant. Il traslatore di livel li RFM69 abbiamo previsto un connettore U.FL
logici lo abbiamo implementato con la coppia di sulla scheda base, ovvero una piazzola alla quale
Mosfet N-Channel Q1, Q2 e i quattro resistori saldare uno spezzone di filo. Per quanto riguarda
R1,R2,R3,R4. il modulo ESP32, l'antenna per il WiFi è inte-
grata. È stato previsto un connettore di servizio
SCHEMA ELETTRICO CONN2 che permette di accedere ai pin GPIO
Diamo dunque uno sguardo allo schema elet- rimasti liberi e che quind i potrebbero essere utili
trico del Gateway, che è sostanzialmente quello per implementare delle funzionalità aggiuntive
della board che ospita tutti i moduli. La confi- del Gateway.
gurazione è molto semplice. La comunicazione
tra il modulo ESP32 ed RFM69 avviane tramite ALIMENTARE IL MODULO SIMBOO
il protocollo SPI utilizzando i pin preposti per Quando il gateway viene impiegato senza
questo protocollo sul modulo ESP32. modulo GPRS l'alimentazione può essere
In Fig. 9 vediamo la pin-out del modulo ESP32 fornita anche tramite un buon alimentatore da
65
' '
5V con cavo micro-usb che .eroghi almeno 1A, l'esigenza di avere più di 253 dispositivi Anten-
da collegare direttamente al modulo ESP32. Il nino, dovrete modificare questo parametro e
regolatore lineare AMS117 a bordo si occuperà suddividere la rete in più network, ognuna con
di convertire la tensione nei 3,3V necessari al un proprio gateway dedicato visto che una rete
funzionamento del Gateway. Antennino {RFM69) può supportare su uno stes-
Quando invece viene impiegato il modulo GPRS, so NETWORKID al massimo 253 dispositivi.
dovremo utilizzare ad un alimentatore esterno L'altro Parametro, ENCRYPTKEY deve invece
di maggiore potenza da collegare al connetto- essere assolutamente modificato perché è la
re CONN1. In tal caso è tassativo utilizzare un chiave che serve a criptare la comunicazione tra
alimentatore di buona qualità, stabilizzato che i moduli Antennino ed il gateway. Attenzione,
eroghi una tensione massima di uscita di 12V che deve essere di 16 caratteri e deve essere
ed un corrente di almeno 2A. Questo perché la lo stesso su tutti i nodi della rete, Gateway
tensione viene appl icata al pin Vin del modulo compreso .
ESP32 che ha a bordo un regolato re AMS 117 -E stata implementata inoltre la funzionalità di
che sopporta al massimo una tensione di 15 V, sincronizzazione del RTC {053231 ). Per sincro-
e perché il modulo SIMBOO richiede dei picchi di nizzare il chip RTC è stata realizzata una libreria
corrente massima di 2A nelle fasi di trasmissio- che utilizza le API del servizio web https:l!time-
ne dati o aggancio alla cella. zonedb.com, questo è preferibile rispetto alla sin-
Inoltre, particolare attenzione va posta nella cronizzazione effettuata tramite un server NTP,
regolazione della tensione del modulo Switching perché quest'ultimo richiede l'apertura di po rte
U2: il modulo SIMBOO necessita di una tensione UDP e il codice è di difficile portabi lità ne l caso
massima di 4,4V. di util izzo del modulo GPRS. Per poter usufruire
Lasciamo quindi sulla scheda il solo regolatore del servizio, che è gratuito per un uso normale, è
U2, ponticelliamo il Jumper JP1, apriamo il Jum- necessario registrarsi ed ottenere una KEY.
per JP2, colleghiamo .l'alimentatore esterno {Max Nella configurazione esiste un parametro che
12V) al connettore CONN 1 e regoliamo il trimmer permette di specificare la frequenza di aggiorna-
a bordo del modulo f inché la tensione misurata mento del RTC tramite il server TimezonedB.
con un multi metro digitale sui pin di test TP1 Terminata la procedura di test è necessario set-
• {GND) e TP2 sia pari a 4.4 V. tare la variabile DEBUG MODE a false.
Per assicurarsi che non avvenga una modifica Il codice del Nostro Gateway contiene la gestio-
della regolazione potremmo anche sigillare il ne dei parametri di connessione WiFi e dei para-
trimmer con una goccia di si licone o ceralacca. A metri di connessione al server ThingsBoard e la
questo punto rimuoviamo l'alimentatore esterno, KEY per l'utilizzo del timeserver TimeZonedB. Il
chiudiamo il Jumper JP2, colleghiamo il modulo tutto viene implementato tramite la personaliz-
GPRS e ricolleghiamo l'alimentatore esterno. zazione del modulo WifiManager.
Il codice del Gateway si compone della solita
CARICAMENTO SKETCH
E CONFIGURAZIONE GATEWAY
l vari Sketch possono essere scaricati dal repo-
sitory Github https:llgithub.comlopen-electronics/
antenninolgatewav_ thingsboard, dove sarà ~ Listato 1
possibile scaricare anche le librerie utilizzate per #if(DEBUG_MODE)
il progetto. if (Serial.avai lable() > 0){
char input = Serial.read( );
Il codice del Gateway è stato suddiviso in tre file if (input == 'r') {
che devono trovarsi tutte nella stessa cartella. client.disco nnect();
}
C'è un file di configurazione User _config.h e due
if (input == 'p') {
file contenente codice RFM69 .i no e ThingsBo- print_device ();
ardGateway.ino }
if (input == 'c') {
Nel file di configurazione ci sono solo due para- clear_device();
metri che richiedono una modifica: NETWORKID }
•
}
e ENCRYPTKEY. #endif
NETWORKID in questo momento è settato su
1. Normalmente è corretto così, ma se avete
66
'
procedura Setup che viene eseguita una sola lità. Sul sito web di ThingsBoard sono presenti ·
volta in fase di Boot del dispositivo e di una degli esempi di controllo di Pin GPIO su semplici
procedura di Loop che viene ripetuta ciclicamen- dispostivi che non fanno uso di Gateway. Vi
te durante il funzionamento del Gateway. Nella invitiamo a sperimentare per capire in modo
procedura di Setup vengono inizializzate come di approfondito il funzionamento della tecnica
consueto la Porta Seriale, i Pin, ecc. quando non sia presente un Gateway, cosa che
Viene inoltre intercetta la pressione del pulsan- poi tornerà utile per capire le modifiche che sono
te P1 che serve ad resettare la configurazione state necessarie nella implementazione quando
del Gateway, viene inizializzato il RTC (DS3231) esiste un intermediario (Gateway) tra il modulo
le librerie per la connessione con TimezonedB, da controllare ed Th ingsBoard.
MQTT, RFM69. La pubblicazione di dati telemetrici verso
Una particolare attenzione va posta alla chiama- ThingsBoard avviene tramite la funzione Pub/i-
!"! Fig. 10
ta client.setCallback(MQTTtoRFM69); con la quale shTelemetryData. Da notare il formato particolare Impostazione
si istruisce il codice sulla procedura di CaiiBack che deve avere il payload Json da inviare: dei jumper.
relativa al Protocollo MQTT, in pratica quando il
gateway riceve un pacchetto MQTT in seguito ''{\''RFM69_1\'':[{\"ts\'':1483228800000,\''values\":{\"
alla ricezione di dati relativi ad una sottoscrizio- BAT\'':2.51,\''T\'':26.38,\''l\'':876.00}}]}''
ne ad un certo topi c, la gestione di questi dati
viene delegata alla procedura MQTTtoRFM69() RFM69 _ 1 rappresenta l'identificativo del dispo-
nella quale vengono estratte le informazioni sitivo che trasmette il dato, quindi si tratta del
contenut e nel formato JSON e intraprese le nodo RFM69 N o 1.
azioni conseguenti. 1483228800000 rappresenta il Timestamp
Nella procedura di Loop una cosa molto utile ricavato dal RTC. BAT è l'identificativo del para-
in fase di debug è la gestione di un carattere metro Batteria e 2.51 il suo valore letto tramite +
ricevuto dalla seri al e (Listato 1). In questo modo lettura analogia, T l'identificativo del parametro
è possibile impartire un comando particolare Temperatura e 26.38 il suo valo re letto tramite il
(richiamare una particolare procedura mentre il senso re a DS 18B20 bordo
Gateway sta funzionando a scopo di debug). L'identificativo del parametro Luminosità e
!"! Fig. 11
Nel Loop() viene verificato il fatto che il client 876.00 il suo valore letto tramite il sensore LDR Impostazione
MQTT sia connesso e nel caso in cui si perda la a bordo. jumper per la
connessione viene richiamato il metodo recon- All'indirizzo Internet https:llthingsboard.io/docs/ modalità Low
Power.
nect(); mentre, ciclicamente se la connessione è reference/gateway-mqtt-api si trovano informa-
attiva viene richiamato il metodo client.loop();. zioni dettagliate sulle API da usare.
Nella fase di loop viene anche intercettata la
pressione del pulsante P1. Tenendo premuto
questo pulsante viene resettata la configura-
zione WiFi del chip ESP32 e quindi è possibile
~· Listato 2
modificare i parametri di connessione. Nel
prossimo articolo vedremo nel dettaglio questa
configurazione. .;. .,
·. }
da una Dashboard. Vedremo in seguito come si
implementa su ThingsBoard questa funziona-
CODICE NODO ANTENNINO- ATTUATORE modo che i vari moduli Antennino che andremo ad
Come ricordato precedentemente abbiamo modi- aggiungere alla nostra rete di sensori/attuatori ap-
ficato il codice ai Antennino per gestire l'invio dei piano tra i dispositivi presenti su ThingsBoard, non
dati telemetrici nel formato Json. Inoltre, per poter è necessario compiere alcuna azione: è sufficiente
sfruttare la possibilità di controllare dei Pin (RPC) mantenere alimentato il Gateway, alimentare i vari
di Antennino tramite la Dashboard di ThingsBoard nodi Antennino che vogliamo partecipino alla rete
è necessario che il modulo Antennino non vada in e i nodi appariranno "magicamente" sotto la voce
modalità LowPower. Quindi abbiamo configurato il Dispositivi su ThingsBoard con la dicitura RFM69 _ 1,
modulo per fare in modo che sia costantemente ali- RFM69 - 2 ... RFM69 - XXX.
mentato ed abbiamo modificato il codice per gestire Dove il numero XXX dopo il prefisso RFM69_ indica
le chiamate RCP. il numero del nodo che deve essere univoco un una
In Fig. 10 riportiamo la disposizione dei jumper che rete Antennino.
consente di ottenere la configurazione dell'alimen- Vi ricordiamo che la rete Antennino supporta la
tazione desiderata. In questo modulo usiamo la massimo 255 (253 considerando il gateway dati ed
modalità di alimentazione tramite le due batterie AA OTA) nodi possibili per ogni rete. Quindi benefice-
a bordo di Antennino disabilitando il timer TPL511 O. remo di quella che viene indicata come Automatic
La maggior parte del codice è rimasta invariata Provisionig o Deployement. Quindi appena uno dei
rispetto al codice già presentato dei nodi Antennino. nodi invierà un pacchetto di dati al Gateway (perché
Degno di nota è il blocco che si trova dentro illoop ricordiamoci che i nodi parlano direttamente con il
del Listato 2. In questo codice si intercettano i co- nostro Gateway) il Gateway provvederà a ridirigere i
mandi ricevuti dal Gateway conseguenti a richieste dati con il protocollo MOTI verso ThingsBoard.
originate dalla Dashboard e si prepara la costruzione
della risposta da rigirare al Gateway che a sua volta CONCLUSIONI
le ridirigerà a Thingsboard. Bene, per il momento concludiamo qui. Nell'articolo
Una cosa molto impqrtante è il valore del parametro successivo concluderemo affrontando l'installazio-
Request_ldil quale è inviato da ThingsBoard per ne e l'utilizzo di ThingsBoard nella creazione della
mantenere traccia della identità di una sequenza di Dashboard.
richieste e risposte tra il dispositivo ed ThingsBoard. Vi abbiamo introdotto la realizzazione del Gateway
•
In pratica se ThingsBoard invia un comando per il Antennino che ci permetterà di collegare la nostra
quale richiede una risposta, viene inserito il codice rete di dispositivi ad una Dashboard Thingsboard,
Request_ld che deve essere restituito dal nodo abbiamo illustrato le particolarità del Gateway ed
Antennino nella risposta verso ThingsBoard. Tutto abbiamo introdotto il protocollo MOTI e la Dashbo-
questo in conseguenza dell'asincronia tra chiamate ard loT ThingsBoard.
e risposte.
Riportiamo in Fig. 11 la disposizione dei jumper 39,00, la scheda di sviluppo ESP 32 con WIFI e bluetooth
che consente di ottenere la configurazione per la (cod. YBSSS) è in vendita a Euro 13,50, la breakout board
modalità Low Power nativa del modulo Antennino con RFM69 (cod. RFM69BOUT) costa Euro 11 ,SO.
Il modulo cellulare miniaturizzato con SIMBOO
(senza TPL511 0). Il codice è molto simile a quello (cod. FT1308M) è acquistabile a Euro 29,00, il convertitore
del Nodo Actuator, a parte la gestione dei comandi DC/DC con uscita regolabile (cod. MODULODCDC) è
RPC ed la gestione della modalità Low Power. Per il disponibile a Euro 4,30, la breakout con 053231 ed
resto, vengono inviati verso ThingsBoard gli stessi EEPROM (cod. 053231 RTC) costa Euro 5,90 e il display
OLED 12C da 0,96" (cod. OLE0096C) si può acquistare a
dati di telemetria.
Euro 11 ,00. l prezzi si intendono IVA compresa.
68
•
Full HD
1080
Full HD
1080
Full HD
1080
cod.FR713
cod. FR712
l l ·~
l
':)
':.) ':) J ..) J
Oscilloscopio 2 Canali 70 MHz ~~ Q
# •' 1 "Mi'<"
•
Oscilloscopio USB Generatore di funzioni e forme
per PC 2 Canali d'onda arbitrarie
20M Hz USCITA FORME D'ONDA ARBITRARIE
v Frequenza di campionamento
v Frequenza onda DC-25 MHz
v 1 canale COD. FAW1025G
48 MS/s v Frequenza di campionamento 200 MSa/s
v Funzione FFT integrata
v Risoluzione verticale 12 bit
v lnterfaccia USB 2.0 per PC
(alimentazione da USB) FREQUENZIMETRO
OJD ,; Software e memorizzazione v Frequenza fino a 50 MHz
con. DSOPC22 · delle forme d'onda v Impedenza d'ingresso
> 100 kohm
v Ampiezza segnale d'ingresso
da 400 mVpp a 18 Vpp
Il Registro RO
In questo registro a 32 bit i bit sono suddivisi in due sezioni:
quel la relativa al valore intero (INT VALUE) e quella corri-
71
•
'
72
'
,~
- ~ l l l -
~
- =- "-- -
~
·_ ...._ ·_ • ' \_
~
. ,. -
~
t·
= ~- -- '
·~
l • ' .• L
~ '~
' ~ .
~
• . 1 l l L • •-
F, ~ ~l=
•
t· ~
\ •• ' l . l l ,- ,_ ~- = ~ f ~ t ' t ~ Ll t_ 1 l . l l l
,-t==<~ f l ~- , ~- 1= ~
f lo
o - o - - :- ' 1 = o -- f ,> j= -o - 1= - ·- l i o - É· l 1 f f - ' "' = - - l l l__ 1- [l · = l l ,
- l l l • • ~ : - .- . t • • .-.' ~- .-- ~- f- - - L l ' • • ' l~- - F .- - b • • ' ~ • t ~ ~ t_ k ,- - ~ f ' 1t f ! ' t i' - - 1- t t l .- • l l ' l l - - f lo ; - l ~ ' l l •
deii'ADF4351 . l bit D830-D829 "Low Noise" e il doppio buffering dei bit da DB22 a DB20 "RF
"Low Spur" Modes, selezionano la prestazione del DIVIDER SELECT" del Registro 4. Quando viene
PLL per l'ottimale rumore di fase (lo w noise mode), abilitato il doppio buffering, dopo aver caricato
oppure per il minimo livello delle spurie (low spur un nuovo valore nei bit da 0822 a 0820, deve
mode). La m.odalità low spur mode viene utilizzata essere effettuata una nuova scrittura nel registro
nel caso in cui l'applicazione richieda rapidi agganci RO affinché il nuovo valore venga reso disponibile.
di fase, per ottenere i quali, vengono impiegati filtri Ciò garantisce la correttezza di caricamento dei
di lo op a larga banda, almeno superiore a 1/1 O dati. Se impostato a O il bit DB 13, il nuovo valore
della risoluzione di frequenza {o step di canale), che caricato è immediatamente disponibile senza la
come abbiamo visto, attenuano meno le spurie necessità di effettuare una nuova scrittu ra nel
rispetto ai filtri a banda stretta. Per una migliore registro RO. l seguenti registri sono normalmente
prestazione rispetto al rumore, è decisamente bufferati: Phase Value, Modulus Value {MOD), Re-
meglio selezionare la modalità low-noise mode ference Doubler, Reference Divide-By- 2, R Counter
che consente il miglior rapporto dbc/Hz del rumore Value, e Charge Pump Current Setti ng.
di fase. Per contro, si avrà un maggior livello delle l bit da DB 12 a DB9 "Charge Pump Current Setting':
spurie di cu i se ne dovrà valutare l'impatto nelle impostano il valore di corrente del CP. Il valore di
applicazioni in cui viene richiesta la minore interfe- corrente dovrebbe essere selezionato in funzione
renza in banda utile. del filtro di loop progettato.
l bit da 0828 a 0826 uMUXOUT", controllano Il bit DBB "Lock Oetect Function (LDF)': consente di
il multiplexer interno aii 'ADF4351. Mediante configurare la funzione lock detect {LDF). L'impo-
l'impostazione di questi 3 bit possiamo rilevare stazione di questo bit decide il numero di cicli di
dall'uscita MUXOUT lo stato di uno dei 6 parametri PFD monitorati dal circuito lock detect. Quando il
•
presenti agli ingressi del multiplexer. bit D88 è impostato a O, il numero di cicli mo-
L'uscita "N DIVIDER" del multiplexer deve essere nitorati è di 40, mentre se è 1, il numero di cicli
disabilitata per far funzionare correttamente la monitorati è 5. Se il sintetizzatore è impostato
selezione di banda del VCO. nella modalità frazionale-N, il bit DB8 deve essere
-
Il bit D825 "Reference Doubler': controlla l'abilita- settato a O; altrimenti a 1 per la modalità intero-N.
zione del duplicatore della frequenza di riferimen- Il bit D87 "Lock Detect Precision {LDP)': imposta
to della sorgente esterna REFI N. Occorre tener una finestra temporale di confronto nel circuito
presente che quando viene abilitato il duplicatore, lock detect. Settato a O, la finestra di confronto
la prestazione relativa al rumore di fase viene è di 1O ns, mentre settato a 1, la finest ra è di 6
influenzata dal duty-cycle della frequenza di riferi- ns. Il circuito lock detect va allivello alto quando il
mento REF,N. Se il duty cycle ha un valore al di fuori numero di cicli consecutivi del PFD, impostati dal
del range compreso fra il 45%e il 55%, può risultare bit D88 LDF, sono inferiori al valore della finestra di
degradato il rumore di fase fino a 5 db. Quando il confronto. Ad esempio, per D88 =O e D87 =O, 40
duplicatore è abilitato, la massima frequenza di cicli consecut ivi del PFD di 1O ns o meno, devono
riferimento REF 1Ndeii'ADF4351 è 30 MHz. avvenire prima che il circuito digitale lock detect
Il bit D824 "RDIV2': controlla l'abilitazione del vada allivello alto. Se il sintetizzatore è impostato
divisore per 2 posto fra il contatore Re il PFD. nella modalità frazionale-N, il bit D87 deve essere ~ Il modulo
con ADF4351.
Questo divisore, oltre a consentire di applicare la settato a O, mentre, per le applicazioni intero-N,
massima frequenza REF 1N, fornisce in uscita un
segnale con un preciso duty cycle al 50%. Quindi,
come abbiamo rilevato poco fa, la garanzia di un
esatto duty- cycle al 50%fornito dal divisore per
2, evita il degrado del rumore di fase, sopperendo
così ad eventuali asimmetrie della forma d'onda
della frequenza di riferimento generata da sorgenti
esterne.
l bit da D823 a D8 14 "R COUNTER': relativi al
contatore divisore R a 1O bit, consentono di divi-
dere da 1 a 1.023 volte la frequenza d'ingresso di
riferimento REF 1Ncostituente il clock del PFD.
Il bit D8 13 "Double Buffer" settat o a 1, abilita
73
'
74
- - --- = -
75 '
•
~ Fig. 3
Applicazione
del filtro
A Vdd DV dd
di loop.
20 7
~--- ----L:::J--- --'
•
Vtune CPo t--- -------<
* C1 R1 R2 C3
36 .4pF 4.50k 9.19k * 16
v * C2 v
495pF
Supply
ADF4350t1
V+
5
9N !---
v
29
F out Rei in
76
_ •
•
_ ·~
. "'
., •
~
~
.- .
_ •
,
.
.
• • • ,
l
, ~ - •
-
-
o ==
=' "' ·
. -
• • •
.
: • •
. . .- - , "' ,- 1- .
• . - • : io ~ ~- •
t
,
'
1
•
:
•
•
l
1
'
1
l
•
•
1 '
' i
r • [_
-=
·~ •=, ;
"' "' ' r • • ' ' .
1 i t t ' • ,
l '
l l ~
• '
1
t r=
r .c
-=- , F
'-
t - • ' '
t "' ,_ ! a. ' ~ ! .• t
l l ,l l tl la rl .t ~,. r~ l l l l
CLK !! Fig. 4
Temporizzazione
SPI di
trasferimento dei
dati in un registro.
DB2 DB1 OSO (LSB)
DATA DS31 (MSB) DB30 (CONTROL BIT C3) (CONTRO.l BIT C2) (CONTROL BIT C1}
LE
LE
ghezza di banda di questo filtro dovrebbe essere conferma di scrittura mediante una nuova scrittu-
teoricamente 1/1 Odella frequenza di riferimento ra sul registro RO. In pratica, per i parametri che si
all'ingresso del PFO. A una maggiore larghezza di vuoi programmare con la modalità doppio buffer, il
banda del filtro corrisponde un minore lock ti me, nuovo valore va scritto nel registro di destinazione •
ma anche un più alto livello delle spurie. In ogni e poi dev'essere effettuata una nuova scrittura sul
caso la larghezza di banda non deve superare 1/5 registro RO.
della frequenza di riferimento o si rischia l'instabi- l parametri interessati dalla possibilità del doppio
lità del PLL. Un virtuale raddoppio della larghezza buffer, sono Phase value, modulus value, refer- •
di banda del filtro può essere ottenuto raddop- ence doubler, refe re nce divide-by-2, R counter
piando la frequenza di riferimento del PFO o la value e charge pump current.
corrente generata dal CP. Anche il parametro "divider select value" presente
Nella Fig. 3 vedete lo schema di un'applicazione nel registro R4 può essere a doppio buffer, ma
del filtro di loop avente una banda di 200 kHz solo se il bit 0813 del registro R2 viene settato a
inserito fra il CP e il VCO deii'AOF4351. Lo schema 1. Quindi, ribadiamo, ogni volta che viene aggior-
è stato estratto da una simulazione di questo nato il valore di uno dei parametri a doppio buffer,
progetto real izzata con il tool AOisimPLL. deve essere scritto anche il registro RO. Questa
procedura garantisce che il dato da programmare
LA PROGRAMMAZIONE DEl REGISTRI venga caricato correttamente.
Visti i registri, non ci resta che spiegare come
programmar! i. Mediante l'interfaccia di comuni- L'INTERFACCIA SPI
cazione seriale SPI, i dati di configurazione dei 32 L'integrato AOF4351 dispone di un interfaccia se-
bit di ogni registro, vengono inseriti in uno shift riai e compatibile SPI che consente la scrittura nei
register deii'AOF4351 ad ogni fronte positivo del vari registri mediante l'invio di dati dall'interfaccia
clock per ogni bit, mentre il pin LE deii'AOF4351 SPI di un microcontrollore, che in questo progetto
viene mantenuto allivello basso. Nello shift regi- è il PIC 18F46K20 della Microchip. Nella Fig. 5
ster vengono caricati prima i bit più significativi viene mostrato lo schema di connessione delle
M58, poi i restanti. Il dato completo a 32 bit viene interfacce SPI AOF4351-PIC.
quindi trasferito dallo shift register ad uno dei 6 Come visto, quando il pin LE deii'AOF4351 va al
registri {individuato dai bit di controllo C3, C2, e C1, livello alto, dopo che i 32 bit sono stati registrati
corrispondenti ai 3 bit LS8 del registro: 082, 081,
e 080) sul fronte positivo applicato al pin LE.
18F46K20 ADF4351
La Fig. 4 propone le temporizzazioni del caso. !! Fig. 5
Ricordiamo che la Tabella 1 riporta i tre bit di SCLOCK
• CLK Connessioni
controllo, o indirizzamento, C3, C2, e C1 di ogni MOSI
• DATA SPI PIC-
AOF4351.
registro. Nella programmazione dei registri si deve
tener conto anche che alcuni parametri possono
f"
• LE
1/0 PORTS -c
• CE
essere a doppio buffer, ovvero, per essere scritti
nel registro non basta la sequenza delle opera-
" -- MUXOUT
(LOCK DETEcn
'
77
• •
78
•
gruppi di 8 bit verso l'interfaccia seriale dell'inte- segnale di caratteristiche e frequenza desiderato.
grato, trasferendo prima i bit più significativi MSB, Per ottenere ciò, tutto quello che dobbiamo fare
poi i restanti LSB, compresi i tre bit di controllo. è di configurare ognuno dei sei registri in fun-
Completata la scrittura del quarto byte, il pin d'in- zione dei parametri che dovremo considerare ed
gresso LE deve essere riportato allivello alto per inserire, in linea con la definizione del le specifiche
completare il trasferimento. L'ordine di scrittura richieste. Abbiamo visto nel corso della descrizio-
dei 6 registri deve sempre seguire l'ordine R5, R4, ne delle varie funzionalità offerte dall'integrato
R3, R2, R1, infine RO. Affinché l'uscita del sintetiz- ADF4351, che per avere il massimo di prestazione
zatore sia attiva, il software deve quindi prevedere dal sintetizzatore occorre fare dei compromessi.
che all'accensione avvenga il processo di scrittura Se vogliamo un segnale di uscita con un basso
secondo l'ordine cronologico su specificato. rumore di fase, ci aspettiamo purtroppo anche un
relativamente alto livello di spurie. Oppure, se ci
LA CONFIGURAZIONE DEl REGISTRI occorre un segnale pulito, con bassi livelli di spurie,
Chiarita la modalità di programmazione dei registri dobbiamo tenerci un rumore di fase più alto.
!! Fig. 7
Temporizzazione
deii'ADF4351, entriamo nel vivo del progetto Quindi, se vogliamo ottenere dal sintetizzatore un SPI nei 4 modi del
del sintetizzatore, il cui obiettivo è ottenere un segnale di uscita con basso rumore di fase, oppure clock.
•
Write to
SSPBUF
• SCK •
•
(CKP = o
CKE = o) l
SCK
(CKP = l .
l
CKE = o)
4 Clock
SCK Mod es
(CKP = o l
CKE = l)
SCK
(CKP = l l
CKE = l)
SOl
(SMP = 0)
- -----'-<1
l
< ) ll <,___,) ll < ) ll <'------') ll <.___,) ll <.___,) ll <.___,) ll < ) ,__
bit 7
l _
l bit O
lnput l l l l l l l l
Sample
(SMP = O)
SOl
(SMP = l)
"
/
/
'\.
/
'\.
'\
/
/
'\. "
/
/
'\.
'\
/
/
'\.
'\
/
/
l
"
l bit 7 bit• O
lnput l
Sample
(SMP = l)
SSPIF
Next 04 Cycle
SSPSR to _.___ after Q2J.
SSPBUF -------------- ----- -- - - - - -- - - -- - - - - - - -- - - - - -- - - - - - - - - - - - - --
-
•
- 79
•
•
'
- - -~ ~='"'- -- - - =
--=co--- -- -
~·-- - -
--- - o
con basso livello di spurie, in funzione dell'uso che • l NT corrisponde al prescaler contatore P/ P+1,
vogliamo farne in una certa applicazione, dobbia- configurabile nella versione 4/5, per valori da
mo programmare il sintetizzatore, non solo per il 23 a 65.535, oppure, 8/ 9, per valori da 75 a
valore della frequenza, ma anche per le caratteri- 65.535. Quindi, INT costituisce la parte intera
stiche qualitative del segnale. del complessivo blocco divisore N, il cui valore
viene impostato mediante i 16 bit INTEGER
LA PROGRAMMAZIONE DELL'ADF4351 VALUE del registro RO.
Il funzionamento del sistema PLL-VCO interno • FRACè il numeratore della frazione, il cui
aii'ADF4351 per la generazione di segnali di fre- valore ammesso, impostato mediante i 12 bit
quenza e caratteristiche desiderate, viene gestito FRACTIONAL VALUE del registro RO, va da Oa
mediante la programmazione di 6 registri, RO, R1, (MOD - 1). Come vedremo più avanti, esso può
R2, R3, R4 e RS, attivata mediante scrittura dei ri- essere considerato come moltiplicatore della
spettivi bit di controllo, come indicato nella Tabella risoluzione frequenza del sintetizzatore.
1. La Fig. 8 rappresenta il blocco divisore RF, ossia, • MOD, denominatore della frazione FRAC/M OD,
la sezione digitale dei contatori che effettua la di- è il modulo di preset del valore frazionale, il cui
visione della frequen za di uscita dal VCO riportata valore, impostato mediante i 12 bit MODU-
al PFD. Questo schema si relaziona ai registri di LUS VALUE del registro R1, và da 2 a 4095. In
programmazione che determinano il complessivo pratica, come spiegheremo in seguito, il valore
valore della divisione N, inteso come somma della del MOD determina la risoluzione di frequenza,
parte intera e frazionaria. Infatti, i registri interes- o canale, del sintetizzatore.
sati, RO e R1, dovranno essere programmati per • FPFD è la frequenza di riferimento all'ingresso
fornire ai vari moduli contatori, il valore intero nel del PFD. Il valore della FPFD viene determinato
registro a 16 bit INT VALUE, frazionario nei registri mediante la formula seguente:
a 12 bit FRACTIONAL VALUE e MODULUS VALUE.
FPFD = REFIN x [(1 + 0)/(R x (1 +T))]
•
LA MODALITA DI DIVISIONE FRAZIONALE- N
La modalità di divisione frazionale-N della fre- In questa formula:
quenza di uscita dal VCO, mediante l'impostazione • REFIN è la frequenza di riferimento della sor-
• dei parametri INT, FRAC, MOD, unitamente al con- gente esterna;
tatore divisore R, consente di generare frequenze • D è il valore del duplicatore della frequenza
in uscita spaziate in frazioni della frequenza di di riferimento della sorgente esterna REFI N;
riferimento applicata all'ingresso del PFD. può essere abilitato (REFI N x 2). o disabilitato,
La frequenza RFour all'uscita del VCO è: ponendo il bit 0825 del registro R2 rispettiva-
mente a 1 o a O;
~ Fig. 8
Sezione digitale RFOUT =FPFD x [INT + (FRAC/ MOD)] • R è il contatore divisore programmabile della
program mabile frequenza di riferimento REFI N da applicare al
del divisore N. Definiamo gli elementi di questa formula. PFD, il cui valore, impostato mediante i 1O bit
R COUNTER VALUE del registro R2, và da 1 a
1.023;
• T è il valore del divisore per 2 della frequenza di
RF N DIVIDER N = INT + FRAC/MOD
riferimento REFI N; può essere abilitato (REFI N
FRO M
VCOOUTPUTI : 2), o disabilitato, ponendo il bit 0824 del
OUTPUT DIVIDERs TO PFD
registro R2 rispettivamente a 1 o a O.
- N COUNTER .
! THIRD-ORDER
FRACTIONAL
•
Riprendendo la formula per il calcolo della fre-
'+'~
' /
INTERPO LATOR quenza di uscita del sintetizzatore, RFOUT = FPm
x [INT + (FRAC/MOD)]. vediamo come calcolare la
•
INT FRAC
•
MOD
risoluzione di frequenza (canale), ossia, il minimo
valore di spaziatura di frequenza fra una fre-
VALUE VALUE VALUE
"(
l
z
l
~
l ~ ~
quenza e l'altra. Possiamo riscrivere la formula di
RFOUT suddividendola in due parti:
80
- = - = =- ~ ~ - - ~ - - - - _-
'
81
piano di MONTAGGIO
=~~ " - _ --~ -~-~ co-- co
- - - -
1 00
LCOl
RS~ 1
P1 P3 P4
@] @] @]
RIGHT
WXJE LEFT
r::T es
) G ) ~ 01
l
U3
es ( C3 c ) C6
SW1
Cl
R12 ~ ( ) 01 C C2 R15
,o R5 -cJ- -cJ- ~ R3
;B 0
o w Rl CN2 1
r::-:1
MI
~
ooooo
~~
o -----==!
8 '2RESE T
ooooo
o
•
CN1
o o
o o o
Elenco Componenti:
R1: 100 kohm R12: 10 kohm CS: 330 nF 50 VL poliestere P2: Microswitch
R2: 10 kohm R13: 3,3 kohm C6: 100 nF ceramico P3: Microswitch
R3: 10 kohm R14: 3,3 kohm C7: 47 nF 50 VL poliestere P4: Microswitch
R4: 10 kohm R15: 3,3 kohm CB: 47 nF 50 VL poliestere RSW1: Encoder rotativo
RS: 10 kohm R16: 10 kohm D1: 1N4001
R6: 10 kohm R17: 10 kohm 01: Quarzo 4 MHz Varie:
R7: 10 kohm RV1: Trimmer 10 kohm SW1: Deviatore a slitta - Strip maschio 6 vie
R8: 10 kohm C1: 22 pF ceramico U1: PIC18F46K20-I/P (MF1411) - Strip maschio 2x5 vie
R9: 1 kohm C2: 22 pF ceramico U2: Modulo ADF4351 - Morsetto 3 vie passo 2.54mm
R10: 1 kohm C3: 10 nF 50 VL poliestere U3: 7805 - Circuuito stampato 51411
R11 : 1 kohm C4: 100 JlF 35 VL elettrolitico P1: Microswitch (17x8 cm)
82
•
'
83
'
84
SPRING
'
-
"'"<n
-uc: 00
·-§ l)
·-- Cod. FR653 '
~
Cl.
•
entra ina arme w1re ess
•
'-• a
•
00 00 00 €79, 00 €8, 00
es,oo e19, 00 e16, 00 e22, €7, e16,
Cod. FR575MAGN Cod. FR653PRESA Cod. FR575TENDAPIR Cod. FR575GAS Cod. FR575TAG Cod. FR575PIR Cod. FR653WSIR Cod. FR575RAD
®
Futura Group srl
Via Adige, 11 • 21013 Gallarate !VAl
Tel. 0331/799775
Prezzi fVA inclusa. Caratteris~iche te~niche
e vend1ta on-l1ne su:
www. /l~UlU'/r~sholJ--'n • lf
• c;t /1
•
AS726Sl(,\S72652/AS72653 1 B Chunncl Spcctlal nadiomc:lcr
Show f" Raw G Cal~ Dillta ~rted by i C.hann ~ r Wa>mMgth 01 t:' u ~ctrum
P' Splint
r locfr.
0.0000
JSO 1050
di DAVIDE SCULLINO
87 '
'
~ Tabella 1
Canali spettrali e lunghezza d'onda di ~~~§~-~-c~_-
----== "'~==-
F~ •'"
-
• _
-
__ =:=';;-~'=
-=~~==---
_
--
,
'
• =--=
---==-
=~::'==~=· l ,
AS72652 l Gaussian/BP 645 20 Ora facc iamo una panoramica su l progetto, con un ;
fenomeno ottico comunemente conosciuto come lunghezze d'onda (ogni lunghezza d'onda è quindi
riflessione e se la porzione di luce riflessa colpisce un canale) ben definite e siccome nel circuito i
il nostro occhio, vediamo quell'oggetto del colore sensori uti lizzati son o t re, contiamo su un tot ale
co rrispondente. di ben 18 canali: ce n'è abbastanza per copri re un
La sensazione di colo re è dovuta al fatto che la ampio spettro di lunghezze d'onda e realizzare
luce riflessa è composta dalla sola porzion e, della uno strumento ut ilizzabile in moltissime analisi.
•
luce che l'investe, corrispondente alle lunghezze Infatti, grazie all 'integrazione di tre sensori della
d'onda non assorb it e, quindi un corpo che vedia- AMS, si riesce a ricostru ire lo spettro da circa i 350
mo verde alla luce del sole ci appare tale perché nm (il violetto) fino ai 1.000 nm, quindi si copre lo
dello spettro della luce solare ha respinto solo la spettro della luce visibile più parte del NIR (Near
l
gamma intorno al verde, estesa intorno ai 560 lnfrared Range), vale a dire del cosiddetto "vicino
• nanometri. i nfrarosso'~
Una cosa simile accade con i senso ri di immagine l t re sensori presenti nella breakout board appar- l
e in general e con i fotosensori, i quali sono sen- tengono alla famiglia AS7265 X della AMS e sono •
sibi li a determinate lunghezze d'onda e possono siglati AS7265 1, AS72652 e AS72653; ciascuno •
••
qu indi essere stimolati dalla luce riflessa dai co rpi. è in grado di rilevare onde elettromagnetiche di
sei lunghezze d'onda con un FWHM (Ful l Width
IL NOSTRO PROGETTO at Half Maximum) di 20 nm, vale a dire che la
Dopo questa premessa entriamo nel merito del larghezza di banda di ciascun canale considerata
•
progetto, che consiste nello svi luppare uno spet- a un livello pari a metà dell'intensità luminosa
trometro da PC ottenuto connettendo alla porta percepita nello stesso è pari a 20 nm. '
USB (che ormai è uno standard per i Personal l tre sensori montati nella breakout board sono
Computer e i dispositivi "mobile" come i tablet e stati pensati per lavorare coord inati da uno di ess i,
gli smartphone) mediante un adattatore seri ale/ ossia daii'AS72651, il quale integra un microcon-
USB la breakout board rilevatrice di spettro (il cu i tro ller che permette la comunicaz ione con gl i altri
•
progetto è stato pubblicato nel fascico lo n o 230) due attraverso un'interfaccia smart.
e utilizzando uno spec ifico soft ware fornito dal la Inoltre I'AS7265 1 si può interfacciare al computer
.,
AMS, che è il produttore dei tre componenti sen- mediante le linee deii'UART facente capo a RX
sori spettrali impiegati nella breakout board stes- (piedino 4) e TX (pin 5) olt re che le linee di reset
sa. Il software, installabile in ambiente Windows, RST (3) e INT (6); su l connettore della breakout
88
'
board abbiamo anche l'alimentazione (che dev'es- puntata contro gli elementi di cui analizzare lo
sere di 3,3V e la GND. spettro.
La Flash EPROM una AT25SF041 deii'Atmel, della Il funzionamento dei sensori AMS è schematizza-
capacità di ben 4 Megabit, duali/O, nella quale è to dalla Fig. 3, che nello specifico riguarda quello
caricato il nostro firmware Moonlight, scopo del deii'AMS72651 che è il master della triade e che
quale è permettere al senso re che funzionerà da può interfacciarsi con un microprocessore attra-
master di interrogare gli altri due e acquisire da verso il bus seriale {eventualmente convertibile
essi i dati corrispondenti all'analisi spettrale effet- in UART TIL) e con la memoria Flash dove viene
tuata da ciascuno, per poi inviare all'esterno i dati conservato il firmware, attraverso il bus SPI a 4 fili
di tutti e tre secondo la modalità prescelta. dedicato.
Lo stesso bus SPI dedicato alla lettura della Flash La Fig. 4 propone uno schema a blocchi della bre-
EPROM viene ripetuto sul connettore PRG della akout board con la connessione fra i tre sensori.
breakout board per la programmazione in-circuit. Ciascun dispositivo pilota, tramite la propria uscita
DRV, un LED collegato al positivo di alimenta-
l SENSORI DI SPETTRO AMS zione attraverso un resistore di limitazione della
Prima di entrare nel vivo dell'utilizzo dello spettro- corrente: detto LED viene acceso per proiettare la
metro da Personal Computer, dedichiamo qualche luce e subito dopo si attiva il sensore che rileva lo
paragrafo a un richiamo sui sensori di spettro spettro della luce riflessa. Ogni LED è sincronizza-
prodotti dalla AMS, perché ci aiuterà a compren- to quindi con il rispettivo sensore.
dere come sfruttare le informazioni rese disponi-
bili dal software su Personal Computer e a capire il L'l NTERFACCIAM ENTO
significato dei valori mostrati nelle varie scherma- DELLA BREAKOUT BOARO
te, così da sfruttare a pieno le informazioni nelle Per le comunicazione dati, nel sensore master
proprie analisi. AMS76251 possono essere implementate due
2
Come accennato, i dispositivi AS72651 , AS.72652 differenti modalità: tramite registri I C-Bus oppure
e AS72653 sono degli spettro metri digitali a 6 attraverso dei comandi AT (i comand i Hayes, se
canal i ciascuno e la Tabella 1 elenca le caratte- . preferite ... ) passando da un'interfaccia UART a
ristiche dei sei canali spettrali per ciascuno dei livelli di tensione standard TIL 0/ 5V integrata
se nsori della t riade AMS: per ciascun canale è indi- nel sensore. Chiaramente nel primo caso occorre ~ Fig. 1
cata la lunghezza d'onda su cui è centrata la curva interfacciare la triade di sensori con un dispositivo Curve di spettro
dei 18 canali
di sensibilità. tipo un microprocessore o microcontrollore nel
del sistema a tre
La Fig. 1 illustra le curve di risposta spettrale di quale sia presente un'interfaccia 12 C-Bus a due fili senson.•
tutti i canal i di ciascun sensore e riepi loga il fun- {SCL e SDA) rispetto a massa, mentre nel secondo,
zionamento del sistema Moonlight a tre sensori
e 18 canali; nella figura vedete rappresentate
l - 410nm
in verde le curve relative aii'AS72651, in rosso
- 435nrn
quel le riferite aii'AS72652 e in azzurro quelle 0,9 - 4GOnrn
deii'AS72653, per un totale di 18 curve. - 485nm
0,8
Per selezionare le varie lunghezze d'onda, nei sen- - SlOnm
89
VDD1 VDD2
l l LE MODALITA DI COMUNICAZIONE
L------- l
-----------.J
l'----'
Ora che abbiamo chiarito struttura e funziona-
~ mento della breakout board possiamo approfondi-
RESN
osc REQ
re il discorso su lla comunicazione con il PC, che poi
16MHz
REQ
è ciò su cui verte questo articolo: per dialogare con
il PC sono possibili due soluzioni: la prima è ap-
GND
• punto quella consistente nell'eseguire sul compu-
ter un programma di terminale (il classico Telnet o
~ Fig. 2 ossia quello della comunicazione in modalità UART, I'Hyper Terminai di Windows) e impartire comandi
Schema a blocchi
i due fili diventano TX ed RX e il colloquio può Hayes, mentre la seconda consiste nell'utilizzare
interno del generico
sensore spettrale avvenire sia direttamente con un microcontrollore l'apposito software fornito dalla AMS e scaricabile
deii"AMS. che disponga a bordo di un UART (Ardui no rientra dal sito lntermet dell'azienda.
in questa categoria) sia con un Personal Compu- Per quanto riguarda la prima opzione, ogni co-
ter, fermo restando che in questo caso serve un mando viene inviato sotto forma di stringa di ca-
converter TIL/RS232 se si desidera l'interfaccia- ratteri, deve iniziare con "AT" e finire .con i caratteri
mento con una COM (che funziona con livelli +12V) di Carri age Return (CR) e Ne w Li ne (N L).
o un più comune TIL/USB per i PC moderni, che l principali comandi AT adottati nel nostro sistema
non hanno più le porte RS232. spettrometro sono i seguenti.
In entrambi i casi il controllo della triade di sensori 1. AT: per verificare che la comunicazione stia
e il colloquio su seriale avvengono tramite co- funzionando; il sistema risponderà "OK':
mandi AT, che rappresentano un semplice, quanto 2. ATDATA: ritorna la lista dei valori relativi ai 18
efficace, protocollo di comunicazione su seriale, canali, ponendoli in ordine di sensore, vale a dire
che ci permette un rapido test della breakout prima i sei del primo dispositivo, poi i sei del se-
~ Fig. 3 board anche attraverso un emulatore di terminale condo e infine quelli del terzo.
Schematizzazione per Windows, Linux o MacOS. 3. ATXYZR: ritorna la lista dei valori relativi ai 18
del funzionamento
Per quanto riguarda la comunicazione con l'ester- canali, ordinandoli per lunghezza d'onda.
del sensore
di spettro. che nello no, la selezione tra interfaccia l'C-Bus e UART si 4. ATIEMP: restituisce le tre temperature di
specifico esegue con il piedino 8 (12CE) e per l'esattezza, funzionamento dei rispettivi sensori, utili per
•
è il master quando quest'ultimo è posto a zero logico si attiva effettuare eventuali correzioni .
AMS72651.
5. ATVERSW: ritorna la versione del firmware
installato nella Flash EPROM con cui si interfaccia
il sensore che fa da master.
100nF 10uF
'
90
l
VDDt VDD2
AS72651 "f
l--------
~-----------1 ~ Fig. 4
Col_,..... l l LBIDd..ll 1
l
l
l
vool
l
l
l
......
SpocltiiJD
l vool
l
l
f.$ LED_IN D
Schema blocchi
della breakout
~--f---12C_ENB l l
board.
Current l
Mlcro f----RX/SCL_S l l
UARTor Contro l LED_DRV
Controller [[][I] [I]
Untt (MCU) 1----·rx l SDA_S
1-----INT :
l'c SIBYO
l
l [ij][YJI!l]
___________
l
l ..L
l
.,.,l
l l
l
r------ -----l
l vool l hiii?l .. lnlliltei l
l l
,-----------~~--so~M l
~
l voo,
r------------+- - - SCL_M
'
l'c Master
l
l
ADDR l MISO
l l
L------- ~
l SPI MOS l Serlal Rash
Hz
i Mnter SCK Memory
-so
RESN CSN
ll,_ _ _ _ _ _ _ _ _ _ _ _,'
• GND
-
VDOt VDD2 VDDt VDD2
- ~------t---t----------~
AS7265Z AS72653
,,._()O ,-------., Sptcf11()0
IlM or
leniOI' ~-----------1 ~-----------1
l
LEO_DRV
l
L-------
l
!..'-_-_-_-'_------ ~ ~------ _: l
-----------""'
~ l
RESN
REO
RESN T REO
REO 1 - - - - - - - - l : j l REO
•
91
·schema di CA·BLAGGIO
92
..
•
- - - '
= =- ~ _' = l l ~ ' - = ~ ~- ~ 1
: ; : ~ ) • ' l j l • ~ ~ ~· ~ ~ : ~ ~ _- :. _J ' .' ~ • ~~ : ~ =: ~;:. ~- -=· ~- ' - ~ '~ -~ -: : : ; ~ ~i :~ : - . ~ ~ ~ ~ ~ ~= :~ ~ ~ -~
.;o
1
l ·~ - ~ -_ ~ :: : ~ ~ =~: : -~
- -.-
t~ ~-
·~ ~·
;)1:._~~ ~-'-·
arns Spedral Sensor Dashboard 4.2 0 l• ç:;~ ~
.~ .. .' ~
..- ~
;o.!Lii:, . . 1 . . . ~·~,. . :.:
D Continuous l1
Sample Last Sa mpie:
LEDO;
-1mA ~
T 030nm) l : ~l i
I {645nm) l 3[ r--
C (460nm) l: 3 11
·,
V ~lOnm)
l 0 11 K{900nm) J o~ ~
E (510nm) l 2
. W (860nm) l o[ '
L (940nm) l oj F {535nm) l 3,,
IU
.-.-: •
tare il numero di campioni acquisiti e l'occupazione osservazione dello spettro rifl.esso da parte dei
di memoria che ne deriva. Se invece non spuntate fotodiodi.
Continuous otterrete dati sulla risposta dei tre
sensori di spettro solamente quando cl iccherete Per quanto riguarda i dati sullo spettro ri levato,
sul pulsante, che in questo caso assume il nome saranno visualizzati nella sezione inferiore, distinti
di Sample. per sensore che li ha prodotti.
• Status, riporta il numero di campionamenti Sempre nella sezione inferiore, pot ete impostare
•
effettuato dall'apertura della Dashboard. la modalità di visualizzazione delle informazio-
• LED Contrai (electronic shutter) permette di im- ni sullo spettro di luce, scegliendo una tra le 5
postare la modalità di accensione dei LED in base opzioni proposte; più esattamente, accanto a
alle nostre esigenze, ovvero le correnti di lavoro di Show avete le opzioni di visual izzazione Raw
ciascuno, scegliendo tra i valori proposti nei si ngoli (che mostra i dati grezzi ottenuti dai tre sensori) e
menu a tend ina. Calibrated Data (che visualizza i dati dei sensori,
Ricordate che i tempi e le correnti di accensione ma calibrati). Invece accanto a sorted by avete le
dei LED determinano la qualità del rilevamen- tre opzioni seguenti:
to, così come la sincronizzazione tra i tempi di • Channel, che visualizza i dati divisi per canale del
sensore corrispondente;
• Wavelenght, che mostra le lunghezze d'onda
invece dei valori numerici rilevati nei singoli canali);
~ Fig. 6 • as Spectrum, che probabilmente è la più imme-
Impostazione della COM virtuale cui
connettere la breakout board. diata perché nella finestra del programma ci viene
tracciato un grafico di spettro, facilmente leggibile
Select arns D~..rice Port (Fig. 7).
Come vedete, si ottiene proprio la curva dettaglia-
OM68 Open ta per ampiezza delle singole componenti spettrali
e lunghezza d'onda, nel range misurabil e; il valore
Cancel
numerico sull'asse delle ordinate è quello relativo
alla capacità di rilevamento e sensibilità dei se n-
'
93
ams Spectral ~nsor Oashboard 4.2.0
~····--··--· ...~
l~.ç.~r:-.~.!L~i<?.~J logging & Contro l Console U date
~--~----------------------------------------------------~
R Continuous Stop J
last Sample:
LEDO: lmA -$
- lEDl~ OFF
..-
-;
02:26pm
·-----~· --·
Stop After: Samples LEDl: 12.5mA1 LED3: OFF
·1
-
~ Fig. 7 Show G Raw c.! Calibrated Data sort~ by r Channel c"": Wavelength or ~ as Spectrum
Visualizzazione
dello spettro 4.400 M Spline
sulla schermata
del software.
D lode
0.0000 --~~
'
sori AMS. Passiamo alla tab Logging & Contro l, (Fig. 8).
nella quale appaiono alcune informazioni nella Nella sezione Logging possiamo aprire un file di
sezione Device, come ad esempio la versione log già creato e visualizzarne i valori memorizzati,
firmware e hardware, la COM selezionata eccetera mentre nella Sensor Control abbiamo due caselle:
amsSpecbal
•
94
•
Cmd·Log File
<none> Open Cm d Log l
Cmd Mode
Cmd File ~ Fig. 9
<none> Ci' Capture Visualizzazione
• del terminale
AT Command:
r Playbaclc:
implementato
J
... nel software
OK
ATINITIME=22
Open Cmd File l AMS.
OK
A!IN!TIME=2 3 • Playba~~ l
OK
ATFRST
am::~ AS7265 fW12 . 0 . 0
A!IN!!IME
20 OK
A! GAI N
l OK
ATIN!TIME
20 OK
ATGAIN
l OK oT ClearOutput l
• lntegration (ms) da dove impostare il tempo temente valide, ad un costo irrisorio se paragona-
di osservazione dei sensori, ovvero per quanto to a quello di uno spettrometro professionale da
tempo acquisire la luce riflessa dopo l'accensione laboratorio di anal isi.
dei LED; questa funzione corrisponde al tempo di Le grandi capacità di elaborazione dei Personal
esposizione delle macchine fotografiche e va da Computer vi permettono, se siete in grado di
sè che più alto è il tempo, più luce viene rilevata e scrivere software capaci di interrogare la breakout
viceversa (un tempo lungo aumenta la sensibilità board per estrarne e interpretarne i dati di spettro,
del sistema e uno breve accelera il refresh delle di realizzare applicazioni specifiche in grado, ad
analisi, ma lo fa a discapito della sensibilità); esempio, di eseguire azioni automatiche in base
• Gain, dalla quale impostare l'amplificazione del alle analisi spettrali effettuate, come attivate un
segnale fornito dai fotodiodi e quindi la sensibilità servomeccanismo che rimuove un prodotto da un
dei sensori alla luce. nastro trasportatore o generare un alert al ricono-
scimento di un prodotto alimentare adulterato.
L:ultima scheda che vediamo è la tab Console, che Le possibilità di impiego sono, come immaginere-
ci mette a disposizione un vero e proprio termina- te, davvero tante. Cl
le integrato (Fig. 9), nel caso vogliamo impartire
direttamente comand i AT senza dover uscire o
switchare su un altro programma. Da questo ter-
minale possiamo inviare tutti i comandi standard
e visualizzare la comunicazione con la breakout ç;J Cosa occorre?
board.
l componenti utilizzati in questo progetto sono disponibili
presso Futura Elettronica. La breakout board spettrometro
CONCLUSIONI (cod. BREAKOUT021) è in vendita a Euro 49,00 mentre
Utilizzato in abbinamento a un sistema a micro- il modulo convertitore USB/UART (cod. USBTOUART) è
controllore oppure abbinato al Personal Computer disponibile a Euro 8,00. l prezzi si intendono IVA compresa.
•
•
95
Realizziamo con Raspberry Pi 3 B+ un sistema in grado di rilevare
il movimento di persone e oggetti tra~mite una videocamera e di
inviare e-mail di allarme.
di PIER CALDERAN ·
97 '·
'
L'acquisizione delle immagini e l'elaborazione delle • Il modulo dnn ora include il backend Vu/kan spe- -
informazioni visive in tempo reale necessitano rimentale e supporta le reti in formato ONNX.
solitamente di dispositivi ottici ad alta risoluzione, • Il famoso algoritmo Kinect Fusion è stato imple-
di potenti computer e software ad hoc mentato e ottimizzato per CPU e GPU (OpenCL).
In questo articolo esporremo un'applicazione di • Un rilevatore e decodificatore di codice QR sono
OpenCV 4, ossia la release più recente della diffusa stati aggiunti al modulo objdetect
libreria libera, rilasciata sotto una licenza BSD • L'algoritmo di flusso ottico denso 015 ad alta
(Berkeley Software Distribution}, che permette di efficienza è stato spostato da opencv_ contrib al
sviluppare applicazioni di visione artificiale anche modulo video.
molto complesse. • Maggiori dettagli possono essere trovati negli
-
annunci delle versioni precedenti: 4.0-alpha,
LA LIBRERIA OPENCV 4 4.0-beta, 4.0-rc e nel changelog.
Dal sito ufficiale di OpenCV (https:llopencv.oriJ
vediamo innnanzitutto le caratteristiche salienti. Ricordiamo che OpenCV è disponibile per interfac-
• OpenCV è ora una libreria C++ 11 e richiede un ce C++, Python e Java e supporta le piattaforme
compilatore conforme a C++ 11. La versione Windows, Linux, Mac 05, iOS e Android. Per il -
CMake minima richiesta è stata portata a 3.5.1 . nostro progetto verrà utilizzata la versione Linux/ •
• Molte API C di OpenCV 1.x sono state rimosse. Ubuntu ottimizzata per Raspberry Pi 38+ e inter-
• La persistenza (la memorizzazione e il carica- faccia Python 3.
mento dei dati strutturati da/a XML, YAML o La scelta di sviluppare un progetto di home auto-
JSON} nel modulo principale è stata completa- mation con OpenCV e la scheda Raspberry Pi si
mente reimplementata in C++ 11 e ha perso basa su due semplici motivi: il primo è legato alla
anche le API in C. compattezza del microcomputer, che può essere
• Èstato aggiunto il nuovo modulo G-API, che tranquillamente alloggiato in un piccolo contenito-
funge da motore per pipeline di elaborazione re, magari stampato in casa con la stampante 30,
molto efficiente per immagini basate su grafici. il secondo è legato alla presenza della porta GPl O
• Il modulo dnn è stato aggiornato con Deep di Raspberry Pi a cui possiamo collegare facilmen-
~ Fig. 1 Learning Deptovment Toolkitdal toolkit te dispositivi di controllo e di allarme.
Il menu • OpenV!NO TM R4. Consultare la guida su come Aggiungiamo infine la facilità di sviluppare in am-
Preferenze > Raspberry costruire e utilizzare OpenCV con il supporto biente Python, che è già integrato nel suo sistema
Pi Configuration di
DLDT. operativo.
Raspbian.
,_, -~
Recommended Software
Tastiera e Mouse ~ Fig . 2
La finestra Raspberry Pi Configuration
con le interfacce tutte attivate.
98
RASPBIAN STRETCH
~ Fig. 3
Prima di installare OpenCV 4 abbiamo pensato La finestra
che fosse utile provarlo sulla versione di Ra-
spbian più recente. Dal sito ufficiale di Raspberry
Configure: l interface ... l r-~~~-::l Network
Preferences.
Pi (https:"raspberrypi.org) si consiglia di scaricare O Automatically c~'ìtigure empty optìons
l'immagine di Raspbian Stretch nella versione "con
O Disable l~v6
desktop e software consigliato':
La data dell'ultimo rilascio al momento in cui scri- 1Dv4 Address: [ 92...168 .. 10012-J. ]
viamo è novembre 2018.
Èfortemente consigliata questa versione per- 1Pv6 Address: [..___ _ _ __ __ --'j
ché, fra le molte migliorie di sistema, c'è anche la
localizzazione in italiano del desktop e il supporto Romer. [~1_9_2._16_8_.1__1_________1
linguistico per alcune applicazioni. Inoltre, il wizard
iniziale permette di configurare velocemente l'am-
J \IS Servers: 1192.168. .1 8 8 8 8 l
biente operativo come, per esempio, la tastiera J:-.JS Search: 1'-------------J]
italiana, il fuso orario, la rete Wi-Fi e altro ancora.
Per coloro che conoscono poco l'ambiente Ra- Clear Appt·ca [ Chiudi J
spberry Pi e non sanno come creare una card SO
masterizzata con il sistema operativo Raspbian,
è disponibile un'ottima sezione di Help nel sito
ufficiale. configurazione WLAN o LAN. Se si vuole sfruttare
la rete Wi-Fi della scheda è sufficiente aprire la •
VNCVIEWER finestra Network Preferences (Fig. 3) in cui è visibile
Anche se si può operare direttamente con un mou- l'indirizzo assegnato dalla connessione WLAN.
se, una tastiera e un monitor HDMI, collegati alla
scheda Raspberry Pi, di solito si preferisce creare CONNESSIONE VNC
un collegamento al desktop di Raspbian attraverso Per creare una nuova connessione con VNC Viewer,
una connessione SSH o VNC. basta inserire nella finestra Propertiesl'indirizzo ~ Fig. 4
In questo modo, dopo aver configurato la rete lP della scheda Raspberry Pi, come illustrato in La finestra
Wi-Fi o Ethernet di Raspberry Pi, si può accede- Fig. 4. Una volta avviata la connessione VNC verrà Properties di VNC
Viewer.
re al desktop remoto utilizzando uno dei tanti chiesto il nome utente e la password di autentica-
terminali SSH oppure tramite il comodo VNC
Viewer, scaricabile gratuitamente dal sito ufficiale
o x o x
https:" www.realvnc.com e disponibile per tutte
le piattaforme. Per la cronaca, abbiamo usato la Generai Options &pert
Enter a \'NC Ssnr 3ddren or
versione per PC Windows, ma l'utilizzo è identico --~----1
attivare anche tutte le altre interfacce, compresa Enayption: Ltt 'INC Se:r. er choc~
l'interfaccia Camera, come illustrato in Fig. 2. Le 0Authe'ltica~ using single sig,.on (SSO) if possible
!;1Authenticate using 1 sm1rtc~rd or certifiate stcre if pcssible
altre interfacce, anche se non servono per questo
progetto, potranno venire utili in futuro. PrivJcy
Per usare la connessione VNC bisogna conoscere E2J Update desktop p~~ 1utomatica.fty
'
99
'
'
- --- - . -
~ = _; - - -= ~ - =' - - - = " ~= ~ .= - - :: ? -= ~~ ~: ~- ', ' • - • - ~ ~~ : ~ '"' _- " '~ ~ ·~ • - .- -'= = -
rlJ Authentication x
Enter the credentials expected by VNC Server running on the remote computer.
RASPBERRY Pl 38+ E CAMERA MODULE V2
Note these are not your ReaiVNC account credentials.
Per questo progetto abbiamo optato per la scheda
VNC Server: 192.168.1.100::5900 (TCP) Raspberry Pi modello 38+ e per Raspberry Pi
Usemame l~p_i______________________________________~----------~~ Camera Module v2. La versione 2 della videoca-
mera offre una risoluzione di ben 8 Megapixel e
Password: l"'"•_
" •_•_• •_•_•_•_•___________________.._....AJ 3.820 x 2.464 pixel di risoluzione del sensore. Per
........................................................ .
~
Per configurare un lP statico è sufficiente aprire una finestra del termi- #indirizzi staticj dei server
nale (Fig. 6) a digitare il seguente comando: ~ Fig. 6
Una volta salvato nfile e riavviato il sistema, la finestra
.,
dell'editor nano
sudo nano /etc/dhcpcd.conf l'lP statico così impostato permetterà dt effet-
in cui modificare
tuare la connessione VNC utilizzando sempre il file dhcpcd.conf.
Questo aprirà il file dhcpcd.conf netra finestra dell'editor nano. lo stesso indirizzo.
Nell'esempio riportato nel file dhcprdconf, basta quindi decommentare
le seguenti righe e modificare i dati in base alla propria rete e all'indiriz-
zo lP che si vuole usare per la conne·ssione remota:
interface wlan0
#oppure ethO se si usa una rete LAN
static ip_address=192.168~1.100/24
•• ·c!
static routers=192.168.1.1
#indirizzo lP del router
::
100
•
INSTALLAZIONE DI OPENCV 4
SU RASPBIAN STRETCH
Come per le precedenti versioni, anche OpenCV 4
necessita di una particolare installazione. Per cu i,
se non si dispone del già citato sistema operativo ~ Fig. 7
Raspbian Stretch, è necessario aggiornare il siste- Collegame nto
ma operativo per sfruttare le nuove funzionalità. del modulo
{
Camera Module
Attenzione l OpenCV 4 non è stato testata su v2 a Raspberry Pi
versioni di Raspbian precedenti a Stretch. 3 B+.
Data la giovane età di OpenCV 4, non abbiamo
trovato molte guide an-li ne, per cui ci siamo
affidati all'esperienza di Adrian Rosebrock che
gestisce il suo blog sul Deep Learning all'indirizzo grafica:
https:llwww.pyimagesearch.com e di Satya Mallick
che gestisce il sito https:llwww.learnopencv.com sudo apt-get install libgtk-3-dev
dedicato alla Computer Vision a al Machine Lear- sudo apt-get install libcanberra-gtk*
ning. Entrambi riportano pressappoco la stessa (l'asterisco acquisirà la specifica GTK ARM}
procedura di installazione. .
Notate che per molti comandi da terminale si deve A questo punto servono due pacchetti che conten-
usare il carattere tilde H. Se non è presente sulla gono ottimizzazioni numeriche per OpenCV:
tastiera, usare i tasti SHIFT +CTRL+u e inserire il
codice esadecimale 7e +INVIO. sudo apt-get install libatlas-base -dev gfortran
Quindi, installiamo i toolkit GTK per l'interfaccia Una volta scaricati gli archivi zip, vanno decom-
101
pressi, sempre nella cartella Home: è necessario aggiornare il file -lprofile, usando
•
questi semplici comandi echo:
• •
unz1p opencv.z1p
unzip opencv_contrib.zip echo "export WORKON_HOME=SHOME/.virtualenvs" » -t.profile
•
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/py-
thon3" » -t.profile
Verranno così create le directory opencv-4.0.0 e
opencv_ contrib-4.0.0. Per motivi pratici si con- echo "source /usr/local/bin/virtualenvwrapper.sh" >> -/.profile
siglia di rinominare le cartelle come opencve
opencv_ contrib: Le aggiunte al profilo indicano il percorso della
cartella di lavoro virtualenvs, creata dallo strumen-
mv opencv-4.0.0 opencv to virtualenv nella Home e il percorso dello script
mv opencv_contrib-4.0.0 opencv_contrib virtualwrapper che si trova nella cartella /usr/bin.
Una volta aggiornato il profilo, basta attivarlo con il
A questo punto, prima della compilazione vera e comando seguente:
propria della libreria OpenCV 4, è necessario predi-
sporre l'ambiente virtuale di Python 3. source -/.profile
mkvirtualenv cv -p python3
Quindi installiamo virtualenv e virtualenvwrapper
che consentono di creare ambienti virtuali di Si può dare un nome qualsiasi all'ambiente virtuale,
Python 3: ma si consiglia, per praticità, di tenere un nome
corto. Se il profilo è attivato correttamente e viene
sudo pip install virtualenv virtualenvwrapper creato l'ambiente virtuale "cv'; si può verificare
~ Fig. 8
sudo rm -rf -tget-pip.py -t.cache/pip che siamo nell'ambiente "cv" usando il comando
Attivazione
del profilo e workon, come indicato dalla freccia di Fig. 8:
dell'ambiente Per completare l'installazione di questi strumenti,
virtuale cv. workon cv
• •
INSTALLAZIONE DI NUMPY
Il pacchetto Python richiesto da OpenCV 4 è
NumPv. Per installarlo basta digitare il comando
seguente:
cd -topencv
mkdir build
•
102
•
cd build
•
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=-/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=0N \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
Si noti che l'opzione - )4 specifica l'uso di 4 core per Notate l'opzione -s di In che sta per symbolic.
la compilazione. Se si verificano errori di compila- Se non si esegue questo passaggio, OpenCV 4 non
'
103
•
'
•• '::1
··- "::'!!
:ii •••,.·!:
'·· '::" - !!. ::; ., .:;;·;; :;;:;>.
Virtif·a.l Envir~hment 5t~ per ambiente virtuale. S.i fratta dl.una prattca
• ,.,,,,_,· ...., ::•. ,: - ,., ,, •••!• •• "' •• • • - ;. ·,:;
quest~ :çartella ~g~remo ij:oHnstan:~re tutti J.Jnodun.ç9n la ve.~ ione che-
che ~~rmetfe i:li -tr-ear.~r€1egU spazì indip,e,~denti d~l resto ael siste.ma i~
-·:t ;,,_,, .::- ;, ·:;!!:· - ':· ••. • ,.
,,,".vogliamo Ìfl basè"a ~ prage,~o su e:ufst sta la,varanda. ·:.: -
:;. + :;· . :· - ·::nt::l:: :::·'i: w;:.::.'· , ,. - ·· '"' · -:: .,.,
"m''' ,,,,
ln~Jtre parole;.gli ambienti virtuali consentono éli.lavorar~ e speri.:";;," ,;":f'avoraré"' iil suo interno""·.·',.'<.·_", .- ·, ··~ · . ,...·: . . j,. •
ti ,;; " •' • ;;!:•' •• -~: - .:. • : ! - ! • ·::,;~: . • "' -,;. :; • '":: ' - ::, ,~, • '" '" ,,; ' •
lno1tter perm·e·ttono d L'instaUa.r~ modulit:on pip senza i pri~vileg1 drroot, . ·pip insfaU virtualenv.
·_·:·.· ;., . . . " , "'· . ,'i. ·"''"
., .... .;: : -
" ::: '~ ::: ·":::: - '''·'·' . - ;,
...,:,
..
con .:tutti i vantaggi che questo.: comportct in termini di sicUtezza. ,"",",, ::::
.,,_.:i.ll: ,;:
.....
~:
'"·
.:. ~' . .
. .:
- ~ ,.,. !::,::; • " ,,. "' ' l.: " - ;; ::•"i' ' !'i,:: .:....: " :;:. ;, . ,, :i'
~ In prJ~tica, viene creata una carte11a che -c;pnterrà i fUe nece"ssari al ·:;~· . ·: ; P.rjma.di.tutto; stconsigli~;dicreare· una carfella di ta\Joro: ,",:.: ;; .. '"''"
"
" - .. '.' ·- . 'i ,;: ,;: .:iJ :;: • '"' .,;- ::: "•- • ·:lll'li' '" :!l ., .n • .;
""'"
~,. funzranamente dell'ambiente e'una copia dei binary di Pythan.1lentro ·"·":·mkdir progetto , ;: : .'"., .. ........, .,.., , ' ;
;; .... "'' '~'::
.. ;:
,;,·::;·
. ., , ..,_ '" , .. ,;;,;; ;;- ,;:;_ ...;: •• ,,li;;!'H' ·::::: ...
- ....,.;:: ...
;.; :.,,;- ".
0
-
Cd PrOietto
.. · · - · . · · -
-
•• .-·
---
--
-
'''"
·"··- • .:;.,;::'" r,:ll -;:::::"::- ·'.! !: _, ...
" ;,·;;·
·;;;;;.;:,t::
;
::.::• .. '
''''!
::·;;::.' .. - ,;;,::::
-:' .,;.i';·i·"'.
- ;:; d - -..,;,::: ,;; :. ;: '
l'!'~'i··ii ';; ~: '""" •. i:·
':./ C'1ln ii,~Qma-ndq::~he sego,~ si può:t reare IJambiente·'Yi~tuate ng.lla ::;; ...
~~~~~~~~~~~~ '
., . ;,, . .,-
"
·:'.::.
'"·::; ...
.,_,., '". ,. - :;:.-•;,::: - :b . ",••., ·TI ,;.,.,:: ·-
' " "Jnfine-,·:c.J.si sposta nerra Gattella bin éleff'"a'JT\bieRte-virtuare-el711_name ":.-. " ;;::r.;,-;: " - " "' .•• - :: ::. :: - • 'i: • . • .l
,.
- .-
, e"lo srattiva conJl comatnio activate:
;;;
., ... ::,.,_
... . ,,.,, - -· ' ,:"' ' .. ;: : _,,, "' •h
. ,,. -
:::' ·iho
'" ;;;;;;.,·:·
::.:::
::·:.-::- .. ·;:
J:·
::!t:;::
- • .. _,, • •• :1;: :i ., l ,1, · ::· -i: :: ,. :: :::-. .;:.·•:·- ;;. :: ·: - ~: 'l' ;:·
·'!
w:;·" ...
. .:; '::.- ! ,,,,,,.. ,,,: "--
·i
,.
! • "' "' .
. f, ., -·:;>t •'' :::-:· ..
.... - ,:;: - ' •~t! ·~ ::. :.' .:'' ""
::- ""' ::· .,..:;.;;· :.
104
• r
VIDEOSORVEGLIANZA CON OPENCV 4 l'oggetto del messaggio. L'istanza msg eredita i
Abbiamo pensato a questo progetto come a una metodi della libreria MIMEMultipart.
valida alternativa ai sistemi d'allarme basati su
sensori PIR, a ultrasuoni, a contatto e così via. Una SMTPserver = 'smtps.server.xxx'
volta ril evato un movimento, lo script fotografa sender = 'sender@email.com'
•
•
porta GPlO alla quale collegare eventualmente un msg = MIMEMultipart()
rei è e un sistema di allarme. Raspbian include le
•
librerie per la gestione della posta e della porta La funzione email_send() è designata all'invio di
,
GPl O, per cui non serve installare altro. un'email con un allegato, che nel nostro caso è
Di seguito commentiamo le parti salienti dello un'immagine jpg dell'intruso o dell'oggetto che si è
script (il codice completo potete scaricarlo dal no- mosso nella stanza. Come vedremo più avanti, la
stro sito www.elettronicain.i~. Le librerie importate funzione di invio e-mail è opzionale e può essere
all'inizio dello script servono solo alla gestione chiamata o meno nello script. Se l'invio avviene
SMTP, ovvero all'invio di e-mail tramite un server correttamente, sul terminale verrà stampato "Invio
di posta noto. Per questo utilizzo, è necessario eseguito" altrimenti apparirà "Invio fallito':
connettere Raspberry Pialla rete WiFi o Ethernet. •
def email_send():
from smtplib import SMTP_SSL as SMTP try:
from email.mime.text import MIMEText
from email.MIMEMultipart import MIMEMultipart msg['Subject']= subject
from email.MIMEBase import MIMEBase msg['From'] = sender
from email import Encoders msg['To'] = destination
msg.attach(MIMEText(content, 'plain'))
Nella sezione che segue vanno cambiati i para- msg.attach(part)
metri per il server SMTP. Si consiglia di impiegare conn = SMTP(SMTPserver)
il server SMTP normalmente usato per l'invio di conn.set_debuglevel(False)
•
posta dal computer di casa. Le variabili sendere conn.login(USERNAME, PASSWORD)
destination contengono gli indirizzi del mittente e try:
del destinatario, ovvero l'indirizzo con il quale si conn.sendmail(sender,
. destination, msg.as_string())
mandano normalmente le email e l'indirizzo a cui print(''Invio eseguito")
si vuoi inviare il messaggio. Le variabili username e finally:
passwordsono il nome utente e la password usati conn. qui t()
per l'invio al server SMTP. Il tipo di messaggio è di except Exception: print("Invio fallito")
.. testo p/ain e la variabile content indica il contenuto
del messaggio mentre la variabile subject riporta Quelle che seguono sono le librerie che devono
~ Fig. 10
Verifica
dell'installazione
di OpenCV 4.
'
105
'
'
essere importate per la gestione della videocame- Come vedete, alcuni parametri sono posti a true
ra, della data, dell'orario, degli effetti video, dei file o false e altri contengono valori numerici e array.
json, di cv2 (OpenCV 4) e della porta GPl O. Leggendo questi parametri con la suddetta istru-
zione conf = json.load(open('configurazione.json')),
import cv2 si possono impostare le funzionalità dello script di
import time videosorveglianza, senza dover toccare ogni volta
import datetime il codice. Per esempio, se non si vogliono salvare i
import imutils file delle immagini catturate e usare la videosorve-
import json glianza solo per accendere il rei è di allarme, basta
import RPi.GPIO as GPIO scrivere nel file json la seguente istruzione:
from picamera.array import PiRGBArray
from picamera import PiCamera "use_img": false
Le istruzioni seguenti impostano l'uscita GPI026 Allo stesso modo, se non si desidera l'invio di
(potete, da qui, sceglierne un'altra): email:
•
ambienti. Si tratta di uno script che supporta il lin- • resolution: (predefinito 640x480 pixel) è la riso-
guaggio Javascript e quindi accetta la sintassi tipica luzione video, ovvero la dimensione del riquadro
del linguaggio. Aprendo il file "configurazione.json" (frame) di preview; si consiglia di lasciare inalte-
con un semplice editor di testo si possono vedere i rata la risoluzione per evitare rallentamenti nel
parametri da assegnare a variabili e funzioni: flusso video o nell'invio delle e-mail;
• fps: imposta i frame al secondo; si consiglia
{ di lasciare il valore predefinito (25) per evitare
"use_img": true, rallentamenti nel flusso video;
"use_email": true, • min_area: predefinito 5000. È il valore minimo
'Video_preview": true,
1
dell'area del riquadro verde che viene creata
"min_time": 3.0, attorno al soggetto rilevato. Di solito non serve
"min_motion": 8, modificarla.
"threshold": 5,
"resolution": [640, 480], Proseguiamo con l'analisi del codice: l'oggetto
"fps": 25, camera eredita i metodi della libreria picamera. l
"min_area": 5000 parametri della videocamera vengono impostati in
} base alla lettura dei parametri resolution e fps del
106
file json. Notate l'uso del tipo tu pie che in Python if avg is None:
permette di creare una lista di valori separati da
virgole: avg = gray.copy().astype("float")
rawCapture.truncate(0)
camera = PiCamera() continue
camera.resolution = tuple(conf["resolution''])
camera.framerate = conf["fps"] cv2.accumulateWeighted(gray, avg, 0.5)
rawCapture = PiRGBArray(camera, frameDelta = cv2.absdiff(gray, cv2.convertScaleAbs(avg))
size=tuple(conf[''resolution"]))
thresh = cv2.threshold(frameDelta,
Vengono quindi definite alcune variabili che ver- conf["threshold"], 255, cv2.THRESH_BINARY)[1]
ranno utilizzate nello script per stabilire il tempo di thresh = cv2.dilate(thresh, None, iterations=2)
inizio e di fine della cattura dei frame. (cnts, _) = cv2.findContours(thresh.copy(),
cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
count = 0 -
avg = None ...
motionCounter = 0
lastUploaded = datetime.datetime.now() Rilevato un movimento, il soggetto viene eviden-
ziato con riquadri verdi attorno ai bordi. Quando
All'avvio dello script, si potrà vedere su l terminale il valore di soglia viene superato, apparirà il testo
la scritta "Avvio .. ." poi il sistema attende 2 secondi "Stato attuale: Movimento rilevato" e la variabile
e inizia la cattura video. Si fa notare che nella motionFiagviene posta a True. •
finestra di preview viene sovraimposto nella parte
alta il testo "Stato attuale: Nessun movimento" e, text = "Movimento rilevato"
in basso, la data e l'orario (Fig. 11 ). motionFlag = True
A questo scopo, viene usata la libreria imutils per ts = timestamp.strftime(,.%A %d.%B %Y %I:%M:%S%p")
ridimensionare il frame e la libreria datetime per
l'orario da Internet, per cui l'orario e la data do- A questo punto, se la variabile motionFiag è True,
vrebbe essere precisi. Con la libreria cv2 si imposta inizia il confronto fra il tempo corrente (currentTime)
la maschera per rilevare un oggetto in movimento. e il tempo impostato per il rilevamento (lastTime)
Si fa notare che il parametro tresh legge il valore di impostato dal parametro min_ ti me nel file json
soglia, ovvero il parametro threshold dal fi le json e inizia il conteggio dei movimenti rilevati con la
di configurazione. La variabile motionFiag viene variabi le motionCounter.
posta a False.
if text == "Movimento rilevato":
print "Avvio ... " if (currentTime - lastTime).seconds >= conf["min_
time.sleep(2) time"]:
motionCounter += 1
Tutta la iterazione for serve a contare i frame e
rilevare le differenze della maschera di grigio che
viene sovraimposta all'immagine catturata, come
illustrato in Fig. 12. Il valore di treshold imposta la
soglia di intervento per rilevare il movimento.
for f in camera.capture_continuous(rawCapture,
format="bgr", use_video_port=True):
frame = f.array
timestamp = datetime.datetime.now()
text = "Nessun movimento"
~ Fig. 11
motionFlag = False La finestra
frame = imutils.resize(frame, width=500) preview riporta
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) "nessun
movimento".
gray = cv2.GaussianBlur(gray, (21, 21), 0)
'
107
'
GPIO.output(26, GPIO.HIGH)
print «LED ON".
oppure:
print (''LED OFF")
GPIO.output(26,GPIO.LOW)
Q Allatme
---·-
... 18!45
Cosa occorre?
l componenti utilizzati in questo progetto sono disponibili
presso Futura Elettronica. La board Raspberrv Pi 3 tipo B+
(cod. RPI3BPLUS) è in vendita a Euro 44,00 e la telecamera
da 8 MegaPixel per Raspberrv Pi (cod. 9132664RS)
è disponibile a Euro 39,90. l prezzi si intendono IVA compresa.
Il materiale va richiesto a!
v
Futura Elettronica, Via Adige 11, 21013 Gallarate (VA)
D1 allegato: rotoJ.jpg ~,g.ne Tel: 0331-799775 - http://www.futurashop.it
108
•
IC:ROC:HIP
aggiornato alla versione 5.1 O, il plugin MCC (MPLAB® Code gnale periodico". Un primo contatore tiene traccia dell'inizio
Configuratoli, che è alla versione 3.66 ed il compilatore XCB, del periodo del segnale e può essere sia confrontato con
attualmente alla versione 2.0. più valori, definiti dall'utente, per scatenare eventi (inter-
rup~. che essere letto da programma per funzioni scelte
AT (ANGULAR TIMER) dal programmatore.
La CIP di cui ci occuperemo ora è il AT, ovvero il "Timer Le applicazioni consentite da tale CIP sono molteplici,
Angolare"; CIP piuttosto complessa, ma molto potente, come misure sulla rete AC, rilevamento dello "stalla" di
permette di fare operazioni che, specie su una piccola MCU motori, controllo di motori brushless o il rilevamento TDC
ad 8 bit, sarebbero piuttosto complicate e .molto (therma/ conductivity detecton per motori a combustione
impegnative. interna.
Brevemente, un modulo AT suddivide un "segnale perio- Un secondo contatore tiene invece traccia del periodo.
dico" in ingresso, in intervalli più piccoli equidistanti, il cui Questo può essere, ad esempio, usato per misurare l'errore
numero rimaoe costante al variare della frequenza del "se- del periodo dato su un "set poinf' pre-programmato oppure
CPU
~ Fig. 2 - Esempio di generazione di un
impulso al zoo di un segnale periodico. per input period
Time-Based lnput
Angle-Based Output
Pln Module
System Module
~ WWDT
~ Programming
rilevare gli impulsi mancanti nel "segnale periodico". seconda CLC porteremo su un altro pine quindi al secondo
Date comunque le infinite possibilità che offre questa CIP, canale dell'oscilloscopio, permettendoci di verificare che
per una sua trattazione di dettaglio e della "matematica" l'impulso venga realmente generato con il ritardo, espres-
che c'è dietro ad ogni singola possibile misura, rimando il so in gradi (rispetto all'inizio del periodo del nostro segnale).
lettore al "datasheet" di Microchip (05400017700) sezione richiesto.
31. In pratica avremo la situazione schematizzata dalla Fig. 2.
Per quanto riguarda invece i collegamenti in ingresso ed in In essa il "Time-Based lnput" sarà fornito da un timer
uscita del AT, essi possono essere riassunti nello schema a interno collegato ad una CLC (. .. che avrà il compito anche di
blocchi proposto dalla Fig. 1. portar/o su uno dei pin della MCV) e il "Angle-Based Output"
Contrariamente al solito, dove la scheda "Curiosity" ci è sarà un segnale che, sempre tramite una CLC, porteremo
sempre stata sufficiente, questa volta, per il tipo di esem- su di un pin in uscita. Come sempre, apriamo MPLAB X e
pio che andremo a fare, ci occorrerà un "oscilloscopio a creiamo un nuovo progetto di tipo "standalone"; selezio-
due canali" per poter visualizzare sia il segnale in ingresso niamo come MCU il PIC16F1619 (MCU montata nella "Cu-
che verificare il risultato. Quello che faremo, sempre e solo riositv" P/N# OM164137), come "Hardware Tool" (debugger)
con l'utilizzo di MCC, è di generare un segnale periodico "Microchip Starter Kits -> Starter Kits (PKOB) -> Curiosity"
(un' onda quadra) attraverso un timer, portarlo su di un pin e come compilatore XCB v2.00. Andiamo poi sulle proprie-
con una CLC per poterlo inviare su uno dei canali dell'oscil- tà del compilatore (XCB Globo/ Options) e, nella categoria
loscopio ed utilizzare poi un AT per generare un impulso "Giobal Options'; alla voce "C standard" selezioniamo "C90"
sfasato di un certo numero di gradi (20°) che, grazie ad una [attenzione, se non si effettua questa selezione e si lascia il
PlnModule lnterrupt Module System Module
TMR2 8 ~
Hardware
Clock Source
l FOSC/4 l,l Timer Period 16 us "' 1.8 ms s 4.096 ms
Clock Frequency Ac ual Period 1.8 8 ms (Pe ·od cal cufated via imer Per iod)
32.768 kHz
default C99, si avranno errori durante la compilazione del codi- del nostro "segnale periodico" facilmente divisibile per
ce). A questo punto possiamo mettere in esecuzione il tool 360, ad esempio 3,6 ms (pari a circa 277 Hz) in cui ogni
MCC per la solita configurazione di base. (Fig. 3). "grado" corrisponde ad un intervallo di tempo di 1OiJsec
Selezioneremo come "Oscillator" INTOSC, come "System (3.6 msec l 360), per cui, dovremo impostare il nostro
Clock" FOSC e come "Internai Clock" 8MHz_HF (notate "Timer2" in modo che generi un impulso ogni 1,8 millise-
che nei vari esempi, delle varie puntate, stiamo utilizzan- condi, impulso che, successivamente inviato ad una CLC
do un po' tutte le frequenze di clock che la MCU ci mette configurata come "flip-flop J-K", generi un'onda quadra con
a disposizione). toglieremo eventuali segni di spunta che periodo di 3,6 ms (Fig. 4).
dovessero essere presenti nelle caselle relative al PLL e ci Verificata la presenza del segno di spunta sulla casella
accerteremo che il "Watchdog" sia disabilitato. "Enable Timer", selezioneremo come "Ciock Source" FOSC/4,
Terminata la configurazione iniziale andremo a configurare come "Postscaler" il valore 1/1 e come "Prescaler" il valore
il "Timer" che ci permetterà di generare (quindi simulare un 1/32 che ci permetterà di selezionare il periodo del Timer
segnale che arriva dall'esterno) il nostro "segnale periodico" da un minimo di 16 IJSec ad un massimo di circa 4,096 ms.
di base, che utilizzeremo come ingresso del AT. Sceglieremo come periodo 1,8 ms (valore che, in realtà, ci
Sulla sinistra, selezioniamo il tab "Resource management darà un periodo di 1,808 ms).
(MCC)", e nella sezione "Devices Resources" apriamo, fa- Collegheremo ora l'uscita del Timer all'entrata di una CLC
cendoci sopra un clic, la risorsa "Timer". configurata come "J-K Flip-Fiop with R" così da avere una
Come già visto nelle altre occasioni, ci verranno presentati commutazione del flip-flop ogni 1.808 msec ed un'onda
i vari "Timers" presenti nella MCU; selezioniamo il "Timer2 " quadra in uscita con un periodo di circa 3,6 ms pari a circa
facendo doppio clic su di esso ed al centro, si aprirà un 277,7 Hz.
nuovo tab, relativo a detto "Timer2", dove potremo proce- Selezioniamo di nuovo il tab "Resource manage·ment
dere alla sua configurazione. (MCC)", e nella sezione "Devices Resources" apriamo,
Dato che l'esercizio riguarda la "misura di angoli" e che facendoci sopra un clic, la risorsa "CLC". Ci verranno pre-
un angolo giro è di 360 °, solo al fine di semplificarci la sentati le varie "CLC" presenti nella MCU; selezioniamo la
vita nei calcoli e nelle verifiche, sceglieremo un periodo "CLC1" facendo doppio clic su di essa. Al centro, si aprirà un
nuovo tab, relativo a detta "CLC1" dove potremo procedere golare" AT perché legga in ingresso tale segnale e ci indichi,
alla sua configurazione (Fig. 5). ad esempio, il momento in cui il nostro segnale si trova a
Come sempre ci accerteremo della presenza del segno di 20 ° (dato che abbiamo opportunamente scelto il periodo
spunta sulla casel la "Enable CLC" e verificheremo che non totale a 3.6 msec e sappiamo che ad ogni grado corrispon-
ci siano altri segni di spunta nelle altre caselle. de un tempo di 1O IJS, ci aspettiamo di vedere l'impulso
Nel menu a tendina chiamato "Mode" selezionere- generato dal AT dopo circa 200 IJSec).
mo "JK fii p-flop with R", nel menu a tendina, collegato Selezioniamo la tab "Resource management (MCC)", e nella
alla prima porta logica di "Ingresso", selezioneremo sezione "Devices Resources" apriamo, facendoci sopra un
T4_postscaled_out ovvero il segnale che ci indica che clic, la risorsa "AT". Ci verrà presentato l'unico "AT" presen-
il "Timer4" ha raggiunto il tempo programmato ed ha te nella MCU facendo doppio clic su quale si aprirà, nella
ricominciato a contare. Faremo un solo clic nel rettangoli no sezione centrale, un nuovo tab relativo a detto AT, dove
tratteggiato corrispondente così da collegare tale segnale potremo procedere alla sua configurazione.
al primo pin della prima porta di "Ingresso". Provvederemo Dato l'elevato numero di paramentri, la tab non sta tutta
infine a fare un clic nei due rettangolini tratteggiati relativi in una schermata, quindi l'abbiamo spezzata in due: nella
all'uscita della seconda e quarta porta di "Ingresso" (corri- in Fig. 6 trovate le informazioni presenti nella parte alta;
spondenti ai segnali J e K del flip-flop) in modo che appaia il qui, per prima cosa, ci accerteremo che la CIP sia abilitata
'o' indicante la "negazione" del segnale in uscita. e quindi verifichiamo la presenza del segno di spunta sulla
In questo modo avremo configurato la nostra CLC in modo casella "Enable AT", dopo di che passiamo a configurare i
che, ogni volta che il "Timer4" va in overflow venga inviato vari parametri richiesti.
un segnale sul clock del_flip-flop e che esso commuti il Scegliendo per "Ciock Source" la voce FOSC, si deve sele-
segnale in uscita generando così un'onda quadra con un zionare il valore del "Prescaler" tenendo conto di quanto
periodo di circa 3,6 msec. descritto nel datasheet per il "Angular Timer" (Documento
Abbiamo così configurato il nostro generatore di "segnale Microchip DS40001770D) e nelle "Note di Implementa-
periodico'; il passo successivo è configurare il "Timer An- zione" (Documento Microchip DS90003143A). In pratica
•
CLC1
l..ti Enable C C
D Enable CLC lnterrupt
D Enable Rising lnterrupt D Enable Falling lnterrupt
[ Export CLC image ]
• 2 Q 1----.
3
CLClNO {CLCIMPI>S) • .---l K
R
4
CLCi O !CLC!t.OPI>S) •
Pin l\lodule Cl lnterrupt Module El Syuem Module ,Cl TMR2 E3 CLCl 13 AT f3 CLC 2
CLC2 00 @
1
@ Easy Setup § Regìsters
,.,
Hardware Settings r
.
'\
CLCINO !CLCINOPPS) •
2
l r-..
• ./ ....
...
. v
CLCJNO ICLCINOPPS) •
3 .... ·
•
4 ..
CLCJNO!CLCINOPPS) •
v
<L >
CLC2 C C20UT output 'à 'il i 'à 'ìl 'à 'à 'à 'il 'à 'à 'à 'à 'à 'à'à 'Il •
,C CINO input 11 'à 'à ,'à 'à'à'à'à ,'à'à 'h 'à ,'à ~ 'à ,'h 'à 'h
'
C CIN1 input 'il ,. ·,. T~~ 'll ~ 'à 11 11 '11 .11 'à'à'à'à'à'à'à'à
CLCx ,.
CLCIN2 input 'à 'b 'b 'b 'à'à 'à 'à 'b'à 'à 'à 'il 'b 'à 'à 'à 11
CLCIN3 input 'à 'D ,.
'b 'à 'b 'b 'à 'b 'à 'à 'à 'à 'à 'à 'à 'il 'il
osc C KOUT output 'à
Pin Module,. r-
GPlO
l
input 'à 'à 'à 'D 'à 'ìl 'il 'à 'à ,'à 'à '11 1'11 'Il 'à 'à 'à 'à
GPlO output 'à 'b 'à , D 'à 'à 'b 'à 'à 'à'à'à 'b 'à'à'à'à'à
RESET MCLR input i -
TMR2 T21N input 1111 'à 7 'à 'à 'à 'Il 'h 'à 'à 11 'il 'b 'à 'b 11 11
~
~ Fig. 9 - Schermata relativa all'assegnazione dei pin alle uscite delle CLC.
ci verranno presentati le varie "CLC" ancora disponibili nella In corrispondenza del la riga in cui compare il modulo CLC1,
MCU; selezioniamo la "CLC2" facendo doppio clic su di essa. funzione CLC1 OUT, facciamo clic sul piccolo lucchetto aper-
Al centro, si aprirà un nuovo tab, relativo a detta "CLC2 " to, su sfondo di colore azzurro, che si trova in posizione C5
dove potremo procedere alla sua configurazione (Fig. 8). dopo di che, in corrispondenza della riga in cui compare il
Verificata la presenza del segno di spunta sulla casella modulo CLC2, funzione CLC20UT, facciamo clic sul piccolo
"Enable CLC" ed accertato che non ci siano altri segni di lucchetto aperto, su sfondo di colore azzurro, che si trova
spunta nelle altre caselle, passeremo al menu a tendina in posizione A2. Entrambi si trasformeranno in un picco-
chiamato "Mode" e selezioneremo "ANO-OR". Nel menu a lo lucchetto chiuso su sfondo di color verde, ad indicare
tendina, collegato alla prima porta logica di "Ingresso': se- l'avvenuta connessione. Una volta terminata la configura-
lezioneremo Angular TMR Comp1 ovvero il segnale in usci- zione con MCC, come ormai sappiamo fare, utilizzeremo il
ta dai"Capture/Compare1" del AT. Faremo un solo clic nel pulsante "Generate" che si trova sulla sinistra, cliccandovi
rettangolino tratteggiato corrispondente così da collegare
tale segnale al primo pin della prima porta OR di "Ingresso".
Provvederemo infine a fare un clic nel rettangoli no tratteg-
giato relativi all'uscita della seconda porta OR di "Ingresso"
(corrispondenti al secondo segnale di ingresso della prima
ANO) in modo che appaia il 'o' indicante la "negazione" del
segnale in uscita (non essendoci nulla collegato su lla OR
di ingresso il suo segnale di uscita sarebbe LOW, in questo
modo lo abbiamo portato ad HIGH). Risulta evidente che
l'uscita della CLC2 sarà uguale al segnale presente in
ingresso, ovvero al segnale proveniente dai"Capture/Com-
pare 1" del AT.
A questo punto non ci resta altro da fare che co llegare
l'uscita delle nostre CLC ad un paio di pin della MCU così
da poter visualizzare, con l'uso di un oscilloscopio, l'onda
quadra generata ed il segnale proveniente dal AT.
~ Fig. 10
Spostandoci tutto in basso selezioneremo il tab "Pin Mana- l connettori della
ger Grid View" (Fig. 9). scheda Curiosity.
• • l•
PicoScope 6 Beta
-
"' Il. d!. i?~ < 1- > < [1MS < 25ol25 ·D , ~ o l\. "' <:-. piCO •
A < ~ DC B 4 AIJIO ~ ~ (1\1)
-
• 5.0
v
-- so
v
l
4.0
3 3 o
2.0
l o •
IO
o o
·1.0 -l o
•
-2 .0 - 2.0
-3 ,0 -3 .0
-4 o -·o
-s o
- 3.0 ~2 .0 -1 .0 0.0 l .O 2.0 3.0 4.0 s.o 6.0
ChaMtl Name Test Fabes Vallt Mn Count
•
A 276.8 Hz J
sopra per avviare la generazione del codice che, senza potranno, come negli altri esempi, sia esaminare dal tool
modifiche, potremo direttamente compilare e caricare sulla MCC i vari registr.i delle varie Cl P, sia andare a guardare il
scheda "Curiosity" per metterlo in esecuzione (i più curiosi codice 'C' generato).
PicoSeope 8 Beta
•o
l o 30
2 o
e e Scope 1 - Ruters
20
1 2 A
l .O l O
0- . . . . . . . . . ., 00
- t o -l o
-2 o -2 o
-3 .0 ·l o
'''
_,o J' -·o
'''
-5o o'
-1.0 - 0 .5 0.0 0 .5 l. O 1.5 2.0 2.5
•
•
•
• •
; int32_ t map (int32_ t x, int32_t in_min , int32 t in max , int32_t out_min , int32_t out max) { •'
•
: return (x - in min) * (out max - out min) l (in max in min) + out min ; •
•
•
; } •
•
•
•
•
• •
; l* •
•
•
•
Main application •
•
•
•
•
*l •
•
•
• •
• •
• •
: void main (void) •
•
• •
: { •
•
• •
o
o
uint16 - t convertedValue ; •
•
• •
•
•
uint16 t newATvalue ; •
o •
•
.•
o
•
•
•
•
Il
initialize the device •
•
•
•
• SYSTEM Initialize() ; •
•
• •
• •
• •
•o
o
Il When using interrupts , you need to set the Global and Peripheral •
•
•
•
•
•
Il Interrupt Enable bits •
•
•
•
•
•
Il Use the following macros to : •
•
•
• •
• •
•
•
•
Il Enable the Global Interrupts •
•
•
•
•
•
Il INTERRUPT_GlobalinterruptEnable() ; •
•
•
• •
.
• •
•
•
•
•
Il Enable the Peripheral Interrupts •
•
•
•
• Il INTERRUPT_PeripheralinterruptEnable() ; •
•
• •
o
• •
•'
•
•
•
Il
Disable the Global Interrupts '
•
•
•
•
IIINTERRUPT_GlobalinterruptDisable() ; •
•
•
.• •
•
• •
•
• Il
Disable the Peripheral Interrupts •
•
• •
•
o
IIINTERRUPT_PeripheralinterruptDisable() ; •
•
• •
• •
• •
•
• ADC- SelectChannel(POT- l) ; •
•
• •
•
• ADC StartConversion() ; •
•
• •
•
• while (l ) •
•
• •
•
•
{ •
•
•
•
•
Il
Add your application code •
•
•
• •
•
•
if (ADC- IsConversionDone()) { •
•
•
• convertedValue = ADC - GetConversionResult() ; •
•
• •
•
• newATvalue = map(convertedValue , O, 1023 , O, 359) ; •
•
• •
•
• Il •'
•
•
•
ATlCClH = (newATvalue & OxFFOO) >> 8 ; '
•
•
•
o
•
Il •
•
•
•
•
•
ATlCClL = (newATvalue & OxOOFF) ; •
•
•
•
•
} •
•
• •
•
•
} •
•
:• } •
•
•
• •
• •
• •
• •
• •
• •
,. • • • • • • • • .. ~ • • " ,.. • • • • • 41 • • • " Il " • • Il Il • • • • • • l • • • " • • • • i • ,. • • l " .. • .. .. Il • iJ .- • .. • • • • • • l •• " • • l • • • " " .. • • • • • • • • • lo • • • .. • • • • Il il • • l Il l " • • l • ~ • • • • " l • • • Il • • • • • • • • • Il ~ • • • • • • .. • • Il 111 l • • • • • • .. " .. Il • " l ..
Collegati, tramite i due connettori posti ai lati della MCU, i Il passo successivo è quello di diminuire la base dei tempi
puntai i dell'oscilloscopio ai pin identificati come GND, RA2 (per migliorare la visibilità) e posizionare due cursori. Uno
e RC5 sulla scheda dimostrativa (Fig. 10) potremo esami- sul fronte di salita del nostro "segnale periodico" (uscita
nare i segnali in uscita (Fig. 11 ). della CLC1) ed uno in corrispondenza dell'impulso in uscita
L'immagine riportata è stata presa dalla schermata su dal AT (uscita della CLC2). In una piccola finestra posizio-
macOS di un "Picoscope 2000"; in blu abbiamo il nostro nata al centro, è visibile il calcolo della differenza dei tempi
"segnale periodico" (prelevato dal pin RC5) mentre in rosso tra i due cursori dove leggiamo, come ci aspettavamo,
l'impulso generato dal AT a 20° (prelevato dal pin RA2). E' un valore /J pari a 202.8 ~se c (20 o x 1O ~s/grado = 200
stata attivata una "misura" ed in particolare la "frequenza" ~s; i 2,8 ~s in più che troviamo rispetto ai 200 ~secche
del"segnale periodico" che, come si vede indicato dalla ci aspettavamo sono dovuti sia al fatto che il.segnale pe-
freccia ha un valore reale di 276.6 Hz( ... se ricordate il riodico non è esattamente 277,7 Hz, sia al fatto che i due
Timer2 non genera esattamente un impulso ogni 1.8 msec, cursori sono stati posizionati manualmente con il mouse e
ma ogni 1.808 msec che dà un periodo di 3.616 msec pari quindi è possibile un piccolo errore di posizionamento
appunto a circa 276.6 Hz). (Fig. 12).
STESSO ESEMPIO, MA CON ANGOLO VARIABILE ble ADC': selezioneremo come "Ciock Source" FOSC/8, come
Partendo dall'esempio sopra riportato, è facile fare una "Result Alignment" right e come "Auto-conversion Trigger"
semplice modifica affinchè, ruotando il "Trimmer" che, come TMR2_postscaled (senza sprecare un altro Timer, utilizziamo
ricordate, è presente sulla scheda Curiosity, venga variato lo stesso che usiamo anche per generare il "segnale pe-
l'angolo a cui il nostro AT genera l'impulso ed, in particolare, riodico"). Non ci resta altro che collegare il nostro trimmer
da Oa 359 o . Per fare questo, dovremo rientrare in MCC per POT _ 1 all'ingresso del nostro ADC (CO) così da poter variare
aggiungere al nostro progetto una CIP ADC (che abbiamo già la tensione e, di conseguenza, l'angolo a cui scatterà il nostro
incontrato in una precedente puntata) per leggere la tensione AT. Ci spostiamo di nuovo in basso dove selezioniamo il
sul capo del "Trimmer" (POT _ 1) che poi noi convertiremo in tab "Pin manager: Grid View" e, come già fatto in passato, in
un numero da Oa 359 da inserire nel registro ATxCC1 del AT, corrispondenza della riga in cui compare "ADC': "ANx': "input"
registro a 16 bit (ATxCC1 H ed ATxCC1 L) che indica appunto facciamo clic sul piccolo lucchetto aperto, su sfondo di colore
l'angolo voluto. azzurro, che si trova in posizione CO. Esso si trasformerà
Dal tab "Resource management (MCC)': nella sezione "De- in un piccolo lucchetto chiuso su sfondo di color verde, ad
vices Resources': apriamo, facendoci sopra un clic, la risorsa indicare l'avvenuta connessione (Fig. 14). Saliamo ora verso
"ADC': Selezioniamo "ADC [PIC1 O/PIC12/PIC16/PIC18 MCU l'alto e selezioniamo il tab "Pin Module" che ci permetterà di
by Microchip Technology, lne.]". Al centro, si aprirà un nuovo assegnare un nome "mnemonico" (Custom name) a detto pin,
tab, relativo a detto "ADC" dove potremo procedere alla sua che chiameremo con il nome di POT _ 1, assicurandoci che
configurazione (Fig. 13). nella colonna di nome "Analog" sia presente un solo segno
Verificata la presenza del segno di spunta sulla casella "Ena- di spunta in corrispondenza appunto di tale pin. Terminata
Pin Module 12. lnterrupt Module :f3 System Module -m· TMR2 CLCl AT ~· CLC2 ADC G~
~
ADC ·~
l
n l
•
~ Easy Setup l § Registers
Hardware Settings
<L ]
<;: J >
~ Fig. 13 - Schermata reiativa alla configurazione del ADC.
quindi la configurazione, in cui, come sempre, grazie all'uso Per cui, alla fine, dichiarate anche le variabili che ci occor-
di MCC, non ci siamo preoccupati né di studiare i registri coin- rono, il nostro main.c conterrà (al netto di alcuni commenti
volti per la loro corretta impostazio ne, né di scrivere una riga inseriti da MCC) quanto mostrato nel Listat o 1.
di codice, ut ilizzeremo il bottone "Generate" che abbiamo In pratica, nel super-l oop (while (1)) viene verificato che
già ut ilizzato in precedenza e passiamo a modificare il main.c I'ADC abbia co mpletato la conversione A/D del valore di
che è stato generato. Come abbiamo già fatto in un altro tens ione letto da POT_ 1, viene rimappato il valore letto nel
esempio, aggiungeremo le righe per selezionare l'ingresso valore voluto e vengono riempiti i due regsitri AT1 CC 1H e
(ADC_SelectChannel) ed attivare la conversione (ADC_Start- AT1 CC1 L, del AT. con detto valore.
Conversion) del modulo AD C. Le funzioni a disposizi one per Se si esaminano, come visto in precedenza, i segnal i
fare ciò sono ben descritte nei commenti che si trovano in in uscita, si scoprirà il nostro "segnale periodico" non è
ade. h e pertanto, nel nosto "mai n" aggiungeremo le seguenti altro che l'impulso deii'AT che si sposterà, da un estremo
due righe: all 'altro, in funzione di quanto ruoteremo il 'Trimmer" che
equipaggia la scheda demo "Curiosity".
ADC_ SelectChannei(POT_ 1};
ADC_StartConversion(); CONCLUSIONI
In questa quarta puntata del nostro corso ab biamo esam i-
Ci occorrerà, poi, una funzi one per rimappare i valori prove- nato un'ulteriore Core lndependent Peripheral che possia-
nienti dal ADC (valori che vanno da Oa 1024, essendo un ADC mo trovare in alcune delle MCU a 8 e 16 bit di Microchip, il
a 1Obit) nei valori di nostro interesse (valori che vanno da Oa AT, ovvero il "Timer Angolare·: Timer da util izzare quando
359). Prendendo spu nto da codice già esistente anche in altri serva effettuare misure legate a segnali periodici e agli
ambienti, scriveremo la nostra funzione: angol i di fase. Nel la prossima puntata continueremo l'e-
same di altre CIP e vedremo, sempre tramite degli esempi
int31_t map(int31_t x, int32_t in_min, int32_t i nJ~ax , int32_t out_min, int32_t out_max) [ pratici appoggiati alla demoboard Curiosity disponibi le dal
return (x - in_min) • (outJOOX- out_min) l (in_oax - inJnin) + outJOin; sito www.futurashop.itcon il cod ice CUR IOSITYDB, la loro
} co nfigurazione con l'ausilio del preziosissimo too l MCC. [J
Output - MPJ.AI® Code Configurator Notlflcatlons Notificatlons [MCCI Pin Manager: Grid View O
Package: PDIP20 .... Pin No: 19 18 17 4 3 2 13 12 11 10 16 15 14 7 6 5 8 9
• Port B T Port C •
PortA •
Module Function Direction o 1 2 3 4 5 4 5 6 7 o 1 2 3 4 5 6 7
ANx input 'à 'à 'à 'à 'à 'à i 'à 'à 'à 'à 'à
ADC •
VREF input 'à
ATCC1 input 'à 'à 'à h 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
ATCC2 input 'à 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
AT T
ATCC3 input 'à 'à 'à'à ... 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
ATIN input 'à 'à 'D 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
CLCl I"'I_C10 UT output 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à i 'à 'à
CLC 2 II"'I_C20 UT output 'à 'à 'à i 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
~
CL o input 'à 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
I"'I_CIN1 input 'à 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
C Cx •
I"'I_CIN2 input 'à 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
II"'I_CIN3 input 'à 'à 'à 'à'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
ose ICLKOUT output 'à
linput
Pin Module • l:::o IO o
'à 'à 'à 'à 'à
'à 'à 'à 'à 'à
'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à •
RESET R linput i
TMR2 1 .:tN linput 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à 'à
www.inaf.it
Emettitori blu
incrementano
il ci cio vita le
deii'OLED
Per rendere efficienti gli OLED
bianchi che sono privi di me-
talli delle terre rare, i ricerca-
tori che lavorano al progetto
PHEBE finanziato daii'UE si
sono concentrati .su un pro-
cesso noto come TAPF (Ther-
mally Activated Delayed Fluo-
rescence). Esplorando ricerche
innovative sul campo essi
hanno svelato nuovi emettito-
ri blu che sono più economici e
migliori per l'ambiente.
Attualmente, la breve durata
di vita degli emettitori blu è
un problema importante che
impedisce l'utilizzo di emetti-
tori OLED fosforescenti nelle
applicazioni di illuminazione
commerciale. Gli OLED fo-
sforescenti sono fatti di un
materiale ospite (tipicamente
un polimero) sul quale viene
aggiunto, come sostanza dro-
gante, un complesso organo-
metallico basato su un metal-
lo delle terre rare quale l'i ridio.
Un'attenta selezione del ma-
teriale organico utilizzato per
l'emettitore è un altro fattore
significativo che dovrebbe
consentire agli OLED di gua-
dagnare una parte importante
dei mercati dell'illuminazione.
www.h2020-phebe.eu
Controlla facilmente l'irrigazione, le luci di casa, il cancello elettrico·, l'impianto d'allarme e
molto altro con i nuovi trasmettitori e ricevitori a 1-2-4 canali operanti sulla banda dei 433 MHz.
Forniscono' un segnale stabile a lunga distanza e un bassissimo consumo di corrente in modalità
stand-by. l ricevitori possono essere alimentati a 220VAC o a 12VDC in base al modello.
cod. EMY12RX2
00 •
' :• 1 CANALE 12VDC
4 CANALI12VDC ·• cod. EMY12RX1
cod. EMY12RX4 . 00
e ' •
•
•
o•
•
•
•
•
•
•
•
o•
TRASMETTITORE : •
•
•
••• •••••• ••• •••••• •
'
1 CANALE
•
•
•
o•
cod. EMYTX1 • •
•
00 TRASMETTITORE : - ·.. TRASMETTil~ ORE
• • • • • • •••• •• • ••••• ..... '· ............. .
' 2 CANALI 00 4 CANALI 00
cod. EMYTX2 e cod. EMYTX4 e
' il trasmettitore con lo stesso numero di canali. '
Ai ricevitori va abbinato esclusivamente
W'VAV/w. /l~u:.f.l
•
l r~shot n j.f.
Futura Group srl
® Via Adige, 11 • 21013 Gallarate (VAl Prezzi rvA Inclusa: te~niche
Caratteristiche
f-' • Il
Tel. 0331/799775 e vendita on·hne su: l U l Cl
1 •
Mobility
Engineering:
nuova laurea
magistrale
Il Politecnico di Milano, insieme a 13
enti e imprese-chiave del settore, ar-
ricchisce la propria offerta formativa
con il Corso di Laurea Magistrale in
Mobility Engineering (#LMMobilityEn-
gineering). Il corso è stato presentato
dal Rettore dell'Ateneo Ferruccio Re-
sta, da Renato Mazzoncini, docente
di Mobility, lnfrastructures & Services
e da Dario Zaninelli, coordinatore del-
la commissione per la progettazione
della nuova Laurea Magistrale. Il nuo-
vo corso, attivo dal prossimo anno ac-
cademico 2019/2020, sarà erogato in
lingua inglese.
In dettaglio, il laureato in Mobility En-
gineering del Politecnico di Milano sarà
uno specialista della mobilità a 360 o:
saprà affrontare il tema della mobilità
a più livelli, partendo dalle infrastrut-
ture terrestri (strada e rotaia) e dai si-
stemi regolatori e di sicurezza per pas-
sare all'erogazione di servizi di mobilità
e agli scenari futuri di innovazione.
La nuova figura professionale av@ una
solida preparazione ingegneri ~ e
, , dologicq, , Hn~ Jo"'""'" ,;
l
1 !i
l, • ,, ,
www.polimi.it
Innovativa tecnologia della
membrana dell'idrogeno
Una start-up tedesca ha sviluppato drogeno prodotto mediante elet-
un'eccezionale membrana in mate- tricità senza emissioni di carbonio
riale composito. Combinata con ca- può essere usato in un'ampia gam-
talizzatori non preziosi, essa forni- ma di applicazioni praticamente in
sce una piattaforma economica per tutti i settori dell'energia: trasporti
l'elettrolisi dell'acqua alcalina, velo- industriale residenziale e portatile.
cizzando e migliorando l'efficienza Questo vettore energetico soste-
della produzione dell'idrogeno. L'i- nibile incanala notevoli quantità di
corrente in settori che sono difficili
hydrogen oxygen da decarbonizzare attraverso l'elet-
Hz 02 trificazione. Il progetto MEMBRA-
SENZ rappresenta un'importante
pietra miliare sul percorso per ren-
dere possibile questa transizione
verso le energie rinnovabili.
www.membrasenz.com
128
• • l
Design With Simplicity IRE LE
Fishino UNO, Fishino MEGA, Fishino32, Fishino GUPPY e Fishino SHARK sono schede
di sviluppo Arduino- compatib ile dotate di WiFi e lettore di schede microSD.
Grazie ad un completo pacchett o di librerie (scaricabile dal sito www.fishino.it),
si ha la possibilità di gestire tutti i propri progetti dal web in maniera semplice e veloce!
-::-- . ....,...~.~!~~~+
•• •••
Fishino UNO • Controller: ATmega328 • Controller: ATmega2560
••
.·. FISHINOMEGABO X ••
cod.
Fishino MEGA
•••
-
·Alimentazione:
-da 7a12 Vdc (tramite plug) -§ · Alimentazione:
- 3,6 Vdc (tramite batteria esterna
l
l: G
l
90 . .,.
\f!
::
- ~ ~~ };!
- 5Vdc (tramite porta USB) §
-
allitio)
~~~·~ ~~ t _.:fil
• Compatibile al1 00%
con Ardui no UNO
::
-§ -da 3,5 a20 Vdc (tramite plug)
- 5Vdc (tramite porta USB)
~ _..._..
·......
...... ~
... ..··#
---
• Modulo WiFi -~ ·Circuito di ricarica per batteria allitio Ifai
·lnterfaccia per scheda MicroSD § ·Compatibile al100%
·Modulo RTC con batteria di -:: con Ardui no MEGA
mantenimento
-
·Sezione di alimentazione a3,3 V
----
:: • Modulo WiFi
• lnterfaccia per scheda MicroSD
--
t.~!~ ~ ... potenziata
--- • Modulo RTC con batteria
~ ••• •• cod. •• · • Compatibile con shield eschede
--- di mantenimento
j../ FISHINOUNOBOX \~ millefori
00 { € 1 90 \:a ·
Peso 25 g ------ ·Stadio di alimentazione switching
(5 Vdc e3,3 Vdc)
•
: ·Dimensioni 76,5 x 53,5 x 14m m --- ·Compatibile con shield
./l; ---- eschede millefori
.....# -- cod. FISHINOMEGA
cod. FISHINOUNO
3 l -- ... ~
·--. "
···~~ ---
---
·Peso 37 g
·Dimensioni 101,5 x53,5x 15 mm
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
--- • Controller: ATmega328
Fishino32
- - • Alimentazione:
~ Fishino GUPPV
---- - 3,6Vdc (tramite batteria esterna
--- allitio)
-- - da 6,5a20 Vdc (tramite PIN VI N)
---- - 5Vdc (tramite porta USB)
---- ·Circuito di ricarica per batteria allitio
-- • Compatibile al1 00%
---
• Circuito di ricarica per batteria al litio
-- con Ardui no NANO
·-
c:
~·
,
.00 •
€ ,
Cod. ROBOARM PICK ANO PLACE PER BRACCIO
ROBOTICO "ROBOARM"
RACCIO ROBOTICO IN PLEXIGLASS - IN KIT
- _·B _
=~- :Jraccio robotico è un'esperienza interessante per chi vuole
:. -~ -- ~ si a ~onda della robotica e prepararsi a sfide più complesse.
:: ~ :-:: .,· contiene tutto il necessario per realizzarne uno di tipo articolato
•
.. _ - ~~ ·g ass a 4 gradi di libertà, con base rotante (180°), pinza per afferrare
; : =~etti (montabile sia in posizione orizzontale che verticale)
~ - se locomandi gestibili da Arduino o altra elettronica (acquistabile
'
:-=:l..a:amente) . E disponibile anche il kit "Pick an d Piace" composto -
=~ _-a piccola pompa a depressione, un'elettrovalvola, un microswitch,
: ~ ·. .~bi e ventosa, che permette di equipaggiare il braccio robotico € ,
: :~ ... ~ sistema di prelievo e rilascio di piccoli oggetti. Cod. PEPARM
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
ri anche gli altri modelli ••• BRACCIO ROBOTICO
6DOF CON PINZA E
~-:: :· _ eccanico, SERVI RC - IN KIT
· que motori •
-- =-~a ·colazioni
_~ ... -·-~ i controllo
•
a c1nque