Go Down

Topic: Help... da Arduino uno a ATMEGA328 (Read 3041 times) previous topic - next topic

leo72


Risolto... Non avendo modificato i fuse del micro lui va a 1MHz :)

Tutti i micro Atmel quando escono di fabbrica vanno ad 1 MHz con l'oscillatore interno ad 8 MHz impostato col divisore 8x per portare il clock a 1 MHz.
Quindi la prima operazione da fare è sempre quella di flashare il bootloader sul chip, operazione con la quale l'IDE imposta anche i fuse (tutto scritto nella Guida di Menniti).  ;)

Ravnosalex

Ciao, grazie mille della risposta... Allora io vorrei tenero a 1Mhz con quarzo interno per risparmiare batteria... Volevo però chiedere un paio di cose.
A breve mi arriverà il modulo GSM, secondo voi 1MHz é abbastanza per farlo andar bene?
Altra domanda... A quanto mi consigliate di alimentare la scheda ? (Considerando che il GSM richiede 5V minimi).
Grazie ancora

leo72

La prima domanda da porsi è: la libreria GSM può lavorare a clock diversi dai 16 MHz?
Devi controllare il codice e vedere se è possibile.

Ravnosalex

Ehm... Come faccio a capire ciò ?
Poi nella guida di Menniti parla di scheda a 1MHz alimentata a 3.3v come mai? Grazie ancora

leo72


Ehm... Come faccio a capire ciò ?

Te l'ho detto, devi prendere la lib e guarda il codice per capire se può lavorare a clock differenti.

Quote

Poi nella guida di Menniti parla di scheda a 1MHz alimentata a 3.3v come mai? Grazie ancora

Lavorare ad 1 MHz è una possibilità offerta dal chip ma non è detto che sia possibile in tutte le situazioni. Ad esempio, la libreria SoftwareSerial NON funziona a 1 MHz, il clock minimo supportato è 8 MHz. Va visto caso per caso.

Michele Menniti


Ehm... Come faccio a capire ciò ?
Poi nella guida di Menniti parla di scheda a 1MHz alimentata a 3.3v come mai? Grazie ancora

è da intendersi in senso di opportunità; se lavori col micro impostato a 1MHz hai la possibilità di alimentarlo a 3,3V ma naturalmente nessuno ti impedisce di usare comunque i 5V; queste info si ricavano anche dai data-sheet originali ATMEL
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Ravnosalex

Eccoci... allora è arrivato il tanto amato MODULO GSM della EF COM.  Il pcb è ben fatto, l'oggetto è gradevole e perfettamente adattabile al mio Arduino uno.
Iniziano i primi problemi :)
Seguendo questo wiki http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield
riesco (dopo svariate prove e cambiando i jumpers) a farmi rispondere ok dal modulo tramite comandi AT.
Usando questo sketch
Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}

void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read()); 

}

riesco a farlo comunicare... ma ahimè quando digito AT (da un monitor seriale per mac) in automatico mi ritorna un duplicato, >> A A T T , in pratica mi duplica la mia digitazione... ovviamente non posso fare altro che AT perchè appena provo a digitare un comando piu lungo addio mondo e ritorna errore... Come mai?? Cosa potrei utilizzare per fare una prova rapida per l'invio di un SMS ?

Grazie

Ravnosalex

Aggiornamento... anche se duplica le lettere FUNZIONA  :) :) :)

Adesso però volevo chiedervi una cosa, come faccio a farlo partire tramite board? cioè a far accendere il modulo dalla board arduino? Perchè con i tasti è una menata assurda, devi resettare e premere al volo pwr e non sempre hai successo.... GRAZIE

PaoloP

Controlla se il modulo ha dei pin di reset o enable attivabili da Arduino.

Ravnosalex

Fatto!! Con il codice in allegato sotto funziona perfettamente !!   

Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

  int pwr = 6;
 
void setup()
{
  mySerial.begin(19200);                   
  Serial.begin(19200);                     
  pinMode(pwr, OUTPUT);                     
  digitalWrite(pwr, HIGH);                 
  delay(1000);                             
  digitalWrite(pwr, LOW);                   
}

void loop()
{
/*
  if (mySerial.available()) {                           
    mySerial.write("AT+CMGF=1\r");                     
    delay(1000);                                       
    mySerial.write("AT+CMGS=\"+39NUMERO\"\r");     
    delay(1000);                                       
    mySerial.write("SMS DI PROVA\r");                 
    mySerial.write("\x1A");                           
    delay(1000);
   
  }
*/

}


Informazione... come faccio adesso a fargli Leggere un sms che gli invio io? esiste un comando AT che lo fa?

gpb01

#25
Apr 20, 2013, 03:34 pm Last Edit: Apr 20, 2013, 03:36 pm by gpb01 Reason: 1

.....
Informazione... come faccio adesso a fargli Leggere un sms che gli invio io? esiste un comando AT che lo fa?


Bé ... qui però la vecchia buona  R T F M  ci stà tutta ...  (e se non sai cosa significa, cerca su google RTFM)  ]:D ]:D ]:D

(... o quanto meno provaci, poi chiedi aiuto ;) )

@Leo : Leo perdonami ...non sono riuscito a trattenermi ...

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

Ravnosalex

tfm read yet :)
Hai ragione scusa :) devo provare ancora... chiederò aiuto se non mi dovesse riuscire

Adesso una domandina veloce ma dai comandi AT cosa c'è di errato qui sotto?
  if (mySerial.available())
  mySerial.write("ATD+391234567;\r");
  delay(10000);
  mySerial.write("ATH");

Non fa la chiamata telefonica :(

gpb01

... ma la ATD cosa ti ritorna come risposta (... perché credo dovrebbe ritornare un qualche cosa che indica l'esito/errore della chiamata) ?

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

gpb01

... non conosco il modulo, ma sei sicuro di quel \r dopo il punto e virgola  in : mySerial.write("ATD+391234567;\r") ? E' veramente richiesto ?

Perché dando un occhiata la manuale del SIM900, nel comando ATD, leggo : "This Command may be aborted generally by receiving an ATH Command or a character during execution."

Non vorrei che lo interpretasse come un carattere di Abort ...

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

Ravnosalex


Go Up