Servizi di sviluppo software - EDALAB

Servizi di sviluppo software: competenze, processi, tecnologie e test al centro della nostra offerta

Sviluppo software hmi web app - EDALAB

In un settore cosi dinamico come quello tecnologico le sfide da affrontare sono molteplici, il nostro team di sviluppo software si distingue per la sua competenza tecnica e la sua dedizione alla creazione di soluzioni innovative e su misura per le esigenze dei nostri clienti. Attraverso l’utilizzo di tecnologie all’avanguardia e un processo di sviluppo rigoroso, siamo in grado di offrire servizi di sviluppo software di eccellenza, focalizzati principalmente su tre aree chiave: lo sviluppo di interfaccie HMI con tecnologie come Qt, lo sviluppo web con tecnologie React e la personalizzazione avanzata di servizi cloud basati su microservizi.

1. Interfacce HMI con Qt: Massima Performance e Modularità

Nel nostro approccio allo sviluppo di interfaccia utente-macchina, utilizziamo Qt, un framework potente e flessibile che ci consente di creare interfacce grafiche avanzate con una performance ottimale su una vasta gamma di dispositivi e piattaforme. Grazie alla sua architettura modulare, possiamo sviluppare e integrare componenti personalizzati in modo efficiente, garantendo una maggiore flessibilità e scalabilità per le applicazioni che sviluppiamo.

L’utilizzo di Qt ci consente inoltre di creare interfacce HMI altamente intuitive e reattive, ottimizzate per migliorare l’esperienza utente e massimizzare l’efficienza operativa nei contesti industriali più complessi.

1. Studio delle specifiche

In questa prima fase di analisi andiamo a supportare il Cliente nella definizione delle specifiche, traducendo in modalità tecniche le sue esigenze e richieste. Se richiesto possiamo inoltre analizzare vecchie versioni del software per studiare i punti di forza e debolezza.

2. Focus Group

In questa fase si entra nel vivo della progettazione. In particolare viene studiata la logica della struttura delle informazioni in modo che l'utente trovi facilmente cio di cui ha bisogno. Vengono inoltre analizzate le relazioni e gerarchie tra differenti elementi, l'idenificazione di etichette chiare, lo studio di filtri e ricerche e l'analisi della scalabilità dell'interfaccia al variare della quantità di informazioni.

3. Information Architecture e Workflow

In questa fase si entra nel vivo della progettazione. In particolare viene studiata la logica della struttura delle informazioni in modo che l'utente trovi facilmente cio di cui ha bisogno. Vengono inoltre analizzate le relazioni e gerarchie tra differenti elementi, l'idenificazione di etichette chiare, lo studio di filtri e ricerche e l'analisi della scalabilità dell'interfaccia al variare della quantità di informazioni.

4. Wireframe e stile dell'interfaccia

Questa fase riguarda principalmente la progettazione della densità delle informazioni, il layout delle pagine, la distribuzione e il numero degli elementi per ciascuna interfaccia. Vengono anche proposti diversi stili grafici che riguardano palette colore, stile degli elementi e tipografia. Tali elementi andranno a costituire il design system dell'applicazione

4a. Mockup con Figma e realizzazione dell'interfaccia

L'ultima fase della progettazione riguarda la realizzazione di un mockup FIGMA completamente navigabile con interazioni ed elementi cliccabili. Tale mockup viene condiviso periodicamente con il Cliente che può cosi commentare e contribuire alla realizzazione grafica dell'interfaccia. Il mockup, una volta approvato dal Cliente, viene realizzato dal team di produzione.

2. Sviluppo Web con React: Prestazioni e Scalabilità Senza Compromessi

Nel campo dello sviluppo web, ci affidiamo principalmente a React, una libreria JavaScript all’avanguardia sviluppata da Meta, che ci consente di creare applicazioni web moderne e performanti con una curva di apprendimento ridotta. Grazie al suo approccio basato sui componenti e al suo modello di rendering efficiente, possiamo sviluppare interfacce utente complesse e dinamiche con facilità, garantendo al contempo prestazioni elevate e una maggiore scalabilità.

L’ecosistema di React ci offre inoltre una vasta gamma di strumenti e librerie complementari, che ci permettono di implementare funzionalità avanzate come il routing, la gestione dello stato e la comunicazione in tempo reale in modo efficiente e affidabile.

Per tutti i servizi di sviluppo software e hardware il nostro team ti accompagna dall’analisi e progettazione fino allo sviluppo e mantenimento sul mercato della soluzione realizzata.

4b. Applicazioni web responsive e applicazioni mobile native Android/iOS

Abbiamo un reparto software FULL STACK che si occupa della realizzazione di applicazioni web e mobile performanti grazie a processi di sviluppo CI/CD collaudati.

3. Utilizzo Avanzato di Servizi Cloud: Scalabilità e Affidabilità al Centro della Nostra Architettura

Nella nostra infrastruttura di sviluppo, facciamo ampio uso di servizi cloud basati su microservizi, che ci consentono di creare architetture scalabili e resilienti in grado di gestire carichi di lavoro variabili e garantire la massima disponibilità e affidabilità delle nostre applicazioni. Attraverso l’utilizzo di tecnologie come Docker e Kubernetes, siamo in grado di orchestrare e gestire in modo efficiente container e microservizi distribuiti su un’ampia gamma di ambienti cloud.

Inoltre, disponiamo di un laboratorio di test dedicato, dove conduciamo una varietà di test rigorosi, tra cui test funzionali, di integrità, di performance, di sicurezza, di accettazione e di regressione per garantire che le nostre soluzioni soddisfino i più elevati standard di qualità e affidabilità prima del rilascio.

5.Laboratorio di test dedicato

Effettuiamo ogni test possibile per garantire la massima qualità dei servizi e prodotti che offriamo ai nostri Clienti.

Competenze, processi, tecnologie e test

In conclusione, il nostro team di sviluppo software è impegnato a fornire soluzioni di eccellenza attraverso l’utilizzo delle tecnologie più avanzate e un approccio rigoroso allo sviluppo. Con la nostra esperienza nel campo dello sviluppo di interfaccia HMI con Qt, dello sviluppo web con React e nell’utilizzo di servizi cloud basati su microservizi, siamo pronti ad affrontare le sfide più complesse e a fornire soluzioni su misura per le esigenze specifiche dei nostri clienti.

Contattaci per scoprire come possiamo aiutarti a portare la vostra visione al prossimo livello con soluzioni software di eccellenza e di qualità.

Piattaforma IoT per il controllo energetico

Soluzione per il controllo energetico e ambientale – BOX-IO

Piattaforma IoT per il controllo energetico

La soluzione tecnologica per il controllo e monitoraggio intelligente

BOX-IO è una piattaforma IoT completa e versatile che consente di acquisire, analizzare e gestire dati in tempo reale da qualsiasi ambiente o dispositivo. Questa piattaforma rappresenta un sistema integrato per l’acquisizione, l’analisi e il controllo dei dati provenienti da una varietà di sensori o dispositivi sul campo.

La piattaforma si compone di tre elementi chiave:

Centralina di controllo

Software e applicazioni Cloud

Sensori e dispositivi sul campo

Centralina di Controllo/Gateway:

Il cuore pulsante di BOX-IO, la centralina di controllo, è progettata per acquisire i dati dai sensori sul campo e trasmetterli al cloud. Caratterizzata da una connettività multiprotocollo wireless/wired, questa centralina può essere fornita in diversi formati per adattarsi alle esigenze specifiche di ogni progetto. La sua versatilità consente una facile integrazione con una vasta gamma di sensori, garantendo una raccolta dati affidabile e in tempo reale.

  • Acquisisce i dati dai sensori sul campo e li invia al Cloud
  • Multiprotocollo wireless/wired per una flessibilità di installazione.
  • Disponibile in diversi formati per adattarsi alle esigenze di ogni progetto.

Applicazione web e Servizi Cloud:

L’interfaccia web intuitiva di BOX-IO fornisce un accesso senza soluzione di continuità alle funzionalità di analisi dei dati, esportazione dati, controllo dispositivi e ricezione di allarmi/notifiche via email o SMS. Questo ambiente basato su cloud consente agli utenti di monitorare e gestire i propri dati da qualsiasi luogo e dispositivo connesso a Internet, offrendo un’esperienza senza soluzione di continuità e garantendo la massima flessibilità operativa.

  • Applicazione web accessibile da qualsiasi browser per una facile gestione.
  • Funzionalità avanzate di analisi dei dati, esportazione e controllo dei dispositivi.
  • Sistema di notifica via email o SMS per rimanere sempre aggiornati.
  • API documentate per la connessione con software di terze parti

Sensori e prodotti sul campo:

La piattaforma BOX-IO supporta sia sensori commerciali di alta qualità sia sensori progettati internamente per soddisfare specifiche esigenze di acquisizione dati sul campo. Questa flessibilità consente agli utenti di personalizzare la propria infrastruttura di sensori in base alle loro esigenze specifiche, garantendo una raccolta dati accurata e completa.

  • Ampia gamma di sensori commerciali compatibili.
  • Sviluppo di sensori customizzati per esigenze specifiche.
  • La centralina supporta centinaia di sensori nativamente
  • Integriamo qualsiasi prodotto o dispositivo del Cliente tramite protocolli di comunicazione aperti o chiusi

Soluzione di controllo e monitoraggio BOX-IO

Piattaforma di controllo IoT 

Quali sono i vantaggi della soluzione di controllo e monitoraggio BOX-IO?

Zero Costi di Infrastruttura e Installazione: BOX-IO è una piattaforma “as-a-service” che elimina la necessità di investimenti in infrastrutture e software. Grazie alla sua architettura basata su cloud e alla facilità di installazione dei dispositivi sul campo, BOX-IO elimina la necessità di costosi investimenti in infrastrutture hardware e installazioni complesse. Ciò si traduce in un rapido ritorno sull’investimento e in una maggiore agilità operativa per le organizzazioni di ogni dimensione.

Personalizzazione: La piattaforma è altamente personalizzabile per adattarsi alle esigenze specifiche di ogni cliente. Con la sua ampia gamma di dispositivi supportati e funzionalità configurabili, BOX-IO consente agli utenti di personalizzare la propria esperienza IoT per adattarsi alle esigenze specifiche del proprio settore e delle proprie operazioni. La personalizzazione della piattaforma consente al Cliente di ridurre drasticamente il time to market, concentrando l’effort esclusivamente sulle features piu specifiche per il progetto.

Centralizzazione dei dati: BOX-IO consente di acquisire dati da diverse sorgenti e di centralizzarli in un unico ambiente per una visione olistica. Grazie alla sua capacità di acquisire e consolidare dati da luoghi diversi in un’unica piattaforma centralizzata, BOX-IO offre una visione completa e integrata delle operazioni, consentendo decisioni più informate e tempestive.

Scalabilità: La piattaforma è facilmente scalabile per supportare la crescita del tuo business. Maggiore è il numero di installazioni e dispositivi controllati, migliore sarà l’economia di scala della soluzione

Sicurezza: BOX-IO offre i piu alti standard di livelli di sicurezza per la protezione dei tuoi dati.

Alcuni esempi in cui può essere impiegata la piattaforma IoT BOX-IO

Consumo Energetico: BOX-IO consente il monitoraggio in tempo reale del consumo energetico in ambienti industriali e commerciali, consentendo agli utenti di identificare e ridurre sprechi eccessivi e migliorare l’efficienza energetica complessiva.

Monitoraggio Ambientale: Controllo della qualità dell’aria, temperatura, umidità e altri parametri ambientali. Attraverso l’uso di sensori dedicati, BOX-IO supporta il monitoraggio ambientale per misurare l’inquinamento indoor all’interno di magazzini, edifici e luoghi di produzione.

Monitoraggio di Magazzini: Tracciamento di merci, temperatura, umidità e condizioni di stoccaggio. BOX-IO offre un’efficace soluzione per il monitoraggio in tempo reale delle condizioni ambientali e della sicurezza nei magazzini e nelle strutture di stoccaggio, consentendo una gestione ottimizzata delle scorte e una prevenzione degli incidenti. Inoltre è possibile controllare l’illuminazione in modo intelligente, in base alle condizioni di luminosità e al numero di persone presenti in tempo reale.

Monitoraggio di Siti Storici: Controllo dello stato di conservazione di edifici, monumenti e opere d’arte. Con la sua capacità di integrare una vasta gamma di sensori, BOX-IO è l’ideale per il monitoraggio e la conservazione di siti storici e monumenti, consentendo una protezione proattiva del patrimonio culturale e storico.

Monitoraggio di Prodotti: Attraverso l’uso di sensori intelligenti, BOX-IO consente il monitoraggio in tempo reale delle condizioni dei prodotti durante la produzione, il trasporto e la distribuzione, garantendo la qualità e la conformità del prodotto e migliorando la soddisfazione del cliente. E’ possibile inoltre utilizzare la scheda della centralina di controllo per acquisire i dati del tuo prodotto o servizio per creare un’applicazione mobile/web per il controllo e monitoraggio remoto.

In conclusione, la piattaforma BOX-IO rappresenta un’innovazione imprescindibile nel campo dell’IoT, offrendo una soluzione completa e personalizzabile per l’acquisizione, l’analisi e il controllo dei dati provenienti da una varietà di sensori sul campo o dal tuo prodotto. Con i suoi vantaggi distintivi e le sue molteplici applicazioni pratiche, BOX-IO si posiziona come una soluzione indispensabile per le organizzazioni che cercano di ottimizzare le proprie operazioni e rimanere competitive nel panorama sempre più dinamico del mercato globale.

Sviluppo di applicazioni web

Progettazione e Sviluppo di Applicazioni IoT: Ottimizzazione attraverso Servizi Cloud

Sviluppo di applicazioni web

Progettare e sviluppare applicazioni IoT reattive: ottimizzazione tramite servizi Cloud

Nell’ambito dell’Internet of Things (IoT), la progettazione e lo sviluppo di applicazioni reattive rivestono un ruolo cruciale. Questo articolo si concentra sull’ottimizzazione attraverso l’impiego di servizi cloud, mirando a migliorare la reattività delle applicazioni IoT per fornire un’esperienza utente più efficiente.

 

1. Architettura Scalabile

Un pilastro fondamentale per la progettazione di applicazioni IoT reattive è un’architettura scalabile. L’utilizzo di servizi cloud come AWS Lambda o Azure Functions consente la gestione dinamica del carico di lavoro in base alle richieste degli utenti, garantendo una pronta e efficiente risposta dell’applicazione.

Esempio Pratico

L’applicazione di monitoraggio degli asset potrebbe sfruttare servizi serverless per elaborare e rispondere rapidamente agli eventi di cambiamento di stato, assicurando la costante aggiornamento in tempo reale dei dati.

2. Gestione efficiente dei dati

Un aspetto critico per la reattività è la gestione efficiente dei dati. L’utilizzo di servizi cloud per l’archiviazione e il recupero dei dati, come Amazon S3 o Azure Blob Storage, garantisce un accesso rapido ai dati necessari per l’applicazione.

Esempio Pratico

Un’applicazione di monitoraggio ambientale potrebbe impiegare servizi di archiviazione cloud per mantenere dati storici facilmente accessibili, agevolando l’analisi delle tendenze nel tempo da parte degli utenti.

3. Sicurezza e autenticazione

La sicurezza è cruciale nelle applicazioni IoT reattive. L’adozione di servizi cloud per gestire l’autenticazione e l’autorizzazione assicura che solo gli utenti autorizzati possano accedere e interagire con i dispositivi connessi, garantendo un flusso di dati sicuro.

Esempio Pratico

Un’applicazione di controllo remoto per dispositivi industriali potrebbe sfruttare servizi cloud per garantire connessioni sicure e autenticare solo utenti autorizzati a operare sui macchinari.

4. Ottimizzazione delle prestazioni

Per garantire la massima reattività nelle applicazioni IoT, è essenziale concentrarsi sull’ottimizzazione delle prestazioni attraverso l’adozione di pratiche avanzate. L’utilizzo di strumenti e servizi di monitoraggio delle prestazioni, come AWS CloudWatch o Azure Monitor, consente di identificare e risolvere eventuali inefficienze o bottleneck nell’esecuzione dell’applicazione. Inoltre, la parallelizzazione di processi critici e l’ottimizzazione del codice possono contribuire significativamente a migliorare i tempi di risposta, assicurando un funzionamento ottimale dell’applicazione anche in scenari ad alta complessità.

Esempio:

Un’applicazione IoT che gestisce un vasto numero di sensori potrebbe beneficiare dell’ottimizzazione delle prestazioni per ridurre il tempo di elaborazione dei dati, consentendo una risposta istantanea alle variazioni di stato rilevate dai sensori.

L’ottimizzazione delle prestazioni si configura come una componente fondamentale per garantire la reattività delle applicazioni IoT, assicurando un funzionamento efficiente e tempi di risposta minimi anche in contesti operativi complessi.

Conclusioni:

La progettazione di applicazioni IoT reattive è un processo intricato che richiede particolare attenzione alla reattività e all’ottimizzazione. Sfruttare appieno i servizi cloud per garantire una distribuzione scalabile, gestione efficiente dei dati e sicurezza avanzata è essenziale per offrire un’esperienza utente senza interruzioni nell’evolvente ecosistema IoT.

Facebook
LinkedIn
Sviluppo di applicazioni web e cloud

Progettare e sviluppare applicazioni web scalabili

Sviluppo di applicazioni web e cloud

Applicazioni web scalabili: come progettarle e svilupparle.

Nell’universo dello sviluppo di applicazioni web, la scalabilità è una caratteristica fondamentale che impatta direttamente sulle prestazioni, sulla resilienza e sulla gestione delle risorse cloud. In questo articolo, esploreremo in modo più approfondito i concetti tecnici alla base dello sviluppo di applicazioni web scalabili e forniremo un esempio pratico per illustrare tali concetti in azione.

1. Progettazione Scalabile: Fondamenti Tecnici

La progettazione scalabile richiede una struttura che possa crescere in modo efficiente rispondendo alla crescente domanda degli utenti. Consideriamo un’architettura basata su microservizi, in cui le diverse funzionalità dell’applicazione sono suddivise in moduli autonomi. Questo permette una maggiore flessibilità nella distribuzione e nell’aggiornamento delle funzionalità senza impattare l’intero sistema.

Esempio Pratico
Immaginiamo di sviluppare un’applicazione di e-commerce. Invece di avere un unico monolite che gestisce tutto, potremmo separare le funzionalità principali come gestione degli utenti, gestione dei prodotti e gestione degli ordini in microservizi distinti. Questo consente di aggiornare e scalare singoli servizi senza influenzare l’intera applicazione.

2. Scelta delle Tecnologie Adeguata: Approfondimenti Tecniche

La selezione del giusto stack tecnologico è cruciale. Ad esempio, potremmo optare per un framework di sviluppo come Spring Boot per i microservizi in Java, utilizzando database NoSQL come MongoDB per la gestione dei dati. L’uso di containerizzazione con Docker e orchestrazione con Kubernetes facilita la distribuzione e la gestione delle istanze delle applicazioni.

Esempio Pratico
Consideriamo l’uso di Kubernetes per orchestrare i microservizi. Possiamo definire configurazioni di scaling automatico in base alla carica di lavoro, consentendo al sistema di adattarsi dinamicamente all’aumento o alla diminuzione del traffico. Inoltre, l’implementazione di un sistema di messaggistica asincrona come Apache Kafka potrebbe migliorare la gestione degli eventi tra i microservizi.

3. Ottimizzazione delle Prestazioni: Dettagli Tecnici

L’ottimizzazione delle prestazioni richiede una comprensione approfondita del funzionamento interno dell’applicazione. Utilizziamo strumenti di profilazione del codice per identificare le aree critiche, ottimizziamo le query del database e implementiamo caching a diversi livelli per ridurre i tempi di risposta.

Esempio Pratico
Implementiamo una strategia di caching con Redis per memorizzare in modo veloce i risultati di query frequenti. Inoltre, possiamo utilizzare tecniche di compressione per ridurre la dimensione dei dati scambiati tra il client e il server, migliorando ulteriormente le prestazioni.

Conclusione

In conclusione, lo sviluppo di applicazioni web scalabili richiede una progettazione attenta e l’implementazione di soluzioni tecnologiche avanzate. Attraverso la suddivisione in microservizi, la scelta di un adeguato stack tecnologico e l’ottimizzazione delle prestazioni, è possibile realizzare applicazioni web robuste che possono crescere in modo dinamico e garantire un’esperienza utente senza soluzione di continuità.

Facebook
LinkedIn
Piattaforme-IoT (1)

Sviluppo Firmware per dispositivi IoT con FreeRTOS

Piattaforme-IoT (1)

Sviluppo Firmware per dispositivi IoT con FreeRTOS

FreeRTOS è un sistema operativo in tempo reale (RTOS) open source e gratuito, progettato per applicazioni embedded e IoT. FreeRTOS offre una serie di vantaggi per lo sviluppo di firmware, tra cui:

 

  • Gestione semplice e flessibile dei task, delle priorità e della sincronizzazione
  • Supporto per diversi protocolli di comunicazione, come MQTT, HTTP e BLE
  • Integrazione con AWS IoT Core e altri servizi cloud
  • Portabilità su diverse architetture e piattaforme hardware
  • Supporto a tecnologie per la riduzione del consumo di energia

     

In questo articolo, vedremo come sviluppare un firmware per un dispositivo IoT basato su ESP32, una scheda di sviluppo con un SoC (System on a Chip) che integra un microcontrollore, una connessione Wi-Fi e Bluetooth, e vari sensori e periferiche. Il nostro obiettivo sarà quello di creare un dispositivo che misuri la temperatura e l’umidità dell’ambiente e le invii ad Azure IoT Central, una piattaforma cloud che consente di gestire e monitorare i dispositivi IoT.

Fase 1: Progettazione Firmware

La prima fase dello sviluppo del firmware è la progettazione, in cui si definiscono le specifiche e le funzionalità del dispositivo, si sceglie l’hardware e il software necessari, e si progetta l’architettura e il flusso del programma.

Per il nostro progetto, abbiamo bisogno di:

 

  • Una scheda ESP32 DevKit, che ci fornirà il SoC, la connessione Wi-Fi e Bluetooth, e una porta USB per la programmazione e il debug
  • Un sensore DHT11, che ci permetterà di misurare la temperatura e l’umidità dell’aria
  • Un cavo micro USB, per collegare la scheda al computer
  • Un account Azure, per creare e accedere ad Azure IoT Central
  • Un ambiente di sviluppo integrato (IDE), per scrivere e compilare il codice
  • Un framework di sviluppo, per facilitare la programmazione e l’integrazione con i servizi cloud

     

Per l’IDE, possiamo usare Visual Studio Code, un editor di codice gratuito e multipiattaforma, che supporta vari linguaggi e strumenti. Per il framework di sviluppo, possiamo usare ESP-IDF, il framework ufficiale di Espressif per ESP32, che include FreeRTOS e diversi componenti e librerie per lo sviluppo di applicazioni IoT.

L’architettura del nostro firmware sarà basata sul modello a task di FreeRTOS, in cui il programma è suddiviso in unità di esecuzione indipendenti e concorrenti, chiamate task, che vengono schedulate dal kernel di FreeRTOS in base alle loro priorità e alle risorse disponibili. Il nostro firmware avrà tre task principali:

 

  • Un task per la lettura dei dati dal sensore DHT11, che verrà eseguito periodicamente ogni 5 secondi
  • Un task per la connessione al Wi-Fi e ad Azure IoT Central, che verrà eseguito una sola volta all’avvio del dispositivo
  • Un task per l’invio dei dati ad Azure IoT Central, che verrà eseguito ogni volta che riceve un messaggio dal task del sensore

     

Il flusso del nostro firmware sarà il seguente:

 

  • All’accensione del dispositivo, il task di connessione si occupa di stabilire la connessione Wi-Fi e di registrare il dispositivo ad Azure IoT Central, usando le credenziali fornite
  • Il task di connessione crea una coda di messaggi, che userà per comunicare con il task di invio
  • Il task di connessione avvia il task di lettura e il task di invio, e termina la sua esecuzione
  • Il task di lettura legge i valori di temperatura e umidità dal sensore DHT11, li converte in un formato JSON, e li invia alla coda di messaggi
  • Il task di invio riceve i messaggi dalla coda, e li invia ad Azure IoT Central, usando il protocollo MQTT
  • Il task di invio riceve anche i comandi e le proprietà da Azure IoT Central, e li gestisce in modo appropriato

Fase 2: Implementazione Firmware

La seconda fase dello sviluppo del firmware è l’implementazione, in cui si scrive il codice sorgente, si compila il programma, e si carica il firmware sulla scheda ESP32.

Per scrivere il codice, possiamo seguire i seguenti passi:

 

  • Installare Visual Studio Code e le estensioni necessarie, come ESP-IDF e C/C++
  • Creare un nuovo progetto ESP-IDF, usando il comando ESP-IDF: Create Project
  • Aprire il file main.c nella cartella main, dove scriveremo il codice del nostro firmware
  • Includere le librerie necessarie, come freertos/FreeRTOS.h, freertos/task.h, freertos/queue.h, esp_wifi.h, esp_log.h, dht.h, e azure_iot.h
  • Definire le costanti e le variabili globali, come il nome e la password della rete Wi-Fi, le credenziali di Azure IoT Central, i pin del sensore DHT11, gli handle dei task e della coda, e il tag per il logging
  • Scrivere le funzioni per la creazione e la gestione dei task, seguendo la logica descritta nella fase di progettazione
  • Scrivere la funzione app_main, che verrà chiamata all’avvio del dispositivo, e che si occuperà di inizializzare il sistema, creare il task di connessione, e avviare il kernel di FreeRTOS

     

Per compilare il programma, possiamo usare il comando ESP-IDF: Build, che eseguirà il tool idf.py e genererà il file binario del firmware. Per caricare il firmware sulla scheda ESP32, possiamo usare il comando ESP-IDF: Flash, che eseguirà il tool esptool.py e trasferirà il file binario sulla memoria flash del SoC. Per monitorare il comportamento del dispositivo, possiamo usare il comando ESP-IDF: Monitor, che aprirà una finestra di terminale e mostrerà i messaggi di log inviati dal firmware.

 

Questo è il task che si occupa della lettura periodica del sensore di umidità, usando la libreria DHT11 per ESP-IDF. La lettura avviene ogni 5 secondi e i valori letti vengono salvati in 2 variabili apposite.

Nel secondo blocco vi è il task che, una volta collegato ad Azure tramite l'Azure iothub C sdk di Microsoft, pubblica ogni 10s il messaggio contenete i valori delle 2 variabili lette dal sensore

In questo blocco è presente il punto di entrata del codice, ovvero l'app_main(), che si occupa dell'inizializzazione della periferica WiFi, del task di lettura periodica del DHT11 e del task che si collega ad Azure.

Fase 3: Test e Debug Firmware

La terza fase dello sviluppo del firmware è il test e il debug, in cui si verifica il funzionamento del dispositivo, si individuano e si correggono gli eventuali errori, e si ottimizza il codice e le prestazioni.

Per testare il dispositivo, possiamo usare Azure IoT Central, che ci permetterà di visualizzare i dati inviati dal dispositivo, di inviare comandi e proprietà al dispositivo, e di configurare le regole e le azioni per il monitoraggio e l’analisi dei dati. Per accedere ad Azure IoT Central, possiamo seguire i seguenti passi:

 

  • Creare un account Azure, se non lo abbiamo già
  • Accedere al portale di Azure, e creare una nuova applicazione IoT Central, scegliendo il modello Custom app
  • Nella dashboard dell’applicazione, cliccare su Device templates, e creare un nuovo modello di dispositivo, scegliendo il tipo IoT device
  • Nella pagina del modello, cliccare su Import capability model, e importare il file JSON che contiene la definizione delle capacità del nostro dispositivo, come la temperatura, l’umidità, il comando di reset, e la proprietà di intervallo di lettura
  • Nella pagina del modello, cliccare su Views, e personalizzare le viste del dispositivo, come la dashboard, le impostazioni, i comandi, e i grafici
  • Nella pagina del modello, cliccare su Publish, e pubblicare il modello, in modo che possa essere usato dai dispositivi
  • Nella dashboard dell’applicazione, cliccare su Devices, e aggiungere un nuovo dispositivo, scegliendo il modello appena creato, e assegnandogli un nome e un ID
  • Nella pagina del dispositivo, cliccare su Connect, e copiare le credenziali di connessione, come l’ID dello scope, l’ID del dispositivo, e la chiave primaria
  • Inserire le credenziali di connessione nel codice del firmware, e ricompilare e ricaricare il firmware sulla scheda ESP32

     

     

A questo punto, il dispositivo dovrebbe essere connesso ad Azure IoT Central.

Fase 4: Deploy e Monitoraggio

L’ultima fase dello sviluppo del firmware è il deploy e il monitoraggio, in cui si distribuisce il firmware sui dispositivi finali, si gestisce il ciclo di vita del firmware, e si monitorano le prestazioni e la sicurezza dei dispositivi.

Per distribuire il firmware sui dispositivi finali, possiamo usare diverse tecniche, come il flashing OTA (Over-The-Air), il provisioning automatico, o il deployment tramite container. Per gestire il ciclo di vita del firmware, possiamo usare Azure IoT Hub, che ci permetterà di creare e gestire i dispositivi, di distribuire il firmware, di monitorare le prestazioni e la sicurezza, e di ricevere gli allarmi e le notifiche in caso di problemi.

Per monitorare le prestazioni e la sicurezza dei dispositivi, possiamo usare Azure Monitor, che ci permetterà di raccogliere e analizzare i dati di telemetria, di visualizzare le metriche e i log, di creare le dashboard e gli alert, e di integrare con altri servizi di monitoraggio e di analisi.

 

In questo articolo, abbiamo visto come sviluppare un firmware per dispositivi IoT con FreeRTOS, partendo dalla progettazione e arrivando al deploy e al monitoraggio. FreeRTOS offre una soluzione completa e flessibile per lo sviluppo di firmware, che può essere integrata con diversi servizi cloud, come AWS IoT Core e Azure IoT Hub, per creare soluzioni IoT scalabili e sicure.

 

Leggi ancora

Facebook
LinkedIn
Analisi dei dati IoT

Analisi dei dati IoT: tecniche e strumenti per insights in tempo reale

Analisi dei dati IoT

Strumenti e tecniche di analisi dei dati in tempo reale

L’Internet delle Cose (IoT) ha rivoluzionato il modo in cui raccogliamo e utilizziamo i dati. Con un’enorme quantità di dispositivi connessi, siamo in grado di ottenere informazioni in tempo reale provenienti da una vasta gamma di fonti. Tuttavia, il vero valore dell’IoT risiede nell’analisi dei dati generati da questi dispositivi, poiché ciò permette di ottenere insights preziosi per prendere decisioni strategiche e migliorare l’efficienza operativa.

In questo articolo, esploreremo le tecniche e gli strumenti chiave per condurre analisi dei dati IoT in tempo reale, con un esempio pratico per dimostrare il loro impiego.

I vantaggi dell’analisi dei dati IoT in tempo reale

L’analisi dei dati IoT in tempo reale offre un vantaggio competitivo significativo alle aziende, consentendo loro di prendere decisioni istantanee basate su dati accurati. Questa rapidità di reazione è essenziale in settori come la produzione, la logistica, la sanità e il monitoraggio ambientale.

L’analisi dei dati nel nostro ambiente operativo ci permette di conseguire diversi vantaggi tra cui:

  1. Tempestività delle informazioni: Le aziende possono ricevere informazioni istantanee sugli eventi critici, come guasti di apparecchiature o anomalie, permettendo una risposta rapida ed efficace.
  2. Previsione e prevenzione: L’analisi in tempo reale consente alle aziende di prevedere problemi potenziali prima che si verifichino, consentendo azioni preventive.
  3. Efficienza operativa: Le operazioni possono essere ottimizzate e automatizzate grazie alla disponibilità di dati aggiornati in tempo reale.
  4. Riduzione dei costi: La rilevazione tempestiva di problemi e l’efficienza operativa possono ridurre i costi di manutenzione e le interruzioni dell’attività.

Tecniche per l’analisi dei dati in tempo reale

Ci sono diverse tecniche per analizzare i dati in tempo reale, per semplicità supponiamo di dare per scontato la fase di raccolta, acquisizione e selezione dei dati, un attività generalmente molto costosa ma necessaria. Tra le tecniche più comuni troviamo:

  1. Streaming di dati: L’analisi dei dati IoT in tempo reale si basa sull’elaborazione continua dei flussi di dati generati dai dispositivi connessi. Tecnologie come Apache Kafka e Apache Flink consentono l’acquisizione, l’elaborazione e l’archiviazione dei dati in streaming.
  2. Analisi predittiva: Utilizzando algoritmi di machine learning, è possibile applicare analisi predittive ai dati IoT in tempo reale per rilevare tendenze, anomalie e comportamenti imprevisti.
  3. Analisi di serie temporali: L’analisi delle serie temporali è fondamentale per identificare pattern ciclici e stagionali nei dati IoT, aiutando a prevedere i futuri andamenti e a prendere decisioni proattive.
  4. Filtraggio dei dati: Poiché i dispositivi IoT generano enormi quantità di dati, è essenziale applicare filtri per concentrarsi solo sulle informazioni rilevanti, ottimizzando le risorse di elaborazione.

Strumenti per l’analisi dei dati IoT in tempo reale

Vediamo ora alcuni strumenti e software utili che utilizziamo in EDALAB per fornire ai nostri Clienti un analisi dei loro dati in modo rapido ed economico. Per progetti più complessi ci integriamo spesso al team di ricercatori del laboratorio ICE dell’Università di Verona, esperti in data intelligence e machine learning. Tuttavia per conseguire risultati in breve tempo, questi sono gli strumenti che possono essere utili:

Apache Spark: Questo framework di elaborazione dati offre una potente piattaforma per l’analisi in tempo reale di grandi volumi di dati, garantendo elevate prestazioni e scalabilità.

Grafana: Uno strumento di visualizzazione dei dati che consente di creare dashboard interattive e report per monitorare i dati IoT in tempo reale.

TensorFlow: Una libreria di machine learning open-source che supporta l’implementazione di algoritmi di analisi predittiva su dati in tempo reale.

Esempio pratico: Ottimizzazione della linea di produzione

Supponiamo di avere una linea di produzione automatizzata per la fabbricazione di componenti industriali e vogliamo migliorare l’efficienza dell’impianto (per esempio riducendo i fermi macchina). Utilizzando sensori intelligenti posizionati sui macchinari, raccogliamo costantemente dati relativi alla temperatura di lavoro, ai livelli di vibrazione e alla produzione effettuata.

Attraverso il software di analisi in tempo reale dei dati IoT con la piattaforma BOX-IO, possiamo rilevare un aumento anomalo della temperatura su uno dei macchinari, ricevendo in tempo reale una notifica e generando un allarme di automazione. Grazie all’applicazione di algoritmi di anomaly detection, possiamo identificare la causa del problema, quale ad esempio un guasto nel sistema di raffreddamento.

Sfruttando la tecnologia di Digital Twin (in EDALAB sviluppata in collaborazione con il laboratorio ICE dell’Università di Verona), possiamo simulare il funzionamento del macchinario e testare diverse strategie di raffreddamento per trovare la soluzione più efficace. Successivamente, il Cliente potrà decidere di portare le modifiche necessarie sul macchinario reale e verificare i risultati conseguiti.

In questo modo, siamo in grado di prevenire fermi macchina dovuti a guasti critici, migliorando l’efficienza della linea di produzione e garantendo una maggiore qualità del prodotto finale.

Conclusione

L’analisi dei dati IoT in tempo reale offre un potenziale enorme per migliorare le operazioni aziendali e prendere decisioni informate in modo rapido ed efficiente. Utilizzando le giuste tecniche e strumenti, come lo streaming di dati, l’analisi predittiva e combinando strumenti come Apache Spark e Grafana, le aziende possono sfruttare appieno i vantaggi dell’IoT e ottenere insights preziosi per raggiungere il successo. Investire nell’analisi dei dati IoT in tempo reale è essenziale per rimanere competitivi nel panorama aziendale sempre più digitalizzato e connesso dei giorni nostri.



Facebook
LinkedIn

Leggi ancora

Sviluppo Firmware embedded

Sviluppo di firmware per dispositivi IoT basati su ESP8266 e ESP32

Sviluppo-Firmware-Embedded (1)

Sviluppo di Firmware per Dispositivi IoT basati su ESP8266 e ESP32

Nell’ambito dell’Internet of Things (IoT), gli ESP8266 e ESP32 rappresentano due microcontrollori ampiamente utilizzati in vari ambiti di mercato, noti per la loro potenza, versatilità e integrazione della connettività Wi-Fi. La creazione di firmware per dispositivi IoT basati su ESP8266 e ESP32 richiede una profonda comprensione dell’hardware, del software e dei principi di sviluppo embedded. In questo articolo, esamineremo il processo di sviluppo di firmware per un dispositivo IoT basato su ESP8266 o ESP32, evidenziando le differenze e le peculiarità di ciascun microcontrollore.

1. Panoramica del processo di sviluppo firmware

La creazione di firmware per dispositivi IoT basati su ESP8266 e ESP32 implica una serie di fasi cruciali, ma prima di immergerci nei dettagli, vediamo le principali differenze tra i due microcontrollori:

Differenze chiave tra ESP8266 e ESP32:

1. Prestazioni

   – ESP8266: Questo microcontrollore è dotato di un processore a singolo core a 32 bit con frequenza di clock fino a 80 MHz. Ha una potenza di calcolo inferiore rispetto all’ESP32.

   – ESP32: L’ESP32 è dotato di un processore dual-core a 32 bit con frequenza di clock che può raggiungere i 240 MHz. Le prestazioni superiori lo rendono ideale per applicazioni più complesse.

2. Memoria

   – ESP8266: Offre una quantità limitata di memoria flash e RAM, il che può limitare l’archiviazione dei dati e la complessità del firmware.

   – ESP32: Dispone di più memoria flash e RAM, consentendo di gestire firmware più ampi e dati più complessi.

3. Connettività

   – ESP8266: Si concentra principalmente sulla connettività Wi-Fi, ma è possibile aggiungere supporto per Bluetooth utilizzando moduli esterni.

   – ESP32: Oltre alla connettività Wi-Fi, dispone di Bluetooth integrato, rendendolo ideale per applicazioni IoT che richiedono entrambe le connettività.

4. GPIO e Periferiche

   – ESP8266: Fornisce un numero limitato di GPIO, porte analogiche e periferiche di I/O. Adatto per progetti meno complessi.

   – ESP32: Offre un numero significativamente maggiore di GPIO, porte analogiche e una vasta gamma di periferiche, rendendolo ideale per progetti complessi e variegati.

5. Consumo Energetico

   – ESP8266 Consuma meno energia rispetto all’ESP32, il che lo rende adatto per applicazioni a basso consumo energetico.

   – ESP32: Pur offrendo prestazioni superiori, consuma più energia, il che può limitarne l’utilizzo in applicazioni alimentate a batteria.

I passaggi per sviluppare firmware in ambito embedded possono essere divisi in 3 grandi fasi.

Fase 1: Configurazione dell’Ambiente di sviluppo e dell’Hardware

La prima fase della creazione di firmware per dispositivi IoT basati su ESP8266 e ESP32 riguarda la configurazione dell’ambiente di sviluppo e la definizione dell’hardware necessario. Questa fase è essenziale per avviare il progetto in modo corretto e efficiente, ma le differenze tra i due microcontrollori devono essere tenute presenti durante la preparazione iniziale.

Configurazione dell’Ambiente di Sviluppo

  1. Ambiente di Sviluppo: Iniziamo selezionando un ambiente di sviluppo adeguato. È comune utilizzare PlatformIO in combinazione con un editor di testo avanzato come Visual Studio Code. All’interno dell’ambiente di sviluppo, è necessario assicurarsi di avere il supporto per ESP8266 e/o ESP32 installato e configurato correttamente. Le istruzioni dettagliate per questa configurazione possono variare in base all’ambiente di sviluppo scelto.

Peculiarità Specifiche di ESP8266 e ESP32

ESP8266: Quando si configura l’ambiente per ESP8266, è importante notare che le librerie per la connettività Wi-Fi e, se necessario, Bluetooth, devono essere selezionate in modo appropriato. Inoltre, è importante tenere presente che l’ESP8266 dispone di risorse limitate in termini di memoria e prestazioni, pertanto è più adatto per progetti con requisiti di risorse relativamente bassi.

ESP32: La configurazione dell’ambiente per ESP32 richiede la selezione delle librerie per la gestione separata di Wi-Fi e Bluetooth. Grazie al maggior numero di GPIO e alla maggiore quantità di memoria flash e RAM, l’ESP32 è più adatto a progetti complessi che richiedono una vasta gamma di periferiche e funzionalità.

Definizione dell’Hardware Necessario:

  1. Conoscenza dell’Hardware: Per entrambi i microcontrollori, è fondamentale studiare attentamente il datasheet del microcontrollore, che contiene informazioni dettagliate sulle specifiche tecniche e i pinout. Questo passo è cruciale per comprendere come collegare fisicamente il microcontrollore con gli altri componenti del dispositivo IoT.

Peculiarità Specifiche di ESP8266 e ESP32

ESP8266: Nella definizione dell’hardware, considerate che l’ESP8266 offre un numero limitato di GPIO, porte analogiche e periferiche di I/O. Questo può influire sulla scelta dei sensori, attuatori e dispositivi da collegare, ed è ideale per progetti meno complessi con requisiti di risorse inferiori.

ESP32: L’ESP32 offre una gamma significativamente più ampia di GPIO, porte analogiche e periferiche, rendendolo ideale per progetti più complessi e variegati. La maggiore versatilità dei pin GPIO consente una più ampia scelta di dispositivi da collegare.

In questa prima fase, la configurazione dell’ambiente di sviluppo e la definizione dell’hardware costituiscono le basi per il successo del progetto. Comprendere le differenze e le peculiarità tra ESP8266 e ESP32 è fondamentale per fare scelte adeguate durante questa fase iniziale.

Fase 2: Sviluppo del Codice

In questa fase, sviluppiamo il codice del firmware, inclusa la definizione delle funzioni e delle logiche necessarie per acquisire e trasmettere i dati di temperatura. Considerando le peculiarità:

ESP8266: Il codice deve essere ottimizzato per l’uso efficiente delle risorse limitate di memoria e CPU. È adatto per applicazioni più semplici che non richiedono prestazioni eccezionali.

ESP32: L’ESP32 permette una maggiore complessità del codice, grazie alle prestazioni superiori e alle risorse abbondanti. È ideale per progetti che richiedono calcoli più intensivi e comunicazioni più avanzate.

Fase 3: Gestione della Connettività Wi-Fi e Sicurezza

In questa fase, affrontiamo la configurazione della connettività Wi-Fi e l’implementazione di misure di sicurezza. Considerando le peculiarità:

ESP8266: Richiede configurazioni specifiche per la connessione Wi-Fi, e le misure di sicurezza dovrebbero essere implementate in base alle limitate risorse disponibili.

ESP32: Con il supporto Bluetooth integrato, offre maggiore versatilità nelle opzioni di connettività. La gestione della sicurezza può essere più avanzata grazie alle risorse aggiuntive.

In conclusione, la creazione di firmware per dispositivi IoT basati su ESP8266 e ESP32 richiede una comprensione approfondita delle differenze e delle peculiarità di ciascun microcontrollore. La scelta tra i due dipende dalle esigenze specifiche del progetto, considerando prestazioni, risorse, connettività e complessità del firmware.

Facebook
LinkedIn

Leggi ancora