Cerco guida per NRF24L01

Salve ho in rete qualcosa ma senza trovare buoni indizzi, ho provato a cercare sul forum, ma niente solo in inglese :confused:

Vorrei realizzare una comunicazione tra due dispositivi , datemi un input da dove poter inizziare....

Sto provando questo esempio che potrebbe andare bene per la mia esigenza,ho scaricato la libreria:
https://drive.google.com/file/d/0BwSP1-P3E2UJQ0dOWGdJT3JMU1E/view

sto provando l'esempio led_remote, ma non comunica, per caso sono librerie obsolete?

Prova con QUESTO esempio dell'ottimo Daniele Alberti...

docdoc:
Prova con QUESTO esempio dell'ottimo Daniele Alberti...

provato e funziona,ma vorrei che il ricevente risponde al TX con una stringa.
ce molto lavoro da fare???

Per il discorso interferenze prova ad analizzare i canali radio con questo sketch, poi non devi fare altro che scegliere il canale libero per far lavorare i tuoi moduli.
Tieni presente che i vari moduli con NRF24 sono pessimi dal punti di vista rf, senza una adeguata schermatura prendono qualunque segnale rf come rumore di fondo creando problemi alla ricezione, anche l'alimentazione è importante, deve essere pulita e in grado di erogare almeno 150 mA, se si tratta di un modulo dotato di amplificatore, se è senza, ovvero potenza out massima 1 mW, bastano 20 mA.

AuAnWeb:
provato e funziona,ma vorrei che il ricevente risponde al TX con una stringa.
ce molto lavoro da fare???

Cioè ti serve una comunicazione bidirezionale?
Prova a vedere se QUESTO altro articolo può darti indicazioni utili per fare quello che cerchi.

docdoc:
Cioè ti serve una comunicazione bidirezionale?
Prova a vedere se QUESTO altro articolo può darti indicazioni utili per fare quello che cerchi.

mi sembra ottimo,a primo test mi da errori
errore per la libreria e SPI
cerco di trovare la libreria #include <Mirf.h>
ma per SPI non so il perche!!!

docdoc:
Cioè ti serve una comunicazione bidirezionale?
Prova a vedere se QUESTO altro articolo può darti indicazioni utili per fare quello che cerchi.

docdoc, ho provato e va, ma non sono riuscito a cambiare la risposta al client:

al client in ricezione arrivano dei byte e che non riesco a leggerli, sono in caratteri strani.

In quell'esempio (che, appunto, è un esempio...) agisce in modo leggermente diverso da quello che vuoi realizzare, ossia come scritto nella pagina:

Qui vediamo il programma server e quello client. Il server ascolta continuamente i pacchetti in arrivo e appena ne riceve uno lo scrive nella seriale e lo invia al client dopo averlo criptato con una semplice addizione. MIRF_PAYLOAD definisce la lunghezza in bytes dei pacchetti trasmessi. Nel programma client vediamo la costante string msg che contiene i primi versi della Divina Commedia. Nel loop si invia a pezzettini di 32bytes il contenuto di msg e si ricomincia da capo.

Ovviamente quindi vedrai una sequenza di caratteri "strani", ma nel tuo caso oltre a non dover mandare la Divina Commedia, non devi neanche cifrare nulla. Vedi dove effettua queste operazioni per impostare invio e ricezione e modificalo con quello che vuoi, anche per ora mandare "CIAO" e rispondere "OK".

docdoc:
In quell'esempio (che, appunto, è un esempio...) agisce in modo leggermente diverso da quello che vuoi realizzare, ossia come scritto nella pagina:

Qui vediamo il programma server e quello client. Il server ascolta continuamente i pacchetti in arrivo e appena ne riceve uno lo scrive nella seriale e lo invia al client dopo averlo criptato con una semplice addizione. MIRF_PAYLOAD definisce la lunghezza in bytes dei pacchetti trasmessi. Nel programma client vediamo la costante string msg che contiene i primi versi della Divina Commedia. Nel loop si invia a pezzettini di 32bytes il contenuto di msg e si ricomincia da capo.

Ovviamente quindi vedrai una sequenza di caratteri "strani", ma nel tuo caso oltre a non dover mandare la Divina Commedia, non devi neanche cifrare nulla. Vedi dove effettua queste operazioni per impostare invio e ricezione e modificalo con quello che vuoi, anche per ora mandare "CIAO" e rispondere "OK".

ok ci provo, grazie ancora

un aiuto per dividere una stringa in array,
vorrei mandare una stringa da client al sul server, scompartarre la stringa in array e usare un switch case per fare delle operazioni.

pensate sia possibile o ci sono rimedi piu facili e funzionali?

Premesso che l'uso della classe "String", su Arduino, è altamente sconsigliato, comunque, copiare una String in un char array è piuttosto semplice ...

String pippo;        // la stringa
char   mioArray[20]; // il char array delle dimensioni massime della stringa + 1
...
...
strncpy(mioArray, pippo.c_str(), sizeof(mioArray));  // copia la stringa in un char array

Guglielmo

gpb01:
Premesso che l'uso della classe "String", su Arduino, è altamente sconsigliato, comunque, copiare una String in un char array è piuttosto semplice ...

String pippo;        // la stringa

char  mioArray[20]; // il char array delle dimensioni massime della stringa + 1
...
...
strncpy(mioArray, pippo.c_str(), sizeof(mioArray));  // copia la stringa in un char array



Guglielmo

grazie Guglielmo(gpb01)

ma che soluzione potresti indicarmi al posto di una stinga?

Beh … fondamentalmente … impara ad usare le stringhe classiche del C … ovvero semplici array di char terminati dal carattere null (0x00) e tutte le funzioni che trovi nella libreria standard (… che, oltretutto, è automaticamente inclusa dal IDE) AVR libc ed, in particolare, quanto è in <string.h> :wink:

Guglielmo

gpb01:
Beh … fondamentalmente … impara ad usare le stringhe classiche del C … ovvero semplici array di char terminati dal carattere null (0x00) e tutte le funzioni che trovi nella libreria standard (… che, oltretutto, è automaticamente inclusa dal IDE) AVR libc ed, in particolare, quanto è in <string.h> :wink:

Guglielmo

Guglielmo forse cerco tanto, ma un piccolo esempio di come si usa e possibile?

Un esempio di cosa ? :o :o :o

... non è una funzione con cui fare un esempio ... sono le stringhe classiche del 'C' e tutte le loro funzioni per manipolarle.

Se apri i vari link che ti ho messo, nel primo vedi la descrizione di cose sono le stringhe del 'C' (... altro non sono che char array terminati dal carattere 0x00), nel secondo la AVR libc che è una libreria che raccoglie un'infinità di funzioni, tutte utilizzabili in Arduino, per gli scopi più diveri, il terzo è la raccolta di quelle funzioni che sono specifiche per la manipolazione delle suddette stringhe classiche.

Guglielmo

gpb01:
Un esempio di cosa ? :o :o :o

... non è una funzione con cui fare un esempio ... sono le stringhe classiche del 'C' e tutte le loro funzioni per manipolarle.

Se apri i vari link che ti ho messo, nel primo vedi la descrizione di cose sono le stringhe del 'C' (... altro non sono che char array terminati dal carattere 0x00), nel secondo la AVR libc che è una libreria che raccoglie un'infinità di funzioni, tutte utilizzabili in Arduino, per gli scopi più diveri, il terzo è la raccolta di quelle funzioni che sono specifiche per la manipolazione delle suddette stringhe classiche.

Guglielmo

scusa Guglielmo, non sono un programmatore ma sto iniziando a fare il fai da te, grazie ancora.

AuAnWeb:
scusa Guglielmo, non sono un programmatore ma sto iniziando a fare il fai da te, grazie ancora.

Ok, allora …

… puoi cominciare con studiare QUESTO proseguire con QUESTO e acquistare un buon libro (es. QUESTO) … verdai che ti si chiariranno parecchie cose :wink:

Guglielmo

gpb01:
Ok, allora ...

... puoi cominciare con studiare QUESTO proseguire con QUESTO e acquistare un buon libro (es. QUESTO) ... verdai che ti si chiariranno parecchie cose :wink:

Guglielmo

oggi non riesco a leggere il tutto ma ci provo. :slight_smile:

Sto procedento a passo di lumaca, ma ho bisogno di aiuto su come posso aumentare la portata di distanza,ho seguito il link che mi ha indicato docdoc http://pezzato.net/2013/07/arduino-wireless-economico-con-nrf24l01-plus.html
leggendo in retemi dice di poter modificare la quantita di dati da trasmettere e in cambio si ha piu potenza in db. Miriferisco a questo link http://areacom.altervista.org/arduino-nrf24l01-collegamento-e-library-mirf/

non riesco a mettere questo metodo, non so se il esatto come tipologia di nome per voi programmatori.

Mirf.configRegister(RF_SETUP,0x26);

se inserisco questo va in crash, cioe non funziona piu’…