Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Cập nhật ngày 6 tháng 7 năm 2018: Phiên bản 3G / 2G của dự án này, sử dụng SIM5320, có sẵn tại đây
Cập nhật: Ngày 19 tháng 5 năm 2015: Sử dụng thư viện pfodParser Phiên bản 2.5 trở lên. Nó khắc phục sự cố được báo cáo là không cho phép đủ thời gian để lá chắn kết nối với mạng sau khi bật nguồn
Giới thiệu
Điều khiển từ xa pfodSMS khác với các triển khai khác như thế nào: -
- Nó là đáng tin cậy - các lệnh luôn được phản hồi và các thông báo bị mất được yêu cầu lại
- Nó là an toàn - sử dụng bảo vệ bằng mật khẩu 128 bit
- Nó không yêu cầu bất kỳ tài khoản dịch vụ web của bên thứ ba - chỉ cần thẻ SIM đang hoạt động (không có mã pin)
- Nó có thể tùy chỉnh - bạn có thể sử dụng pfodDesigner để tạo menu tùy chỉnh của riêng bạn
- Thật dễ dàng - pfodDesigner tạo ra tất cả các mã. Bạn không cần phải thực hiện bất kỳ mã hóa nào.
- Nó linh hoạt - tất cả các màn hình pfod đều có sẵn qua SMS, như menu phụ, danh sách lựa chọn đa và đơn, nhập văn bản, ghi dữ liệu và vẽ biểu đồ.
Xem thiết kế tin nhắn pfodSMS để biết kết nối SMS được tạo ra đáng tin cậy như thế nào. Xem menu pfodDesigner, Android / Arduino được thực hiện Đơn giản để biết chi tiết về cách thiết kế menu tùy chỉnh của riêng bạn. Xem pfodSpecification.pdf để biết chi tiết về tất cả các thông báo và màn hình pfod mà bạn có thể tự thêm.
Dự án mẫu - Kiểm soát nước nóng bằng SMS
Như một dự án ví dụ, tài liệu hướng dẫn này mô tả cách bật và tắt máy nước nóng của bạn qua SMS và kiểm tra xem nó đang bật hay tắt. Bạn sẽ cần một thợ điện để cài đặt nó.
Bước 1: Bắt đầu nhanh - Điều khiển từ xa qua SMS
Đây là hướng dẫn bắt đầu nhanh để xây dựng điều khiển nước nóng qua SMS của riêng bạn.
- Mua các bộ phận trong danh sách này..
- Cài đặt Arduino IDE phiên bản 1.5.8 và tải xuống và cài đặt thư viện pfodParser..
- Tải xuống pfodDesigner miễn phí.
- Thiết kế menu tùy chỉnh của bạn để bật và tắt đầu vào kỹ thuật số từ thanh trượt menu trên điện thoại di động Android của bạn.
- Tạo mã, chọn lá chắn GPRS SeeedStudio SIM900 làm kết nối. (Ngoài ra còn có một tùy chọn cho tấm chắn IteadStudio SIM900).
- Chuyển mã đã tạo từ điện thoại di động của bạn sang IDE (xem pfodAppForAndroidGettingStarted.pdf để biết chi tiết), thêm mật khẩu bí mật của bạn, biên dịch và tải xuống Arduino Mega 2560.
- Lắp thẻ SIM của bạn vào tấm chắn GPRS và cắm tấm chắn vào Mega 2560. Đảm bảo rằng các liên kết Serial được đặt thành Phần cứng Serial như hình trên..
- Kết nối đầu ra kỹ thuật số với trạng thái rắn, hoặc bình thường, chuyển tiếp giữa D3 và GND (hoặc chân mà bạn đã chọn trong pfodDesigner). Xem Cách thêm rơ le vào Arduino để biết thêm chi tiết về rơ le..
- Sử dụng nguồn USB cho Mega. Mã thư viện cung cấp sức mạnh cho lá chắn GPRS cho bạn..
- Cài đặt pfodApp trên điện thoại di động Android của bạn và thiết lập kết nối SMS với số sim điện thoại của khiên. (xem pfodAppForAndroidGettingStarted.pdf để biết thêm chi tiết). Đặt mật khẩu cho kết nối nếu bạn đã thêm..
- Kết nối và xem menu tùy chỉnh của bạn được hiển thị qua SMS. Nhấp vào nút để bật hoặc tắt rơ le..
- Yêu cầu thợ điện của bạn lắp rơ le vào mạch Nước nóng của bạn và đấu dây nguồn điện USB để cấp nguồn cho Mega và lá chắn
Bước 2: Thêm chi tiết
pfodDesigner
PfodDesigner sẽ tạo tất cả mã bạn cần để bật và tắt trạng thái rắn hoặc một số chuyển tiếp khác, nhưng kết nối SMS trong thư viện pfodParser hỗ trợ tất cả các màn hình pfod nên khi bạn bắt đầu, bạn có thể thêm menu phụ, thanh trượt số, thanh trượt đa văn bản, màn hình nhập văn bản, ghi dữ liệu và vẽ tất cả thông qua SMS. Kiểm tra pfodSpecification.pdf để biết tất cả các màn hình và thông báo được hỗ trợ.
Mã được tạo ở đây. Nó không có lời nhắc và chỉ có một công tắc duy nhất để giữ cho tin nhắn ngắn gọn. Menu dài được gửi qua nhiều tin nhắn SMS và mất nhiều thời gian hơn để đến nơi. Nếu bạn có một menu dài, mã kết nối sms trong thư viện pfodParser sẽ xử lý tất cả điều này cho bạn.
Để thêm mật khẩu vào kết nối SMS của bạn, hãy sửa đổi dòng
parser.connect (& pfodSMS); // kết nối trình phân tích cú pháp với luồng SMS tới một cái gì đó như parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));
nhưng sử dụng mật khẩu của riêng bạn gồm tối đa 32 chữ số hex, 0..9 A.. F. Mật khẩu ngắn hơn thì 32 chữ số hex được đệm bằng số 0. Xem A Simple Wifi / Internet pfodDevice with 128bit security (Arduino) để biết cách tạo mật khẩu ngẫu nhiên và xuất ra mã QR để dễ dàng nhập vào Android của bạn. Cũng xem pfodAppForAndroidGettingStarted.pdf
PfodDesigner cũng sẽ tạo mã cho các kết nối bluetooth và wifi qua Serial và Ethernet qua SPI, tất cả đều có bảo mật 128bit tùy chọn
pfodApp
Điều đầu tiên cần nhận ra là SMS không hoạt động và có thể không đến được đó hoặc đến không theo thứ tự. Vì vậy, khi bạn kết nối với pfodApp sẽ có một số độ trễ trước khi có phản hồi SMS. Nếu tin nhắn bị thất lạc hoặc bị trì hoãn, pfodApp sẽ tự động gửi lại sau 3 phút. Sau 5 lần thử lại như vậy, pfodApp sẽ cho bạn biết kết nối bị mất. Bạn có thể điều chỉnh thời gian 3 phút trong màn hình chỉnh sửa kết nối của pfodApp.
Nếu bạn thêm mật khẩu thì sẽ có sáu tin nhắn SMS (ba tin nhắn mỗi chiều) trước khi pfodApp nhận menu chính. Các thông báo bổ sung này chỉ xảy ra trên kết nối ban đầu, sau đó không có thông báo bổ sung nào khi sử dụng mật khẩu. Vì vậy, hãy bắt đầu mà không cần mật khẩu để thấy rằng mọi thứ đang hoạt động và sau đó thêm mật khẩu sau.
Lá chắn SMS / GPRS
Các vấn đề có thể xảy ra là thẻ SIM được bảo vệ bằng số pin hoặc không được phép kết nối với mạng. Thư viện pfod tự động cấp nguồn cho lá chắn GPRS và tìm kiếm phản hồi 'sẵn sàng cuộc gọi'. Nếu phản hồi đó không đến, thư viện sẽ tắt nguồn và thử lại, vì vậy nếu bạn thấy đèn nguồn trên tấm chắn GPRS bật sáng trong 20 giây rồi tắt thì có sự cố khi kết nối với mạng. Lấy SIM ra và thử trên điện thoại bình thường. Kiểm tra xem bạn không được nhắc nhập số pin.
Nếu đó không phải là vấn đề thì bạn sẽ phải bật gỡ lỗi khởi động, như được mô tả bên dưới, để xem điều gì đang xảy ra.
Cấp nguồn cho lá chắn Mega / GPRS
Tấm chắn tạo ra xung tới 2A và lên đến 0,5A liên tục. Giả sử nguồn cung cấp pin 12V, 0,5A vượt quá khả năng của bộ nguồn Mega trên bo mạch. Vì vậy, tấm chắn này KHÔNG nên được cấp điện từ đầu vào 7V đến 12V trên Mega. Giải pháp thay thế là cấp nguồn cho Mega và lá chắn thông qua kết nối USB. Tôi đã sử dụng nguồn cung cấp USB 1A. Để thử nghiệm, tôi đã sử dụng một trung tâm được cấp nguồn Belkin (F4U020) để ngăn dòng điện quá lớn từ cổng USB của máy tính của tôi.
Đối với nguồn cung cấp pin 12V, tôi khuyên bạn nên sử dụng bộ sạc USB 5V dành cho ô tô chất lượng, 1A hoặc cao hơn. Nguồn cung cấp USB 5V cho Ô tô chất lượng phải được thiết kế để xử lý các hiện tượng quá áp xảy ra trong hệ thống điện ô tô và do đó phải phù hợp với hầu hết các hệ thống sạc 12V.
Rơ le trạng thái rắn
Vì dự án ví dụ này đang điều khiển Máy nước nóng, (tải điện trở), nên lý tưởng nhất là rơ le Trạng thái rắn. Nếu bạn muốn bật hoặc tắt động cơ, khởi động máy phát điện, v.v., hãy nói chuyện với thợ điện của bạn về loại rơ le phù hợp cho công việc. Nếu bạn cần một rơ le công suất cao, bạn có thể sử dụng một ổ chuyển tiếp nhỏ của bảng arduino để bật và tắt rơ le nguồn.
Có nhiều phiên bản rơle trạng thái rắn có sẵn. Đảm bảo rằng bạn mua trên đó có thể xử lý dòng điện và điện áp của lò sưởi của bạn và có thể được điều khiển bằng 5V dc và một vài miliampe có sẵn từ chân đầu ra Arduino. Cái được sử dụng ở đây, FOTEK SSR-40 DA, chuyển đổi lên đến 380VAC ở 40Amps và được điều khiển bởi bất kỳ thứ gì hơn sau đó 3V dc và mất ít hơn 7mA.
Bạn phải sử dụng bộ tản nhiệt và bạn phải bôi một lớp THIN của hợp chất tản nhiệt hoặc mỡ tản nhiệt lên mặt sau của rơle trạng thái rắn trước khi bắt vít vào bộ tản nhiệt. Ý tưởng là phủ hoàn toàn bề mặt bằng lớp hợp chất chìm đầu mỏng nhất để lấp đầy các thung lũng cực nhỏ trên bề mặt kim loại. Khi bật công tắc trạng thái rắn giảm xuống 1,6V, tạo ra 16Watts nhiệt ở 10Amps. Tản nhiệt cần phải thoát nhiệt nên nó cần được gắn trong không khí trống không bên trong hộp nhựa.
Sự chậm trễ là điều xấu
Lá chắn GPRS gửi tin nhắn SMS qua kết nối Serial bất kỳ lúc nào và vòng lặp chính của bạn () phải gọi cmd = parser.parse (); thường để xử lý dữ liệu Serial trước khi bộ đệm 64byte trong mã thư viện Arduino đầy và dữ liệu bị mất.
Vì vậy, bạn phải giữ cho vòng lặp chính () của bạn chạy nhanh chóng. Bạn không bao giờ nên sử dụng delay () và nên kiểm tra xem không có thư viện nào bạn đang sử dụng có độ trễ trong chúng. Sử dụng tốc độ truyền 19200 mặc định của SIM900 qua Nối tiếp phần cứng, tôi không thấy cần thiết phải tăng kích thước bộ đệm trong mã thư viện Arduino. Tôi không sử dụng Phần mềm Serial, chỉ sử dụng các kết nối Serial và Serial1, Phần cứng Serial và hầu như tất cả các tin nhắn mà pfodApp gửi đều rất nhỏ, 10 hoặc 12 byte. Tuy nhiên, bạn có thể tăng kích thước bộ đệm Arduino, nếu muốn, bằng cách sửa đổi định nghĩa trong HardwareSerial.h từ #define SERIAL_BUFFER_SIZE 64 thành #define SERIAL_BUFFER_SIZE 128
Tuy nhiên, những gì tôi đã tìm thấy là nếu tôi bật đầu ra gỡ lỗi, như mô tả bên dưới, tôi phải có tốc độ truyền rất nhanh cho kết nối đầu cuối, nếu không, sự chậm trễ được đưa ra khi gửi tin nhắn gỡ lỗi đến thiết bị đầu cuối khiến các phần của tin nhắn SMS bị bỏ lỡ.
Cài đặt
Tôi đã thêm một tấm chắn đầu cuối bằng vít để tôi có thứ gì đó để kết nối các dây chuyển tiếp Trạng thái rắn với. Tôi chưa nhờ thợ điện của tôi cài đặt bộ điều khiển. Nó cần được đặt trong một hộp cách nhiệt, nhưng có tản nhiệt thò ra ngoài qua một khe và đi dây vào dây dẫn nguồn nước nóng.
Bước 3: Đề xuất cho các cải tiến khác - Cảnh báo, Ghi dữ liệu và Lập sơ đồ
Dự án ví dụ ở trên chỉ hiển thị cách bật hoặc tắt nước và cho phép bạn chuyển nó. Nhưng kết nối SMS xử lý tất cả các tin nhắn pfod (xem pfodSpecification.pdf)
Nếu bạn thêm cảm biến nhiệt độ vào arduino của mình, bạn cũng có thể gửi theo dõi nhiệt độ và gửi lại các kết quả đọc định kỳ. Để gửi lại dữ liệu đọc được cho bluetooth, wifi hoặc SMS, chỉ cần thêm mã như mẫu bên dưới. Xem Ghi dữ liệu và Lập sơ đồ để biết thêm chi tiết và các ví dụ về ghi và vẽ dữ liệu.
parser.println (thời gian); parser.print (','); parser.println (nhiệt độ);
Khi thư viện pfodSMS nhìn thấy dòng mới từ println (), nó sẽ gửi dữ liệu thô dưới dạng SMS. Trên thiết bị di động của bạn, chỉ cần để pfodApp chạy trong nền và điện thoại di động của bạn sẽ thông báo cho bạn khi nhận được SMS. Mở pfodApp một lần nữa để đưa nó lên phía trước và sau đó mở màn hình Dữ liệu thô từ menu của thiết bị di động để xem dữ liệu. Lưu ý: Các tin nhắn pfodSMS là các ký tự UTF-8 cùng với số kết nối và tin nhắn, được mã hóa bằng cách sử dụng mã hóa Base64 để chúng trông không giống như văn bản bình thường. Xem thiết kế tin nhắn pfodSMS để biết tất cả các chi tiết.
Bạn có thể sử dụng quy trình tương tự để gửi cảnh báo khi có điều gì đó thay đổi từ xa. tức là parser.println (F (“Nhiệt độ bên ngoài dưới 0 ℃”)); Lưu ý: ký tự ℃ UTF-8 trong chuỗi. pfodSMS chuyển tất cả các ký tự UTF-8 đến pfodApp.
Bước 4: Gỡ lỗi khi sử dụng kết nối SMS trong Thư viện PfodParser
PfodDesigner tạo mã hoạt động, nhưng bạn có thể muốn gỡ lỗi mã bổ sung của riêng mình hoặc xem những gì đang xảy ra trong khi lá chắn GPRS đang khởi động hoặc nhận tin nhắn SMS. Có một số cách tiếp cận bạn có thể thực hiện.
Gỡ lỗi mã của riêng bạn
Nếu bạn đang gỡ lỗi mã của riêng mình, bạn có thể chỉ cần nhận xét dòng pfodSMS và kết nối trình phân tích cú pháp với Serial, sau đó gỡ bỏ lá chắn GPRS và chạy Mega từ thiết bị đầu cuối Arduino. tức là thay đổi thiết lập () thành
//pfodSMS.init(&Serial, 9); // không khởi động lá chắn GPRS parser.connect (& Serial); // kết nối trình phân tích cú pháp với Serial thay vì luồng SMS
Sau đó, từ thiết bị đầu cuối Arduino, bạn có thể nhập {.} Để lấy Mega trả lại menu chính và sau đó gửi lại lệnh bạn muốn thực hiện, ví dụ: {A`1} để bật rơle và {A`0} để tắt nó. (PfodApp thường gửi những thông báo này cho bạn khi bạn nhấp vào thanh trượt.) Sau đó, thêm gỡ lỗi bổ sung parser.println () để theo dõi mã bổ sung mà bạn đã thêm đang làm.
Giám sát lá chắn GPRS
Nếu bạn muốn xem lá chắn GPRS đang làm gì. Cách nó khởi động, nhận tin nhắn SMS, v.v. Sau đó, bạn cần thay đổi dây chắn kết nối nó với Mega Serial1 (nối tiếp một) và giải phóng kết nối Serial (USB) để gỡ lỗi đầu ra với Màn hình Arduino IDE.
Để kết nối lá chắn GPRS với Mega 2560 Serial1, hãy xóa các liên kết được hiển thị ở trên và thêm dây vào các chân TX1 và RX1 của Mega.
Sau đó, thay đổi mã setup () thành
void setup () {Serial1.begin (19200); // đổi Serial thành Serial 1 Serial.begin (57600); // LƯU Ý tốc độ truyền nhanh cho cổng nối tiếp USB // với màn hình Arduino IDE. for (int i = 3; i> 0; i--) {// đợi vài giây để xem chúng ta có đang bị lập trình delay không (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (& Serial); // cần thực hiện việc này trước khi pfod_SMS.init // hoặc bất kỳ lệnh gọi phương thức pfod_SMS nào khác // khởi tạo SMS và kết nối trình phân tích cú pháp // thay đổi dòng tiếp theo thành Serial1 pfodSMS.init (& Serial1, 9); // kết nối Seeed GPRS shield V2 với Serial1 thay vì Serial parser.setDebugStream (& Serial); // cần thực hiện việc này trước khi parser.connect // hoặc bất kỳ phương thức phân tích cú pháp nào khác gọi parser.connect (& pfodSMS); // kết nối trình phân tích cú pháp với luồng SMS}
Bây giờ bạn có thể bỏ ghi chú một số cài đặt Gỡ lỗi trong thư viện pfodParser ở đầu tệp pfodSMS_SIM900.cpp.
Ví dụ: hủy nhận xét #define DEBUG_SETUP sẽ in ra (tới luồng gỡ lỗi) những gì đang xảy ra khi bật lá chắn GPRS và chuẩn bị cho nó nhận tin nhắn SMS.
Bỏ nhận xét # xác định GỠ LỖI sẽ cung cấp nhiều thông tin về các tin nhắn SMS nhận được.
Đó là nó !