nrf24l01+ sketch scanner:problema ad interpretarne i risultati

Buonasera, innanzitutto mi presento.
Mi chiamo Marco, son un neofita totalmente digiuno di conoscenze elettroniche(...) che ha iniziato nel tempo libero ad avvicinarsi ad arduino regalandomi lo starter kit. Da allora mi è esplosa la curiosità!
Ed ora veniamo ai problemi....
Dopo un varie googlate e letture su quasi tutti i risultati che uscivano, sono riuscito ad iniziare ad usare due moduli wireless nrf24l01+ con lo sketch GettingStarted .
Nelle varie letture sui siti ho visto lo sketch "scanner" restituire un risultato sul monitor seriale sulla qualità dei vari canali scansionati sottoforma di stelline ( avevo problemi di comunicazione, a volte andavano a volte no, e volevo verificare se non fossero interferenze ), mentre io ottengo solo sequenze alfanumeriche a me inconprensibili. Uso la libreria RF24 . Sbaglio qualcosa o gli screenshot che trovavo non corrispondono a questa libreria?
Grazie!

ciao
hai settato i baud (forse devi mettere 57600) del monitor seriale in basso a dx?

Sì, i baud sono a posto. proprio ora però stavo rimontando su due breadboard la coppia di moduli x ritestarli tra un arduino uno ed un nano, e non riesco più a farli comunicare... Le connessioni sembrano ok, messo i condensatori da 10uF sull'alimentazione dei nrf24l01+ , li alimento a parte alle due schede ma uno va ed uno no... Sono un po' " delicati " da usare o sembra a me?

Se non vado errato, per lavorare con quei moduli c'è una bella libreria, che si occupa anche dell'integrità dei dati ... la trovi QUI

Guglielmo

Non la conosco, ma guardando nel PDF mi sembra si per moduli radio differenti.
Leggendo online questo nRF24L01+ sembra vadano bene al primo colpo ad alcuni, e facciano dannare da matti altri... me compreso! Alcuni li collegano direttamente ai pin/alimentazione di arduino e via, altri suggeriscono alimentazioni esterne e condensatori diversamente non sembrano funzionare in modo stabile.

Scusate se vado un po' OT, ma sto facendo varie prove con i moduli in oggetto. Ho entrambi i nodi e le rispettive schede arduino collegate al PC. nei vari sketch test Ping-Pong inclusi nella libreria, finchè non apro il monitor e digito un carattere lo scambio dati non riesce.
Apro per entrambe le schede il monitor, digito un carattere in emtrambe, poi ovviamente mi fermo a guardare i risultati ed ottengo un 100% di dati trasmessi con 30ms stabili di durata dell'invio/ricezione.
Resetto il nodo che deve ricevere e rispedire i dati e immediamente lo scambio dati fallisce; basta che io gli digiti un carattere nel monitor e lo scambio dati riprende perfettamente..
Qua esco matto!!!!!

Risolto il problema delle schede che vanno "come gli pare a loro".
Semplicemente tenendole collegate entrambe allo stesso PC per alimentarle entrambe con le porte USB, entravano in conflitto. Tenendone una collegata al PC x guardareil monitor seriale e una collegata ad alimentazione sterna funzionano perfettamnte con gli sketch della libreria nrf24l01+.
Ore e ore perse per una stupidata così!!! ]:slight_smile:

Questo è quello che ottengo quando lancio lo sketch scanner ( ho fatto andare solo per poche righe, ma l'ha lasciato anche andare per una 20ina di minuti ma ottengo sempre solo righe alfanumeriche ).
Come si interpretano questi risultati?
Grazie

Puoi mettere un link allo sketch?

gazza_mo:
Questo è quello che ottengo quando lancio lo sketch scanner ( ho fatto andare solo per poche righe, ma l'ha lasciato anche andare per una 20ina di minuti ma ottengo sempre solo righe alfanumeriche ).
Come si interpretano questi risultati?
Grazie

Ciao,
il programmino dovrebbe inviare su seriale la lettura del segnale che viene rilevata su ogni canale radio.
Molto probabilmente il tuo problema è legato al la scelta del carattere di ritorno a capo del monitor seriale.
ImpostandoSIa NL che CR dovresti risolvere il problema (tu stai usando Nessun fine riga!). In pratica ora sta vedendo come un'unica riga quello che in realtà dovresti vedere su più righe.
Ogni colonna dovrebbe rappesentare un canale (le prime due righe sono di intestazione) ed il numero che viene stampato dovrebbe darti un'indicazione del segnale rilevato su quel canale. Tieni presente che ogni riga scritta su seriale è composta da 128 caratteri per cui devi ingrandire la finestra del serial monitor

Ciao, e innanzitutto grazie per la risposta.
Ti allego uno screenshot della finestra ingrandita dove ho impostato il serial come mi hai spiegato tu.
La cosa che non capisco è come leggere questi dati per trovare un canale più o meno libero da interferenze.
Visto che sono presenti sia numeri che caratteri, come leggo questi dati?

Grazie!

ed ecco lo sketch scanner presente negli esempi della libreria.

/*
Copyright (C) 2011 J. Coliz maniacbug@ymail.com

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/

/**

  • Channel scanner
  • Example to detect interference on the various channels available.
  • This is a good diagnostic tool to check whether you're picking a
  • good channel for your application.
  • Inspired by cpixip.
  • See http://arduino.cc/forum/index.php/topic,54795.0.html
    */

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Hardware configuration
//

// Set up nRF24L01 radio on SPI bus plus pins 9 & 10

RF24 radio(9,10);

//
// Channel info
//

const uint8_t num_channels = 128;
uint8_t values[num_channels];

//
// Setup
//

void setup(void)
{
//
// Print preamble
//

Serial.begin(57600);
printf_begin();
printf("\n\rRF24/examples/scanner/\n\r");

//
// Setup and configure rf radio
//

radio.begin();
radio.setAutoAck(false);

// Get into standby mode
radio.startListening();
radio.stopListening();

// Print out header, high then low digit
int i = 0;
while ( i < num_channels )
{
printf("%x",i>>4);
++i;
}
printf("\n\r");
i = 0;
while ( i < num_channels )
{
printf("%x",i&0xf);
++i;
}
printf("\n\r");
}

//
// Loop
//

const int num_reps = 100;

void loop(void)
{
// Clear measurement values
memset(values,0,sizeof(values));

// Scan all channels num_reps times
int rep_counter = num_reps;
while (rep_counter--)
{
int i = num_channels;
while (i--)
{
// Select this channel
radio.setChannel(i);

// Listen for a little
radio.startListening();
delayMicroseconds(128);
radio.stopListening();

// Did we get a carrier?
if ( radio.testCarrier() )
++values*;*

  • }*
  • }*
  • // Print out channel measurements, clamped to a single hex digit*
  • int i = 0;*
  • while ( i < num_channels )*
  • {*
    _ printf("%x",min(0xf,values*&0xf));_
    _
    ++i;_
    _
    }_
    _
    printf("\n\r");_
    _
    }_
    _
    // vim:ai:cin:sts=2 sw=2 ft=cpp*_
    [/quote]

Io ho modificato lo scanner
Ti dice quali canali sono occupati
https://github.com/roboticboyer/Arduino/tree/master/RF24/2_4GHz_Scanner_gio_01/_2_4GHz_Scanner_gio_01

Per provarlo se hai una rete wifi accesa, vedrai su quali frequenze sta trasmettendo.

Ciao
Gio

Ciao Gio,
ho provato il tuo sketch, quindi tutti i canali numerati che leggo sul monitor sono quelli occupati, il numerino accanto alla freccia cosa mi indica?
Appena riesco provo a bloccare il router su un canale "fisso" perchè ora è uin automatico, mi dice canale 6, ma non lo vedo nel monitor seriale: lì il canale più basso che leggo è il 13.
Il fatto che da ciclo a ciclo il numero dei canali vari leggermente è dovuto ad interferenze ?
Grazie mille per l'aiuto!

ho provato il tuo sketch, quindi tutti i canali numerati che leggo sul monitor sono quelli occupati, il numerino accanto alla freccia cosa mi indica?

Si sono le frequenze ( i canali radio, non quelli del wifi) 24xx GHz dove xx è il numero che vedi a sx. Il numerino dopo la freccia conta le volte che lo scanner ha trovato la frequenza occupata.

Appena riesco provo a bloccare il router su un canale "fisso" perchè ora è uin automatico, mi dice canale 6, ma non lo vedo nel monitor seriale: lì il canale più basso che leggo è il 13.
Il fatto che da ciclo a ciclo il numero dei canali vari leggermente è dovuto ad interferenze ?

Come scritto soprà non sono i canali del wifi.

In più il wifi trasmette su più frequenze vicine per avere molta banda. Con lo scanner vedi mediamente 5-6 frequenze occupate vicine.

Non sono molto esperto di trasmissioni radio, ho capito queste cose giocando con il modulo nRF24.

Ti consiglio il sito:
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

Nel datasheet trovi altre spiegazioni: