Danh mục sản phẩm
Hỗ trợ trực tuyến
Hỗ trợ mua hàng

Mobile: 02436.231.170

Ms Huyền - Kinh doanh

Mobile: 0984.058.846

Tư vấn kỹ thuật Raspberry Pi

Mobile: 0862.628.846

Tư vấn kỹ thuật Module khác

Mobile: 0862.998.846

Sim900 Shield (dùng cho Arduino)

Sim900 Shield (dùng cho Arduino)
Sim900 Shield (dùng cho Arduino)
Nhà sản xuất: MLAB
Mã hàng: Sim900A Shield (Dùng cho Arduino)
Trạng thái: Đặt hàng trước
Giá: 510,000 vnđ
Số lượng:  
   - Hoặc -   

Giới thiệu

Sim900 Shield là module GSM/GPRS, được MLAB thiết kế dựa trên Sim900 và sử dụng được với các mạch Arduino.

Module này sẽ là rất hữu ích cho những bạn làm về Arduino muốn giải quyết nhanh bài toán điều khiển các thiết bị từ xa hoặc giám sát các sự kiện thông qua GSM hoặc qua internet (GPRS)

Đặc điểm

  • Sử dụng nguồn 9VDC-12VDC (dòng 1A trở lên) với Arduino thông thường và dùng được với nguồn 9VDC-24VDC với mạch Uno VN01 của MLAB
  • Có thể dùng chung nguồn hoặc riêng nguồn với Arduino 
  • Trên mạch đã có phần bảo vệ ESD và chống cắm ngược nguồn đầu vào
  • Module Sim hoạt động ở 2 băng tần 900/1800 MHz,
  • Có thể khởi động module sim bằng phím bấm hoặc khởi động mềm bằng cách điều khiển chân PWKEY

Chế độ Bảo hành:

  • Các sản phẩm đều được test cẩn thận trước khi đến tay khách hàng
  • Sản phẩm được bảo hành 12 tháng kể từ ngày mua với các lỗi do MLAB sản xuất 

Các thiết lập ban đầu về phần cứng với Arduino

  • Lựa chọn việc dùng chung nguồn với Arduino hay sử dụng riêng nguồn với Arduino:

            Trên Shield có Jumper để làm việc đó. Khi Jumper được cắm(mặc định), Shield và Arduino sẽ dùng chung nguồn.Ngược lại, khi Jumper được bỏ ra, Shield và Arduino sẽ phải được cấp riêng nguồn.

  • Bước tiếp theo các bạn chỉ cần cắm Shield lên Arduino, cấp nguồn và bắt đầu lập trình.

Lưu ý:

  • Trường hợp các bạn sử dụng chung nguồn 12VDC cho  mạch Arduino thông thường và Sim900A Shield thì nguồn cấp nên được cắm từ Shield, không nên cắm nguồn từ mạch Arduino vì mạch Arduino thông thường khuyến cáo chỉ nên dùng nguồn 9VDC-10VDC. Các bạn cấp nguồn từ Sim900A Shield thì sẽ an toàn hơn cho Arduino, vì trên Shield đã có phần hạ áp 12VDC xuống còn khoảng 10VDC, để cấp cho mạch Arduino. Nếu các bạn sử dụng mạch Uno VN01 thì không phải lo lắng về phần nguồn đầu vào vì nguồn cấp cho mạch dải rộng 9VDC-24VDC.
  • Các chân giao tiếp UART đã được nối với chân TX, RX (chân số 0, số 1) của kit  Arduino
  • Chân PWK trên Shield đã được nối với chân số 9 của kit Arduino
  • Khi module bắt đầu được khởi động: đèn Netlight trên module sẽ nhấp nháy nhanh. Trong khoảng chục giây sau đó, khi module sim đã bắt được mạng, đèn Netlight sẽ nháy chậm lại, khoảng 3 giây 1 lần. Sau thời gian này các bạn có thực hiện được các chức năng GSM/GPRS
  • Có 2 cách để khởi động/ tắt module sim: 

             Cách 1: sử dụng phím bấm trên module sim, nhấn và giữ phím khoảng 1 giây rồi nhả. (Áp dụng cho cả trường hợp khởi động hoặc tắt module sim)    

             Cách 2: Lập trình điều khiển chân PWK, đưa chân PWK lên mức 1 khoảng 1 giây sau đó về mức 0. (Áp dụng cho cả trường hợp khởi động hoặc tắt module sim) 

  • Khi nạp chương trình mới, nếu module sim đang hoạt động các bạn nên tắt module trước khi nạp chương trình (Sử dụng phím bấm)

Lập trình với Arduino

Code tham khảo với Arduino

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Bai toan : nhan tin dieu khien bat tat bong den
// Neu noi dung tin nhan la : LAMP_ON       thi bat bong den
// Neu noi dung tin nhan la : LAMP_OFF      thi tat bong den
 
 
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 sim800C
const int RELAY =  12;                              // Chan so 12 arduino uno dung lam chan dieu khien dong/cat Relay de On/Off den
 
String RxBuff = "";                                    // Khai bao bo dem nhan du lieu
                                                                // Tat ca du lieu nhan ve tu module sim deu duoc luu trong day 
 
int Index_Lamp_On = -1;                           // vi tri cua chuoi "LAMP_ON"
int Index_Lamp_Off = -1;                           // vi tri cua chuoi "LAMP_OFF"
 
void Gsm_Power_On();                                            // Bat module Sim800C
void Gsm_Init();                                                       // Cau hinh Module Sim800C
void Gsm_MakeCall(String phone);                            // Ham goi dien
void Gsm_MakeSMS(String phone,String content);     // Ham nhan tin
 
 
void setup() {
  Serial.begin(9600);                           // Cau hinh UART de giao tiep module Sim800C
 
  digitalWrite(RELAY, LOW);               // Khai bao chan  de dieu khien dong cat RELAY
  pinMode(RELAY, OUTPUT);
 
  digitalWrite(PWR_KEY, LOW);         // Khai bao chan PWR_KEY de dieu khien bat bat module Sim800C
  pinMode(PWR_KEY, OUTPUT);
  
  delay(1000);                       
  Gsm_Power_On();                                      // Bat Module Sim800C
  delay(10000);
  Gsm_Init();                                                 // Cau hinh module Sim800C
  Gsm_MakeCall(myphone);                          // Test cuoc goi 
  Gsm_MakeSMS(myphone,"I'm a test");       // Test tin nhan
}
 
void loop() {
  delay(1000);                                                                    // tre 1s 
  Index_Lamp_On = RxBuff.indexOf("LAMP_ON");              // Tim vi tri cua chuoi "LAMP_ON" trong bo dem nhan RxBuff
  if(Index_Lamp_On >= 0)                                                   // Neu tim thay "LAMP_ON" trong RxBuff
  {
    Index_Lamp_On = -1;                                                     // 
    RxBuff = "";                                                                   // Xoa bo dem
    digitalWrite(RELAY, HIGH);                                             // Dong Relay de bat den // Bat bong den
  }
  else
  {                                                                                    // Neu khong tim thay "LAMP_ON" thi tiep tuc tim "LAMP_OFF"
    Index_Lamp_Off = RxBuff.indexOf("LAMP_OFF");          // Tim vi tri cua chuoi "LAMP_OFF" trong bo dem nhan RxBuff  
    if(Index_Lamp_Off >= 0)                                                // Neu tim thay "LAMP_OFF" trong RxBuff
    {
      Index_Lamp_Off = -1;                                                   // 
      RxBuff = "";                                                                // Xoa bo dem
      digitalWrite(RELAY, LOW);                                           // Cat Relay de tat den
    }
  }
}
 
void serialEvent() {                                          // Chuong trinh ngat nhan du lieu
  while (Serial.available()) {                               // Doi den khi co du lieu nhan ve
    // get the new byte:
    char inChar = (char)Serial.read();                  // Doc mot byte du lieu vua nhan ve
    RxBuff += inChar;                                       // Ghi byte do vao bo dem nhan RxBuff (ta se xu ly RxBuff trong vong loop()) 
    if(RxBuff.length()>= 128)                              // Neu bo dem qua dai thi xoa bo dem di
    {
      RxBuff = "";
    }
  }
}
 
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(100);                                              // cac ban xem trong Hardware designed sim800C 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(String phone)           
{
  Serial.println("ATD" + phone + ";");         // Goi dien 
  delay(10000);                                        // Sau 10s
  Serial.println("ATH");                              // Ngat cuoc goi
  delay(2000);
}
 
void Gsm_MakeSMS(String phone,String content)
{
  Serial.println("AT+CMGS=\"" + phone + "\"");     // Lenh gui tin nhan
  delay(3000);                                                     // Cho ky tu '>' phan hoi ve 
  Serial.print(content);                                          // Gui noi dung
  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ác bạn có thể hiểu rõ hơn phần lập trình Module Sim900  với Arduino tại đây
 
Video:

 

 

 

 

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: Xấu           Tốt

Nhập mã bảo vệ: