• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Mega2560 i GSM/GPRS/GPS Shield (B)
#1
Chciałbym zapytać, może już ktoś rozwiązał problem z tym shieldem. Wykorzystywałem do komunikacji biblioteki z GSM Library , postępując zgodnie z instrukcja na : https://www.arduino.cc/en/Guide/GSMShieldLeonardoMega, Niestety nie udało mi się nawiązać komunikacji pomiędzy Mega a modułem.
 1) moduł sprawny, sprawdzony za pomocą putty czy USR-TCP232-Test-V1.3, działa ok.
 2) podpiąłem w następujący sposób: Serial1 RX1-19 do GSM-D0, TX-18 do GSM-D1 - obsługuję komunikację po hardware serial:

skrypt do odpytania modułu:

Kod:
#include <arduino.h>
//#include <SoftwareSerial.h>
#define GSMSerial Serial1

                     // rx,tx
//SoftwareSerial GSMSerial(0, 1);

void setup() {
 GSMSerial.begin(9600);            
 Serial.begin(9600);            
 
 pinMode(A5,OUTPUT);
 digitalWrite(A5, HIGH);   // włącz diodę
 delay(900);                  // odczekaj 1000ms
 digitalWrite(A5, LOW);    // wyłącz diodę
                 // odczekaj 1000ms

}

void loop() {
     
      if(Serial.available())
         GSMSerial.print((char)Serial.read());
    else  if
     (GSMSerial.available())
        Serial.print((char)GSMSerial.read());
}


Moduł budzi się ale nie odpowiada na komendy AT.

Poproszę o jakieś podpowiedzi.


Załączone pliki Miniatury
   
 
#2
Witam
Zobacz czy tak zadziała:
Kod:
#include <arduino.h>
//#include <SoftwareSerial.h>
#define GSMSerial Serial1

                    // rx,tx
//SoftwareSerial GSMSerial(0, 1);

void setup() {
GSMSerial.begin(9600);            
Serial.begin(9600);            

pinMode(A5,OUTPUT);
digitalWrite(A5, HIGH);   // włącz diodę
delay(900);                  // odczekaj 1000ms
digitalWrite(A5, LOW);    // wyłącz diodę
                // odczekaj 1000ms

}

void loop() {
 delay(1000);
   GSMSerial.println("AT");
while(GSMSerial.available())
       Serial.print((char)GSMSerial.read());
       
}
Możesz też odpalić jakiś inny arduino/konwerter UART/USB + ten putty i sprawdzić czy arduino działa prawidłowo. Ewentualnie masz jeszcze 2 pozostałe seriale, też je sprawdź.
Ewentualnie jeszcze tak:

Kod:
void loop() {
 delay(1000);
   GSMSerial.print("A");
   delay(1);
   GSMSerial.print("T");
while(GSMSerial.available())
       Serial.print((char)GSMSerial.read());
       
}
Bo w putty pewnie wysyłasz "AT" po literce i działa.
Miło być decenianym https://buycoffee.to/kaczakat
 
#3
Autor tematu Raportuj
#4 19 Kwi 2018 12:56

Ciekawe.. sam sobie odpowiadać na forum, no ale dla potomności, jeżeli ktoś będzie miał podobny problem.

Wszystko działa, a diabeł, jak diabeł, schował się w szczegółach:

Układ połączeń.

Mega GSM
TX1 - H3(pin 7)_D1
RX1 - H3(pin 8 )_D0
Vin - H1_8
GND - GND
IOREF - H1_2

I układ połączeń na zworkach:
[url=https://obrazki.elektroda.pl/7863787400_1524135179.jpg]

Soft (na "żywca" odwołanie do Serial1 , reszta to pozostałości)
Kod:
#include <arduino.h>
//#include <SoftwareSerial.h>
#define GSMSerial Serial1

// rx,tx
//SoftwareSerial GSMSerial(0, 1);

void setup() {
GSMSerial.begin(9600);
Serial.begin(9600);

pinMode(A5,OUTPUT);
digitalWrite(A5, HIGH); // włącz diodę
delay(900); // odczekaj 1000ms
digitalWrite(A5, LOW); // wyłącz diodę
// odczekaj 1000ms

}

void loop() {
//delay();
if(Serial.available())
Serial1.print((char)Serial.read());
else if
(Serial1.available())
Serial.print((char)Serial1.read());
}
i wszystko gra:-)
 
#4
Proszę używać code!
Temat zamykam.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
  


Skocz do:


Przeglądający: 1 gości