Отправка температуры через SMS (GSM) и Arduino. – RobotChip
/*
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 24.10.2020г.
*/
#include <SoftwareSerial.h> // Подключаем библиотеку SoftwareSerial
#include <OneWire.h> // Подключаем библиотеку OneWire
#include <DallasTemperature.h> // Подключаем библиотеку DallasTempature
SoftwareSerial mySerial(3, 2); // Выводы SIM800L Tx & Rx подключены к выводам Arduino 3 и 2
char incomingByte;
String inputString;
int relay_1 = A0; // Вывод управления реле 1
int relay_2 = A1; // Вывод управления реле 2
#define ONE_WIRE_BUS A2 // Указываем, к какому выводу подключена DQ
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup()
{
pinMode(relay_1, OUTPUT); // Установим вывод как выход
digitalWrite(relay_1, HIGH); // Устанавливаем высокий уровень
pinMode(relay_2, OUTPUT); // Установим вывод как выход
digitalWrite(relay_2, HIGH); // Устанавливаем высокий уровень
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){ // Зацикливаем и ждем инициализацию SIM800L
mySerial.println(«AT»); // Отправка команды AT
delay(1000); // Пауза
Serial.println(«Connecting…»); // Печатаем текст
}
Serial.println(«Connected!»); // Печатаем текст
mySerial.println(«AT+CMGF=1»); // Отправка команды AT+CMGF=1
delay(1000); // Пауза
mySerial.println(«AT+CNMI=1,2,0,0,0»); // Отправка команды AT+CNMI=1,2,0,0,0
delay(1000); // Пауза
mySerial.println(«AT+CMGL=\»REC UNREAD\»»);
}
void loop()
{
if(mySerial.available()){ // Проверяем, если есть доступные данные
delay(100); // Пауза
while(mySerial.available()){ // Проверяем, есть ли еще данные.
incomingByte = mySerial.read(); // Считываем байт и записываем в переменную incomingByte
inputString += incomingByte; // Записываем считанный байт в массив inputString
}
delay(10); // Пауза
Serial.println(inputString); // Отправка в «Мониторинг порта» считанные данные
inputString.toUpperCase(); // Меняем все буквы на заглавные
if (inputString.indexOf(«ON_1») > -1){ // Проверяем полученные данные, если ON_1 включаем реле 1
digitalWrite(relay_1, LOW);
sms(String(«Relay 1 — ON»), String(«+7xxxxxxxxxx»));
delay(50);}
if (inputString.indexOf(«OFF_1») > -1){ // Проверяем полученные данные, если OFF_1 выклюем реле 1
digitalWrite(relay_1, HIGH);
sms(String(«Relay 1 — OFF»), String(«+7xxxxxxxxxx»)); // Отправка SMS
delay(50);}
if (inputString.indexOf(«ON_2») > -1){ // Проверяем полученные данные, если ON_2 включаем реле 2
digitalWrite(relay_2, LOW);
sms(String(«Relay 2 — ON»), String(«+7xxxxxxxxxx»)); // Отправка SMS
delay(50);}
if (inputString.indexOf(«OFF_2») > -1){ // Проверяем полученные данные, если OFF_2 выключаем реле 2
digitalWrite(relay_2, HIGH);
sms(String(«Relay 2 — OFF»), String(«+7xxxxxxxxxx»)); // Отправка SMS
delay(50);}
if (inputString.indexOf(«TEMP_1») > -1){ // Проверка полученные данные, если TEMP_1 отправляем температуру
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.print(sensors.getTempCByIndex(0));
sms(String(temp), String(«+7xxxxxxxxxx»)); // Отправка SMS
delay(50);}
if (inputString.indexOf(«TEMP_2») > -1){ // Проверка полученные данные, если TEMP_2 отправляем температуру
sensors.requestTemperatures();
float temp2 = sensors.getTempCByIndex(1);
Serial.print(sensors.getTempCByIndex(1));
sms(String(temp2), String(«+7xxxxxxxxxx»)); // Отправка SMS
delay(50);}
if (inputString.indexOf(«OK») == -1){
mySerial.println(«AT+CMGDA=\»DEL ALL\»»);
delay(1000);}
inputString = «»;}
}
void sms(String text, String phone) // Процедура Отправка SMS
{
Serial.println(«SMS send started»);
mySerial.println(«AT+CMGS=\»» + phone + «\»»);
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println(«SMS send complete»);
delay(2000);
}
Бюджетный GSM термометр на Arduino Nano
Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:
AddPhone:2+71234567891risp
AddPhone:3+71234567892s
AddPhone:4+71234567893sp
AddPhone:5+71234567894r
Синтаксис команды:
AddPhone — команда
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.
DeletePhone — Удалить номер телефона.
Пример команды:
DeletePhone:+71234567891Синтаксис команды:
DeletePhone — команда
: — разделитель
+71234567891 — номер телефона
EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
EditMainPhone:spri
Синтаксис команды:
EditMainPhone — команда
: — разделитель
srpi — параметры
RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
RingTime:40
Синтаксис команды:
RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.
ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
ModemID:2
Синтаксис команды:
ModemID — команда
: — разделитель
2 — ID модема.
NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:
NetCheckTime:10
Синтаксис команды:
NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.
TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:
TempCheckTime:10
Синтаксис команды:
TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.
LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:
LowTemp:25
LowTemp — команда
: — разделитель
25 — температура
HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:
HighTemp:60
Синтаксис команды:
HighTemp — команда
: — разделитель
60 — температура
WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerTime:5Синтаксис команды:
WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения
WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).
WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено
WatchPowerOff — выключить контроль внешнего питания
BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:
BalanceNum:#103#L24
Синтаксис команды:
BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
Reboot — перезагрузка устройства (только Arduino)
ResetConfig — сброс настроек на заводские установки
ResetPhone — удаление из памяти всех телефонных номеров
FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.
GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры
Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о текущей температуре, нижней и верхней границах контроля температуры, о частоте автоматического обновления температуры, и о том с какого номера было включено или выключено оповещение при изменении температуры и текущее состояние.
TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.
LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.
Money — запроса баланса.
ClearSms — Удалить из памяти все sms
ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов
Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.
ListConfig — вывод в монитор порта текущей конфигурации устройства.
Мониторинг температуры через интернет. Урок 2.
В предыдущем уроке мы разобрались как в теории работает устройство, передающее данные о температуре на сервер и принимающее от него команды для реле. Настало время перейти от теории к практике и собрать это устройство. Поехали…
Собираем передающее устройствоШаг 1: Устанавливаем модуль SIM900 на плату Arduino Mega:
Рис. 1Вставьте SIM-карту в модем и соедините его с платой Arduino, как показано на рисунке. Клеммники, помеченные на схеме одним цветом, должны быть совмещены после соединения.
Обратите внимание, что пины D7, D8 (интерфейс последовательного порта) на плате модема SIM900 нужно отогнуть, т.к. они не должны вставляться в соответствующие разъёмы Arduino Mega. Это обеспечивает совместимость этих модулей, поскольку соответствующие пины у Arduino Mega не могут быть назначены как линии последовательного порта.
Пин «5V» на плате SIM900 также нужно отогнуть, чтобы модем не получал питание напрямую с платы контроллера. Его нужно запитать через реле, чтобы можно было аппаратно перезагружать SIM900.
Шаг 2: Соединяем последовательный порт модуля SIM900 с последовательным портом Arduino :
Рис. 2
Пин «D7(RX)» модуля SIM900 соединяем с пином «19 (RX1)» модуля Arduino Mega, а пин «D8(TX)» c пином «18 (TX1)».
Шаг 3: Создаём вспомогательные контактные линии с помощью макетной платы:
Рис. 3
На плате контроллера:
- Пин 5v – линия питания 5 В
- пин 42 — линия данных датчика DS18B20
- пин 49 — линия управления светодиодом «В работе»
- пин 50 — линия управления светодиодом «Запрос»
- пин 52 — линия управления светодиодом «GPRS»
- пин GND – линия «Земля»
Вспомогательные точки удобны для сборки схемы.
Горизонтальные линии макетной платы объединены между собой «внутри», поэтому чтобы сделать из одной точки четыре, установим соответствующую перемычку для каждой из «размножаемых» точек.
Шаг 4: Подключаем датчик температуры DS18B20:
Рис. 4
У датчика DS18B20:
- красный провод – питание
- чёрный провод – земля
- белый (жёлтый) провод – шина данных
Вставляем провода датчика в соответствующие контактные линии на макетной плате. Между линией питания и шиной данных датчика устанавливаем нагрузочный резистор 4,7 кОм.
Шаг 5: Подаём питание на релейный модуль:
Рис. 5
С помощью двух перемычек соединяем пины VCC и GND релейного модуля с линиями макетной платы 5V и GND соответственно.
Шаг 6: Подключаем линии управления релейным модулем:
Рис. 6
Пин 38 модуля Arduino Mega отвечает за включение/выключение выходного реле (К1). Соединяем этот пин с пином «IN1» релейного модуля.
Пин 48 модуля Arduino Mega отвечает за аппаратную перезагрузку модема и управляет реле К2. Соединяем этот пин с пином «IN2» релейного модуля.
Шаг 7: Подаём питание на модем через нормально-закрытый контакт реле:
Рис. 7
Ещё раз напоминаем, что пин «5V» на плате модема SIM900 нужно отогнуть, чтобы он не вставлялся в соответствующий пин на плате Arduino Mega.
Шаг 8: Подключаем светодиоды:
Рис. 8
Устанавливаем светодиоды, как показано на рисунке.
Готово! В результате должна получиться следующая схема:
Рис. 9
ЗаключениеНа этом мы заканчиваем второй урок! Надеемся, что он вам понравился! В следующем уроке мы изучим алгоритм работы собранного нами устройства, посмотрим, как оно обменивается данными с сервером. До скорой встречи на LAZY SMART! Чтобы не пропустить новую статью, вступай в нашу группу Вконтакте, а также подписывайся на наш канал YouTube.
управление умным домом с телефона
Аппаратная платформа Arduino используется для реализации множества электронных приборов и систем умного дома, включая GSM-извещатель охранной системы. Конструктор Arduino, в паре с простым и доступным языком программирования, позволит создать собственные типовые проекты умного дома, с применением GSM модуля.
Назначение и принцип работы
GSM-модуль (Global System for Mobile Communications) использует сеть телефонной связи оператора, для получения и передачи сигнала на удаленный объект управления. Например, с помощью СМС команд можно:
- получать оповещение о состоянии объекта через используемые датчики;
- узнавать о срабатывании сигнализации;
- включать и выключать охранную систему.
С помощью GPRS, который также поддерживают GSM-модули, можно аналогичные команды обрабатывать через Internet.
С помощью такого функционала можно организовать автономную сигнализацию на удаленном объекте. Датчики будут фиксировать изменение состояния, а по каналам связи будет транслироваться информация об этом на ваш смартфон. По сути, можно организовать Smart Home самостоятельно, постепенно добавляя в схему дополнительное комплектующее.
Работает такое устройство на базе платы Arduino Uno. Никто не запрещает использовать платы Nano (mini-схема) или Mega если необходимо, но для удобства монтажа устройства минимальной комплектации, достаточно материнской платы Uno.
За передачу GSM или GPRS отвечает модуль, который соединяется с основной платой. Он расширяет возможности Arduino UNO, позволяя принимать и совершать звонки, отправлять SMS, обмениваться данными через GPRS. На рынке представлены несколько версий отличных GSM-плат, которые можно сопоставлять и программировать через AT-команды на необходимый функционал.
Топ 6 самых популярных модулей
Представленные ниже модули – популярный продукт для монтажа систем автономной сигнализации и иных проектов, для передачи управляющего сигнала через сети мобильных операторов.
Под модулем понимается изделие, состоящие из платы и элементов на ней (включая компонент, состоящий из чипсета и приемопередатчика). Компонент находятся под крышкой в едином форм-факторе (напоминает процессор для материнской платы компьютера). Распайка на плате расширения происходит через торцевые контактные ножки. Такая полноценная плата и называется модулем. Если на ней есть множество других элементов, ее иногда именуют шилд.
Ниже будут приведены модули, такие как Neoway M590, A6 и A7, и прочие, представлены их характеристики.
SIM900
Разработанный компанией SIMCom Wireless Solution модуль SIM900 подключается и обменивается данными через распространенный физический протокол передачи данных UART. Подключение к ПК осуществляется через USB-UART преобразователь.
Плата позволяет в двухстороннем режиме работать с сообщениями и звонками адресата.
Спецификация:
- Диапазон частот EGSM900, DCS1800, GSM850, PCS1900.
- Напряжение 3,2-4,8 В.
- Сила тока в режиме простоя – 450 мА.
- Максимальный ток – 2 А.
- Канал связи до 14.4 кбит/с.
- Диапазон температур от -30 °C до +80 °C без искажения, и от -40 °C до +85 °C, с незначительным отклонением радиочастотных характеристик, с сохранением работоспособности.
- Вес 6,2 г.
- Размеры 24 x 24 x 3 мм.
У компонента есть модификации: 900B, 900D, 900TE-C, 900R 900X. У каждой модификации своя специфика. SIM900D дополнен блоком заряда аккумулятора, а в SIM900X введены новые режимы энергосбережения, что позволяет использовать модули в современных системах трекинга автомобилей, охранной и промышленной автоматики. Все модификации компонентов можно найти в едином форм-факторе SMT, с торцевыми контактами под пайку. Но, не исключены варианты нахождения в других форм факторах.
SIM800L
Основа модуля – компонент SIM800L с реализацией обмена данными по каналам GSM и GPRS с помощью дуплексного режима. В модуль устанавливается SIM-карта, есть встроенная антенна и выход под еще одну антенну. Питание на плату подается через преобразователь напряжения DC-DC. Еще, есть возможность подключиться к другому источнику питания. Интерфейс подключения – UART.
Спецификация:
- Четырехдиапазонный сотовый терминал.
- Напряжение 3,8-4,2В.
- Ток в режиме ожидания – 0,7 мА. Предельный ток – 500 мА.
- Слот
- Поддержка 2G сети.
- Диапазон температур от -30 °C до +75 °C.
A6
Шилд A6 работает в сетях мобильной связи и позволяет принимать и передавать сигналы с помощью GSM и GPRS. Модуль, созданный компанией AI-THINKER несколько лет назад, успешно показал себя и пользуется популярностью в системах автоматики.
ТТХ А6:
- Четырехдиапазонный сотовый терминал.
- Напряжение питания 5 В.
- Ток в спящем режиме – 3 мА.
- Ток режима ожидания – 100 мА.
- Ток режима соединения – 500 мА.
- Ток пиковой нагрузки – 2А.
- Разъем
- Скорость GPRS во время передачи сигнала 42,8 Кбит/сек.
- Температура от -30 °C до +80 °C.
A7
Новый модуль А7 отличается от предшественника тем, что в него встроен GPS. Это решение позволило упростить конструкцию платы.
Основные параметры:
- Четырехдиапазонный сотовый терминал.
- Напряжение 3,3-4,6 В.
- Напряжение питания 5В.
- 10 Класс GPRS: канал передачи данных 85,6 кбит/с.
- Jammer эха и шумов.
Neoway M590
Модуль на основе компонента Neoway M590 позволяет принимать звонки, обмениваться данными и сообщениями. Имеет интерфейс подключения UART.
Характеристики:
- Диапазон частот EGSM900, DCS1800.
- 10 Класс
- Напряжение 3,3-5 В.
- Пиковый ток 2 А.
- Рабочий ток 210 мА.
- Коммуникационный сигнал 3,3 В.
- Температура от -40 °C до +80 °C.
Подключая модуль к контроллеру, потребуется преобразователь 3,3 В -> 5 В.
GSM GPRS модуль SIM900
На базе модуля SIM900 разработали и успешно используют SIM900 GSM GPRS Shield, в качестве модуля для подключения к Arduino UNO. По сравнению с остальными платами, стоимость этой на порядок дороже, и она укомплектована множеством разъемов и контактов. Среди основных параметров:
- Подключается плата к Arduino Mega и UNO.
- Четыре рабочих частоты, как и в остальных платах.
- Низкое энергопотребление 1.5 А в спящем режиме.
- GPRS мульти-слот класса 10/8.
- Рабочие температуры от -40°C до +85 °C.
Схема сборки типового проекта Умного дома
Рассмотрим варианты подключения нескольких модулей GSM к платам Arduino. В качестве примера рассматриваются платы Arduino UNO и MEGA.
Перед подключением модулей, вставьте соответствующего размера симку мобильного оператора в слот модуля. Далее, модуль соединяется с основной платой. Для этого нужно внимательно изучить инструкцию, определив распиновку модулей. После, подключив плату к питанию, с помощью переходника USB-UART контроллер подключается к компьютеру, через среду программирования Arduino IDE, или ее более комфортную альтернативу, прошивается и программируется AT-командами.
Естественно, по мере увеличения функционала вашего проекта, к плате необходимо добавить датчики, реле, розетки и другие компоненты. Об этом вы можете почитать на других страницах сайта.
Аппаратная часть: составляющие
В зависимости от того, какой GSM-модуль будет использоваться, зависят и составляющие схемы.
В основном это: микроконтроллер Arduino UNO, совместимый с платой GSM-модуль, DC-DC преобразователь понижающий (если коммуникационный сигнал ниже 5В), проводки и переходники для подключения.
SIM800L + Arduino UNO
Например, для подключения SIM800L к Arduino UNO, из-за малого напряжения в 3,8 В нужно подключить через преобразователь DC-DC. Распиновка модуля SIM800L выглядит так.
Подключение происходит в такой последовательности:
- Подключите Arduino UNO к компьютеру через порт USB.
- Источник питания на 12 В подключите через DC-DC.
- Минус с ИП на GND платы контроллера, и с GND в минус преобразователя.
- Плюс с ИП на плюс DC-DC.
- Плюс с DC-DC на плюс (Vcc) GSM модуля.
- Минус с земли преобразователя на GND модуля.
- RXD и TXD модуля соедините с пинами 2 и 3 Arduino UNO.
К любым digital pin (цифровые входы/выходы), если необходимо, можно соединять несколько модулей.
A6 + Arduino UNO
Так как GSM-модуль имеет стандартное напряжение питания, поэтому преобразователь в схеме не нужен. Подключать платы можно напрямую. Схема распиновки A6 на рисунке ниже.
Соединение происходит следующим образом:
- UART_RXD модуля к TX→1 микроконтроллера.
- UART_TXD модуля к RX ←0 микроконтроллера.
- GND контроллера с GND GSM-модуля.
- Пин VCC0 (питание) к кнопке питания на модуле PWR_KEY (power).
SIM900 Шилд + Arduino MEGA
Особенность платы в том, что при вызове устройства, сила тока достигает пикового предела в 2А. Поэтому, не подключайте питание напрямую. Прежде чем соединить, установите в слот сим карту и выставите TXD и RXD перемычку для слаботочной цепи, согласно картинке.
Далее, подключайте платы между собой:
- Желтым проводом соедините контакт TxD.
- Салатовым –
- Черным соедините GND плат.
- Через USB-порт соединить Микроконтроллер с ПК.
Чтобы удостовериться, что схема собрана верно, установите в IDE GPRS_Shield_Arduino.
Проверка правильной отработки схемы выглядит так:
- На плате Arduino соедините RESET и землю, чтобы информация поступала от Shield к ПК.
- Установите SIM-карту в слот и дайте напряжение на модуль.
- Основную плату по USB соедините с ПК и нажмите кнопку «ON».
- При правильной работе схемы, зеленый светодиод будет мигать, а красный постоянно гореть.
Программная часть: скетчи и библиотеки
После разбора аппаратной части, нужно запрограммировать собранное устройство. С помощью текстовых короткого AT-кода, можно задавать устройству прямые команды. Они воспринимаются устройством во время нахождения программируемого устройства в командном режиме. Команды устройство считывает напрямую с клавиатуры или с помощью ПО, такого как IDE. Программу или ее аналоги доступны для устройств, работающих на Linux, MacOS, Windows, Android. Поэтому, задавать команды удаленно с телефона можно тоже.
На примере программирования модуля SIM900, можно рассмотреть настройку основных инструментов взаимодействия с будущим охранным проектом, сделанным своими руками.
Работа с СМС уведомлениями
Сперва настройте кодировку, с которой нет проблем у компилятора, а затем отправляйте СМС:
- Зайдите в IDE и выполните команду AT+CMGF=1 для перевода в текстовый формат сообщения.
- Затем, командой AT+CSCS=«GSM» выберите ASCII-кодировку.
- За набор сообщения отвечает команда AT+CMGS=«+79********».
- После команды введите текст мессенджа и отправьте его.
- Отправив SMS, нажмите CTRL+Z и устройство отправит SMS-сообщение на приемник.
- После правильного выполнения команд, вернется «ОК».
Чтобы получить сообщение, следуйте example:
- Отправьте команду AT + CNMI = 2,2,0,0,0, чтобы прочитать SMS.
- Обратной связью от порта будет +CMTI: «SM»,2 – двойка значит номер SMS в порядке очереди.
- Отправьте команду AT+CMGR=2 для чтения SMS.
Звонки
Естественно, пока к схеме не подключены микрофон и динамик, ни о каком приеме звонка и речи быть не может. Когда осуществиться звонок, будет выведен номер, с которого звонили. Чтобы далее работать со звонками:
- Загрузите библиотеку #include <GSM.h>.
- Если на сим установлен PIN, то введите команду #define PINNUMBER “”, где в скобках пропишите его. В случае, если пин не установлен, оставьте скобки пустыми.
- Выполнив данную команду, следует узнать статус симки с подключением к сети с помощью boolean notConnected = true.
- Установить активацию с сетью можно через begin(). Если соединение готово к работе, в обратной связи покажется статус GSM_READY.
Выводы
Соорудить собственноручную автономную GSM-сигнализацию не составит большого труда для технически не подкованных людей, в вопросах электро и схемотехники. Прочитав инструкцию и ознакомившись с распиновкой схем, можно подключить микроконтроллер к отвечающему за GSM передачу данных модуль. Также, для подключения доступны разнообразные модели GSM модулей, которые в соответствии со своими характеристиками можно применять для различных задач и так называемых project-объектов.
Касаемо программирования контроллеров, с этим тоже не возникнет проблем. С помощью библиотек, АТ-команд и скетчев, можно определять статус SIM-карты, получать и отправлять SMS сообщения, принимать звонки и тому прочее. Осуществляется это в среде программирования Arduino IDE или в аналогичных средах, установленных на удаленном устройстве, которыми могут быть как смартфон, так компьютер, что непосредственно подключен к программируемому устройству.
Бюджетная GSM сигнализация с мозгами из Arduino
Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Остальные команды могут быть выполнены с номеров с признаком «Management».SMS — команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone или FullReset. Т.е. кто первый позвонил на устройство после его сброска на заводские установки тот и и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс. Невозможно добавить два одинаковых номера.
Пример команды:
До версии GSM_2017_05_26-20-22.hex:
AddPhone:2+71234567891m
AddPhone:3+71234567892a
AddPhone:4+71234567893
AddPhone:5+71234567894ma
Начиная с версии GSM_2017_05_26-20-22.hex:
AddPhone:2+71234567891mrsp
AddPhone:3+71234567892ms
AddPhone:4+71234567893sp
AddPhone:5+71234567894r
Синтаксис команды:
AddPhone — команда
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
До версии GSM_2017_05_26-20-22.hex:
а — Параметр «Alarm» — на номера с этим параметром будут отправляться смс — сообщения о срабатывании сигнализации и сообщения постановке или снятии с охраны.
Начиная с версии GSM_2017_05_26-20-22.hex:
m — Параметр «Management» — разрешено управление сигнализацией
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение при постановке или снятии с охраны
При отсутствии параметров «m», «s», «r», «p»,«i» телефон заносится в память, но никак не используется.
DeletePhone — Удалить номер телефона.
Пример команды:
DeletePhone:+71234567891
Синтаксис команды:
DeletePhone — команда
: — разделитель
+71234567891 — номер телефона
EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
EditMainPhone:spri
Синтаксис команды:
EditMainPhone — команда
: — разделитель
srpi — параметры
BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:
BalanceNum:#103#L24
Синтаксис команды:
BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.
EditSensor — Изменить название датчика и логический уровень срабатывания. Всего может быть не более 8 дополнительных датчиков. После изменения параметров необходима перезагрузка устройства.
Пример команды:
EditSensor:1+Datchik dvizheniya v koridore#h
EditSensor:2+Gerkon na okne
Синтаксис команды:
EditSensor — команда
: — разделитель
1 — записать в первую ячейку памяти
+ — разделитель
Datchik dvizheniya v koridore — название датчика, не может превышать 36 символов, включая пробелы.
#h — Признак высокого логического уровня с датчика, при получении которого сработает сигнализация. Если отсутствует «#h», сигнализация будет срабатывать при получении с датчика низкого логического уровня.
SleepTime — Время «засыпания» сигнализации при получении смс — команды «Pause», указывается в минутах. Значение по умолчанию: 15, не может быть менее 1 и более 60.
Пример команды:
SleepTime:20
Синтаксис команды:
SleepTime — команда
: — разделитель
20 — 20 минут «сна».
AlarmPinTime — Время на которое включается/выключается тревожный/инверсный пин, указывается в секундах. Значение по умолчанию: 60, не может быть менее 1 секунды и более 43200 секунд (12 часов).
Пример команды:
AlarmPinTime:30
Синтаксис команды:
AlarmPinTime — команда
: — разделитель
30 — 30 секунд включения/выключения тревожного пина.
DelayBeforeGuard — Время до постановки устройства на охрану, после получения соответствующей команды.
Пример команды:
DelayBeforeGuard:25
Синтаксис команды:
DelayBeforeGuard — команда
: — разделитель
25 — 25 секунд до постановки на охрану
Пример команды:
DelayBeforeAlarm:40
Синтаксис команды:
DelayBeforeAlarm — команда
: — разделитель
40 — 40 секунд до отправки «тревожного» уведомления
WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerTime:5
Синтаксис команды:
WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения
RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
RingTime:40
Синтаксис команды:
RingTime — команда
: — разделитель
40 — 40 длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.
ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
ModemID:2
Синтаксис команды:
ModemID — команда
: — разделитель
2 — ID модема.
ExtDeviceTime — Количество секунд на которое изменится уровень сигнала на выходе управления внешним устройством.
Пример команды:
ExtDeviceTime:5
Синтаксис команды:
ExtDeviceTime- команда
: — разделитель
5 — 5 секунд
ExtDeviceLevelLow — Внешнее устройство подключенное к выходу A3 управляется низким уровнем сигнала (GND). На выходе по умолчанию будет присутствовать высокий уровень +5В, пока не поступит команда управления внешним устройством
ExtDeviceLevelHigh — Внешнее устройство подключенное к выходу A3 управляется высоким уровнем сигнала (+5V). На выходе по умолчанию будет присутствовать низкий уровень GND, пока не поступит команда управления внешним устройством
ResetSensor — сброс параметров датчиков расширителя порта
ResetConfig — сброс настроек на заводские установки
ResetPhone — удаление из памяти всех телефонных номеров
FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.
RingOn — включить уведомление звонком на «главный» номер записанный в первую ячейку памяти при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hexRingOff — выключить уведомление звонком при срабатывании датчика. Удалена начиная с версии GSM_2017_06_11-00-07.hex
SmsOn — включить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex SmsOff — выключить sms-уведомление при срабатывании датчика. Удалена начиная с версии GSM_2017_08_10-12-17.hex
PIROn — включить обработку датчика движения
PIROff — выключить обработку датчика движения
ReedSwitchOn — включить обработку основного герконового датчика
ReedSwitchOff — выключить обработку основного герконового датчика
WatchPowerOn — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану. Удалена начиная с версии GSM_2017_03_01-23-37.
WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что сигнализация поставлена на охрану.
WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено
WatchPowerOff — выключить контроль внешнего питания
GuardButtonOn — управление сигнализацией внешними устройствами или кнопкой включено Удалена начиная с версии GSM_2017_04_16-12-00.
GuardButtonOn1 — функция постановки или снятия охраны внешними устройствами или кнопкой включена
GuardButtonOn2 — функция только постановки на охрану внешними устройствами или кнопкой включена, снятие с охраны производится по звонку на устройство или с помощью смс команды.
GuardButtonOff — управление сигнализацией внешними устройствами или кнопкой выключено
Reboot — перезагрузка устройства (Arduino)
PCFForceOn — постоянный мониторинг группы всех датчиков модуля расширения
PCFForceOff — мониторинг группы всех датчиков модуля расширения только при постановке устройства на охрану
MainSensorLevelHigh — тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (D6) от датчика
MainSensorLevelLow — тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (D6) от датчика
MainSensorLevelOff — обработка датчика на входе (D6) отключена
SecondSensorLevelHigh — тревожное уведомление будет отправлено при появлении сигнала высокого уровня (+5 В) на входе (A0) от датчика
SecondSensorLevelLow — тревожное уведомление будет отправлено при появлении сигнала низкого уровня (GND) на входе (A0) от датчика
SecondSensorLevelOff — обработка датчика на входе (A0) отключена
MainDelayBeforeAlarm — время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании основного датчика (D6), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
SecondDelayBeforeAlarm — время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании дополнительного датчика (A0), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
PCFDelayBeforeAlarm — время по истечении которого будет отправлено «тревожное» смс уведомление при срабатывании датчиков платы расширения (PCF8574), если за этот период времени сигнализация не была снята с охраны. Синтаксис аналогичен команде DelayBeforeAlarm.
GuardOn — поставить на охрану
GuardOff — снять охраны
Open — команда управления внешним устройством
Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о том с какого номера была включена/выключена охрана
Pause — приостанавливает работу системы на время установленное командой sleeptime в минутах, система не реагирует на срабатывания датчика.
TestOn — включается тестовый режим, мигает синим светодиодом.
TestOff — выключается тестовый режим.
LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.
Money — запроса баланса.
ClearSms — Удалить из памяти все sms
Консольные команды (до версии GSM_2017_04_24-13-22.hex) — вводятся в мониторе порта Arduino IDE:
AddPhone — аналогична sms-команде AddPhone
DeletePhone — аналогична sms-команде DeletePhone
EditSensor — аналогична sms-команде EditSensor
ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов
ResetConfig — аналогична sms-команде ResetConfig
ResetPhone — аналогична sms-команде ResetPhone
FullReset — аналогична sms-команде FullReset
ClearSms — аналогична sms-команде ClearSms
WatchPowerOn1 — аналогична sms-команде WatchPowerOn1
WatchPowerOn2 — аналогична sms-команде WatchPowerOn2
WatchPowerOff — аналогична sms-команде WatchPowerOff
GuardButtonOn — аналогична sms-команде GuardButtonOn . Удалена начиная с версии GSM_2017_04_16-12-00
GuardButtonOn1 — аналогична sms-команде GuardButtonOn1
GuardButtonOn2 — аналогична sms-команде GuardButtonOn2
GuardButtonOff — аналогична sms-команде GuardButtonOff
Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.
I2CScan — поиск и инициализация поддерживаемых устройств на шине I2C.
ListConfig — вывод в монитор порта текущей конфигурации устройства.
ListSensor — вывод в монитор порта текущей конфигурации датчиков.
Задание состоит из 2х частей. 1я часть включает в себя «главный» контроллер на базе mega с 4х строчным дисплеем и GsM shield sim900a ли sim800l главный модуль опрашивает контрольные модули на которых находятся датчик температуры и разомкнутое реле. На главном модуле выводится информация по контрольным реле в 4х строчках, где 1я строчка — название комнаты\места. 2я строчка — текущая температура в данной комнате\месте. 3я строчка — состояние реле (ок\alarм). 4я строчка пока будет пустая. При срабатывании реле, а именно его замыкании на контрольном модуле, главный модуль отправляет смс на 3-5-10 телефонных номеров с определенным содержанием. отправка на 3-5-10 телефонных номеров происходит с задержкой в 30 секунд (сначала 1й через 30 секунд 2й и т.д. смс отсылается на 3-5-10 телефонных номеров с периодом в 7 минут 3 раза. ( на 1й телефонный номер отсылается 1я смс, через 7 минут 2я и.д. до тех пор пока на каждый указанный номер не будет отослано 3 смс) возможно добавить звонок на указанный номер с проигрыванием определенного звукового файла. в содержании смс указываем статус предупреждение и температуру с датчика температуры конкретного контроллера. Если происходит срабатывание реле на 2х и более контроллерах то в текст смс помещается информация с 2х контроллеров и предупреждение. Возможность управлять командой по смс главным устройством. команды: 1. отложить тревогу на 30 минут. 2. выключить тревогу. 3. Статус устройства с обратным ответом смс с информацией расположенной на дисплее главного модуля. 4. включить тревогу. 5 тестовое смс на все указанные номера с текстом «тест» 1. Arduino Mega 2560 Блок в комнату\обьект: 1. Ардуино нано и подобные (Уно…) |
GSM/GPRS | arduinoLab
О правильном подключении GSM модема SIM800L или по чему не работает модем с Arduino.
Читать далее → Запись опубликована автором admin в рубрике Обзоры с метками GSM/GPRS, sim800.
пока только код (
Читать далее →
Запись опубликована автором admin в рубрике Arduino, Проекты с метками GSM/GPRS, код из видео, Коммутация нагрузки.GPS\GSM маячок отправляющий SMS сообщение с координатами местоположения и скорости движения по запросу. подробнее в видео.
Пока только код
Читать далее →
Запись опубликована автором admin в рубрике Arduino, Проекты с метками GPS, GSM/GPRS, NEOWAY M590, проект.Итоговая версия GSM сигнализации для дачи на Arduino UNO и GSM модеме NEOWAY M590, установка на охрану по звонку с заданного в коде номера.
ниже код из видео и схема подключения.
Читать далее →
Примитивная и автономная GSM сигнализация с использованием GSM\GPRS модемом NEOWAY M590 и Arduino, ниже схема подключения и код из видео
Читать далее →
Запись опубликована автором admin в рубрике Arduino, Проекты с метками GSM/GPRS, NEOWAY M590, код из видео.Примеры из видео
Читать далее →
Запись опубликована автором admin в рубрике Arduino, Проекты с метками GSM/GPRS, NEOWAY M590, код из видео.примеры из видео, что по этой ссылки
Читать далее →
Запись опубликована автором admin в рубрике Обзоры с метками GSM/GPRS, NEOWAY M590. SMS-оповещение о температуреArduino — система теплового контроля 3G GSM | Сообщество RobotShop
Об этом руководстве
Создайте свой собственный Arduino, SMS-сигнализация температуры Arduino — система теплового мониторинга, имеющая МАКСИМАЛЬНЫЕ и МИНИМАЛЬНЫЕ пороги температуры, поддерживающие сообщения и (старые, но золотые) SMS-пейджинг и систему удаленного включения / выключения. Вы можете контролировать один или несколько температурных датчиков 1WIRE и вызывать через SMS «события нагрева и охлаждения» и поддерживать сообщения, включая последнюю температуру.Вы можете ВКЛЮЧИТЬ / ОТКЛЮЧИТЬ систему охранной сигнализации удаленно с помощью одного SMS. В этом проекте для интеграции SMS используется совместимый штыревой экран GSM (c-uGSM) или экран 3G (d-u3G).Необходимые детали
Кредиты
В этом проекте мы использовали для измерения температуры 1WIRE «Библиотеку контроля температуры Далласа», разработанную Майлзом Бертоном и Тимом Ньюсомом >> Библиотека Arduino для температурных ИС Далласа, ссылка на которую приведена здесь. Спасибо вам, ребята! Отличная работа!О щитах c-uGSM (только GSM) и d-u3G (3G / UMTS)
Это щиты, совместимые с контактами 2, первый, c-uGSM, поддерживает только четырехдиапазонный GSM (всемирно совместимый) и поддерживает 2 SIM-карты, а второй, экран d-u3G, поддерживает только SINGLE SIM 3G (север) Американская версия) или 3G + GSM (европейская версия и версия для остального мира).Эти экраны компактны: 1,25 x 1,57 дюйма (31,75 x 39,88 мм) / 1,35 x 1,57 дюйма (34,29 x 39,88 мм), весят менее 10 г, имеют поддержку USB (связь и питание), автоматический уровень 3,3 — Встроенные цифровые интерфейсы 5 В и зарядное устройство LiPo.О датчике температуры DS18B20
Припаяйте резистор 2,2 кОм между выводом DS18B20 Vdd (3) и выводом DS18B20 DQ (2). Вывод DS18B20 Vdd (3) должен быть подключен к Arduino 5V, вывод DS18B20 DQ (2) — к Arduino D4, а вывод DS18B20 GND (1) — к Arduino GND. Подробности см. Ниже. Ссылка на DS18B20 здесь.Аппаратная проводка
На рисунке ниже (пример подключения экрана d-u3G — 3G) вы можете увидеть все логические соединения (проводку). Для использования экрана c-uGSM (версия только для GSM): просто подключите провода к тем же контактам, что и экран GSM. Система теплового контроля Arduino SMS — логическая схема Краткая разводка экрана 3G / GSM (питание):- Конфигурация «без литиево-полимерного соединения» >> подключите источник питания +4 В (рекомендуется g-SPS 4V [DDRV]) к контакту экрана 3G / GSM «Vcc 4V».
- Конфигурация «С литий-полимерным» >> подключите источник питания + 5 В (рекомендуется g-SPS 5 В [LiPOL]) к контакту «Vin 5V» экрана 3G / GSM. Подключите литий-полимерный аккумулятор к литиево-полимерным контактным площадкам / разъему.
Программное обеспечение Arduino для контроля температуры
а. Мы используем версию Dallas Temperature library 3.7.2 beta. Загрузите отсюда: Miles Burton Dallas Temperature library v 3.72 бета. б. Установите эту библиотеку >> как установить здесь. c. Создайте папку с именем «SMS_THERMAL_alarm_supervisor». d. Затем загрузите «c-uGSM kickstart for Arduino» из c-uGSM CODE SAMPLES and UTILITIES или «d-u3G kickstart for Arduino» из d-u3G CODE SAMPLES and UTILITIES, если вы используете d-u3G shield. IMEI продукта (*) и ваш адрес электронной почты необходимы для выполнения загрузки. * IMEI можно найти в верхней части модуля GSM / 3G, установленного на вашем щитке GSM / 3G itbrainpower.net, или вы можете обнаружить выполнение «AT + CIMI «команда.c. Распакуйте архив и скопируйте «cuGSM_basic_lbr.h», «cuGSM_basic_lbr.ino», «cuGSM_SMS_lbr.h» или «cuGSM_SMS_lbr.ino» («du3_basic_lbr.h», «du3G_basic_lbr.lbr.h» или «du3G_basic_lbr.lbr.ino», «du3G_basic_lbr.lbr.ino», «du3G_basic_lbr.lbr.ino», «du3G_basic_lbr.lbr_MS_. ino «- 4 пользователя d-u3G) в ранее созданную папку. d. Скопируйте код по ссылке ниже и создайте файл с именем «SMS_THERMAL_alarm_supervisor.ino» в той же папке, что и выше. Вы также можете скачать отсюда (щелкните правой кнопкой мыши и сохраните как): SMS_THERMAL_alarm_supervisor.ino: ARDUINO THERMAL SMS ALARM & GSM / 3G SHIELD — основной код е. Отредактируйте «SMS_THERMAL_alarm_supervisor.ino» (дважды щелкните файл; он будет открыт средой ARDUINO). Введите желаемый номер мобильного телефона назначения в строке 19. (Перед этим вы можете проверить поддерживаемый формат номера SMS своим NMO, используя наше программное обеспечение кикстарта.) Введите желаемые значения для пороговых значений температуры, выборки и времени поддержки. Вы можете редактировать SMS-команды и SMS-сообщения, присвоенные тревожным событиям. Если вы используете экран c-uGSM, прокомментируйте строку 17.Поведение приложения — как его использовать
# 0 ВЫКЛЮЧИТЬ ТРЕВОГУ, # 1 ВКЛЮЧИТЬ ТРЕВОГУ. Любое другое полученное SMS-сообщение вызывает ТРЕВОГА в виде «справочного сообщения». KEEP ALIVE SMS >> тепловой супервизор отправляет SMS (с СОСТОЯНИЕМ и последней температурой) в каждый «keepAlivePeriod» (секунды), если температура находится внутри порогового интервала «lowTempLevel» и «highTempLevel», или в каждом «keepAlivePeriod» / 10 «(секунд), если температура вне интервала (ALARM STATUS).Светодиод Arduino (D13) копирует состояние постановки / снятия с охраны.… некоторые (сумасшедшие !?) предложения по использованию
- Контроль температуры новорожденного …. ПРОСТО ДЕТСКИЕ РЕБЯТА! НИКОГДА НЕ ДЕЛАЙТЕ ЭТОГО!
- бочка для брожения домашнего пива;)
- Контроль температуры погреба
- мониторинг аквариумов
- морозильные камеры
- обогреватели
Возможные улучшения
- Ограничить обработку SMS только с «phoneNumber» (главный номер) … Достаточно посмотреть в функции readSMS (библиотека SMS), после второй строки readline () переменная buffd содержит заголовок SMS (номер отправителя, дата + время). Просто обработайте там, чтобы извлечь номер отправителя SMS…
- Добавьте дополнительные пороговые уровни температуры, чтобы контролировать и компенсировать температурный дрейф, используя один или несколько ЯЧЕЕК ПЕЛЬТЬЕ через цифровой выход Arduino плюс TIP122 в конфигурации с открытым коллектором или реле ??
Arduino через SMS — education8s.телевизор
В этом проекте Arduino мы узнаем, как отправлять SMS со значениями датчиков с помощью щита GSM. Мы собираемся отправить SMS с пропущенным звонком бесплатно! Есть много чего рассказать, так что приступим!
По соображениям конфиденциальности YouTube требуется ваше разрешение для загрузки. Для получения дополнительной информации, пожалуйста, ознакомьтесь с нашей Политикой конфиденциальности. Я принимаюВведение в учебник Arduino SMS
В этом видео мы создаем проект, в котором, когда мы вызываем Arduino, он отправляет SMS с температурой и влажностью, которые он измеряет с помощью датчика DHT22.Этот проект отлично подходит, когда мы хотим удаленно определять удаленное местоположение или заставить Arduino выполнять действие удаленно бесплатно. Когда мы вызываем Arduino, он немедленно прерывает вызов и выполняет действие. Таким образом, мы получаем сигнал «занято», и плата за этот пропущенный вызов не взимается. Давайте попробуем и посмотрим, как это работает. Хорошо, я сейчас позвоню в Ардуино. Мы слышим сигнал «занято» и собираемся получить SMS. Жду смс сейчас. Это может произойти в любую минуту. Вот. Как видите, температура 21,7, влажность 59.3 процента Отлично, не правда ли?
——————–
ГДЕ КУПИТЬ
——————–
1. GSM Shield: https://educ8s.tv/part/GSMShield
2. Датчик DHT22: https://educ8s.tv/part/DHT22
3. Arduino Uno: https://educ8s.tv/part/ArduinoUno
4. Тестер напряжения USB: https://educ8s.tv/part/UsbDoctorOLED
5. Powerbank: https://educ8s.tv/part/Powerbank
6. Провода: https://educ8s.tv/part/Wires
Полное раскрытие информации: все приведенные выше ссылки являются партнерскими.Я получаю небольшой процент от каждой продажи, которую они производят. Спасибо за поддержку!
[AdSense]
Теперь давайте посмотрим, как построить этот проект. Для этого проекта все, что нам нужно, это Arduino Uno, экран GSM от tinySine и датчик DHT22. Мы подготовили подробные руководства о том, как использовать экран tinySine GSM, так что ознакомьтесь с ними! Все, что нам нужно сделать, это подключить экран к Arduino Uno. ОК. Далее нам нужно подключить датчик DHT22. Подключаем вывод с минусом к Arduino Ground.Мы подключаем контакт со знаком плюс к Arduino 5V, и, наконец, мы подключаем выходной сигнал к цифровому контакту 7. Цифровой контакт 8 не работает, потому что он используется экраном tinySine GSM, а также контактами 0 и 1. У меня нет. Я тестировал любые другие контакты, но я уверен, что цифровой контакт 7 работает нормально. Давайте теперь включим его с помощью небольшого блока питания. Я подключил этот небольшой блок питания, и теперь, как вы можете видеть, ток составляет около 70 мА, а потребляемая мощность — 0,35 Вт. Итак, этот проект может питаться от батареи, если вы находитесь в удаленном месте, вы можете использовать солнечную энергию для питания этого устройства.
——————–
БИБЛИОТЕКИ
——————–
GSM Shield Library: http://www.tinyosshop.com/datasheet/GSM_GPRS_GPS_Shield_GSMSHIELD.rar
Библиотека DHT22: https://github.com/adafruit/DHT-sensor-library
Теперь перейдем к компьютеру и посмотрим код проекта. Код проекта прост. Мы используем библиотеку от tinySIne, разработчика щита. В коде мы каждую секунду проверяем состояние щита. Если есть входящий звонок, мы немедленно отключаем его, а затем считываем температуру и влажность с датчика DHT22.Затем мы составляем SMS с данными и отправляем SMS на заранее определенный номер телефона. В этой части кода вы можете разместить любое действие, которое вы хотите выполнить с помощью Arduino. Это так просто! Конечно, вы можете найти код в описании видео. Итак, это сегодняшний проект. Довольно полезное устройство для удаленного определения местоположения или отдельной команды для Arduino без каких-либо затрат. В следующих видеороликах мы увидим, как отправлять команды в Arduino с помощью SMS-сообщений, так что следите за обновлениями!
——————–
КОД
——————– Загрузить
——————–
ПОДПИСАТЬСЯ НА YOUTUBE
——————–
Не пропустите видео: подпишитесь на education8s.телевизор
(PDF) Разработка системы контроля температуры Курятник с использованием шлюза SMS
Содержимое этой работы может использоваться в соответствии с условиями лицензии Creative Commons Attribution 3.0. Любое дальнейшее распространение
этой работы должно содержать указание на автора (авторов) и название работы, цитирование журнала и DOI.
Опубликовано по лицензии IOP Publishing Ltd
Международная конференция по образованию, науке и технологиям (ICON-EST 2018)
IOP Conf.Серия: Физический журнал: конф. Series 1232 (2019) 012029
IOP Publishing
doi: 10.1088 / 1742-6596 / 1232/1/012029
1
Проектирование системы контроля температуры Курятник с использованием шлюза
SMS
Инда Сулистийовати, Рози Ахмад Харис, Эко Агус Супрайитно, Джамаалуддин
Электротехнический факультет, Университет Мухаммадии Сидоарджо, Сидоарджо,
Индонезия
Реферат. Для этого исследования будет произведен специальный курятник, работающий в автоматическом режиме.
Этот курятник работает в зависимости от температуры в клетке. Для определения значения температуры
в корпусе используется датчик температуры LM35. Датчик температуры LM35
затем обрабатывается, чтобы активировать модуль реле, где реле работает.
включает двигатель вентилятора постоянного тока и водяной насос постоянного тока. Здесь SMS-шлюз служит в качестве предупреждающего сигнала
, когда есть проблема с целевой температурой. При тестировании этой системы клетка
может работать хорошо, было показано, что система может стабилизировать температуру внутри курятника
по желанию.Ожидается, что благодаря этому исследованию открытая клетка будет заменена
закрытой клеткой, чтобы улучшить производство куриных кусков.
1. Введение
Птицеводческий бизнес в Индонезии в настоящее время очень хорош, поскольку считается, что курица удовлетворяет потребности в питании в этом животном белке
. Данные переписи BPS в 2013 году, если рассматривать из
поголовья скота, содержащегося в сельскохозяйственных домохозяйствах в Индонезии, бройлер является наиболее культивируемым скотом
(1 306 663 850 хвостов), за ним идут местные куры (87 904 370 голов) и куриная несушка (81 148
992 хвоста).А для производства цыплят хорошего качества нужен курятник.
Клетки, обычно используемые на птицеводческих фермах, бывают открытыми (закрытая система птичников) и закрытыми (закрытая система птичников
). К сожалению, открытый корпус системы не очень хорош, когда погодные условия не поддерживают
. Поэтому закрытый птичник (Closed House) необходимо использовать для заводчиков, потому что он способен выделять тепло, водяной пар, вредные газы, такие как CO, CO2 и Nh4 в клетке.В то время как идеальная температура цыплят
в возрасте от 1-7 дней до 29-35 дней выглядит следующим образом: 32,5 0C, 31,1 0C, 300C, 28,4 0C,
,и 29,1 0C. Что касается условий влажности в диапазоне от возраста цыплят 1-7 дней до 29-35 дней, то
следующие: 63,5%, 65,1%, 67,5%, 70,45% и 70,9% могут быть выполнены с помощью двигателя вентилятора настройки функции
( Прихандану, 2015).
В этом исследовании закрытая клетка безопасна и удобна, поэтому для нее требуется элемент управления, который может управлять двигателем вентилятора, двигателем насоса и инструментом, который может предоставить информацию при возникновении проблемы в
курятнике. , в связи с удалением курятника от населенного пункта.Поэтому Arduino
используется для управления двигателем вентилятора и двигателя насоса, а затем подключается к sms-шлюзу в качестве отправителя сообщения
при возникновении проблемы в курятнике.
Отправка данных GSM SIM800 / 900 GPRS в Thingspeak с помощью Arduino
В этом проекте мы узнаем о IoT с использованием GSM-модуля . Мы будем использовать модуль SIM900 / 800 GSM с Arduino и отправлять данные DHT11 Senso r на сервер Thingspeak Server .
Обзор
В настоящее время мы используем ESP8266 или ESP32 или любые другие модули Wi-Fi для беспроводной передачи любых данных датчика в Интернет. Следовательно, Wi-Fi вступает в действие, и поэтому нам нужно Wifi Connection для беспроводной связи с любым сервером . Но недостаток использования Wi-Fi в том, что он доступен не везде. Сигнал Wi-Fi ограничен определенными местоположениями и определенным диапазоном до нескольких метров.Например, чтобы использовать IoT Connectivity и получать данные с полей фермера, мы не можем полагаться на Wi-Fi из-за недоступности. Точно так же лес, речная зона, горы — это районы, где нет Wi-Fi.
Итак, GSM GPRS — единственная оставшаяся альтернатива в соответствии с текущим сценарием и текущей технологией. Модуль GSM GPRS позволяет добавлять отслеживания местоположения, голос, текст, SMS и данных в ваше приложение. Большим преимуществом GSM / GPRS Connectivity является то, что он охватывает большую территорию, а сигнал / связь доступны почти везде.
Итак, в этом проекте мы узнаем о Internet of Things с использованием GSM GPRS Module , то есть сотового IoT. Мы возьмем SIM900A в качестве эталонного GSM GPRS-модуля и соединим его с платой Arduino. Мы будем определять окружающую влажность и температуру с помощью датчика влажности / температуры DHT11 . Данные о влажности и температуре будут отправлены на сервер Thingspeak с использованием AT-команд для модуля GSM. Сервер ThingSpeak — это открытая платформа данных и API для Интернета вещей, которая позволяет собирать, хранить, анализировать, визуализировать и обрабатывать данные с датчиков. Итак, давайте узнаем все о модуле GSM с Thingspeak и Arduino .
Вы можете проверить один из наших постов, связанных с подобной системой:
1. Arduino SIM: Служба сотовой связи для Arduino IoT Cloud
2. Отправьте данные SIM800 / 900 GSM / GPRS в Thingspeak с помощью STM32
Если вы хотите отправить данные в формате JSON , используя любой API Server , вы можете проверить наш пост здесь: HTTP-запрос SIM900 / 800 в формате JSON с Arduino
Спецификация
Ниже приведены компоненты, необходимые для изучения проекта Cellular IoT .Все компоненты можно легко приобрести на Amazon. Ссылка на покупку компонента приведена ниже.
SIM900A GSM / GPRS модуль
SIM900A — это доступный модуль GSM / GPRS, используемый во многих мобильных телефонах и КПК. Модуль также можно использовать для разработки IoT (Интернет вещей) и Embedded Applications . Работает на частотах 900/1800 МГц. Модем поставляется с интерфейсом RS232 , который позволяет подключать ПК, а также микроконтроллер с микросхемой RS232 (MAX232).Скорость передачи настраивается от 9600-115200 до AT-командой . Модем GSM / GPRS имеет внутренний стек TCP / IP , позволяющий подключаться к Интернету через GPRS. Он подходит для приложений передачи SMS, голоса, а также данных в интерфейсе M2M.
Встроенный регулируемый источник питания позволяет подключать широкий спектр нерегулируемых источников питания. Используя этот модем, вы можете совершать и принимать аудиозвонки, отправлять и читать SMS, GPRS Internet и т. Д. С помощью простых AT-команд .
SIM900A Наборы GSM / GPRS модема 1. Входное напряжение: 12 В постоянного тока
2. Поддерживает микрофон, аудиовход и динамики
3. Двухдиапазонный GSM / GPRS 900/1800 МГц
4. Интерфейс RS232 для прямой связи с компьютером или комплектом MCU
5. Настраиваемая скорость передачи скорость
6. Проводная антенна (разъем SMA с антенной GSM опционально)
7. Держатель SIM-карты
8. Встроенный светодиодный индикатор состояния сети
9. Встроенный мощный стек протоколов TCP / IP для передачи данных через Интернет через GPRS
01.ДАННЫЕ GPRS: максимальная скорость загрузки 85,6 кбит / с, максимальная скорость загрузки 42,8 кбит / с
Цепь / соединение между GSM-модулем Arduino и DHT11
Вот принципиальная схема для интерфейса SIM800 / 900 GSM-модуля с Arduino и DHT11 для отправки данных на сервер Thingspeak. Подключение довольно простое, как показано ниже.
SIM800 / 900 — это модуль UART . Мы используем команду Software Serial для последовательной связи.Итак, подключите его выводы TX и RX к контактам 2 и 3 Arduino соответственно. Подключите к модулю GSM блок питания 9В / 12В . Точно так же подключите контакты VCC и GND датчика DHT11 к Arduino 5V и GND. Подключите его выходной контакт к A0 Arduino.
Настройка Thingspeak
ThingSpeak предоставляет очень хороший инструмент для проектов на основе Интернета вещей. Используя сайт ThingSpeak, мы можем отслеживать наши данные и управлять нашей системой через Интернет, используя каналы и веб-страницы, предоставляемые ThingSpeak.Итак, сначала вам нужно зарегистрироваться на ThingSpeak. Так что посетите https://thingspeak.com и создайте учетную запись.
Затем создайте новый канал и настройте то, что хотите. Учебник в видео ниже. Следите за видео, чтобы узнать больше.
Затем создайте API-ключи . Этот ключ необходим для программирования модификаций и установки ваших данных.
Теперь нажмите на каналы, чтобы увидеть потоковую передачу данных в Интернете.
Исходный код / программа
Исходный код / программа с по Отправка данных GSM SIM800 / 900 GPRS в Thingspeak с помощью Arduino приведен ниже.Никаких библиотек не требуется. Вы можете просто скопировать код и загрузить его на плату Arduino.
Но перед этим нужно внести два изменения в код. Сначала измените свои службы APN. В моем случае я использую SIM-карту Airtel, а APN по умолчанию для Airtel — airtelgprs.com . Вы можете проверить APN своей SIM-карты в Google или у оператора сотовой связи.
Вам также необходимо внести изменения в ключ API из thingspeak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 9 0066 6465 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #include SoftwareSerial gprsSerial (2,3); #include #include #define DHTPIN A0 DHT dht (DHTPIN, DHT11); void setup () { gprsSerial.begin (9600); // скорость передачи GPRS Serial.begin (9600); // скорость передачи GPRS dht.begin (); задержка (1000); } пустая петля () { float h = dht.readHumidity (); float t = dht.readTemperature (); задержка (100); Serial.print («Температура =»); Серийный отпечаток (т); Serial.println («° C»); Serial.print («Влажность =»); Серийный отпечаток (ч); Serial.println («%»); if (gprsSerial.available ()) Serial.write (gprsSerial.читать()); gprsSerial.println («AT»); задержка (1000); gprsSerial.println («AT + CPIN?»); задержка (1000); gprsSerial.println («AT + CREG?»); задержка (1000); gprsSerial.println («AT + CGATT?»); задержка (1000); gprsSerial.println («AT + CIPSHUT»); задержка (1000); gprsSerial.println («AT + CIPSTATUS»); задержка (2000); gprs Последовательный.println («AT + CIPMUX = 0»); задержка (2000); ShowSerialData (); gprsSerial.println («AT + CSTT = \» airtelgprs.com \ «»); // запуск задачи и установка APN, delay (1000); ShowSerialData (); gprsSerial.println («AT + CIICR»); // вызываем беспроводное соединение delay (3000); ShowSerialData (); gprsSerial.println («AT + CIFSR»); // получаем локальный IP-адрес delay (2000); ShowSerialData (); gprsSerial.println («AT + CIPSPRT = 0»); задержка (3000); ShowSerialData (); gprsSerial.println («AT + CIPSTART = \» TCP \ «, \» api.thingspeak.com \ «, \» 80 \ «»); // запускаем соединение delay (6000); ShowSerialData (); gprsSerial.println («AT + CIPSEND»); // начинаем отправку данных на удаленный сервер delay (4000); ShowSerialData (); String str = «GET https://api.thingspeak.com/update?api_key=O13AOCHYYNU2LQ19&field1=» + String (t) + «& field2 =» + String (h); Последовательный.println (стр.); gprsSerial.println (str); // начинаем отправку данных на удаленный сервер delay (4000); ShowSerialData (); gprsSerial.println ((char) 26); // отправка delay (5000); // ждем ответа, важно! время основано на условии интернета gprsSerial.println (); ShowSerialData (); gprsSerial.println («AT + CIPSHUT»); // закрываем соединение delay (100); ShowSerialData (); } void ShowSerialData () { while (gprsSerial.available ()! = 0) Serial.write (gprsSerial.read ()); задержка (5000); } |
Результаты и наблюдения
После загрузки кода на плату Arduino UNO модуль начнет отвечать. Вы можете открыть Serial Monitor и увидеть там следующие ответы.
Точно так же вы можете открыть частный вид Thingspeak и просмотреть зарегистрированные в нем данные о температуре и влажности.
Итак, вот как вы можете отправлять данные GSM SIM800 / 900 GPRS в Thingspeak с помощью Arduino .
Если вы хотите отправить данные в формате JSON с помощью любого сервера API, вы можете проверить наш пост здесь: HTTP-запрос SIM900 / 800 в формате JSON с Arduino
Видеоуроки и объяснения
Сотовый Интернет вещей | Отправляйте данные на сервер Thingspeak с помощью модуля SIM800 / 900 GSM / GPRS
Протокол датчика температуры для Arduino
Этот протокол контролирует и измеряет температуру устройства.
Как построить тестовую схему с датчиком температуры и Arduino Mega?
Коды Arduino включены. I. «Приветственное» событие от микроконтроллера
Пример
c = добро пожаловать & id = IqlZci & type = OzTemperatureController & pos = 2 & t = 3
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «добро пожаловать» | Обозначает приветственное сообщение. |
тип | Строка | «Контроллер температуры OzTemperature» | Определяет тип устройства. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
поз. | Байт | 0-255 | Определяет позицию устройства в списке диспетчера идентификаторов микроконтроллера.Убедитесь, что в том же месте нет других устройств. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
II. Команды на микроконтроллер
Команда «setheaterinfo»
Определяет, посылать или не посылать событие heatinginfo. Если команда заказывает отправку события, нам нужно определить временной интервал между событиями.
Пример
c = setheaterinfo & interval = 2000 & state = 1 & t = 0 & id = IqlZci
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «setheaterinfo» | Обозначает команду. |
интервал | Инт | 0-2 32 | Инверсия времени для отправки данных. В миллисекундах. |
состояние | Bool | 0,1 | 0: не отправлять информацию о нагревателе, 1: отправлять информацию о нагревателе. |
т | Байт | 0-255 | Подсчитывает количество отправленных команд.Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Ответ
c = setheaterinfo_resp & state = 1 & interval = 2000 & id = IqlZci & t = 3
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «setheaterinfo_resp» | Обозначает ответ. |
интервал | Инт | 0-2 32 | Время, в которое будут отправлены данные. Это в миллисекундах. |
состояние | Bool | 0,1 | Состояние отправки информации о нагревателе. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе.Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Команда «getvalue»
Получает значение температуры и состояния нагревателя.
Пример
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «gettemp» | Обозначает команду. |
т | Байт | 0-255 | Подсчитывает количество отправленных команд. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Ответ
c = getvalue_resp & temp = 146.91 & id = IqlZci & t = 4
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «getvalue_resp» | Обозначает ответ. |
темп | двойной | Диапазон датчика температуры. | Показывает измеренную температуру. |
состояние | Bool | 0 или 1 | 1: Если обогреватель нагревается. 0: Если обогреватель НЕ нагревается. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Команда «Установить температуру»
Устанавливает значение температуры.
Пример
c = settemp & temp = 100 & t = 2 & id = IqlZci
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «settemp» | Обозначает команду. |
темп | двойной | Температурный диапазон нагревателя. | Требуемая температура ТЭНа |
т | Байт | 0-255 | Подсчитывает количество отправленных команд. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Ответ
c = settemp_resp & temp = 100.00 & id = IqlZci & t = 5
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «settemp_resp» | Обозначает ответ. |
темп | двойной | Настраиваемая температура. | |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Команда «Установить порог»
Определяет допустимое отклонение от заданного значения.
Пример
c = setthreshold & value = 5 & t = 3 & id = IqlZci
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «заданный порог» | Обозначает команду. |
значение | двойной | 0-255 | Значение допустимой разницы. |
т | Байт | 0-255 | Подсчитывает количество отправленных команд. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Ответ
c = setthreshold_resp & value = 5 & id = IqlZci & t = 6
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «setthreshold_resp» | Обозначает ответ. |
значение | двойной | 0-255 | Значение допустимой разницы. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Команда «Установить бета-коэффициент»
Определяет масштаб повышения или понижения температуры.
Пример
c = setbeta & value = 20 & t = 4 & id = IqlZci
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «setbeta» | Обозначает команду. |
значение | Инт | 0-2 32 | Устанавливает значение бета-коэффициента. |
т | Байт | 0-255 | Подсчитывает количество отправленных команд. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Ответ
c = setbeta_resp & value = 20 & id = IqlZci & t = 7
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «setbeta_resp» | Обозначает ответ. |
значение | Инт | 0-2 32 | Значение бета-коэффициента. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
III. Событие от микроконтроллера
Событие «heatinfo»
Вы можете контролировать отправку этого события с помощью команды «setheaterinfo».
c = информация о нагревателе & температура = 136.01 & желаемая температура = 500.00 & state = 1 & id = IqlZci & t = 8
Параметры
Параметр | Тип | Диапазон | Функциональность |
с | Строка | «heatinfo» | Обозначает событие. |
темп | двойной | Диапазон датчика температуры. | Показывает измеренную температуру. |
желаемая температура | двойной | Любая температура | Желаемая температура нагревателя. |
состояние | Bool | 0 или 1 | 1: Если обогреватель нагревается. 0: Если обогреватель НЕ нагревается. |
т | Байт | 0-255 | Подсчитывает количество отправленных событий и ответов вместе. Считает от 0 до 255, затем снова от 0. |
id | Строка | 6 символов (цифры, прописные и строчные буквы) | ID устройства, выбранного микроконтроллером. |
Дополнительная информация
Система контроля и управления температурой
с использованием модуля DHT11 и GSM SIM900A
Intro : Используя эту систему, пользователи будут получать предупреждающее сообщение по SMS, когда температура окружающей среды поднимется выше указанного уровня.После получения предупреждающего сообщения владелец системы может решить, включать ли электронный выключатель.
Мухаммад Ильясаа на английском языке
Уровень сложности: средний, имеет основы Arduino
ВНИМАНИЕ: Версия Arduino IDE, использованная для написания этого руководства, — Arduino IDE Versi 1.8.4 . Код, использованный при написании этой статьи, может работать или не работать с другими версиями Arduino IDE.
>> СКАЧАТЬ ВЕРСИЮ 1.8.4 IDE ARDUINO ЗДЕСЬ <<
Указанная ниже система не предназначена для коммерческого использования. Он предназначен для обучения электронному дизайну. Однако эту концепцию можно использовать при создании реальной системы контроля и управления температурой.
>> Введение <<
Для этого DIY-проекта мы создадим систему, которая может контролировать температуру окружающей среды, напрямую предупреждать нас, если температура поднимается выше установленного уровня, и управлять электронными переключателями, которые могут быть подключены к кондиционеру для охлаждения окружающей температуры.
Используя эту систему, пользователи будут получать предупреждающее сообщение по SMS, когда температура окружающей среды поднимется выше указанного уровня. После получения предупреждающего сообщения владелец системы может решить, включать ли электронный выключатель.
Например, если к кондиционеру подключен электронный выключатель, владелец может включить электронный выключатель после получения предупреждающего сообщения о понижении температуры окружающей среды. Двумя электронными переключателями можно управлять с помощью текстового сообщения, что означает, что к этой системе можно подключить два кондиционера и управлять ими с помощью текстового сообщения.
Предупреждающее сообщение будет отправляться каждые 8 минут до тех пор, пока температура окружающей среды не снизится до уровня, указанного в коде.
>> Необходимые компоненты <<
Для этого DIY-проекта вам понадобится:
Примечание о совместимости SIM-карты и модуля GSM SIM900A:
- SIM-карты Maxis и Celcom были протестированы и совместимы с этим модулем GSM SIM900A. SIM-карта
- U-Mobile была протестирована и не подходит для использования с этим модулем GSM SIM900A.
- Другие SIM-карты не тестировались, и нет информации об их совместимости с данным модулем GSM SIM900A.
>> Принципиальная схема <<
Схема цепи замораживания: dht_2_fritzing.fzz
>> Код Arduino <<
/ * Программист: Мухаммад Ильяса бин Абдул Рахман * Более подробная информация на сайте https://www.nadieleczone.com.my * / // Библиотека #include < SoftwareSerial .h> #include#include "DHT.h" #include < EEPROM .h> // GSM SoftwareSerial gsmSerial (2, 3); // RX, TX char phoneNumber [100]; int stopper1 = 0; int stopper2 = 0; // РЕЛЕ int RELAY1 = 12; int RELAY2 = 13; // DHT #define DHTPIN 4 #define DHTTYPE DHT11 DHT dht (DHTPIN, DHTTYPE); float t; float tAlarm = 35; int alertSent = 0; int firstSent = 0; // EEPROM int адрес = 0; установка void () { // Готовим реле pinMode (РЕЛЕ1, ВЫХОД); digitalWrite (РЕЛЕ1, ВЫСОКИЙ); pinMode (РЕЛЕ2, ВЫХОД); digitalWrite (РЕЛЕ2, ВЫСОКИЙ); // Готовим GSM .. . . } пустой цикл () { статический беззнаковый длинный таймер = millis (); статический int deciSeconds = 0; // GSM чтение и отправка SMS String temp; пока (gsmSerial.available ()) { char c = gsmSerial.read (); temp.concat (c); задержка (10); } . . . . }
Полный код : dht.ino
Загрузите приведенный выше полный код и загрузите его на свою плату Arduino.
Не забудьте также установить библиотеку DHT. Если вы не знаете, как установить библиотеку Arduino, выполните следующие действия по установке:
DHT установка библиотеки в программном обеспечении Arduino IDE
Шаг 1 : Загрузите библиотеку DHT по адресу http: // bit.ly / 2vo3ZAm | Шаг 2 : Щелкните значок Arduino, чтобы открыть программное обеспечение Arduino IDE. |
Шаг 3 : Установите библиотеку DHT в Arduino IDE, щелкнув Эскиз >> Включить библиотеку >> Добавить библиотеку .ZIP | Шаг 4 : Выберите файл библиотеки, который вы скачали ранее, и нажмите «Открыть», чтобы начать процесс установки библиотеки. |
Шаг 5 : Дождитесь сообщения «Библиотека добавлена в ваши библиотеки. Проверьте меню включения библиотеки », это означает, что установка библиотеки DHT была успешно установлена в программном обеспечении Arduino IDE. Затем закройте все программное обеспечение Arduino IDE. |
>> Ниже приводится объяснение модуля реле <<
Relay — это электромеханический переключатель с электронным управлением.Плата Arduino может управлять реле, чтобы включать или выключать его. Использовать реле с платой Arduino Uno так же просто, как управлять выходом светодиода. Релейный модуль, используемый в этом проекте DIY, работает с уровнями напряжения питания 5 В и 5 В. Релейный выход может пропускать ток до 10 А при уровне напряжения 250 В переменного тока. Релейный выход обычно имеет три метки: COM , NO и NC .
- COM — это общий контакт NO или NC, в зависимости от состояния входа реле.
- NO — нормально открытый контакт. Если релейный вход не активирован, контакт NO не будет подключаться к контакту COM . Если релейный вход включен, контакт NO будет подключен к контакту COM .
- NC — нормально соединяемый контакт. Если релейный вход не активирован, вывод NC будет подключен к выводу COM . Если релейный вход включен, вывод NC не будет подключаться к выводу COM .
Условия вывода NO и NC противоречивы. Если NC подключен к COM , NO не будет подключен к COM . Если NO подключен к COM , NC не будет подключен к COM . Например, если вы хотите управлять вентилятором, лучше всего использовать контакт COM и контакт NO , которые обычно не подключаются, поскольку вентилятор обычно открывается только при необходимости.
>> Зарегистрируйте номер телефона в системе <<
Первый пользователь.
- Убедитесь, что ваша SIM-карта, вставленная в модуль GSM SIM900A, активна и на ней достаточно средств.
- Включите систему.
- После включения системы подождите 40 секунд. Этот период предназначен для стабилизации связи GSM.
- Отправьте SMS Register на номер SIM-карты, вставленной в модуль GSM SIM900A.
- Система ответит Температура = XX C .
- Если ваш телефон получил ответное сообщение по пункту 5, это означает, что ваш номер телефона успешно зарегистрирован в системе.
- Если ваш телефон не получил ответное сообщение по пункту 5, это означает, что ваш номер телефона не удалось зарегистрировать в системе.
- а. Выключите систему.
- г. Извлеките SIM-карту из модуля GSM SIM900A. Проверьте кредит и активный статус этой SIM-карты.
- г. Немного потрите чип SIM-карты и снова вставьте в модуль GSM SIM900A.
- г. Повторите шаги с 1 по 6.
>> Использование системы <<
Принцип работы.
- Убедитесь, что ваша SIM-карта, вставленная в модуль GSM SIM900A, активна и на ней достаточно средств. Зарегистрируйте свой номер телефона, как описано в инструкции для первого пользователя выше.
- Включите систему.
- После включения системы подождите 40 секунд. Этот период предназначен для стабилизации связи GSM. Вы получите SMS System Start .
- Отправить сообщение Температура в систему для считывания температуры. Отправьте сообщение On 1 , Off 1 , On 2 или Off 2 для управления реле.
- Система ответит Температура = XX C . Реле будет работать соответственно.
- Если температура превышает 35 градусов по Цельсию, владельцу будет отправлено предупреждающее сообщение.Предупреждающее сообщение будет отправляться каждые 8 минут, если температура превышает 35 градусов по Цельсию.
- Если на ваш телефон не поступало никаких сообщений от системы, это означает, что в вашей системе действительно есть проблема.
- а. Выключите систему.
- г. Извлеките SIM-карту из модуля GSM SIM900A. Проверьте кредит и активный статус этой SIM-карты.
- г. Немного потрите чип SIM-карты и снова вставьте в модуль GSM SIM900A.
- г. Повторите шаги с 1 по 6.
>> Подготовить контур <<
Подготовьте схему выше и начните загружать полный код Arduino в плату Arduino Uno. После успешной загрузки отсоедините плату Arduino Uno от компьютера и подключите USB-кабель Arduino Uno к внешнему источнику питания 5 В. Это требование связано с тем, что для модуля GSM требуется источник питания высокой мощности. USB-порты, доступные на компьютерах или ноутбуках, могут обеспечивать только малую мощность по сравнению с внешними источниками питания, которые могут обеспечивать ток до 2 ампер.
Примечание : Внешний источник питания 5 В имеет порт USB, который можно напрямую подключить к порту платы USB Arduino Uno. Мы редко используем внешний источник питания 9 В или 12 В, потому что регулятор напряжения на плате Arduino Uno будет нагреваться при длительном включении. Чтобы этого не произошло, мы предпочитаем использовать внешний источник питания 5 В, который напрямую не использует регулятор напряжения на плате Arduino Uno и постоянно предотвращает нагрев регулятора напряжения.
>> Поздравляю, ты фантастический <<
Вы выполнили этот самостоятельный проект системы контроля и управления температурой с использованием модуля DHT11 и GSM SIM900A. Воспользовавшись инструкциями в , первый раз для пользователя и Метод работы , попробуйте поиграть и посмотреть, как работает система. Если вы хотите изменить уровень температуры, чтобы система отправляла предупреждающее сообщение о том, что температура выше уровня, вы можете найти приведенный ниже код в полном коде и изменить значение 35 на желаемое.
float tAlarm = 35;
>> NADI Eleczone SOlutions <<
Посетите магазин Arduino на Пенанге по адресу
Nadi Eleczone Solutions
Lot 1667, Tingkat 1, Jalan Teluk Air Tawar, Taman Air Tawar Indah, 13050 Butterworth, Penang
04-351 1802
Измерение температуры с помощью Arduino — 5 датчиков
Сегодня мы рассмотрим пять различных датчиков, которые можно использовать для измерения температуры с помощью Arduino.
Все эти устройства недороги и просты в использовании.
Введение
При разработке проектов с использованием микроконтроллеров, таких как Arduino, часто бывает желательно иметь возможность измерять температуру. Есть много причин, по которым вы захотите это сделать.
Возможно, вы используете Arduino для управления процессом, в котором температура имеет решающее значение. Возможно, вы разрабатываете автоматический вентилятор, который включается, когда температура превышает заданное значение. Возможно, вы собираете регистратор данных для самодельной метеостанции.Возможно, вы хотите следить за графическим процессором или процессором, которые испытывают большие нагрузки.
Или вы можете просто создать свой собственный цифровой термометр.
Каждое из этих приложений измерения температуры предъявляет различные требования. Регистратору данных вашей метеостанции потребуется что-то точное. Для некоторых приложений управления технологическим процессом может потребоваться датчик, который можно погружать в жидкость или который работает при температуре выше точки кипения воды. Приложение переключения вентилятора не требует сверхточных функций, но может также потребовать измерения влажности.
Сегодня мы рассмотрим пять различных датчиков, которые вы можете использовать для измерения температуры с помощью Arduino.
Пять датчиков
Мы рассмотрим следующие пять датчиков:
- DHT22 — Этот недорогой датчик также измеряет влажность. Он имеет последовательный цифровой выход и может легко использоваться с большинством микроконтроллеров.
- AM2320 — Во многом похож на DHT22, но обменивается данными по шине I2C.
- TMP36 — откалиброванный датчик с линейным аналоговым выходом и широким диапазоном измерения.
- LM35 — аналогичен TMP36, более точен, но немного сложнее в использовании, если вам нужно измерить отрицательную температуру.
- MCP9808 — Модуль очень высокоточного измерения температуры, который также имеет программируемый выход оповещения.
Ни одно из этих устройств не стоит особо дорого, и все они довольно просты в использовании с Arduino, тем более что для работы с ними доступно несколько библиотек.
Давайте рассмотрим их по очереди.
DHT22
DHT22 — очень популярный датчик температуры и влажности. Это двоюродный брат DHT11, он имеет улучшенное разрешение по сравнению с его родственником, а также может измерять отрицательную температуру.
Это устройство имеет последовательный цифровой выход и довольно легко использовать с Arduino и другими микроконтроллерами благодаря наличию нескольких отличных библиотек.
DHT22 имеет рабочий диапазон от -40 до 8-0 градусов Цельсия и точность в пределах 5%.Он может измерять влажность в диапазоне от 20 до 100 процентов.
Он может питаться постоянным напряжением от 3 до 5 В, что делает его пригодным как для логических устройств на 3,3 В, так и 5 В.
Вот распиновка DHT22:
Обратите внимание, что используются только три из четырех контактов, контакт 3 не подключен.
DHT22 также упакован как AM2302 (не путать со следующим датчиком в нашем списке).
DHT22 Подключение к Arduino
Довольно просто подключить DHT22 к Arduino или любому подобному микроконтроллеру, поскольку устройство имеет только один выходной контакт, который можно подключить к любому доступному цифровому порту ввода / вывода.
Вот как я подключил датчик для своего эксперимента:
Я использовал вывод 2 цифрового ввода-вывода для вывода датчика, но это было просто потому, что в библиотеке, которую я планирую использовать, есть пример кода, который использует этот вывод. Вы можете использовать любой вывод ввода / вывода для DHT22, и вы можете использовать более одного вывода с одним и тем же Arduino.
DHT22 Код Ардуино
Мы будем использовать библиотеку от Adafruit, чтобы упростить нашу работу с DHT22. На самом деле нам понадобятся две библиотеки, а библиотека DHT зависит от другой.
Вам нужно открыть Диспетчер библиотек в IDE Arduino и найти следующие две библиотеки:
- Библиотека датчиков Adafruit DHT — Эта библиотека позволяет легко работать с DHT22, а также с DHT11 и DHT21.
- Унифицированная библиотека датчиков Adafruit — это «основная библиотека», которая используется с рядом библиотек датчиков Adafruit. Если вы работали над некоторыми из представленных мною ранее экспериментов, возможно, вы уже установили эту библиотеку.
После установки библиотек мы можем запустить пример скетча для проверки нашего датчика.
Откройте меню «Файл», а затем откройте Примеры . Прокрутите подменю вниз до раздела Примеры из пользовательских библиотек .
Найдите DHT Sensor Library и выделите его. Вы увидите два эскиза. Выберите эскиз DHT_Unified_Sensor.
<ВСТАВИТЬ ЭСКИЗ ДАТЧИКА DHT_UNIFIED_>
Этот эскиз считывает температуру и влажность с датчика DHT и отображает их на последовательном мониторе.Для работы с DHT22 вам нужно раскомментировать строку, чтобы определить DHTTYPE как DHT22 . Вы можете обнаружить, что он уже не прокомментирован.
Если вы не используете контакт 2 в качестве входа DHT22, обязательно измените значение DHTPIN .
Эскиз показывает, насколько легко считывать показания датчика DHT с помощью библиотеки. Все, что вам нужно сделать, это создать объект, представляющий датчик, а затем вызвать событие. Событие будет содержать как влажность, так и температуру, которые вы затем можете извлечь и использовать в своем коде.
Эскиз также показывает, как другие параметры могут быть получены от датчика, он отображает ряд настроек датчика, температуры и влажности при запуске программы установки.
Загрузите скетч в Arduino и откройте монитор последовательного порта, убедившись, что скорость 9600 бод. Вы должны увидеть информацию о некоторых параметрах датчика, за которой следует непрерывное отображение температуры и влажности.
Это не самый точный датчик, который вы можете купить, но он прост в использовании и справляется с большинством некритичных приложений.Добавление влажности — приятная особенность.
AM2320
AM2320 — это датчик, внешний вид которого похож на DHT22, и он также имеет аналогичные характеристики. Он отличается от DHT22 тем, что использует шину I2C для связи со своим хостом.
Этот датчик работает в диапазоне температур от -40 до 80 градусов Цельсия с точностью 3%. Он работает от напряжения питания от 3,1 до 5,5 В, что делает его пригодным для использования с большинством микроконтроллеров.
I2C-адрес устройства — 0x5C и не может быть изменен. Имеет следующую распиновку:
AM2320 не имеет внутренних подтягивающих резисторов для шины I2C. Вы можете использовать внутренние подтяжки микроконтроллера или предоставить свои собственные резисторы.
- Контакт 1 — VDD — Напряжение питания.
- Контакт 2 — SDA — Последовательная линия данных I2C.
- Контакт 3 — Земля — Земля
- Контакт 4 — SCL — Линия синхронизации I2C.
AM2320 Подключение Arduino
Поскольку он использует шину I2C, подключить AM2320 к Arduino довольно просто. Вот схема, которую я использовал.
Я использовал подтягивающие резисторы 3,3 кОм, но любое значение от 2,2 кОм до 10 кОм должно работать нормально.
Аналоговый вывод A4 — это линия Arduino SDA, а вывод A5 — это соединение SCL.
После подключения вы можете загрузить еще одну библиотеку для упрощения работы с датчиком температуры и влажности AM2320.
AM2320 Библиотека и эскиз Arduino
Как и в случае с предыдущим датчиком, мы будем использовать библиотеку от Adafruit для использования датчика. Эта библиотека, Adafruit AM2320 Library, значительно упрощает работу с этим устройством.
Найдите библиотеку Adafruit AM2320 и установите ее в своей среде IDE с помощью диспетчера библиотек. После его установки вы можете запустить пример скетча, включенного в библиотеку, который называется basic_am2320 .
В этом скетче также используется унифицированная библиотека датчиков Adafruit, которую вы установили для предыдущего эксперимента.
<ВСТАВИТЬ ОСНОВНОЙ AM2320>
Это, вероятно, настолько просто, насколько может быть набросок.
Он вызывает обе библиотеки, а затем создает объект с именем am2320 . Объект инициализируется во время установки, а затем в цикле вызываются функции библиотек readTempera и readHumidity. Результат отображается на последовательном мониторе.
Следует отметить, что библиотека Arduino Wire для I2C НЕ использовалась в этом скетче. Библиотека Adafruit AM2320 имеет встроенную функцию подключения I2C.
Загрузите скетч, откройте серийный монитор и наблюдайте за показаниями температуры и влажности. Вы можете сравнить их с показаниями, полученными вами ранее от DHT22. Когда я сделал это, я обнаружил, что температура была довольно близкой, но влажность между двумя датчиками сильно различалась.
Этот датчик будет хорош, когда вы хотите сэкономить несколько контактов ввода / вывода и когда вы уже используете I2C.
TMP36 и LM35
TMP36 и LM35 упакованы в корпуса T) 92, что делает их похожими на небольшие транзисторы.Они также доступны в корпусах для поверхностного монтажа (SMD).
Эти устройства отличаются от других датчиков температуры, с которыми мы работаем сегодня, тем, что они обеспечивают откалиброванный аналоговый выход, который увеличивается на 10 мВ на каждый градус Цельсия повышения температуры.
Два устройства совместимы по выводам, но несколько различаются по диапазону действия и точности, а также по требованиям к напряжению:
TMP36
- Работает в диапазоне напряжений от 2,7 до 5,5 В.Это делает TMP36 идеальным помощником для большинства микроконтроллеров.
- Температурный диапазон от -40 до 125 градусов Цельсия, применимый до 150 градусов Цельсия.
- Точность с точностью до 2 градусов Цельсия
- Имеет смещение 500 мВ для измерения отрицательной температуры.
Существует также TMP37, рабочий диапазон которого составляет всего 10–100 градусов Цельсия.
LM35
- Работает в диапазоне напряжений от 4 до 30 В, что делает его непригодным для использования с 3.Микроконтроллеры на 3 вольта.
- Диапазон температур от -55 до 150 градусов Цельсия.
- Точность с точностью до 0,5 градуса Цельсия.
- Этому устройству требуется отрицательное напряжение смещения для считывания отрицательной температуры.
LM35 — устройство с более высокой точностью из двух, но для получения значений отрицательных температур вам необходимо подать на него отрицательное напряжение для смещения выхода. Это немного усложняет работу и меняет требования к источнику питания.
LM25 является частью серии аналоговых датчиков температуры. Другие члены серии включают:
- LM335 — данные о температуре пропорциональны градусам Кельвина.
- LM34 — данные о температуре пропорциональны градусам Фаренгейта.
Распиновка контактов TMP36 и LM35
Оба устройства имеют три соединения и имеют одинаковые распиновки.
Эти устройства можно использовать напрямую с чувствительным вольтметром для отображения температуры.А микроконтроллер с аналого-цифровым преобразователем (АЦП), такой как Arduino, также является отличным измерительным инструментом.
Поскольку TMP36 обеспечивает как положительные, так и отрицательные значения температуры, не требуя отрицательного напряжения, я буду использовать его в своем эксперименте.
TMP36 Подключение к Arduino
Вот подключение TMP36 к Arduino.
Обратите внимание на подключение 3,3-вольтового выхода Arduino к входу AREF (аналоговое опорное напряжение).Это сделано для уменьшения диапазона внутреннего АЦП Arduino, чтобы мы могли получить лучшее разрешение при наших измерениях.
В остальном подключение очень простое: питание TMP36 осуществляется от 5-вольтового источника питания Arduino, а выходной сигнал датчика подается на аналоговый вход A0. Вы можете использовать другой аналоговый входной контакт, если хотите, просто измените код соответствующим образом.
TMP36 Код Ардуино
В отличие от нескольких последних датчиков, мы напишем собственный код для использования этого датчика. Это очень просто и не требует библиотек.
Вот код, который мы можем использовать для отображения температуры на последовательном мониторе:
<ВСТАВИТЬ КОД TMP36>
Код очень прост, поскольку все, что мы делаем, это считываем аналоговое напряжение с датчика и преобразуем его в температуру.
Главное, что нужно отметить в этом скетче, это то, что мы не используем стандартные 5 вольт в качестве эталона для аналого-цифровых преобразователей в Arduino. Вместо этого мы используем напряжение, приложенное к выводу AFEF (аналоговое опорное напряжение), то есть 3.3 вольта от внутреннего регулятора напряжения Arduino.
Если бы у вас было откалиброванное аналоговое напряжение немного ниже 3,3 В, он работал бы еще лучше. Другой способ повысить точность — измерить фактическое напряжение AREF и использовать это значение для определения aref_voltage .
Мы считываем значение с аналогового входа и выводим 10-битное значение аналого-цифрового преобразователя на последовательный монитор. Затем мы вычисляем фактическое напряжение, которое мы читаем, и также распечатываем его. Наконец, мы используем напряжение для определения температуры.
Обратите внимание, что мы вычитаем 500 мВ из входного напряжения перед вычислением показаний, TMP36 имеет смещение 500 мВ, чтобы иметь возможность отображать отрицательную температуру.
Загрузите скетч в Arduino и попробуйте. Когда я это сделал, я заметил, что температура повышается, когда я взяла датчик, тепла моего тела было достаточно, чтобы заставить его подняться.
TMP36 и LM35 — очень точные датчики температуры. Если вам нужна максимальная точность, то LM35 — лучший выбор, однако для большинства приложений TMP36 достаточно точен и имеет преимущества, заключающиеся в том, что он может отображать отрицательную температуру, не требуя отрицательного напряжения смещения.
И если вам нужна точность, вы можете взглянуть на наш следующий датчик.
MCP9808
Во многих отношениях лучшее я оставил напоследок.
MCP9808 — это высокоточный датчик температуры, использующий шину I2C. В перерывах между считыванием показаний устройство можно перевести в «спящий режим», что снизит энергопотребление до нуля.
Я использовал модуль MCP9808 от Adafruit.
Устройство имеет следующие технические характеристики:
- Диапазон от -40 до 125 градусов Цельсия.
- Точность в пределах 0,25 градуса Цельсия.
- Работает в диапазоне напряжений от 2,7 до 5,5 В, что делает его подходящим практически для любого микроконтроллера или микрокомпьютера.
- Использует шину I2C и имеет восемь выбираемых адресов. Базовый адрес 0x18.
- Имеет внутренние подтягивающие резисторы I2C (10 кОм).
- Имеет программируемый выход оповещения, который можно настроить на срабатывание при заданной пользователем температуре.
- Выводит значения как по Цельсию, так и по Фаренгейту.
Распиновка MCP9808
Модуль формы Adafruit имеет следующие соединения:
- VDD — это разъем питания.
- GND — Земля.
- SCL — часы I2C.
- SDA — данные I2C.
- Alert — Программируемый выход оповещения с открытым коллектором.
- A0, A1, A2 — контакты выбора адреса I2C.
Модуль поставляется с штыревым разъемом Dupont, который вы можете припаять, если хотите использовать его на беспаечной макетной плате.
MCP9808 Подключение к Arduino
MCP9808 — это устройство I2C со встроенными подтягивающими резисторами 10 кОм, поэтому подключить его к Arduino очень просто.
Если вы хотите поэкспериментировать с выходом Alert, вам понадобится подтягивающий резистор или внутренние подтяжки Arduino. Я не буду использовать функцию оповещения в своих тестах.
MCP9808 Эскиз Arduino
Adafruit снова спасает положение благодаря библиотеке, что неудивительно, поскольку я использую модуль Adafruit. Их библиотека упрощает работу с MCP9808. Найдите в диспетчере библиотек «MCP9080» и выберите Adafruit MCP9808 Library .
В отличие от предыдущих библиотек, эта не требует использования унифицированной библиотеки датчиков Adafruit.
После установки новой библиотеки откройте скетч mcp9808test , который поставляется вместе с ним.
<ВСТАВИТЬ MCP9808 ТЕСТ-Эскиз>
Библиотека действительно упрощает работу с сенсором tsi advanced. Вам также необходимо загрузить библиотеку Arduino Wire, чтобы говорить о I2C, эта библиотека встроена в вашу Arduino IDE.
Скетч начинается с загрузки библиотек и затем определения объекта, представляющего датчик.
Обратите внимание на комментарии в коде, которые показывают, как изменить адрес I2C. Если ни один из контактов A0, A1 или A2 не вытянут в ВЫСОКОЕ положение, адрес датчика равен 0x18.
Скетч также устанавливает режим разрешения на самое высокое значение, то есть «3». Снова обратите внимание на комментарии, которые объясняют, как более высокое разрешение увеличивает время выборки сенсора.
Считать температуру в градусах Цельсия или Фаренгейта так же просто, как вызвать функции readTempC или readTempF .
Обратите внимание на то, как датчик переводится в спящий режим между измерениями. Это значительно снижает потребление тока, что делает этот датчик идеальным для приложений с батарейным питанием.
Загрузите скетч в Arduino, откройте последовательный монитор и наблюдайте за показаниями. Они очень точны. Я снова провела пальчиковый тест, чтобы увидеть, как увеличиваются показания в ответ на тепло моего тела.
Если ваша конструкция требует высокоточного измерения температуры, вы действительно не ошибетесь, выбрав MCP9808.
Заключение
Вы заметите, что большая часть нашего демонстрационного кода отображает температуру в градусах Цельсия. Если вы предпочитаете градусы Фаренгейта, вы можете просто математически преобразовать результат:
(градусы C x 1,8) + 32 = градусы F
Как мы уже видели, для Arduino и других микроконтроллеров и микрокомпьютеров доступно множество датчиков температуры.