Creiamo un orizzonte artificiale per Arduino Every

Arduino orizzonte artificiale BNO055

Oggi analizzeremo un progetto con un Arduino UNO, che prevede il pilotaggio di un display OLED attraverso i dati di un giroscopio BNO055.

Utilizzando un Arduino UNO, un OLED Waveshare 128×128 1.5″ e un giroscopio Adafruit BNO055 creiamo un semplice orizzonte artificiale e un indicatore direzionale che funziona in posizione verticale e invertita. Attenzione: Non per l’uso in volo… solo per scopi didattici.

Il codice disegna un orizzonte costituito da una linea orizzontale e due linee ortogonali per dare prospettiva. Successivamente disegna un piccolo diagramma fisso dell’aereo simile a quello effettivamente utilizzato in molti dispositivi reali composto da 4 linee come questa: —V—. Le linee dell’orizzonte si inclinano e ruotano in base all’input del giroscopio, con una lettura media di 20 ms circa. Per semplificare la vita si utilizza un’area di visualizzazione normalizzata -1–+1 per il disegnoe la rotazione delle linee in quel sistema di coordinate.

A questo punto è necessario rimappare il nostro grafico su una mappa da 128×64 bit che viene poi caricata sulla mappa da 128x128x4 bit nella waveshare raddoppiando le righe e mappando ogni singolo pixel su completamente bianco o spento. Ciò è necessario perché Arduino UNO non dispone di memoria sufficiente per archiviare l’intera immagine. Su un processore con prestazioni più elevate o con maggiore memoria sarà possibile estendere il progetto aggiungendo il blu del cielo, il marrone/arancio del terreno e così via.

Oltre all’orizzonte e al piccolo aereo stilizzato, il display mostra anche una rotta (heading) calcolata dal giroscopio.

Quando il dispositivo si alimenta per la prima volta, viene calcolato il flusso magnetico massimo per utilizzarlo come riferimento del nord, quindi viene regolato ciò che secondo il giroscopio rappresenta l’imbardata attuale e calcola quale sarebbe rispetto alla posizione del NORD calcolata prima. Durante il periodo in cui tenta di individuare il nord, appare una X sopra la direzione. Allo stesso modo, se il giroscopio non segnala che si sta calibrando o è calibrato, viene disegnata una grande X sull’intero display.

Il codice sorgente di Peter Ashwood Smith è disponibile gratuitamente su GitHub.

 

Link utili:

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.