Consiglio: RS485 oppure no?

Buonasera! volevo chiedervi un consiglio per un progetto... ho un rover che è comandato via bluetooth (con l'apposito modulino BT e un Arduino Uno)..via BT comando solo le 4 ruote, un piccolo servo, un HC-SR04 e un LED... Successivamente ho dovuto montarci dei sensori (di cui ho chiesto parecchio nel corso del tempo sul forum :) :) )... i dati dei sensori (che sono montati su un secondo arduino uno) li volevo mandare ad un bot di telegram tramite o wifi (parliamo dell'utilizzo di un ESP8266) o BT (avrei già la libreria pronta che mi legge la seriale e mi invia al bot di telegram)... ORA la questione! Secondo voi ha più senso una o l'altra soluzione???? Io pensavo a questo: -i due arduini collegati tra loro tramite RS485 -l'arduino dei sensori invia all'arduino del BT gli output dei sensori -questo, tramite BT, li invia alla seriale (via dongle usb) in modo da leggerli

Questo mi toglierebbe molto (tipo l'ESP8266) e mi semplificherebbe le cose...e sinceramente mi piacerebbe di più come idea!!! :) :)

Voi che dite? potrebbe funzionare? Se avete consigli migliori/quesiti da pormi, sono qui! Vorrei un parere da voi che siete sicuramente più esperti nel campo! Grazie mille!!!!! :) :)

EDIT: nell'arduino dei sensori ho liberi 0,1,7,8,9,10,13,A3 mentre nell'altro ho A5 e A0 liberi (il contatto su A0 non funziona bene,, devo risaldare perchè è su una motor shield di Adafruit)

EDIT: altra idea che mi è venuta: usare I2C tra i due arduini con i pin SDA e SCL, cosa ne pensate?

Se gli Arduini sono vicini, Puoi usare I2C oppure SPI (su D0 D1). Meglio il secondo caso se ti serve gli ingressi analogici.

Però io i pin 0 e 1 su una scheda sono occupati dalla MotorShield..non c'è modo di cambiare pin?

scusate se insisto ma non si possono usare dei pin qualunque per farli comunicare i due arduini? come vedete sono messo male per via dei pin

ExperimentUno: oppure SPI (su D0 D1). ...

Ma che scrivi ? ? ? Da quando il bus SPI è collegato ai pin D0 e D1 ed usa solo due fili ? ? ? :o :o :o

Vogliamo prestare attenzione prima di scrivere "baggianate" ? >:( Grazie !

>LucaAlba98: Ma se li collegni con tre fili, uno per mettere i GND in comune e due tra due pin che usi con la libreria SoftwareSerial con cui crei delle porte seriali e li fai parlare tramite esse ?

Guglielmo

gpb01: Ma se li collegni con tre fili, uno per mettere i GND in comune e due tra due pin che usi con la libreria SoftwareSerial con cui crei delle porte seriali e li fai parlare tramite esse ?

eh ci stavo pensando ma non sapevo se potesse o no funzionare... posso, secondo te, fare dei collegamenti simili?

SDA (Arduino con MotorShield) ---> pin 7 (Arduino Sensori) SCL (Arduino con MotorShield) ---> pin 8 (Arduino Sensori) GND ---> GND

posso usarli? oppure no? :confused: :confused: perchè sull'arduino con la motorshield ho solo due analogici liberi (di cui uno devo saldarlo meglio)...

Si può comunicare su I2C i due arduino ed altro, tanto che si possono collegare 128 dispositivi sullo stesso bus.

ExperimentUno: Si può comunicare su I2C i due arduino ed altro, tanto che si possono collegare 128 dispositivi sullo stesso bus.

ok ma io quei pin li ho occupati...

perciò se la soluzione di Guglielmo può andar bene utilizzo quella... Mi è venuto anche in mente che in un arduino (quello della motor shield e del bt) utilizzo già una software serial... posso, quindi, farle andare insieme? magari con millis()? cosi quella del bt trasmette/riceve le informazioni sempre?

i pin che ho detto sopra possono andare bene?

LucaAlba98: perchè sull'arduino con la motorshield ho solo due analogici liberi (di cui uno devo saldarlo meglio)...

E da quando la motor shield usa tutti i pin di Arduino ?

astrobeed: E da quando la motor shield usa tutti i pin di Arduino ?

hai ragione... ma come faccio ad utilizzarli? la motor shield che utilizzo è questa perciò dovrei saldarci sopra dei cavetti per utilizzare i pin che sono liberi?? qua sono in panico sinceramente...non so che piedini vengano lasciati liberi e come poterli utilizzare :( :( :confused:

LucaAlba98:
la motor shield che utilizzo è questa

Ma ancora sono in vendita queste solamotorshield ? :slight_smile:

astrobeed: Ma ancora sono in vendita queste solamotorshield ? :)

a quanto pare! ahahha riesci a darmi qualche info?

... mah .. per me vai solo ad incasinarti la vita ... da una parte devi avere Arduino che parla su I2C come MASTER, dall'altra devi configurarlo in I2C come DEVICE, poi hai il problema della lunghezza dei cavi, dei pin occupati, ecc. ecc.

Se non hai particolari necessità per cui è d'obbligo usare il bus I2C (... es. ragioni di velocità), usa la seriale con la SoftwareSerial e ti levi dai vari problemi ...

Guglielmo

no a me serve solo che l'arduino che ha collegato tutta la sensoristica invii i dati all'altro che poi lui invierà via BT a me... la cosa che mi interessa è questo

LucaAlba98:
no a me serve solo che l’arduino che ha collegato tutta la sensoristica invii i dati all’altro che poi lui invierà via BT a me… la cosa che mi interessa è questo

… e allora perché ti vuoi complicare la vita ? ? ? :smiley:

Guglielmo

gpb01: ... e allora perché ti vuoi complicare la vita ? ? ? :D

..ehm non capisco a cosa ti riferisci... :sweat_smile: :sweat_smile: :sweat_smile: io ti dicevo quei pin perchè sono gli unici che riesco a utilizzarli semplicemente... se no sulla motor shield non so quali pin non utilizzi....e in tal caso, come li utilizzo?

... mi riferisco a perché vuoi andare ad usare strane cose (SPI, I2C, ecc.) quando con due pin e la SoftwareSerial hai fatto ::)

Guglielmo

gpb01: ... mi riferisco a perché vuoi andare ad usare strane cose (SPI, I2C, ecc.) quando con due pin e la SoftwareSerial hai fatto ::)

e perchè subito come idea non mi era venuta in mente!!! :) i pin SDA e SCL vanno bene per fare una software serial o no?

LucaAlba98: ... i pin SDA e SCL vanno bene per fare una software serial o no?

Vai sul reference della SoftwareSerial, te la studi, ti guardi le limitazioni sui pin in funzione della MCU usata e lo scopri !

Guglielmo

P.S.: Oh .. ma voi a spirito d'iniziativa state propri a ZERO eh !!!

gpb01: Vai sul reference della SoftwareSerial, te la studi, ti guardi le limitazioni sui pin in funzione della MCU usata e lo scopri !

Guglielmo

P.S.: Oh .. ma voi a spirito d'iniziativa state propri a ZERO eh !!!

Cosa che avevo fatto appena prima mi pubblicassi tutto questo. Le limitazioni sono queste:

The Arduino hardware has built-in support for serial communication on pins 0 and 1 (which also goes to the computer via the USB connection). The native serial support happens via a piece of hardware (built into the chip) called a UART. This hardware allows the Atmega chip to receive serial communication even while working on other tasks, as long as there room in the 64 byte serial buffer.
The SoftwareSerial library has been developed to allow serial communication on other digital pins of the Arduino, using software to replicate the functionality (hence the name "SoftwareSerial"). It is possible to have multiple software serial ports with speeds up to 115200 bps. A parameter enables inverted signaling for devices which require that protocol.
The version of SoftwareSerial included in 1.0 and later is based on the NewSoftSerial library by Mikal Hart.
Limitations

The library has the following known limitations:
If using multiple software serial ports, only one can receive data at a time.
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
Not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
On Arduino or Genuino 101 the current maximum RX speed is 57600bps
On Arduino or Genuino 101 RX doesn't work on Pin 13

perciò non vedo la presenza di quei due pin, PER QUESTO MOTIVO ho chiesto! Quindi non ignoro ciò che linki, anzi lo guardo e lo studio come posso e come sono capace. Spirito di iniziativa penso di averla e non capisco perchè voi moderatori o utenti più esperti fate così con noi principianti. Personalmente io faccio così: -guardo online quello che mi interessa -se non trovo nulla, chiedo qui -se mi linkate articoli o altro lo leggo volentieri perchè amo imparare dagli errori - se ho dubbi (come in questo caso) richiedo sbaglio qualcosa?

non per polemizzare ma vedo che molte volte lo fate.. capisco che ripeterete le stesse cose milioni di volte, ma noi siamo qui per imparare da voi anche.. e comunque grazie per le informazioni :slight_smile: :slight_smile: Luca