Fonera+ arduino

ciaoo ragazzi ho collegato fisicamente il router fonera+ e arduino! (Sulla fonera ho installato dd wrt). ho seguito questi articoli http://echodittolabs.org/blog/2007/12/making-fon-router-speak-serial-arduino http://www.geocities.co.jp/arduino_diecimila/wifi/a2p_ddwrt_en.html

A me piacerebbe far accendere un semplice led da pc. Purtroppo fisicamente sono collegati bene ma nn riesco a fargli comunicare. Mi date un amano grazie

se spegni ed accendi il router dovresti vedere le fasi di boot dal serial monitor

Non lo vedo...e poi come potrei vederlo se io accedo da terminale nella root del fonera alla riaccensione il terminlae nn risponde più.

ma su arduino hai caricato qualcosa per leggere i dati dalla seriale e rimbalzarli fuori? i collegamenti come sono?

usare una ethernet shield?

non è proprio la stessa cosa... :-/

Grazie per il link. Siccome ho una fonera in avanzo con ddwrt (a un amico che ne aveva ordinata una sono arrivate 2!) provero' sicuramente a fare quello che stai provando tu. Che codice hai scritto su arduino? Vediamo di capire perche' non va!

Il programma è molto semplice.

#define LED 13  

int byte_received;

void setup(){
  
            Serial.begin(9600);
            pinMode(LED, OUTPUT);
            digitalWrite(LED,LOW);
            }
  
void loop(){
              
              while(Serial.available()> 0) 
              byte_received= Serial.read();
                
                if(byte_received == 'L')
                {
                 digitalWrite(LED,HIGH);
                }
                 if(byte_received == 'S')
                {
                 digitalWrite(LED,LOW);
                }
    
          
}

io di solito uso "if" serial.available ma sostanzialmente mi pare corretto. non fa proprio niente il segnale che mandi? F

No proprio Niente!!!mannaggia… :frowning:

Una cosa nell esempio fa vedere nell’IDE di arduino una fase di boot ma secondo voi come puo verificarsi?

Vi mostro i collegamenti!
Come da foto ho collegato la massa di fon con la massa di arduino e poi tx e rx di fon con rx e tx di arduino (incrociati).

Una precisazione i pin sono validi solo con la fonera+.
Poi mi collego via lan al fon.

se state usando su arduino duemilanove i pin rx e tx per parlare con il fonera, è normale che dal serial monitor non si veda nulla (sono usati dall'usb). fate una prova: staccare l'atmega dallo zoccolo aprire minicom (su linux) o un altro terminale seriale zterm per mac ecc.. control +C per vedere il boot (dopo il reset del router). P.S. non dimenticate di collegare le masse (router + arduino).

Ciaoo scusatemi se n mi sono fatto vivo prima. Appena posso stacco atmega e vedo il boot! da come mi è stato suggerito, ho preso due alimentatori uno per arduino e uno per fonera+ tramite cavo lan sono entrato nel rooter attraverso questo comando

telnet 192.168.1.1

dopo il normale accesso ho dato i seguenti comandi stty -F /dev/tts/0 9600 echo "L" > /dev/tts/0 //per accendere il Led

alla fine mi ritrovo che quando mando invio vedo solo per un attimo la luce del led accendersi....ma nn capisco perchè.

Aggiorno!! qualsiasi carattere mando lampeggia :( :( :( Cmq a quanto ho capito la fase di boot è indispensabile! mi potresti spiegare tolgo atmega poi....un altra domanda e se uso arduino Mega questa cosa nn si puo fare !

Ma no, non credo che sia cosi. Questa fase di boot e' semplicemente l'output che da la fonera quando si accende e puoi verificare via monitor seriale. Vorrei aver avuto il tempo di provare per poter fare un po' di debug assieme a te.. F

Ciao, io ci sono riuscito (dopo molti tentativi) a far comunicare il mio Arduino Mega con un Fonera 2100. Se non sbaglio utilizzai questo codice (semplificato all'osso :)):

/* DD-WRT user-ID,password,serial-speed settings */
#define USER_ID "root"
#define PASSWD "admin"
#define SERIAL_SPEED 115200

#define LED_PIN 53

char server_char = ' ';

void setup()   
{                
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(SERIAL_SPEED);
  login();    //login DD-WRT
  delay(500);
}

void loop()                     
{
  if( Serial.available() > 0)
  {
    server_char = (char) Serial.read();
    if(server_char == 'A')
      digitalWrite(LED_PIN, HIGH); 
    if (server_char == 'B')
      digitalWrite(LED_PIN, LOW);
    allflush();
  }
}

//** Fonera functions *****************************

void login()
{
  Serial.print("\n"); 
  allflush(); // flushing serial read buffer 
  Serial.println(USER_ID); 
  delay(500);
  Serial.println(PASSWD);
  allflush();
}  

/* logoff from DD-WRT */
void logoff()
{
  Serial.print("\x03"); //CTRL+C
  delay(100);
  Serial.println("exit");
  allflush(); 
}

void allflush()
{
  delay(100); 
  while(Serial.available()>0) Serial.flush();
}

//*************************************************

Azz una mano dal cielo. Mi chiedo come mai c'è bisogno di una fase di login considerando che arduino è collegato fisicamente alla fonera? ps: stasera provo e vi faccio sapere ;)

Perchè lo richiede il dd-wrt: quando ci si connette (tramite seriale) al router il login è indispensabile! ;)

EDIT: ricordati di abilitare telnet sul router (anche se, per default dovrebbe già essere abilitato)

Ok ci provo e ti faccio sapere!!
ho provato la telnet è aperta.

Non ho potuto ancora provarlo ma rileggendo il codice che hai postato mi sembra che comunica da arduino verso il fonera invece a me servirebbe il contrario cioè comuncare attraverso il mio pc a fonera che a sua volta comunica con arduino.
83darking83 aspetto tue notize grazie