Pages: [1]   Go Down
Author Topic: nrf24l01+ sketch scanner:problema ad interpretarne i risultati  (Read 761 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
« Last Edit: January 19, 2014, 11:18:33 am by gazza_mo » Logged

milano
Offline Offline
Sr. Member
****
Karma: 3
Posts: 258
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
« Last Edit: January 19, 2014, 12:14:36 pm by gazza_mo » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 116
Posts: 6021
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!!!!!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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ì!!! smiley-evil
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


* sketch scanner.jpg (267.06 KB, 1234x567 - viewed 41 times.)
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 115
Posts: 7279
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Puoi mettere un link allo sketch?
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!


* serial.jpg (176.69 KB, 1920x1035 - viewed 34 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ed ecco lo sketch scanner presente negli esempi della libreria.
Quote
/*
 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

Logged

Piossasco
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


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
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Piossasco
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.

Quote
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.
http://en.wikipedia.org/wiki/List_of_WLAN_channels
 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:
http://www.nordicsemi.com/eng/content/download/2726/34069/file/nRF24L01P_Product_Specification_1_0.pdf
Logged


Pages: [1]   Go Up
Jump to: