Mục lục:

Cảnh báo Nhiệt độ Văn bản SMS Từ ATTINY85 và A1 GSM: 5 bước
Cảnh báo Nhiệt độ Văn bản SMS Từ ATTINY85 và A1 GSM: 5 bước

Video: Cảnh báo Nhiệt độ Văn bản SMS Từ ATTINY85 và A1 GSM: 5 bước

Video: Cảnh báo Nhiệt độ Văn bản SMS Từ ATTINY85 và A1 GSM: 5 bước
Video: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Tháng bảy
Anonim
Cảnh báo Nhiệt độ Văn bản SMS từ ATTINY85 và A1 GSM
Cảnh báo Nhiệt độ Văn bản SMS từ ATTINY85 và A1 GSM

Tài liệu hướng dẫn này chỉ cho bạn cách nắm bắt nhiệt độ từ một cảm biến nhiệt độ đơn giản và gửi nó bằng tin nhắn SMS đến điện thoại di động của bạn. Để đơn giản hóa mọi thứ, tôi gửi nhiệt độ ở một khoảng thời gian đã đặt nhưng tôi cũng chỉ ra cách điều này có thể được thực hiện chỉ bằng cảnh báo / ngoại lệ. Phần cứng có chi phí rất thấp, dưới 10 đô la, mặc dù có những chi phí sms định kỳ để xem xét.

Việc nâng vật nặng được đảm nhiệm bởi ATTINY 85 đơn giản nhưng mạnh mẽ, giúp ghi lại dữ liệu nhiệt độ và sau đó kích hoạt một tin nhắn SMS được gửi qua mô-đun AI-Thinker A6 GSM.

Tóm lại, bạn viết mã ATTINY85 trong môi trường Arduino IDE và ghi mã đó trên ATTINY85 bằng bộ chuyển đổi USBASP / USB. Tôi đã đề cập đến việc thiết lập mô-đun AI-Thinker A6 GSM và Arduino IDE trong hai hướng dẫn trước. Điều khác biệt ở đây là giao tiếp mô-đun ATTINY và A6 GSM bằng cách sử dụng truyền thông nối tiếp.

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

Sau khi lập trình, ATTINY đọc dữ liệu nhiệt độ từ cảm biến nhiệt kế - Dallas 18B20- và sau đó gửi dữ liệu và lệnh bằng cách kết nối nối tiếp đến mô-đun A6 GSM, sau đó sẽ gửi nó dưới dạng tin nhắn SMS đến điện thoại di động / điện thoại thông minh của bạn.

Đây là những gì bạn cần:

1. Bộ chuyển đổi nối tiếp USBASP / USB.

2. CHÚ Ý 85.

3. AI-Thinker A6 mô-đun GSM phiên bản 6 (với một sim có tín dụng SMS).

4. Nguồn cung cấp breadboard 3.3v cho ATTINY85.

5. Nguồn cấp 3.3.v USB cho mô-đun AI-Thinker A6 GSM.

6. Cảm biến nhiệt độ Dallas 18B20..

7. Điện trở 4,7k cho cảm biến 18B20.

8. Bảng mạch và dây cáp.

9. Arduino IDE (Tôi đã sử dụng phiên bản 1.8.5. Cho việc này).

10. Máy tính xách tay Windows X (tôi đã sử dụng phiên bản 10) với một cổng usb miễn phí.

Bước 1: Lập trình ATTINY 85

Đây là mã Arduino IDE (Bạn sẽ phải thay đổi số điện thoại mà bạn muốn gửi SMS.)

#include #include #include

// *** // *** Xác định các chân RX và TX. Chọn bất kỳ hai chân // *** nào không được sử dụng. Cố gắng tránh D0 (chân 5) // *** và D2 (chân 7) nếu bạn định sử dụng I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Xác định cổng nối tiếp dựa trên phần mềm. Sử dụng // *** tên Serial để mã có thể được sử dụng trên các nền tảng // *** khác hỗ trợ nối tiếp dựa trên phần cứng. Trên các chip // *** hỗ trợ nối tiếp phần cứng, chỉ cần // *** nhận xét dòng này. // ***

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Sơ đồ chân ATtiny25/45/85: // *** PDIP / SOIC / TSSOP // *** ================== ================================================== ========================= // *** // *** (PCINT5 / RESET / ADC0 / dW) PB5 [1] * [8] VCC // *** (PCINT3 / XTAL1 / CLKI / OC1B / ADC3) PB3 [2] [7] PB2 (SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2) // *** (PCINT4 / XTAL2 / CLKO / OC1B / ADC2) PB4 [3] [6] PB1 (MISO / DO / AIN1 / OC0B / OC1A / PCINT1) // *** GND [4] [5] PB0 (MOSI / DI / SDA / AIN0 / OC0A / OC1A / AREF / PCINT0) // *** // Tần số ATTINY 85 được đặt ở nội bộ 8 MHz

// *** // *** Ghim mà dây // *** dữ liệu OneWire được kết nối. // *** #define ONE_WIRE_BUS 1

// *** // *** Thiết lập một phiên bản oneWire để giao tiếp với bất kỳ thiết bị OneWire // *** nào (không chỉ IC nhiệt độ Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Chuyển tham chiếu oneWire của chúng tôi đến Nhiệt độ Dallas. // *** DallasTempentic _sensors = DallasTempeosystem (& _ oneWire);

void setup () {// *** // *** Khởi tạo cổng nối tiếp // *** mySerial.begin (115200); chậm trễ (60000);

// *** Khởi động thư viện. _sensors.begin (); }

void loop () {

// *** // *** Lấy nhiệt độ hiện tại và hiển thị nó. // *** _sensors.requestTempeights (); chậm trễ (2000); double tempC = _sensors.getTempCByIndex (0); double tempF = _sensors.getTempFByIndex (0); // kiểm tra lỗi - đôi khi ở đầu, tạm thời hiển thị là 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_tempether) {SMS_temp (tempC, "Quá ấm");}}

void SMS_temp (double mytemp, String myalert) {mySerial.println ("AT + CMGF = 1"); // đặt thành độ trễ chế độ SMS (1000); mySerial.println ("AT + CMGF = 1"); // đặt thành độ trễ chế độ SMS (1000); //mySerial.println("AT+CMGS=\"+YOUR NUMBER / ""); // đặt số điện thoại (được đặt trong dấu ngoặc kép) delay (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); chậm trễ (1000); mySerial.write (0x1A); // gửi ctrl + z độ trễ cuối tin nhắn (1000); mySerial.write (0x0D); // Vận chuyển trở lại trong thời gian trễ Hex (1000); mySerial.write (0x0A); trì hoãn (1000000); // 17 phút - điều chỉnh cho phù hợp với ứng dụng của riêng bạn}

Mở môi trường Arduino IDE - Tôi đã mô tả cách tìm bạn giải quyết vấn đề này một cách chi tiết trong hướng dẫn trước đây của tôi mà tôi đã đề cập trước đó.

Bạn sẽ cần các thư viện sau

SoftwareSerial.h

OneWire.h

DallasTempentic.h

Tiếp theo, định cấu hình các chân RX và TX trên ATTINY85 mà bạn cần kết nối với A1 Thinker. ATTINY 85 có 8 chân, bốn chân ở mỗi bên và được căn chỉnh bằng cách sử dụng dấu chấm trên bề mặt làm tham chiếu. Ghim 1 hoặc ghim ĐẶT LẠI nằm bên cạnh dấu chấm nhỏ.

(trong trường hợp này, tôi chọn Pin2 và 3 - Chúng nằm cùng phía với chân ĐẶT LẠI, bên cạnh dấu chấm trên bề mặt của ATTINY 85. Chân 2 là chân tiếp theo từ chân ĐẶT LẠI trong khi Chân 3 nằm giữa Pin 2 và GROUND)

Tiếp theo, bạn phải cấu hình cảm biến nhiệt độ -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTempentic _sensors = DallasTempeosystem (& _ oneWire);

Tiếp theo thiết lập cổng nối tiếp phần mềm

mySerial.begin (115200);

chậm trễ (60000);

và sau đó gọi các cảm biến bằng _sensors.begin ();

Tiếp theo, có vòng lặp, thăm dò xung quanh vào một thời điểm xác định trước, ghi lại nhiệt độ và gửi tin nhắn / cảnh báo tùy thuộc vào giá trị. Nó sử dụng một hàm SMS_temp cũng là nơi bạn đặt thời gian của vòng lặp

void loop () {sensor.requestTempe Nhiệt độ (); chậm trễ (2000);

double tempC = _sensors.getTempCByIndex (0);

double tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "Lạnh NGUY HIỂM");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Khá lạnh");}

if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp Just right");}

if (tempC> = 23 && error_tempe Heat) {SMS_temp (tempC, "Quá ấm");}

}

==============

Tiếp theo, thiết lập Arduino IDE để chuẩn bị tải lên ATTINY85.

Một số điều cần lưu ý

1- Nếu bạn không có dòng bảng ATTINY, hãy thêm url sau https://raw.githubusercontent.com/damellis/attiny/… trong URL của File / Preferences / Extra Boards Manager, Tiếp theo, trong Arduio IDE, nhấp vào Tools / Board / Board Manager và tìm kiếm ATTINY và cài đặt bo mạch mới. Thay đổi bộ xử lý thành Attiny85.

Bước 2: Tải chương trình lên ATTINY85

Tải chương trình lên ATTINY85
Tải chương trình lên ATTINY85

Ngoài ra, hãy tham khảo hướng dẫn trước đây của tôi về điều này -

ATTINY85 có hai chế độ tương ứng là chế độ lập trình và chế độ hoạt động.1. CHẾ ĐỘ LẬP TRÌNH Đầu tiên, xác định các chân trên ATTINY85. Để thực hiện việc này, hãy tìm vết khía nhỏ trên bề mặt chip bên cạnh chân RST / RESET. Sử dụng điểm này làm điểm tham chiếu, bạn có thể xác định phần còn lại của các chân. Tất cả thông tin này được cung cấp trong bảng dữ liệu A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp và ATTINY85 phải được kết nối như trong hình trên.

Tiếp theo, trên Arduino IDE, đặt bộ lập trình thành USBasp và tần số thành 8Mhz nội bộ.

Kết nối USBasp với cổng USB trên máy tính xách tay của bạn (Trên Windows 10, nếu bạn không có trình điều khiển USBasp, hãy sử dụng Zadig theo trang web

Tiếp theo, với USBasp được kết nối, hãy chọn từ Phác thảo / tải lên Arduino IDE và hy vọng bạn sẽ thấy tiến trình tải lên được hiển thị bằng chữ màu đỏ của Arduino IDE và kết thúc bằng avrdude done. Cảm ơn bạn.

Bất kỳ lỗi nào ở giai đoạn này đều do chúng ta kết hợp với cáp lỏng hoặc trình điều khiển sai.

Bước 3: Chạy chương trình của bạn

Chạy chương trình của bạn
Chạy chương trình của bạn
Chạy chương trình của bạn
Chạy chương trình của bạn
Chạy chương trình của bạn
Chạy chương trình của bạn

Thứ nhất, đôi nét về cảm biến nhiệt kế Dallas 18b20. Nó có 3 chân là Ground (G), data (D) và VCC như trong hình trên. Để hoạt động, nó yêu cầu bắc cầu D và VCC bằng một điện trở 4,7k. G và VCC được kết nối với các cực tương ứng trong khi D được kết nối với ATTINY 85, chân - [6] PB1, như được cấu hình trong mã.

Tiếp theo, kết nối ATTINY với A6 GSM như sau (và hiển thị ở trên)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

và trên chính A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (Chưa kết nối với đất !!!!!)

Bây giờ, hãy bật nguồn cả hai thiết bị và sau vài giây, chạm tạm thời vào chân nối đất A6 bằng cáp được kết nối với chân RST A6. A6 sẽ tắt và bật lại và hy vọng rằng bạn sẽ sớm nhận được dữ liệu nhiệt độ trên điện thoại của mình.

Bước 4: Kết luận

Hướng dẫn này có vẻ khá đơn giản nhưng ý tưởng là minh họa những gì có thể đạt được với các thành phần chi phí thấp. Rõ ràng, nếu bạn có quyền truy cập vào wi-fi hoặc trung tâm BLE thì có nhiều giải pháp thích hợp hơn.

Tôi không đề cập đến các chức năng khác như gửi SMS tới điện thoại để bắt đầu ghi / truyền nhiệt độ, v.v.

Đề xuất: