Hướng dẫn lập trình Module Sim800A và Arduino

Nằm trong chuỗi bài hướng dẫn sử dụng Module Sim800A, bài viết này sẽ hướng tới một ứng dụng cụ thể hơn, giúp các bạn dễ hình dung ra cách thức sử dụng module sim800A trong thực tế.

Bài toán đặt ra: Đo nhiệt độ phòng, giám sát cảnh báo về điện thoại khi nhiệt độ vượt ngưỡng

Bài toán này được ứng dụng khá nhiều trong thực tế như: Giám sát nhiệt độ phòng lạnh dùng trong bảo quản thực phẩm nông nghiệp, Giám sát nhiệt độ phòng đặt máy chủ …

 

Chuẩn bị phần cứng

1 Kit Arduino Uno R3 hoặc 1 Kit Arduino Uno VN01

http://mlab.vn/1697809-uno-vn01-arduino-uno-phien-ban-viet-nam.html

http://mlab.vn/407044-arduino-uno-r3-su-dung-atmega-328p-pu.html

1 Module Sim800A dùng cho Arduino

http://mlab.vn/1990921-sim800a-gsm-shield-dung-cho-arduino.html

1 Cảm biến nhiệt độ, độ ẩm DHT11

http://mlab.vn/1737124-module-cam-bien-nhiet-do-do-am-dht11.html

 

Kết nối phần cứng

Tham khảo hướng dẫn sử dụng Module Sim800A

http://mlab.vn/bai-viet-ki-thuat/huong-dan-su-dung-module-gsm-gps-gprs/46225-huong-dan-su-dung-module-sim800a-phan-1.html

http://mlab.vn/bai-viet-ki-thuat/huong-dan-su-dung-module-gsm-gps-gprs/47089-huong-dan-su-dung-module-sim800a-%E2%80%93-phan-2-giao-tiep-voi-server.html

http://mlab.vn/bai-viet-ki-thuat/huong-dan-su-dung-module-gsm-gps-gprs/48400-huong-dan-su-dung-module-sim800a-phan-3-bluetooth.html

 

Để cho các bạn dễ hình dung, mình làm lưu đồ thuật toán

 

Code demo, các bạn tạo project mới trên Arduino IDE, copy chương trình bên dưới vào, nạp chương trình và chạy

#include "DHT.h"

#define DHTTYPE DHT11                            // DHT 11 
#define DHTPIN  A0                               // Chan ket noi 

#define TEMPERATURE_WARNING  28                  // Ngương canh bao nhiet do 28*C

const String myphone = "01689951815";            // Thay so cua ban vao day
const int PWR_KEY =  9;                          // Chan so 9 arduino uno dung lam chan dieu khien bat tat module sim900A

float Temperature = 0;
 
void Gsm_Power_On();                             // Bat module Sim 900A
void Gsm_Init();                                 // Cau hinh Module Sim 900A
void Gsm_MakeCall();                             // Ham goi dien
void Gsm_MakeSMS();                              // Ham nhan tin canh bao

DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  Serial.begin(9600);                           // Cau hinh UART de giao tiep module Sim 900A
 
  digitalWrite(PWR_KEY, LOW);                   // Khai bao chan PWR_KEY de dieu khien bat bat module Sim 900A
  pinMode(PWR_KEY, OUTPUT);

  dht.begin();                                  // Bat dau dung DHT
  
  delay(1000);                       
  Gsm_Power_On();                               // Bat Module Sim 900A
  Gsm_Init();                                   // Cau hinh module Sim 900A
  Gsm_MakeCall();                               // Test cuoc goi 
}
 
void loop() {
  Temperature = dht.readTemperature();
  Serial.print("Nhiet do : ");                  // Gui noi dung
  Serial.print(Temperature);
  Serial.println(" *C");
  if(Temperature > TEMPERATURE_WARNING)
  {
    Gsm_MakeSMS();
    delay(20000);
  }
  delay(2000);
}

void Gsm_Power_On()
{
  digitalWrite(PWR_KEY, HIGH);                // Du chan PWR_KEY len cao it nhat 1s 
  delay(1500);                                // o day ta de 1,5s
  digitalWrite(PWR_KEY, LOW);                 // Du chan PWR_KEY xuong thap
  delay(10000);                               // cac ban xem trong Hardware designed sim900A de hieu ro hon
}
 
void Gsm_Init()
{
  Serial.println("ATE0");                     // Tat che do phan hoi (Echo mode)
  delay(2000);
  Serial.println("AT+IPR=9600");              // Dat toc do truyen nhan du lieu 9600 bps
  delay(2000);
  Serial.println("AT+CMGF=1");                // Chon che do TEXT Mode
  delay(2000);
  Serial.println("AT+CLIP=1");                // Hien thi thong tin nguoi goi den
  delay(2000);
  Serial.println("AT+CNMI=2,2");              // Hien thi truc tiep noi dung tin nhan
  delay(2000);
}
 
void Gsm_MakeCall()           
{
  Serial.println("ATD" + myphone + ";");       // Goi dien 
  delay(15000);                                // Sau 15s
  Serial.println("ATH");                       // Ngat cuoc goi
  delay(2000);
}
 
void Gsm_MakeSMS()
{
  Serial.println("AT+CMGS=\"" + myphone + "\"");     // Lenh gui tin nhan
  delay(5000);                                       // Cho ky tu '>' phan hoi ve 
  Serial.print("Nhiet do vuot nguong: ");                             // Gui noi dung
  Serial.print(Temperature);
  Serial.print(" *C");
  Serial.print((char)26);                            // Gui Ctrl+Z hay 26 de ket thuc noi dung tin nhan va gui tin di
  delay(5000);                                       // delay 5s
}

 

Còn tiếp video hướng dẫn

....

 

Bài viết liên quan

 

 

 

Hướng dẫn sử dụng module Sim800A Phần 1
 
Hướng dẫn sử dụng module Sim800A – Phần 2 Giao tiếp với Server
 
Hướng dẫn sử dụng module Sim800A Phần 3 Bluetooth
 

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: