Scannerizzare immagini e disegnarle sul monitor del PC

Salve a tutti,

vorrei capire se è possibile plottare dei punti sullo schermo del PC, in base alle risultanze dei sensori inviate da Arduino.

Mi spiego meglio, partendo da uno scanner con sensore ad ultrasuoni oppure laser (tipo lidar), anche un banale scanner costruito con un sensore ad ultrasuoni montato su un servocomando 180° (es. kit Dfrobot tipo KIT0020) ...

... vorrei capire se è possibile utilizzare il linguaggio e le librerie di Arduino per plottare e visualizzare sul monitor del PC, tutti i punti scansionati e rilevati dal sensore, in modo da visualizzare (anche grossolanamente) una sorta di immagine scansionata ...

Grazie.
Gianni

Certo, mandi alla seriale i dati (la coppia posizione in gradi del sensore, e distanza rilevata), ed un software su PC rileva queste informazioni accumulandole e plottando i punti corrispondenti (convertendo le coordinate da polari a cartesiane e da qui resize sullo schermo).
Ma il problema quindi è farlo lato PC, su Arduino c'è poco... :wink:

Se cerchi in internet qualcosa del tipo "Arduino Radar sensor"

docdoc:
Certo, mandi alla seriale i dati (la coppia posizione in gradi del sensore, e distanza rilevata), ed un software su PC rileva queste informazioni accumulandole e plottando i punti corrispondenti (convertendo le coordinate da polari a cartesiane e da qui resize sullo schermo).
Ma il problema quindi è farlo lato PC, su Arduino c'è poco... :wink:

Ciao docdoc ...

lato Arduino sarebbe possibile comunque utilizzare la finestra del plotter seriale (Plotter Seriale arduino IDE 1.6) ? ... giusto per vedere graficamente cosa sta rilevando lo scanner ?

In che senso ? Quello fa un plotting, ovvero una striscia continua da sinistra a destra e basta (tipo un cardiogramma).
esempio: New Arduino Serial Plotter

GianniDS:
vorrei capire se è possibile plottare dei punti sullo schermo del PC, in base alle risultanze dei sensori inviate da Arduino.

Questo è facile da fare, basta che invii sulla seriale gradi e distanza rilevata dal sensore e la visualizzi come preferisci, nel caso di sensore rotante la visualizzazione è quella classica in stile radar.

Mi spiego meglio, partendo da uno scanner con sensore ad ultrasuoni

Con un sensore ad ultrasuoni ottieni risultati pessimi, questo per via del cono di apertura che è sempre di qualche decina di gradi, è come usare un pennello enorme per disegnare una riga sottile. :slight_smile:
Se la distanza da rilevare non è superiore a 150 cm potresti usare un telemetro Sharp, ha un spot di solo 15 mm a 150 cm di distanza.
Se la distanza sono metri allora diventa obbligatorio usare un Lidar con tutti i costi che questo comporta, questo è uno dei più economici e funziona molto bene.

nid69ita:
In che senso ? Quello fa un plotting, ovvero una striscia continua da sinistra a destra e basta (tipo un cardiogramma).
esempio: New Arduino Serial Plotter

sì ... difatti non mi sono spiegato bene ...

... intendevo una finestra grafica che consentisse il plottaggio di linee, punti, cerchi per disegnare su due dimensioni qualcosa di tridimensionale ... per intenderci una sorta di finestra grafica plottabile come quelle che esistevano per GWBASIC su PC o per il BASIC su Commodore ...

astrobeed:
Questo è facile da fare, basta che invii sulla seriale gradi e distanza rilevata dal sensore e la visualizzi come preferisci, nel caso di sensore rotante la visualizzazione è quella classica in stile radar.

Con un sensore ad ultrasuoni ottieni risultati pessimi, questo per via del cono di apertura che è sempre di qualche decina di gradi, è come usare un pennello enorme per disegnare una riga sottile. :slight_smile:
Se la distanza da rilevare non è superiore a 150 cm potresti usare un telemetro Sharp, ha un spot di solo 15 mm a 150 cm di distanza.
Se la distanza sono metri allora diventa obbligatorio usare un Lidar con tutti i costi che questo comporta, questo è uno dei più economici e funziona molto bene.

Bentrovato Astrobeed,

io avevo visto quest’oggettino laser della Adafruit Adafruit VL53L0X Time of Flight Distance Sensor - ~30 to 1000mm : ID 3317 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits costa 45 euro … pensi possa andare per distanze entro il metro ?

GianniDS:
io avevo visto quest'oggettino laser della Adafruit Adafruit VL53L0X Time of Flight Distance Sensor - ~30 to 1000mm : ID 3317 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits costa 45 euro ... pensi possa andare per distanze entro il metro ?

Se ti basta un metro come sensore va bene, costa solo 15 E il modulo di Adafruit, non 45, il solo sensore costa circa 5 E preso da Mouser o Digikey, il prossimo ordine che faccio da loro ne prendo uno per provarlo.

astrobeed:
Se ti basta un metro come sensore va bene, costa solo 15 E il modulo di Adafruit, non 45, il solo sensore costa circa 5 E preso da Mouser o Digikey, il prossimo ordine che faccio da loro ne prendo uno per provarlo.

Sì hai ragione costa 15 euro e c'è anche un modello minore ...

Volevo chiedere anche un'altra cosetta ...

Stavo copiando un paio di sketch già belli e pronti sul sito http://howtomechatronics.com/projects/arduino-radar-project/ (gentilmente suggeritomi da nid69ita), uno da uploadare su Arduino e l'altro da far girare sull'IDE del PC per disegnare il radar ...

Ebbene sul secondo sketch di 149 righe ... proprio a riga 1, 2 e 3 ci sono le istruzioni per puntare le librerie:

import processing.serial.*; // imports library for serial communication
import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
import java.io.IOException;

... ma la compilazione cade subito in errore (exit status 1 'import' does not name a type) ...

domanda 1: non si dovrebbe usare l'istruzione #include anziché import ?

domanda 2: ho controllato tramite la funzione IDE "library manager" e tali librerie non compaiono fra quelle standard di Arduino ... sono librerie java esterne ? ... sai mica dove posso trovarle ?

Gentilmente puoi (potete) darmi una dritta per superare questo impasse ? :wink:

Grazie
Gianni

Il secondo programma NON per per l'IDE di Arduino sul PC, ma è per "Processing" che devi far girare su PC !

Guglielmo

P.S.: è un ambiente simile a quello dell'IDE, ma ha il suo linguaggio ...

gpb01:
Il secondo programma NON per per l'IDE di Arduino sul PC, ma è per "Processing" che devi far girare su PC !

Guglielmo

P.S.: è un ambiente simile a quello dell'IDE, ma ha il suo linguaggio ...

Grazie Guglielmo ...

quindi se in linea teorica non volessi utilizzare Processing ... potrei fare lo stesso programmino che deve girare su PC (e che legge la seriale ed interpreta i dati inviati da Arduino) anche con un altro ambiente di programmazione tipo ad esempio Visual Basic oppure Python ... giusto ?

Non conosco processing ma ho letto che deriva da Java ed è orientato alla programmazione ad oggetti, alla grafica ed alla multimedialità ... ed in particolare può interagire con Arduino ... sono molto incuriosito e sicuramente cercherò di scaricarlo ed utilizzarlo per gestire l'interazione Arduino-PC ...

GRAZIE MILLE
Gianni

GianniDS:
quindi se in linea teorica non volessi utilizzare Processing ... potrei fare lo stesso programmino che deve girare su PC (e che legge la seriale ed interpreta i dati inviati da Arduino) anche con un altro ambiente di programmazione tipo ad esempio Visual Basic oppure Python ... giusto ?

Certamente, puoi usare il loro come traccia e svilupparlo con il linguaggio che meglio conosci su PC :wink:

Guglielmo