Điều khiển thiết bị bằng tin nhắn với Sim900 và Arduino

Lời ngõ

Chào các bạn! Hôm nay mình sẽ tiếp tục chia sẻ về cách sử dụng modul sim900 và arduino để điều khiển thiết bị bằng tin nhắn. Xin lỗi vì đã muộn trong việc viết bài vì lý do công việc. Mình hi vọng qua những bài viết này, mình có thể chia sẻ những kiến thức hữu ích và giúp các bạn phát triển ứng dụng trong các dự án của mình. Mình không thể chi tiết hóa từng bước từ việc nối dây, code cho đến sơ đồ mạch vì thế, mình khuyến khích các bạn tự tìm hiểu trước khi hỏi để cả hai bên không mất thời gian. Nếu có bất cứ sai sót nào trong bài viết này, các bạn hãy để lại comment để mình hoàn thiện hơn nhé.

Vào đề

Trong bài viết này, mình sẽ chia sẻ về cách điều khiển thiết bị qua tin nhắn (phần này khá dễ) và giới thiệu về nền tảng Processing để các bạn có thể tìm hiểu trước khi đọc bài viết tiếp theo. Nếu ai đã biết về Processing có thể bỏ qua phần này.

Phần nối dây và sử dụng thư viện đã được mình giới thiệu trong hai bài trước, các bạn có thể xem lại nếu không nhớ.

Code phần điều khiển led bằng tin nhắn

#include "SIM900.h"
#include 
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started = false; //trạng thái modul sim
char smstext[160]; // nội dung tin nhắn
char number[20]; // số điện thoại format theo định dạng quốc tế

void setup(){
  Serial.begin(9600);
  Serial.println("Gui va nhan tin nhan");

  if (gsm.begin(2400)){
    Serial.println("nstatus=READY");
    started=true;
  }
  else
    Serial.println("nstatus=IDLE");

  if(started){
    sms.SendSMS("+84982488032", "Online");
  }

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
}

void loop() {
  if(started){
    char pos; //địa chỉ bộ nhớ sim (sim luu tối đa 40 sms nên max pos = 40)
    pos = sms.IsSMSPresent(SMS_UNREAD); // kiểm tra tin nhắn chưa đọc trong bộ nhớ
    //hàm này sẽ trả về giá trị trong khoảng từ 0-40

    if((int)pos){//nêu có tin nhắn chưa đọc
      if(sms.GetSMS(pos, number, smstext, 160)){
        Serial.print("So dien thoại: ");
        Serial.println(number);
        Serial.print("Noi dung tin nhan: ");
        Serial.println(smstext);

        if(strcmp(smstext,"LEDON")==0){//so sánh 2 chuỗi
          digitalWrite(13, HIGH);
          Serial.println("Bat led");
        }
        else {
          Serial.println("Co tin nhan den nhung sai cu phap");
        }
      }

      sms.DeleteSMS(byte(pos));//xóa sms vừa nhận
    }

    delay(1000);
  }
}

Ngôn ngữ Processing

Processing là một ngôn ngữ lập trình mã nguồn mở, được thiết kế để lập trình đồ họa trên nhiều nền tảng khác nhau như Linux, Windows, Mac, Android và Web. Ngôn ngữ này được sáng tạo bởi Casey Reas và Benjamin Fry từ phòng thí nghiệm đa phương tiện của Đại học MIT, và nó thích hợp cho việc học tập và nghiên cứu về khái niệm cơ bản của đồ họa máy tính. Dự án Processing bắt đầu từ năm 2001 và được xây dựng trên ngôn ngữ Java, nhưng sử dụng cú pháp đơn giản hơn.

Mình sử dụng ngôn ngữ Processing để viết phần mềm điều khiển. Nó khá dễ sử dụng và có nhiều thư viện mở rộng. Để sử dụng Processing, các bạn cần có kiến thức căn bản về Java.

Trang chủ Processing: http://www.processing.org/

Các bạn có thể tìm hiểu thêm tại trang web của Processing.

Trong bài tiếp theo, mình sẽ chia sẻ về cách viết giao diện điều khiển, giao tiếp giữa Arduino và giao diện Processing trên máy tính qua cổng USB, cũng như gửi và nhận hiển thị dữ liệu.

Nếu các bạn thấy bài viết này hữu ích, hãy vote và like để mình có động lực viết tiếp. Cảm ơn các bạn đã đọc bài!

Chúc các bạn thành công!

FEATURED TOPIC

hihi