ආඩුඊනෝ ප්‍රෝග්‍රෑමිං Part 14 – GPRS GSM Module – SIM900A

අද අපි කතා කරන්න යන්නෙ GSM module එක ගැන. අපිට මේ GSM module එක ( මම මේකෙදි භාවිතා කරන්නෙ SIM900A V5.1 කියන module එක (2 රූපය) භාවිතා කරල SMS එකක් මගින් අපිට අවශ්‍ය කාර්‍යයක් ඉටු කරගන්න වගේම අපිට අවශ්‍ය දුරකතනයකට SMS එකක් යවන්න උනත් පුලුවන්.

අපි බලමු මේ SIM900A V5.1 module එකේ Pin පිහිටලා තියෙන්නෙ කොහොමද කියල. (3 රූපය )

අපි මුලින්ම බලමු මේ module එක වැඩ කරනවද කියල අපි බලාගන්නෙ කොහොමද කියල. මේ module එකට sim එකක් දාල vcc pin එකට 5v ලබා දුන් විට මෙහි ඇති රතු පාට LED එක පත්තු වෙනව. එහෙම නම් අපිට මූලික අදහසක් ගන්න පුලුවන් මේ module එක වැඩ කරනව කියල. තව වැඩක් කරන්න පුලුවන්. තවත් Mobile phone එකකින් module එකේ තිබෙන Sim එකට voice call එකක් ගන්න. එතකොට Ring වෙනව නම් SIM900A module එක නිවැරදිව Network එකට connect වෙලා තිබෙනවා.

දැන් අපි බලමු මේ module එක Arduino board එකත් සමග නිවැරදිව ක්‍රියා කරනවද කියල. ඒ සදහා පහත ආකාරයට උපාංග සකසාගන්න.

GSM Module VCC – Arduino 5V
GSM Module GND – Arduino GND
GSM Module Tx – Arduino 2 Pin
GSM Module Rx – Arduino 3 Pin

දැන් පහත code එක upload කර බලන්න. Upload කිරීමට පලමුව RX සහ TX pin ගලවන්න.Upload කිරීමෙන් පසුව නැවත සවි කරන්න.

#include <SoftwareSerial.h>

SoftwareSerial SIM900A(2,3); //TX and RX pins
char State=’ ‘;

void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println(“Arduino with SIM900A is ready”);
SIM900A.begin(9600);
Serial.println(“SIM900A started at 9600”);
delay(1000);
Serial.println(“SIM900A is Ready”);
}

void loop() {
if(SIM900A.available()){
State=SIM900A.read();
Serial.write(State);
}

if(Serial.available()){
State=Serial.read();
SIM900A.write(State);
}
}

දැන් Serial monitor එක open කර AT යනුවෙන් type කර Send කරන්න. එවිට නැවත Serial monitor එක තුල AT යනුවෙන් පෙන්විය යුතුයි. දැන් කලින් සදහන් කල ආකාරයටම module එකේ ඇති Sim එකට voice call එකක් ගන්න. එවිට Serial monitor එක තුල Ring යනුවෙන් display විය යුතුයි. මෙය සාර්ථකව සිදු වූයේ නම් ඔබගේ SIM900A module එක නිවැරදිව ආඩුඊනෝ බෝඩ් එක සමග communicate කරනව.

දැන් ඊලග පියවර. මෙහිදී අපි බලන්නෙ මේ module එක යොදාගෙන SMS එකක් මගින් නිවසේ බල්බ් එකක් on කරන්නේ සහ off කරන්නේ කොහොමද කියන එක.

මේ සදහා අපිට අවශ්‍ය වෙනවා,

1) Arduino Uno board × 1
2) SIM900A GSM Module × 1 (https://scionelectronics.com/product/gprs-gsm-module-sim900a/)
3) Relay module × 1
4) Bulb × 1
5) Jumper Wires and Wires

දැන් 4 රූපයේ ආකාරයට උපාංග සකසාගෙන පහත code එක upload කරන්න. Upload කරන්න ඉස්සරල RX සහ TX pin ගලවන්න. Upload කිරීමෙන් අනතුරුව නැවත සවි කරන්න.

/*
***** YS Presents *****
GSM SIM900A Coding
*/

#include <SoftwareSerial.h>

SoftwareSerial SIM900A(2, 3); // TX and RX pins

const int Bulb = 6; //Bulb pin
String Message;

void setup() {
pinMode(Bulb, OUTPUT);
digitalWrite(Bulb, LOW);
Serial.begin(9600);
SIM900A.begin(9600);
delay(5000);
Serial.print(“SIM900A is Ready”);

SIM900A.print(“AT+CMGF=1\r”);
delay(100);
}

void loop() {
if (SIM900A.available() > 0) {
Message = SIM900A.readString();
Serial.print(Message);
delay(10);
}
if (Message.indexOf(“ON”) >= 0) { //Bulb On message
digitalWrite(Bulb, HIGH);
Message = “”;
} else if (Message.indexOf(“OFF”) >= 0) { //Bulb Off message
digitalWrite(Bulb, LOW);
Message = “”;
}
}

මේකෙදි වෙන්නෙ GSM Module එකේ තියෙන Sim එකට Message එකක් ආවම ඒ SMS එකේ එන string එක මේ code එකේ තියෙන string එකත් එක්ක compare කරල බලල code එකේ තියන විදිහට තීරනයකට එන එක.

මේ code එකේ 11 වෙනි පේලියේ තියන string message; කියන variable එක define කරගෙන තියෙන්නෙ SMS එකකින් එන string එක save කරගන්න.

මෙහි loop කොටස ඇතුලෙ 27 වෙනි පේලියේ තිබෙන කොටස මගින් message කියන variable එකට GSM module එකට ආව string එක assign කරගන්නව.

ඉන්පසු 31 වෙනි පේලියෙන් පසු ON කියන message එක ආවහොත් bulb එක ඔන් වීමටත්, 35 වන පේලියෙන් පසු OFF යන message එක ආවහොත් bulb එක off වීමටත් කේත ලියා තිබේ.

දැන් අපි බලමු ඊලග පියවර. අපි කොහොමද මේ GSM Module එක යොදාගෙන අපේ mobile phone එකට SMS එකක් යවන්නෙ කියල. ඒ සදහාත් ඉහත ආකාරයටම උපාංග සකසාගෙන පහත code එක upload කරන්න.

/*
***** YS Presents *****
GSM SIM900A Coding
*/

#include <SoftwareSerial.h>

SoftwareSerial SIM900A(2, 3);

const int Bulb = 6;
String Message;

void setup() {
pinMode(Bulb, OUTPUT);
digitalWrite(Bulb, LOW);
Serial.begin(9600);
SIM900A.begin(9600);
delay(5000);
Serial.print(“SIM900A is Ready”);

SIM900A.print(“AT+CMGF=1\r”);
delay(100);
}

void loop() {
if (SIM900A.available() > 0) {
Message = SIM900A.readString();
Serial.print(Message);
delay(10);
}
if (Message.indexOf(“ON”) >= 0) {
digitalWrite(Bulb, HIGH);
Message = “”;
SendMessage();
} else if (Message.indexOf(“OFF”) >= 0) {
digitalWrite(Bulb, LOW);
Message = “”;
}
}

void SendMessage() {
Serial.println(“Sending Message”);
SIM900A.println(“AT+CMGF=1”);
delay(1000);
Serial.println(“Seting Mobile Number”);
SIM900A.println(“AT+CMGS=\”+94*********\”\r”);
delay(1000);
Serial.println(“Seting SMS”);
SIM900A.println(“Hello!! *This Message Sent By SIM900A* Bulb is On”);
delay(100);
Serial.println(“Done”);
SIM900A.println((char)26);
delay(1000);
Serial.println(“Message has been Sent Successful”);
}

මෙහිදී කලින් කෝඩ් එකට වඩා void SendMessage යන කොටස එකතු වී තිබෙනවා.

මෙහිදී 43 වෙනි පේලියේදී Text Mode එකට GSM module එක සම්බන්ධ කර තිබෙනවා.

46 වන පේලියේ ඇති ******** වෙනුවට SMS එක යැවිය යුතු දුරකතන අංකය ලබා දෙන්න.

49 වෙනි පේලියේදී Message එකෙව් අන්තර්ගත විය යුතු දෙය සදහන් කර තිබෙනවා. මෙය ඔබට අවශ්‍ය පරිදි වෙනස් කරගන්න.

මේ මූලික සංකල්පය යොදාගෙන ඔයාගෙ නිර්මාණශීලීත්වය උපයෝගී කරගෙන නිර්මාණාත්මක දෙයක් කරන්න ඔයාලට කරන්න පුලුවන්.

ඉතින් තව එක දෙයක් කියන්නම් මගෙන් ගොඩක් දෙනෙක් comments වලින් වගේම inbox ඇවිල්ලත් අහල තිබ්බ කොළඹින් පිට ඉන්න අයට මේ Arduino parts ගන්න තැනක් නැද්ද කියල. ඉතින් මන් හිතුව මන් බඩු ගන්න තැන ගැන ඔයාලට කිව්ව නම් ඒක ඔයගොල්ලන්ට පහසුවක් වෙයි කියල.

“Scion Electronics” ( සයන් ඉලෙක්ට්‍රොනික්ස් ) ඔයාලට Arduino සම්බන්ධ ඕනෙම item එකක් warranty එකක් සහිතව ගන්න පුලුවන් මේ ශොප් එකෙන්. මාලබේ ස්ලිට් කැම්පස් එක ඉස්සරහ වගේම මොරටුව කැම්පස් එක ඉස්සරහත් මෙයාලගෙ shop තියනව. ඔයගොල්ලො පිට පලාතක ඉන්නව නම් ඔයාලට පුලුවන් ගෙදරටම මේ භාණ්ඩ ගෙන්න ගන්න. මෙයාලගෙ Website එකේ සියලුම item ගැන විස්තර තියනව. ( https://scionelectronics.com/ ) වගකීමක් සහිතවම ඔයාලට ඕනෙ කරන Arduino Parts ගන්න පුලුවන්.

ආඩුඊනෝ ප්‍රෝග්‍රෑමිං Part 15 තුළින් නැවත හමු වෙමු.

Compiled by: Yasas Sadeepa

Leave a Reply

Your email address will not be published. Required fields are marked *