Chúng tôi điều khiển ổ cắm qua SMS. Báo động GSM ngân sách với bộ não Arduino
Một bài viết dành cho những ai muốn buộc Arduino gửi SMS thông qua điều này mô-đun GSM . Mô-đun NEOWAY M590 dựa trên chip SIM900 phù hợp để tạo hệ thống báo động tự chế, nhà thông minh. Ngoài ra còn có một mô-đun GSM thay thế kết nối trực tiếp với Arduino qua 5 Volts: Sim800L EVB v2.0
Xây dựng vấn đề
- Chỉ sử dụng Arduino và mô-đun GSM, điều khiển đèn LED thông qua cuộc gọi từ điện thoại của bạn.
- Gửi SMS (trong khi thông qua lệnh đến qua trình giám sát cổng trong Arduino IDE)
Kết nối với Arduino
Chúng tôi kết nối mô-đun GSM với Arduino.
Mô-đun 5V -> Arduino 5V
Mô-đun GND -> Arduino GND
Mô-đun TX -> Arduino pin2 kỹ thuật số
Mô-đun RX -> Arduino pin3 kỹ thuật số
Sơ đồ chân có thể được nhìn thấy trong ảnh. Thứ tự các tiếp điểm như sau: 1 - +5V, 2 - GND, 7 - TX, 8 - RX.
Mô-đun này có thể được cấp nguồn từ 4V đến 5V, tôi đã sử dụng đầu ra 5 volt.
Mô-đun này yêu cầu nguồn điện riêng vì nó tiêu thụ tới 2A lúc cao điểm. Một tụ điện rất có thể sẽ không giúp ích gì. Vì vậy, khi được cấp nguồn bằng Arduino, nó có thể không hoạt động hoặc có thể bị lỗi.
Phải kết nối mặt đất của Arduino và mô-đun GSM với nguồn điện riêng biệt, nhưng trước tiên, bạn cần đo điện áp giữa các “mặt đất” này bằng đồng hồ vạn năng. Một số khối máy tính Các bộ nguồn có điện áp rơi trên vỏ và nối đất USB lên tới 100V. Dòng điện ở đó rất nhỏ và không thể tiêu diệt được, nhưng rất dễ phá hủy một Arduino hoặc một mô-đun GSM hoặc cả hai cùng nhau.
phác thảo
#bao gồm< Phần mềm nối tiếp. h> Phần mềm nối tiếp mySerial(2, 3); // RX, TX int ch = 0 ; int led = 13 ; Chuỗi giá trị = ""; thiết lập void() (độ trễ (2000); // thời gian khởi tạo mô-đun pinMode (led, OUTPUT); digitalWrite(led, THẤP); nối tiếp. bắt đầu (9600); // tốc độ cổng nối tiếp. println ("Trình kiểm tra GSM v1.0" ); mySerial. bắt đầu (9600); mySerial. println ("AT+CLIP=1" ); //bật độ trễ ID người gọi (100); mySerial. println ("AT+CMGF=1" ); //Chế độ mã hóa SMS - bình thường (đối với tiếng Anh)độ trễ (100); mySerial. println("AT+CSCS=\"GSM\"" ) ; //chế độ mã hóa văn bảnđộ trễ (100); ) void loop () ( if (mySerial . available () ) ( // nếu mô-đun GSM gửi cho chúng tôi thứ gì đó thì while (mySerial.available()) ( // lưu chuỗi đầu vào vào biến val ch = mySerial. đọc(); val += char(ch); độ trễ(10); ) if (val . indexOf ("RING" ) > - 1 ) ( //nếu phát hiện cuộc gọi thì kiểm tra số if (val . indexOf ("71234567890") > - 1 ) ( // nếu số người gọi là của chúng tôi. Nhập số của bạn không có dấu "+" nối tiếp. println( "--- ĐƯỢC PHÁT HIỆN NHẪN CHỦ ĐẠO ---") ; mySerial. println("ATH0"); //ngắt kết nối digitalWrite(led, CAO); //bật đèn LED trong 3 giâyđộ trễ (3000); digitalWrite(led, THẤP); //tắt rơle ) ) else nối tiếp. println(val); // in dòng nhận được ra màn hình cổng giá trị = ""; ) nếu như ( nối tiếp. có sẵn () ) ( // nếu có gì đó được nhập vào màn hình cổng trong khi ( nối tiếp. có sẵn () ) ( //lưu chuỗi vào biến val ch = nối tiếp. đọc(); val += char(ch); độ trễ(10); ) //mySerial.println(val); //chuyển tất cả các lệnh được gõ trong màn hình cổng tới mô-đun GSM if (val . indexOf ("sendsms") > - 1 ) ( // nếu bạn thấy lệnh gửi SMS sms(String("hello world"), String("+71234567890")); // gửi SMS tới số +71234567890) giá trị = "" ; //clear ) ) void sms (Chuỗi văn bản , Chuỗi điện thoại ) //thủ tục gửi tin nhắn SMS { nối tiếp. println("Đã bắt đầu gửi SMS" ); mySerial. println ("AT+CMGS=\"" + điện thoại + "\"" ); độ trễ (500); mySerial. in(văn bản); độ trễ (500); mySerial. in ((char ) 26 ) ; độ trễ (500); nối tiếp. println ("Gửi SMS hoàn tất" ); độ trễ (2000); )
Bài kiểm tra
![](https://i2.wp.com/2150692.ru/images/faq/neoway_m590/port1.png)
GPRS
Trong phiên bản mô-đun 1.30 đang được xem xét, hỗ trợ GPRS bị giảm. Tôi không thể kết nối với máy chủ bằng tên DNS của nó (ví dụ mysite.ru), tôi chỉ thành công bằng địa chỉ IP của nó. Không có vấn đề như vậy trong mô-đun SIM800L khác.
Danh sách một số lệnh AT:
TẠI+CMGF=1 | TRÊN chế độ văn bản(SMS chỉ bằng tiếng Latin) |
AT+CSCS= "GSM" | TRÊN chế độ |
TẠI+CLIP=1 | bật ID người gọi cuộc gọi đến Nếu bạn gửi lệnh bằng 0, việc nhận dạng số sẽ bị tắt và mô-đun sẽ chỉ gửi tin nhắn “RING” thay vì số của người gọi. |
AT+CMGS="+79123456789" | Gửi tin nhắn SMS |
ATI | Nhận thông tin thiết bị |
AT+IPR=19200 | cài đặt tốc độ cổng |
AT+GSN | sẽ trả lại IMEI của mô-đun |
AT+CCLK? | đọc thời gian từ mô-đun |
AT+CCLK=“yy/mm/dd,hh:mm:ss+zz” | trong đó thứ tự là “năm/tháng/ngày, giờ: phút: giây + múi giờ” Dữ liệu phải được gửi với các số 0 đứng đầu, tức là, ví dụ: nếu tháng của chúng ta là “4” thì phải gửi “04” . Lấy lại nó thời điểm hiện tại và ngày có thể được gửi bằng cách gửi cùng một lệnh, chỉ với dấu “?”: |
TẠI+CMEE=0 | mức độ thông tin lỗi. Có thể từ 0 đến 2. 0 - bị vô hiệu hóa. Nó sẽ chỉ viết LỖI. 1 - mã lỗi. Sẽ trở lại mã kỹ thuật số lỗi. 2 - mô tả lỗi. Anh ấy sẽ viết ra chính xác những gì anh ấy không thích về đội. Để làm việc với mô-đun thông qua thiết bị đầu cuối, các chế độ ATV1, ATE1 AT+CMEE=2 thuận tiện hơn; để giao tiếp với vi điều khiển, tốt hơn nên sử dụng ATV0, ATE0 và AT+CMEE=0 - điều này sẽ giúp việc giao tiếp dễ dàng hơn xử lý các phản hồi nhận được. Các cài đặt này không được lưu sau khi khởi động lại mô-đun, vì vậy bạn phải đưa các lệnh này vào mã chương trình. |
AT+CSQ | thông tin về chất lượng tín hiệu. Mô-đun sẽ trả về hai số +CSQ: 17.0 17 - mức tín hiệu. Có thể nằm trong khoảng 0..31 hoặc 99. Hơn nhiều chủ đề hơn tốt hơn, nhưng 99 có nghĩa là không có nó. 0 - tỷ lệ lỗi giao tiếp (còn gọi là RXQUAL). Có thể từ 0 đến 7 hơn số ít chủ đề hơn chất lượng truyền thông tốt hơn. |
AT+COPS? | thông tin về nhà điều hành mạng có mô-đun được đăng ký |
ATD+79121234567; | quay số. (";" Nhất thiết) Mô-đun sẽ gọi số được chỉ định và sẽ trả lại một trong các tùy chọn BẬN - số đang bận KHÔNG DIALTONE - không có tín hiệu trên đường dây KHÔNG CÓ nhà cung cấp dịch vụ - không có mạng hoặc vấn đề khác (ví dụ: không có tiền trong tài khoản) NA TRẢ LỜI - không có câu trả lời KẾT NỐI - có một liên hệ! |
AT+CMGR=3.0 |