Sistema I.o.T.: Processore, Controller, Sensori ed Attuatori

Revisione 0.07.

Presentiamo il progetto di Sistema I.o.T. che, nella sua struttura più essenziale, è costituito da:

  • Sistema Servizi Centrale I.o.T.
  • Processore
  • Controller
  • Shield, Sensori ed Attuatori
  • App Desktop per amministrare il sistema mediante un computer generico

IL Sistema Servizi Centrale I.o.T. è raggiungibile mediante internet ed eroga servizi quali cruscotti da utilizzare anche in ambito mobile, notifiche, rapporti ed altro.

Un Sistema Periferico I.o.T., costituito da processori, controller, sensori ed attuatori, comunque può funzionare in modo autonomo.

I Controller o microcontroller, quali AVR, sono dotati di:

  • interfaccia IO o GPIO
  • canale di comunicazione USB con il Processore
  • altri canali di comuncazione: seriali (TTL, RS232, RS422, RS485), I2C, SPI, IR, …
  • firmware che gestisce la comunicazione con il Processore

Il Processore è sostanzialmente un computer, il progetto prevede processori  ARM 32 o 64, i386 o AMD64, con:

  • Server RDBMS PostgreSQL con i database necessari
  • Servizi C++/Qt
    • il riconoscimento automatico dei controller collegati in modalità P&P con aggiornamento nella tabella iot_db.controllers del database usato
    • esecuzione dei comandi inseriti nella tabella iot_db.commands verso il controller e riporto della risposta al comando stesso
    • sincronizzazione con il Sistema Centrale I.o.T. attraverso Internet
  • servizio Apache con WEB UI per interagire con la base dati del sistema
  • ambiente di compilazione ed upload firmware di base per la famiglia di microcontroller Arduino
  • Servizi di monitoraggio in Python
    • temperature, syslog, connettività, risorse disponibili, stato SD, watch dog controller ed altro
  • la App Desktop MS WIn32 per amministrazione del sistema mediante un computer desktop con SO Microsoft e quindi di facile reperibilità, previo installazione run time MS Visual Studio e ODBC PostgreSQL

Nella prima fase utilizziamo, quali Processori, schede ARM 32 e 64   con Raspbian o Armbian, schede   i386 e AMD64 con Ubuntu 18.04 Server.

Armbian e Raspbian sono Sistemi Operativi UNIX Linux di derivazione Debian.

Il prototipo iniziale è costituito dall’immagine della SD con Raspbian per RaspeberryPi 3, disponibile nelle prima versione a breve, che realizza un processore completo per gli utilizzi di base.

Contiene tutti i servizi e loa base dati con RDBMS PostgreSQL per realizzare il Sistema Base I.o.T. :

  • Linux SO
    • desktop grafico
    • networking
      • WiFi
      • rete locale
      • USB tethering
      • DHCP
      • NTP
    • Rsyslog
    • SSH console remota per amministrazione
  • base dati in RDBMS PostgreSQL
    • libreria PL Py3 u dedicata I.o.T.
    • amministrazione pgadmin3
  • base dati locale Sqlite 3
    • amministrazione sqlite-admin
  • Servizi I.o.T.
    • riconoscimento automatico controller attivati con USB P&P
    • per ogni controller servizio di routing comandi tra processore e controller attraverso il canale USB
    • sincronizzazione locale con remoto attraverso internet
    • buffer temporaneo dati e stati in assenza di connettività
    • monitoraggio parti struttura I.o.T.
  • servizi Python 3 monitoraggio
    • connettività
    • network
    • Syslog
    • dispositivi USB
  • servizi WEB con Apache

Il servizio di riconoscimento ed aggiornamento tabella controller connessi a porte USB è eseguito mediante Linux Cron alla frequenza del minuto.

Il riconoscimento di un nuovo controller determina:

  • l’aggiornamento della tabella controllers
  • l’avvio del servizio controller_bridge ad esso dedicato e che in breve interagisce con il controller stesso e la base dati del processor.
  • il riconoscimento del tipo di controller con il seriale univoco ed i parametri USB correlati
  • la definizione corretta, in relazione alla scheda riconosciuta, del numero di porte disponibili: IO, AD, DA, I2C, serial TTL, SPI, …

La prima famiglia di controller che consideriamo è costituita, ovviamente, dai popolari AVR ed ARM Arduino.

Il processore Rpi contiene una versione del firmware di base che può compilare ed eseguire l’upload in una scheda correttamente riconosciuta.

Il linguaggio realizzato, appartenente al linguaggio I.o.T.

Il principio comunque è che il servizio in esecuzione nel processore esegue macro comandi e fa eseguire comandi elementari al controller abbinato.

Per esempio se si vuole realizza un termostato con soglia una data temperatura t, il controller_bridge decompone la macro nei comandi:

  • legge, inviando il comando adeguato al controller, il valore presenta nella data porta AD
  • confronta con la soglia t e, nel caso,
    • scrive, inviando istruzione adeguata al controller, il valore 1 alla porta OUT convenuta.

Il firmware di base prevede il comando CONFIG che permette dinamicamente di configurare le porte del controller, per esempio in Digital IN o digital  OUT o I2C o SPI. Sia il firmware che il service_controller eseguono controlli per evitare alcuni semplici errori: non superare il massimo numero di porte disponibili in relazione alla scheda riconosciuta, non usare in modo improprio porte rispetto alla configurazione assegnata, per esempio in OUT una porta configurata come digital IN, ed altro.

La seconda famiglia di controller che andremo ad utilizzare sono le stesse schede ARM che abbiamo considerato come processori. Infatti sono dotate di GPIO. Il Sistema Operativo Linux Raspbian e Armbian prevedono i moduli kernel  per gestire le interfaccie sia nella forma passiva che con eventi sollevati dai moduli kernel.

Per realizzare il servizio che connette la GPIO al Sistema I.o.T. utilizziamo C/C++ wiringpi e Qt in ambito Armbian.

 

Gli Shield e i Sensori ed Attuatori che inizialmente consideriamo, per una questione di praticità, oltre ad elettronica su millefori, appartengono alle famiglie:

 

Per informazioni.