arduino ga6例程_A6 / GA6 GSM GPRS Modul und Arduino Mega

这篇博客介绍了如何将GA6 GSM GPRS模块连接到Arduino Mega,并提供了两个尝试的配置方案。第一个尝试使用了Arduino Shield,而第二个尝试使用了SoftwareSerial库来通过数字引脚建立串行连接。博主分享了用于发送短信的代码示例,包括初始化模块、等待“READY”消息、输入电话号码和短信内容,以及发送短信的函数。尽管遇到了一些问题,但提供了详细的步骤和代码,有助于读者进行实践。
摘要由CSDN通过智能技术生成

Jo, gerne:

Ich habe jedes mal GND mit GND verbunden und VCC + POWER (GA6) mit 5V verbunden, sowie den SIM Pin deaktiviert, wenn es möglich ist, dann würde ich diesen später allerdings wieder einstellen.

1. Versuch:

RX (des Moduls) -> TX des Arduinos

TX (des Moduls) -> RX des Arduinos.

Dort denke ich aber, geht es nur mit dem Arduino shield.

Code: /*

SMS sender

This sketch, for the Arduino GSM shield,sends an SMS message

you enter in the serial monitor. Connect your Arduino with the

GSM shield and SIM card, open the serial monitor, and wait for

the "READY" message to appear in the monitor. Next, type a

message to send and press "return". Make sure the serial

monitor is set to send a newline when you press return.

Circuit:

* GSM shield

* SIM card that can send SMS

created 25 Feb 2012

by Tom Igoe

This example is in the public domain.

http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS

*/

// Include the GSM library

#include

#define PINNUMBER ""

// initialize the library instance

GSM gsmAccess;

GSM_SMS sms;

void setup() {

// initialize serial communications and wait for port to open:

Serial.begin(9600);

while (!Serial) {

; // wait for serial port to connect. Needed for native USB port only

}

Serial.println("SMS Messages Sender");

// connection state

boolean notConnected = true;

// Start GSM shield

// If your SIM has PIN, pass it as a parameter of begin() in quotes

while (notConnected) {

if (gsmAccess.begin(PINNUMBER) == GSM_READY) {

notConnected = false;

} else {

Serial.println("Not connected");

delay(1000);

}

}

Serial.println("GSM initialized");

}

void loop() {

Serial.print("Enter a mobile number: ");

char remoteNum[20];  // telephone number to send sms

readSerial(remoteNum);

Serial.println(remoteNum);

// sms text

Serial.print("Now, enter SMS content: ");

char txtMsg[200];

readSerial(txtMsg);

Serial.println("SENDING");

Serial.println();

Serial.println("Message:");

Serial.println(txtMsg);

// send the message

sms.beginSMS(remoteNum);

sms.print(txtMsg);

sms.endSMS();

Serial.println("\nCOMPLETE!\n");

}

/*

Read input serial

*/

int readSerial(char result[]) {

int i = 0;

while (1) {

while (Serial.available() > 0) {

char inChar = Serial.read();

if (inChar == '\n') {

result[i] = '\0';

Serial.flush();

return 0;

}

if (inChar != '\r') {

result[i] = inChar;

i++;

}

}

}

}

Versuch 2:

TX (des Moduls) -> Pin4 des Arduinos

RX (des Moduls) -> Pin2 des Arduinos

Code: // SoftwareSerial lib allows to use digital pins for serial connection

#include

// Tx of A6 linked to pin 4

const int pinRxNano = 4;

// Rx of A6 linked to pin 2

const int pinTxNano = 2;

//Enter here the phone number

const String phoneNumber= "+491 MEINE TELEFONNUMMER 2";

const String messageInit = "A6 ready";

//Create serial connection on the pin

SoftwareSerial A6GSM(pinRxNano, pinTxNano);

//Function waiting for "OK", used for various purposes

void Response(){

int a = 0;

Serial.println();

while(1){

if(A6GSM.available()){

String dataFromA6 =A6GSM.readString();

dataFromA6.trim();

Serial.println(dataFromA6);

a++;

if(dataFromA6.indexOf("OK")>0){break;}

}

if(a>500){a=0;break;}

delay(200);

}

}

//Function used to send "AT" to A6 until it answers with "OK"

void startAT(){

int nbAT = 0;

while(1){

if (nbAT==0){A6GSM.println("AT");Serial.print(".");}

if(A6GSM.available()){

String dataFromA6 =A6GSM.readString();

dataFromA6.trim();

Serial.println(dataFromA6);

if(dataFromA6.indexOf("OK")>0){break;}

}

delay(200);

nbAT++;

if(nbAT++>10){nbAT=0;}

}

}

//Function used to send a sms

void envoieSMS(String numeroEnvoi, String messageEnvoi) {

delay(200);

Serial.println("Selection format message SMS");

A6GSM.println("AT+CMGF=1");

Response();

delay(200);

Serial.println("Envoi message SMS");

A6GSM.print("AT+CMGS=\"");

A6GSM.print(numeroEnvoi);

A6GSM.println("\"");

delay(200);

A6GSM.print(messageEnvoi);

delay(200);

A6GSM.println (char(26));

Response();

}

void setup() {

//GSM serial connection

A6GSM.begin(9600);

//Usual serial connection to display on console

Serial.begin(9600);

delay(200);

Serial.println("Init");

//AT

startAT();

envoieSMS(phoneNumber,messageInit);

}

void loop() {

}

Ich hatte noch einen ziemlich ähnlichen Code, wie den obigen ausprobiert, doch der ging auch nicht und ich finde diesen momentan nicht mehr.

Ich hoffe, dass das erst einmal ausreicht, bzw wüsste ich nicht, was ich noch schreiben soll.

VG, Finn.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值