Scelta modalità comunicazione con Arduino

Ciao,

sto raccogliendo più info possibili per decidere cosa mi sento di poter realizzare.

Pensando ad un ipotetica macchina, robot, barca o qualunque cosa sia, da poter controllare a distanza (per ora distanza ravvicinata, quindi con connessione diretta), cosa è consigliabile usare come comunicazione?
I comandi andrebbero inviati da PC, o da Android, ma questo non mi importa. La cosa che mi interessa è conoscere pregi e difetti dei vari modi di comunicazione, che ristretti appunto a PC e Android, penso ricadano solo Bluetooth e WiFi (credo).
Io avevo pensato ad una comunicazione WiFi, ma senza bisogno di connettere Arduino e il “client” (pc o android) alla stessa LAN; la mia idea era di connettermi direttamente ad Arduino da WiFi, quindi ho cercato se è possibile usare gli Shield WiFi come access point, e connettermi direttamente.
Avevo pensato anche alla soluzione inversa, cioè usare il pc o il telefono come AP, e far connettere l’Arduino, ma non mi piace molto come soluzione.

Quindi, la prima soluzione è fattibile? Gli shield wifi possono fare questo? Cercando in internet qualcuno lo accenna, ma non sono riuscito a capire se è fattibile

Grazie (:

mattoide: ... Gli shield wifi possono fare questo?

Quelli basati su ESP8266 sicuramente SI, c'è proprio la sua modalità "Access Point". Quello che mi preoccupa però è la portata ... non è certo pari a quella di un vero access point da casa, ma decisamente inferiore ... ::)

Guglielmo

P.S.: ... mai però fatto prove sulla portata effettiva delle rete che crea ... magari all'aperto, senza ostacoli, ti va anche bene.

imho, la scelta tra Bluetooth e WiFi, tralasciando per il momento la questione distanza, dipende molto da cosa devi trasmettere/ricevere. Personalmente se si tratta di comandi (parli di macchina, robot, barca), il tutto si risolve con la trasmissione di pochi byte, per cui consiglierei il BT, meno problemi di sviluppo e implementazione relativamente veloce.

A proposito di distanze in wifi, guarda qui. :o

Naturalmente, poi ci sono anche alternative al bt/wifi, ad esempio gli HC-12 per la trasmissione seriale a lunga distanza, ma, probabilmente, qui devi realizzare anche l'hardware della trasmittente.

Federico

Federico66: A proposito di distanze in wifi, guarda qui. :o

Interessante anche se, per far un radiocomando di un modello ... un po' "ingombrante" :D :D :D

Guglielmo

Penso che userò la soluzione del BT per ora, dato che sarebbe un primo progetto molto semplice. Se dovessi aggiungere anche 1 o 2 sensori, nel caso, avrei problemi col BT? Magari sensore di inclinazione e a ultrasuoni..

Per il modulo BT avete dei consigli?

mattoide: Se dovessi aggiungere anche 1 o 2 sensori, nel caso, avrei problemi col BT? Magari sensore di inclinazione e a ultrasuoni...

Per il modulo BT avete dei consigli?

Il BT è indipendente dai sensori!

Prendi HC-05, funziona sia in modalità slave che master.

Federico

Scusa, intendevo problemi di pin, ma ho visto che non ce ne sono :) Grazie mille!!

mattoide: Scusa, intendevo problemi di pin, ma ho visto che non ce ne sono :) Grazie mille!!

Oltre all'alimentazione, hai i soliti TX e RX per la seriale. Se poi ti interessa, c'è un pin State che diventa HIGH quando la connessione è attiva, quindi, ad esempio, ci si può collegare un led, o, come ho fatto io, lo puoi collegare ad un pin Arduino (con un resistenza), così da codice si può verificare se la connessione BT è attiva.

Federico

PS Attenzione, alcuni moduli richiedono obbligatoriamente 3.3v per la'alimentazione o per la seriale (TX), in altri invece non ci sono problemi con 5v; quindi verifica prima di acquistare, o chiedi qui se hai dei dubbi.

interessante.

per chi lo sa: quanto porta circa un HC05? e un HC12?

Vorrei prendere questo

https://www.amazon.it/WINGONEER-Bluetooth-ricetrasmettitore-modulo-Arduino/dp/B01DC9FZ2I/ref=sr_1_6?keywords=Hc05+Bluetooth&qid=1574781879&sr=8-6

Per la seriale posso collegare normalmente ai pin 0 e 1,Rx e Tx di arduino? Vale o stesso sia su UNO che su nano?

Ma arduino nano non si strova su amazon.. dove consigliate di acquistarlo?

Ducembarr: per chi lo sa: quanto porta circa un HC05? e un HC12?

Intendi distanze raggiungibili ?

Gli HC-05 sono moduli Bluetooth classico (v2.x) e ci si fanno circa una decina di mt.

Gli HC-12 sono dei moduli radio a 433 MHz e, al minimo della velocità di trasmissione, in condizioni ottimali, dovrebbero raggiungere anche i 1000 mt.

Guglielmo

In attesa delle risposte alle predecenti domande, faccio l’ordine in foto?

mattoide:
Vorrei prendere questo

Hai scelto proprio uno che va alimentato a 3.3v (dal sito: Tensione di funzionamento del modulo 3.3V) :slight_smile:

Se non vuoi rotture con l’alimentazione, cerca qualcosa tipo questo, come vedi riporta “Power 3.6v-6v”.
Te lo dico solo per semplificarti, poi decidi tu :slight_smile:

mattoide:
Per la seriale posso collegare normalmente ai pin 0 e 1,Rx e Tx di arduino? Vale o stesso sia su UNO che su nano?

Si, ma sia su Uno che Nano, essendo quella l’unica seriale, solitamente la si usa per il debug, quindi per collegare HC-05 si usa una seriale software (SoftwareSerial.h o AltSoftSerial.h)

mattoide:
Ma arduino nano non si strova su amazon… dove consigliate di acquistarlo?

se cerchi l’originale, ad esempio qui, se poi vuoi risparmiare (vista la giovane età :slight_smile: ), ci sono i cloni

Federico

mattoide: In attesa delle risposte alle predecenti domande, faccio l'ordine in foto?

In merito a pcb, non posso aiutarti, non sono un fan delle saldature :D Se però accetti un consiglio, non riempirti di cose che al momento potrebbero non servirti ;) e quindi, non aver fretta, e valuta l'acquisto solo quando ti serve veramente.

Federico

gpb01: Intendi distanze raggiungibili ?

....

Guglielmo

Grazie

ma allora la scelta è ovvia, o sbaglio? HC12 forEver

Federico66: Hai scelto proprio uno che va alimentato a 3.3v (dal sito: Tensione di funzionamento del modulo 3.3V) :)

Se non vuoi rotture con l'alimentazione, cerca qualcosa tipo questo, come vedi riporta "Power 3.6v-6v". Te lo dico solo per semplificarti, poi decidi tu :) Si, ma sia su Uno che Nano, essendo quella l'unica seriale, solitamente la si usa per il debug, quindi per collegare HC-05 si usa una seriale software (SoftwareSerial.h o AltSoftSerial.h)

se cerchi l'originale, ad esempio qui, se poi vuoi risparmiare (vista la giovane età :) ), ci sono i cloni

Federico

Il clone che problemi potrebbe darmi? Comunque anche il BT consigliato da te ha 3.3v come tensione di funzionamento.. Almeno così leggo.. :)

Un esempio di debbuging utilizzato dai pin 0 e 1 quale potrebbe essere?

Per debug usando la seriale di solito si intendono i messaggi messi nel codice che aiutano a capire il flusso del programma mentre è in funzione. Es.

if(digitalRead(PIN_INPUT))
{
  Serial.println("Pulsante premuto");
}

nell'esempio il messaggio pulsante premuto verrà visualizzato nel monitor seriale quando la digitalRead del pin avrà un valore HIGH. Quindi se premendo il pulsante non si vede il messaggio si può indagare se il programma sta facendo altro oppure se il pulsante è danneggiato (sempre ad esempio). Oppure se visualizzi millemila volte il messaggio senza aver premuto, ma quando premi il pulsante non viene più mostrato allora significa che sono invertiti i livelli (premuto da LOW e rilasciato da HIGH). Esempio basilare di debug su seriale ma spero abbastanza chiaro

UPDATE

mattoide:
Il clone che problemi potrebbe darmi?

Io oltre all'originale, ho preso vari cloni (AZ-Delivery) (sia Uno che Nano) e non ho mai avuto problemi, ma non faccio testo, sono giovane ... di Arduino :slight_smile: .
Molti qui ne usano tantissimi senza aver problemi, poi però, ogni tanto capita che qualcuno sia fallato!

mattoide:
Comunque anche il BT consigliato da te ha 3.3v come tensione di funzionamento.. Almeno così leggo.. :slight_smile:

Non mi pare... Power 3.6v-6v, se ti riferisci a Level 3.3v, quelli sono i pin seriali da collegare ai pin Arduino, per cui solitamente tra RX (3.3v) dell'HC-05 e RX (5v) di Arduino si mette un partitore resistivo per abbassare la tensione (immagine)

HC-05.png

mattoide:
Un esempio di debbuging utilizzato dai pin 0 e 1 quale potrebbe essere?

Ti ha già risposto @fabpolli, comunque

Quando stampi qualcosa sul monitor seriale dell'IDE, Aduino usa la sua seriale hardware (pin 0 e 1) per trasmettere i dati a pc e quindi al monitor, esempio

Serial.begin(9600);

byte pippo = 123;

Serial.print("pippo vale: ");
Serial.println(pippo);

HC-05.png

Ah io avevo letto nella descrizione dell articolo che era a 3.3v.

COmunque, aspettate, i messaggi via seriale ok, non c'e bisogno di spiegarlo (nel progetto che sto facendo comunico via seriale sia in ricezione che in trasmissione, e si, uso anche i messaggi come log.. sono programmatore quindi tutto ok 8) :grinning: ).

Intendevo proprio i pin 0 e 1 perche non dovrbbero essere collegati?

Perché i pin 0 e 1 (se stiamo parlando di una uno o di una mega standard) sono collegati alla seriale hardware 0 che è quella che è collegata anche all'adattatore USB e che ti permette di inviare e ricevere messaggi dal PC ad esempio. Se tu ci colleghi qualcosa (Es. Adattatore bluetooth, adattatore per RS485, ecc.) devi usare la seriale per comunicare con questo dispositivo e non puoi più sfruttarla per inviare/ricevere da PC e relativo monitor seriale. Diciamo che non è che non puoi farlo ma è scomodo, ogni volta che devi ricaricare un nuovo programma su Arduino DEVI scollegare il dispositivo e ricollegarlo dopo aver caricato il nuovo firmware e tolto alimentazione. Per ovviare a questo di solito o si usa una seriale differente (non su una UNO che ne ha una, ma su una mega ne hai 4) oppure si usa la SoftwareSerial in modo da destinare un paio di pin ad una porta seriale virtuale che usi per comunicare con un adattatore. Occhio che la seriale software è stabile fino a 9600 oltre non è bene spingersi