Bảng thông báo không dây là thuật ngữ rất được lựa chọn cho dự án này, vì nó có phạm vi rất rộng thay vì chỉ là một bảng thông báo đơn giản. Trước tiên, chúng ta nên hiểu mục đích của dự án này, trong hệ thống này, chúng ta có thể hiển thị một tin nhắn hoặc thông báo đến một số thiết bị hiển thị như màn hình LCD, và thông báo này có thể dễ dàng được thiết lập hoặc thay đổi từ bất kỳ đâu trên thế giới, chỉ bằng cách sử dụng cơ sở SMS của bạn điện thoại di động. Bất kỳ thông báo nào chúng tôi muốn hiển thị, chỉ cần gửi SMS của văn bản đó, với một số tiền tố và hậu tố.
Điều này rất hữu ích trong Khách sạn, Trung tâm thương mại, trường đại học, văn phòng và có thể được sử dụng ở bất cứ đâu, ngay cả ở nhà. Giống như bạn có thể đặt thông báo như “Không làm phiền” ở cổng phòng khách sạn, có thể đặt thông báo ở bậc cửa nhà khi bạn đi vắng và tất nhiên nó được sử dụng làm bảng thông báo trong trường học, cao đẳng, rạp chiếu phim, v.v. Và vâng, nó không chỉ là một Bảng tin đơn giản, sự hữu ích của dự án này là bạn có thể đặt hoặc thay đổi thông báo hoặc thông báo từ bất cứ đâu, chỉ cần gửi SMS từ điện thoại của bạn. Bạn cũng có thể kiểm tra một dự án tương tự nhưng trên một loại màn hình khác: Bảng điểm Arduino sử dụng Màn hình ma trận LED P10 ngoài trời.
Trước đây chúng tôi đã sử dụng phương tiện SMS của điện thoại di động để bảo mật gia đình và điều khiển thiết bị gia dụng từ xa: Cảm biến PIR và Hệ thống bảo mật dựa trên GSM và Tự động hóa gia đình dựa trên GSM sử dụng Arduino
Các bác sĩ cho biết thêm:
Giải thích làm việc:
Trong dự án này, Arduino UNO được sử dụng để điều khiển toàn bộ quá trình, mô-đun GSM (SIM900A) để nhận SMS / tin nhắn được gửi từ điện thoại di động và màn hình LCD để hiển thị tin nhắn.
Chúng tôi có thể gửi một số tin nhắn hoặc thông báo như “#Circuit Digest *”, “# Chúng tôi chào đón bạn *” qua SMS. Ở đây chúng tôi đã sử dụng một tiền tố trong chuỗi thông báo là '#'. Tiền tố này được sử dụng để xác định phần bắt đầu của tin nhắn hoặc thông báo. Và '*' được dùng làm hậu tố để biểu thị phần cuối của tin nhắn hoặc thông báo.
Khi chúng ta gửi SMS từ điện thoại di động đến mô-đun GSM thì GSM sẽ nhận SMS đó và gửi đến Arduino. Bây giờ Arduino đọc tin nhắn SMS này và trích xuất thông báo chính từ chuỗi nhận được và lưu trữ trong một chuỗi khác. Và sau đó gửi tin nhắn đã trích xuất đến LCD 16x2 bằng cách sử dụng các lệnh thích hợp.
Hoạt động thêm của hệ thống này được giải thích trong phần 'Mô tả mã' bên dưới. Trước khi đi vào chi tiết lập trình, chúng ta nên biết về mô-đun GSM.
Mô-đun GSM:
Mô-đun GSM được sử dụng trong nhiều thiết bị truyền thông dựa trên công nghệ GSM (Hệ thống toàn cầu cho truyền thông di động). Nó được sử dụng để tương tác với mạng GSM bằng máy tính. Mô-đun GSM chỉ hiểu các lệnh AT và có thể đáp ứng tương ứng. Lệnh cơ bản nhất là “AT”, nếu GSM phản hồi OK thì nó hoạt động tốt, ngược lại nó phản hồi với “ERROR”. Có nhiều lệnh AT khác nhau như ATA để trả lời cuộc gọi, ATD để quay số cuộc gọi, AT + CMGR để đọc tin nhắn, AT + CMGS để gửi tin nhắn, v.v. Các lệnh AT phải được theo sau bởi Carriage return tức là \ r (0D trong hex), như “AT + CMGS \ r”. Chúng tôi có thể sử dụng mô-đun GSM bằng các lệnh sau:
ATE0 Để tắt tiếng vọng
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Số điện thoại di động"
>> Bây giờ chúng ta có thể viết tin nhắn của mình
>> Sau khi soạn tin nhắn
Ctrl + Z gửi lệnh gửi tin nhắn (26 ở dạng thập phân).
ENTER = 0x0d trong HEX
Các SIM900 là một hoàn Quad-band GSM / GPRS module mà cung cấp GSM / GPRS 850/900/1800 / 1900MHz hiệu suất cho giọng nói, tin nhắn SMS và dữ liệu với mức tiêu thụ điện năng thấp.
Mô tả mạch:
Kết nối của Bảng thông báo không dây sử dụng GSM và Arduino rất đơn giản và được thể hiện trong hình bên dưới. Ở đây, một màn hình tinh thể lỏng (LCD) được sử dụng để hiển thị “Thông báo” hoặc tin nhắn, được gửi qua điện thoại di động dưới dạng SMS. Các chân dữ liệu của LCD là RS, EN, D4, D5, D6, D7 được kết nối với chân số arduino số 7, 6, 5, 4, 3, 2. Và chân Rx và Tx của mô-đun GSM được kết nối trực tiếp tại Tx và Rx pin của Arduino tương ứng. Và mô-đun GSM được cấp nguồn bằng cách sử dụng bộ chuyển đổi 12 volt.
Mô tả mã:
Mã của chương trình dễ hiểu; điều mới ở đây là hàm khởi tạo GSN gsm_init (), được giải thích cuối cùng.
Trong chương trình, trước hết chúng ta bao gồm thư viện cho màn hình tinh thể lỏng (LCD) và sau đó chúng ta định nghĩa dữ liệu và các chân điều khiển cho LCD và một số biến.
#include
Sau đó, giao tiếp nối tiếp được khởi tạo ở tốc độ 9600 bps và đưa ra hướng tới chân đã sử dụng. Và khởi tạo Mô-đun GSM trong vòng lặp thiết lập.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); digitalWrite (dẫn, CAO); lcd.print ("Khởi động GSM…"); gsm_init (); lcd.setCursor (0,0); lcd.print ("Thông báo không dây");
Để nhận dữ liệu nối tiếp, chúng tôi sử dụng hai hàm, một là Serial.available kiểm tra bất kỳ dữ liệu nối tiếp nào đến hay không và một hàm khác là Serial.read đọc dữ liệu đến theo thứ tự.
void serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; if (ch == '*') {temp = 1; lcd.clear (); lcd.print ("Đã nhận Tin nhắn"); chậm trễ (1000); }}}
Sau khi nhận dữ liệu theo thứ tự, chúng tôi lưu trữ dữ liệu đó trong một chuỗi và chuỗi này được kiểm tra cho '#' và '*', để tìm phần bắt đầu và kết thúc của Thông báo hoặc tin nhắn. Sau đó, cuối cùng Thông báo được in trên màn hình LCD bằng lcd.print:
void loop () {for (unsigned int t = 0; t <60000; t ++) {serialEvent (); if (temp == 1) {x = 0, k = 0, temp = 0; trong khi (x
Ở đây, hàm khởi tạo 'gsm_init () ' cho GSM rất quan trọng, trước tiên, mô-đun GSM được kiểm tra xem nó có được kết nối hay không bằng cách gửi lệnh 'AT' đến mô-đun GSM. Nếu nhận được phản hồi OK, nghĩa là nó đã sẵn sàng. Hệ thống tiếp tục kiểm tra mô-đun cho đến khi nó sẵn sàng hoặc cho đến khi nhận được 'OK'. Sau đó, ECHO bị tắt bằng cách gửi lệnh ATE0, nếu không mô-đun GSM sẽ lặp lại tất cả các lệnh. Sau đó, cuối cùng tính khả dụng của mạng được kiểm tra thông qua 'AT + CPIN?' lệnh, nếu thẻ được lắp là thẻ SIM và có mã PIN, nó sẽ đưa ra phản hồi + CPIN: SN SÀNG. Điều này cũng được kiểm tra nhiều lần cho đến khi tìm thấy mạng. Điều này có thể được hiểu rõ qua Video dưới đây.
void gsm_init () {lcd.clear (); lcd.print ("Tìm Mô-đun.."); boolean at_flag = 1; while (at_flag) {Serial.println ("AT"); while (Serial.available ()> 0) {if (Serial.find ("OK")) at_flag = 0; } delay (1000); }