Như bạn có thể thấy từ sơ đồ trên, mạch của mình cần nguồn điện DC ổn định và sạch sẽ 5-V / 1-A (tối thiểu) để có hiệu suất phù hợp. Bo mạch vi điều khiển (Nano_V3) chạy trên nguồn cung cấp 5-Vdc và modem (SIM800L) có khoảng 4,3 Vdc. Mặc dù hầu hết các mô-đun SIM800L hoạt động trên 3,7 V, nhưng mô-đun SIM800L của mình từ một người bán eBay mới dường như dễ mất kết nối mạng dưới 4 V. Đó là lý do tại sao nó được đặt thành 4,3 Vdc.
Mã (bản phác thảo Arduino) là mã cơ bản không có các thư viện SIM800L chuyên dụng nào. Trong mã, các chân RX và TX được chỉ định làm chân nối tiếp phần mềm. Điều này được thực hiện có chủ ý để cổng nối tiếp phần cứng của Arduino vẫn được sử dụng với màn hình nối tiếp. Sau khi mã được tải lên, bạn có thể chuyển sang bước tiếp theo. Lúc đầu, hãy dành một chút thời gian để đảm bảo rằng thiết lập phần cứng đã theo thứ tự. Đừng quên lắp thẻ micro-SIM hợp lệ vào khe cắm trước khi bật nguồn hệ thống. Thông thường, thẻ SIM sẽ tự động đăng ký với mạng gia đình trong vòng vài giây. Lưu ý rằng chỉ báo LED trên bo mạch của mô-đun SIM800L sẽ nhấp nháy hai đến ba giây một lần (không liên tục) khi nó đã đăng ký hoàn toàn với mạng. Sau đó, bạn nên ấn công tắc đặt lại một lần để hệ thống hoạt động đầy đủ.
Hãy bắt đầu với việc gửi SMS: Gửi văn bản “ON” (không phân biệt chữ hoa chữ thường) sẽ bật rơ le và “OFF” sẽ tắt rơ le. Các tiếp điểm rơle có thể được nối dây như mong muốn để chuyển đổi các tải điện phù hợp nào. Đó là tất cả!
/* * SIM800L SMS RELAY v1.0 * Arduino Hardware (Author): Nano V3 (ATmega328) * Arduino IDE (Author): 1.6.9 * T.K.Hareendran/2018 */ #include SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx) char incomingByte; String inputString; int relay = 13; // Output for Relay Control void setup() { pinMode(relay, OUTPUT); digitalWrite(relay, LOW); // Initial state of the relay Serial.begin(9600); mySerial.begin(9600); while(!mySerial.available()){ mySerial.println("AT"); delay(1000); Serial.println("Connecting..."); } Serial.println("Connected!"); mySerial.println("AT+CMGF=1"); //Set SMS to Text Mode delay(1000); mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedure to handle newly arrived messages(command name in text: new message indications to TE) delay(1000); mySerial.println("AT+CMGL="REC UNREAD""); // Read Unread Messages } void loop() { if(mySerial.available()){ delay(100); // Serial Buffer while(mySerial.available()){ incomingByte = mySerial.read(); inputString += incomingByte; } delay(10); Serial.println(inputString); inputString.toUpperCase(); // Uppercase the Received Message //turn RELAY ON or OFF if (inputString.indexOf("ON") > -1){ digitalWrite(relay, HIGH); } if (inputString.indexOf("OFF") > -1){ digitalWrite(relay, LOW); } delay(50); //Delete Messages & Save Memory if (inputString.indexOf("OK") == -1){ mySerial.println("AT+CMGDA="DEL ALL""); delay(1000);} inputString = ""; } }
Đây là ảnh chụp màn hình nối tiếp của mình:
Một số lưu ý quan trọng
- Thẻ SIM phải được lắp vào khe với các điểm tiếp xúc của nó hướng vào bảng mạch và đầu có khía nhô ra ngoài.
- Bản thân SIM800L yêu cầu điện áp đầu vào từ 3,4 V đến 4,4 V (1–2 A) và mô-đun (bảng đột phá) được sử dụng ở đây không có bộ điều chỉnh điện áp tích hợp (và bộ dịch chuyển mức logic). Điều này yêu cầu một đơn vị cung cấp điện gọn gàng (và một mạch dịch chuyển mức logic). Nếu nguồn điện không theo kịp, mô-đun sẽ tắt / đặt lại khi đang thực hiện.
- Trong trường hợp có sự cố, hãy cố gắng đóng điện hệ thống. Đảm bảo rằng đăng ký mạng lại thành công và chỉ sau đó, thực hiện thiết lập lại phần cứng bằng công tắc đặt lại.
- Mã đã cho rõ ràng cần một số sàng lọc. mình vừa mới đào mã này lên và dùng thử, và nó phù hợp với mình. Nếu bạn phát hiện ra sai sót hoặc nghĩ rằng mình đang tình cờ bỏ qua những điều quan trọng, vui lòng cho mình biết.