Sensori ad ultrasuoni con Arduino uno ed Ardupilot

Ciao a Tutti mi sono presentato mettendo un Post come da regolamento ma................... non ho visto dove è stato messo il mio post !!! Qualcuno mi può aiutare a implementare 4 sensori hc sr04 per farli interagire con gli esc dei motori ed Ardupilot? vorrei che il mio drone individui un ostacolo e se la distanza è = 100cm dia un impulso ai tre ESC del lato sensore sono riuscito ad implementare 1 sensore ma non sò come assegnare differenti trigger se numericamente o alfabeticamente . accetto tutti i consigli .

lucapietrunti: Ciao a Tutti mi sono presentato mettendo un Post come da regolamento ma................... non ho visto dove è stato messo il mio post !!!

Il tuo post di presentazione è QUI :)

Guglielmo

grazie pk non lo trovavo e non sapevo se a posto con le vostre regole Sai chi mi potrebbe aiutare nel mio progetto o mi puo' aiutare a fare una ricerca sul forum ?

Ognuno dei 2 HC-SR04 necessita di pin di output per il trigger ed un pin di input per ricevere il segnale eco.

Non riesco a comprendere la tua domanda "...se numericamente o alfabeticamente".

ciao Grazie di aver risposto la domanda e' "come faccio a installare diversi sensori ? " affiche' arduino riconosca i sensori devo attribuire una variabile ai sensori? per (esempio sensore A oppure sensore 1 ?)

Il punto e’ che devo individuare 4 dati distanza da 4 sensori ad ultrasuoni su lati diversi del mio drone in modo da stabilire che ESEMPIO se la distanza dal sensore 1 è < 100cm i motori del lato 1 dovranno aumentare i giri per 3 secondi in modo da far spostare mediamente di 50cm il drone dall ostacolo mandando un segnale ad ardupilot

Hai presente come si usa UNO di quei sensori ? ... ... bene devi moltiplicare le connessioni per quanti sono i tuoi sensori usando sempre pin diversi (... non consiglio di mettere in comune i trigger per evitare echi e false misure) e quindi usarli uno per uno ciclicamente.

Guglielmo

ok Grazie Guglielmo quindi l'unica variabile che devo usare è il timing del trigger per non farli trasmettere in contemporanea in modo che non si diano fastidio

quindi sig Guglielmo se capisco bene la stringa che scrivo è se il valore del pin… è < a100cm allora aumenta i giri val… per 4secondi giusto?
Cè nel forum una parte dove posso trovare esempi ? cosi evito di disturbarvi

qui trovi come leggere 4 sensori ad ultrasuoni in contemporanea, si può usare sia il timer1 o il timer0.
Bisogna collegare il trigger insieme e gli echo separati.

vbextreme: qui trovi come leggere 4 sensori ad ultrasuoni in contemporanea

Indubbiamente dal punto di vista software non è un problema leggere più sensori US in simultanea, però c'è un problema di natura fisica nel farlo, se fai il ping in simultanea non puoi sapere quale eco ricevi, ovvero ottieni letture non attendibili, i sensori US vanno azionati in sequenza in modo da non sovrapporre gli eco.

caro @astrobeed, quel codice lo sto testando da mesi e mesi, per un progetto che permette di individuare una mano nell'aria. Inizialmente avevo il tuo stesso dubbio ma ho scoperto che invece era una paranoia inutile. Il motivo principale è che comunque devi fare una media dei valori letti, per ottenere una misura precisa ne occorrono almeno 32, dato che io uso una media continua solo le prime 32 letture non sono precise, tutte le successive saranno precise quanto la tolleranza del sensore stesso, 3mm. La precisione cala un pelo se si usa il timer0 perché ha una base dei tempi di 4us contro i 0.5us del timer1, rimane comunque ben utilizzabile con i suddetti sensori. Per velocizzare le letture non uso la digitalRead ma una funzione specifica che permette di leggere 4 pin in 2.1us, volendo si potrebbero leggere tutti e 4 in 0.6us ma non avendo notato incrementi di precisione ho deciso di lasciarlo così. @astrobeed devi provare per credere, tra qualche mese posto il progetto completo cosi potrai toccare con mano le mie parole.

io li uso cosi

vbextreme: @astrobeed devi provare per credere, tra qualche mese posto il progetto completo cosi potrai toccare con mano le mie parole.

Non ho bisogno di provare per sapere che stai sbagliando. Non ci vuole una laurea in fisica per capire che se emetti tre ping in simultanea non puoi sapere l'eco ricevuto a quale Tx appartiene, in questo caso si applica perfettamente "garbage in, garbage out" visto che i dati da elaborare non sono attendibili.

@astrobeed XD solo il trigger è in comune! gli echo, come scritto sopra, sono su 4 pin separati, in totale si hanno 5 pin. Si da un trigger, si legge lo start del tempo e si ferma ad ogni input ricevuto sul pin di echo.

vbextreme: @astrobeed XD solo il trigger è in comune! gli echo, come scritto sopra, sono su 4 pin separati, in totale si hanno 5 pin.

Non ci siamo capiti, se spari in simultanea n ping, i trigger in parallelo, non puoi sapere l'eco ricevuto su i vari Rx da quale Tx è partito, questo vuol dire non poter fare la triangolazione in modo corretto, la fai con lo spannografo e ottieni risultati spannografici. :)

ma cosa dici! innanzitutto bisogna guardare la disposizione. Secondo se spari insieme i TX è come se fosse un'unica sparata, se tutti gli rx possono vedere i TX allora puoi pure eliminare fisicamente gli altri TX e lasciarne uno solo. Se non si vedono il problema non sussiste. Se poi ricevo il TX del sensore di destra sul RX di sinistra è irrilevante, i ping saranno partiti approssimamente allo stesso tempo. Ma Tommaso, fidati che presto ti ci faccio mettere il naso.

ragazzi vi ringrazio dei commenti davvero ma credo che nel mio caso daro' dei ms di differenza da un sensore all' altro visto che sono in direzioni diverse e distanti tra loro in un diametro di 15 cm cmq se avete esempi di sketch ditemi che ho ancora da imparare . grazie davvero

vbextreme: Se poi ricevo il TX del sensore di destra sul RX di sinistra è irrilevante,

Mai sentito parlare di errore di parallasse ? Ecco è proprio questo il problema.