Оглавление:

Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM: 5 шагов
Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM: 5 шагов

Видео: Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM: 5 шагов

Видео: Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM: 5 шагов
Видео: Температура на даче - информация всегда в моем смартфоне. 2024, Ноябрь
Anonim
Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM
Текстовые SMS-оповещения о температуре от ATTINY85 и A1 GSM

В этом руководстве показано, как измерить температуру с помощью простого датчика температуры и отправить ее в виде sms-сообщения на свой мобильный телефон. Чтобы упростить задачу, я отправляю температуру с заданным интервалом, но я также показываю, как это можно сделать только с помощью исключений / предупреждений. Аппаратное обеспечение очень дешевое, менее 10 долларов, хотя необходимо учитывать периодические расходы на смс.

Тяжелую работу выполняет простой, но мощный ATTINY 85, который собирает данные о температуре, а затем отправляет SMS-сообщение через GSM-модуль AI-Thinker A6.

Короче говоря, вы пишете код ATTINY85 в среде Arduino IDE и записываете его на ATTINY85 с помощью преобразователя последовательного порта USBASP / USB. Я рассказывал о настройке GSM-модуля AI-Thinker A6 и Arduino IDE в двух предыдущих уроках. Отличие заключается в том, что между модулями ATTINY и A6 GSM используется последовательная связь.

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

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

Вот что вам понадобится:

1. Преобразователь USBASP последовательный / USB.

2. КРАЙНЕ 85.

3. GSM-модуль AI-Thinker A6 версии 6 (с сим-картой, на которую есть SMS-кредиты).

4. Блок питания на макетной плате на 3,3 В для ATTINY85.

5. Блок питания 3.3.v USB для GSM-модуля AI-Thinker A6.

6. Датчик температуры Dallas 18B20..

7. Резистор 4,7к для датчика 18В20.

8. Макетная плата и кабели.

9. Arduino IDE (для этого я использовал версию 1.8.5).

10. Ноутбук Windows X (я использовал версию 10) со свободным портом usb.

Шаг 1: Программирование ATTINY 85

Вот код Arduino IDE (вам нужно будет изменить номер телефона, на который вы хотите отправить SMS.)

#include #include #include

// *** // *** Определим выводы RX и TX. Выберите любые два // *** контакта, которые не используются. Старайтесь избегать D0 (вывод 5) // *** и D2 (вывод 7), если вы планируете использовать I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

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

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Распиновка 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 МГц

// *** // *** Контакт, к которому подключен провод данных OneWire // ***. // *** #define ONE_WIRE_BUS 1

// *** // *** Настройте экземпляр oneWire для связи с любыми // *** устройствами OneWire (а не только с температурными ИС Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Передаем нашу ссылку oneWire в Dallas Temperature. // *** Температура Далласа _sensors = Температура Далласа (& _ 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_tempera) {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=\"+ ВАШ НОМЕР / ""); // устанавливаем телефонный номер (заключен в двойные кавычки) delay (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); задержка (1000); mySerial.write (0x1A); // отправляет ctrl + z конец сообщения delay (1000); mySerial.write (0x0D); // Возврат каретки в шестнадцатеричном формате delay (1000); mySerial.write (0x0A); задержка (1000000); // 17 минут - настройте для вашего собственного приложения}

Откройте среду Arduino IDE - я подробно описал, как найти способ обойти это в моем предыдущем руководстве, о котором я упоминал ранее.

Вам понадобятся следующие библиотеки

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Затем настройте контакты RX и TX на ATTINY85, которые необходимо подключить к A1 Thinker. ATTINY 85 имеет 8 контактов, по четыре с каждой стороны, и выравнивается с помощью точки на поверхности в качестве ориентира. Контакт 1 или контакт RESET находится рядом с точкой.

(в данном случае я выбрал выводы 2 и 3 - они находятся на той же стороне, что и вывод RESET, который находится рядом с точкой на поверхности ATTINY 85. Вывод 2 является следующим выводом после вывода RESET, в то время как вывод 3 находится между выводом 2 и ЗЕМЛЯ)

Далее вам нужно настроить датчик температуры -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

Температура Далласа _sensors = Температура Далласа (& _ oneWire);

Затем настройте программный последовательный порт.

mySerial.begin (115200);

задержка (60000);

а затем вызовите датчики с помощью _sensors.begin ();

Затем идет цикл, который опрашивает в заранее определенное время, записывает температуру и отправляет сообщение / предупреждение в зависимости от значения. Он использует функцию SMS_temp, в которой вы также устанавливаете время цикла.

пустая петля () {сенсоры.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 Just right");}

if (tempC> = 23 && error_tempera) {SMS_temp (tempC, "Слишком тепло");}

}

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

Затем настройте IDE Arduino для подготовки к загрузке в ATTINY85.

Несколько вещей, на которые следует обратить внимание

1- Если у вас нет платы семейства ATTINY, добавьте следующий URL-адрес https://raw.githubusercontent.com/damellis/attiny/… в URL-адрес File / Preferences / Additional Boards Manager, Затем в среде Arduio IDE щелкните Tools / Board / Board Manager, найдите ATTINY и установите новую плату. Меняем процессор на Attiny85.

Шаг 2: Загрузка программы в ATTINY85

Загрузка программы в ATTINY85
Загрузка программы в ATTINY85

Также см. Мои предыдущие инструкции по этому поводу -

ATTINY85 имеет два режима: режим программирования и режим работы соответственно. РЕЖИМ ПРОГРАММИРОВАНИЯ Во-первых, определите контакты на ATTINY85. Для этого найдите небольшую выемку на поверхности микросхемы, которая находится рядом с выводом RST / RESET. Используя это в качестве ориентира, вы можете определить остальные контакты. Вся эта информация представлена в листе данных A85 -

USBasp и ATTINY85 должны быть подключены, как показано на изображении выше.

Затем в среде Arduino IDE установите программатор на USBasp и частоту на внутреннюю 8 МГц.

Подключите USBasp к USB-порту на вашем ноутбуке (в Windows 10, если у вас нет драйвера USBasp, используйте Zadig в соответствии с веб-сайтом

Затем, подключив USBasp, выберите из эскиза / загрузки Arduino IDE, и, надеюсь, вы увидите, как процесс загрузки отображается красными буквами на Arduino IDE и заканчивается на avrdude done. Спасибо.

Любые ошибки на этом этапе обычно связаны с ослабленными кабелями или неправильным драйвером.

Шаг 3: Запуск вашей программы

Запуск вашей программы
Запуск вашей программы
Запуск вашей программы
Запуск вашей программы
Запуск вашей программы
Запуск вашей программы

Во-первых, кое-что о датчике термометра Dallas 18b20. Он имеет 3 контакта, заземление (G), данные (D) и VCC, как показано на изображении выше. Для работы требуется перемычка D и VCC с помощью резистора 4,7 кОм. G и VCC подключены к соответствующим полюсам, в то время как D подключен к ATTINY 85, контакт - [6] PB1, как настроено в коде.

Затем подключите ATTINY к A6 GSM следующим образом (как показано выше)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

а на самом А6

A6 PWR A6 VCC 5.0A6 RST A6 GND (пока не заземлять !!!!!)

Теперь включите оба устройства и через несколько секунд временно прикоснитесь к контакту заземления A6 кабелем, подключенным к контакту A6 RST. A6 выключится и включится, и, надеюсь, вы скоро получите данные о температуре на свой телефон.

Шаг 4: Заключение

Это руководство может показаться довольно простым, но идея состоит в том, чтобы проиллюстрировать, чего можно достичь с помощью недорогих компонентов. Очевидно, что если у вас есть доступ к Wi-Fi или концентратору BLE, то есть более подходящие решения.

Я не рассмотрел другие функции, такие как отправка SMS на телефон для начала записи / передачи температуры и т. Д.

Рекомендуемые: