Съдържание:

SMS текстови временни сигнали от GSM на ATTINY85 и A1: 5 стъпки
SMS текстови временни сигнали от GSM на ATTINY85 и A1: 5 стъпки

Видео: SMS текстови временни сигнали от GSM на ATTINY85 и A1: 5 стъпки

Видео: SMS текстови временни сигнали от GSM на ATTINY85 и A1: 5 стъпки
Видео: gsm sim800 at команды и подключение к Ардуино 2024, Ноември
Anonim
SMS текстови временни сигнали от GSM на ATTINY85 и A1
SMS текстови временни сигнали от GSM на ATTINY85 и A1

Тази инструкция ви показва как да уловите температурата от обикновен температурен сензор и да я изпратите чрез sms текст до мобилния си телефон. За да опростя нещата, изпращам температурата на определен интервал, но също така показвам как това може да стане само чрез изключение / сигнали. Хардуерът е с много ниска цена, по -малко от 10 долара, въпреки че има повтарящи се разходи за sms, които трябва да се вземат предвид.

Вдигането на тежести се осъществява от простия, но мощен ATTINY 85, който улавя данните за температурата и след това задейства изпращане на SMS чрез модул AI-Thinker A6 GSM.

Накратко, пишете кода ATTINY85 в средата на Arduino IDE и го записвате на ATTINY85 с помощта на USBASP сериен/USB конвертор. Разгледах настройката на AI-Thinker A6 GSM модул и Arduino IDE в два предишни урока. Различното тук е свързването на GSM модула ATTINY и A6 с помощта на серийни комуникации.

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

След програмиране, ATTINY чете данните за температурата от сензор за термометър - Dallas 18B20- и след това изпраща данните и командите чрез серийна връзка към GSM модула A6, който след това ги изпраща като SMS текст до вашия мобилен / смартфон.

Ето какво ви трябва:

1. USBASP сериен/USB конвертор.

2. АТТИНИ 85.

3. AI-Thinker A6 GSM модул версия 6 (със SIM, който има SMS кредити).

4. Захранване с 3.3v платка за ATTINY85.

5. 3.3.v USB захранване за AI-Thinker A6 GSM модул.

6. Температурен сензор Dallas 18B20..

7. 4.7k резистор за сензора 18B20.

8. Платка и кабели.

9. Arduino IDE (използвах версия 1.8.5. За това).

10. Лаптоп с Windows X (използвах версия 10) с безплатен usb порт.

Стъпка 1: Програмиране на ATTINY 85

Ето кода на Arduino IDE (Ще трябва да промените телефонния номер, на който искате да изпратите SMS.)

#включи #включи #включи

// *** // *** Определете RX и TX щифтовете. Изберете всеки // *** *** щифт, който не се използва. Опитайте се да избегнете D0 (щифт 5) // *** и D2 (щифт 7), ако планирате да използвате I2C. // *** #дефинирайте RX 3 // *** D3, Pin 2 #дефинирайте TX 4 // *** D4, Pin 3

// *** // *** Определете софтуерно базиран сериен порт. Използване на // *** име Serial, така че кодът да може да се използва на други // *** платформи, които поддържат хардуерно базиран сериал. На // *** чипове, които поддържат хардуерната серия, просто // *** коментирайте този ред. // ***

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Pinout 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) // *** // ATTINY 85 честота, зададена при вътрешни 8 MHz

// *** // *** Пин, на който са свързани данните на OneWire // *** проводник. // *** #дефинирайте ONE_WIRE_BUS 1

// *** // *** Настройка на екземпляр от oneWire за комуникация с всякакви устройства на OneWire // *** (не само с температурни интегрални схеми на Maxim/Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Предайте нашата OneWire препратка към температурата в Далас. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Инициализира серийния порт // *** mySerial.begin (115200); забавяне (60000);

// *** Стартирайте библиотеката. _sensors.begin (); }

void loop () {

// *** // *** Вземете текущата температура и я покажете. // *** _sensors.requestTemperatures (); забавяне (2000); двоен tempC = _sensors.getTempCByIndex (0); двоен tempF = _sensors.getTempFByIndex (0); // проверка за грешки - понякога при стартиране, температурата се показва като 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, "Твърде топло");}}

void SMS_temp (double mytemp, String myalert) {mySerial.println ("AT+CMGF = 1"); // настроено на забавяне в режим SMS (1000); mySerial.println ("AT+CMGF = 1"); // настроено на забавяне в режим SMS (1000); //mySerial.println("AT+CMGS=\"+ ВАШИЯ НОМЕР / ""); // задаваме забавяне на телефонния номер (увит в двойни кавички) (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); забавяне (1000); mySerial.write (0x1A); // изпраща ctrl+z край на забавяне на съобщението (1000); mySerial.write (0x0D); // Carriage Return в шестнадесетично закъснение (1000); mySerial.write (0x0A); забавяне (1000000); // 17 минути - коригирайте според собственото си приложение}

Отворете средата на Arduino IDE - описал съм как да се ориентирате в това подробно в предишните си инструкции, за които споменах по -рано.

Ще ви трябват следните библиотеки

SoftwareSerial.h

OneWire.h

DallasTemperature.h

След това конфигурирайте RX и TX щифтовете на ATTINY85, които трябва да свържете с A1 Thinker. ATTINY 85 има 8 щифта, по четири от всяка страна и е подравнен с помощта на точката на повърхността като отправна точка. Пин 1 или ПИН RESET е до тази точка.

(в този случай избрах Pin2 и 3 - Те са от същата страна като щифта RESET, който е до точката на повърхността на ATTINY 85. Пин 2 е следващият щифт от щифта RESET, докато Pin 3 е между Pin 2 и заземяване)

След това трябва да конфигурирате температурния сензор -

#дефинирайте ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

След това настройте серийния порт на софтуера

mySerial.begin (115200);

забавяне (60000);

и след това извикайте сензорите с _sensors.begin ();

След това има цикъл, който се оглежда в предварително определено време, записва температурата и изпраща съобщение / предупреждение в зависимост от стойността. Той използва функция SMS_temp, която също е мястото, където задавате времето на цикъла

void loop () {sensors.requestTemperatures (); забавяне (2000);

двоен tempC = _sensors.getTempCByIndex (0);

двоен tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "ОПАСНО студено");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Доста студено");}

if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp точно както трябва");}

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Твърде топло");}

}

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

След това настройте Arduino IDE, за да се подготвите за качване в ATTINY85.

Редица неща, които трябва да се отбележат

1- Ако нямате семейство дъски ATTINY, добавете следния URL адрес https://raw.githubusercontent.com/damellis/attiny/… във URL файл/Предпочитания/Допълнителни платки, След това в Arduio IDE щракнете върху Tools/Board/Board Manager и потърсете ATTINY и инсталирайте новата платка. Сменете процесора на Attiny85.

Стъпка 2: Качване на програмата в ATTINY85

Качване на програмата в ATTINY85
Качване на програмата в ATTINY85

Вижте и предишните ми инструкции по този въпрос-https://www.instructables.com/id/15-Dollar-Attiny8…

ATTINY85 има два режима, съответно режим на програмиране и работа. РЕЖИМ НА ПРОГРАМИРАНЕ Първо идентифицирайте щифтовете на ATTINY85. За да направите това, намерете малкия прорез на повърхността на чипа, който е до щифта RST/RESET. Използвайки това като отправна точка, можете да идентифицирате останалите щифтове. Цялата тази информация е предоставена в информационния лист A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp и ATTINY85 трябва да бъдат свързани, както е показано на изображението по -горе.

След това, в Arduino IDE, настройте програмиста на USBasp и честотата на вътрешни 8Mhz.

Свържете USBasp към USB порт на вашия лаптоп (В Windows 10, ако нямате USBasp драйвер, използвайте Zadig съгласно уебсайта

След това, когато USBasp е свързан, изберете от Arduino IDE Sketch/upload и се надявам да видите напредъка на качване, показан с червени букви на Arduino IDE и завършващ с avrdude направено. Благодаря ти.

Всички грешки на този етап обикновено са свързани с разхлабени кабели или грешен драйвер.

Стъпка 3: Изпълнение на вашата програма

Изпълнение на вашата програма
Изпълнение на вашата програма
Изпълнение на вашата програма
Изпълнение на вашата програма
Изпълнение на вашата програма
Изпълнение на вашата програма

Първо, нещо за сензора за термометър Dallas 18b20. Той има 3 пина, заземяване (G), данни (D) и VCC, както е показано на изображението по -горе. За работа тя изисква свързване на D и VCC с резистор 4.7k. G и VCC са свързани към съответните полюси, докато D е свързан към ATTINY 85, извод - [6] PB1, както е конфигурирано в кода.

След това свържете ATTINY към A6 GSM, както следва (и показано по -горе)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ВНИМАНИЕ GND A6 GND

и на самия А6, A6 PWR A6 VCC 5.0A6 RST A6 GND (Все още не се свързвайте към земята !!!!!)

Сега включете и двете устройства и след няколко секунди докоснете временно заземяващия щифт A6 с кабела, свързан към A6 RST щифта. A6 ще се изключва и включва и се надяваме скоро да получите данни за температурата на телефона си.

Стъпка 4: Заключение

Тази инструкция може да изглежда доста проста, но идеята е да се илюстрира какво може да се постигне с евтини компоненти. Очевидно, ако имате достъп до wi-fi или BLE хъб, тогава има по-подходящи решения.

Не обхващам други функции, като изпращане на SMS до телефона за започване на запис / предаване на температура и т.н.

Препоръчано: