Время на прочтение
По-моему, SMS – отличный способ что-нибудь включить/выключить на расстоянии.
Особенно обогреватель.
Тем более зимой.
Когда так хочется поскорее в тепло!
Итак, наши действующие лица:
В качестве GSM-модема использовалась отладочная плата GSM-модуля Neoway M660.

Это путь наименьшего сопротивления, так как не нужно думать о подключении антенны и SIM-карты, а стоит она недорого.

Вообще Neoway M660 примечателен тем, что имеет мало выводов, расположенных по краям (корпус типа «почтовая марка») на большом расстоянии друг от друга, так что для макетирования – самое то.
Модуль управляется по UART с помощью AT-команд (описание AT-команд M660).
Отправка SMS сообщений
Для отправки SMS в текстовом режиме нам нужно:
Прием SMS сообщений
Для приема SMS в текстовом режиме нам нужно:
Когда принятая SMS пересылается на UART в текстовом режиме, она состоит из двух строчек:
Сначала смотрим, с какого номера пришло сообщение, потом – что именно пришло. Удобно.
Измерение температуры
Для измерения температуры использовался датчик LM35. Датчик выдаёт напряжение, пропорциональное градусам Цельсия, 10мВ/ºC. Просто и удобно. Напряжение питания сенсора – от 4 до 30 В.
Если в Arduino включить внутренний источник опорного напряжения 1,1 В (для этого в setup() нужно прописать analogReference(INTERNAL);), то градусы Цельсия можно рассчитать по простой формуле:
ГРАДУСЫ ЦЕЛЬСИЯ = СЧИТАННОЕ ЗНАЧЕНИЕ х 0,107.
Считанное значение – то, которое получаем из функции analogRead():
val = analogRead(analogPin);
Англоязычные рассуждения на тему LM35 и Arduino: http://playground.arduino.cc/Main/LM35HigherResolution
В начале тестирования датчик температуры был размещен на длинных ногах над платой Arduino и показывал 28 – 29 °С при температуре окружающего воздуха 25 °С. Я уже начал паниковать, что сделал что-то не так, но как только датчик был вынесен подальше от платы – показания стали соответствовать действительности.
Кстати, как выяснилось, около пола температура воздуха на 1,5 – 2 градуса ниже, чем на столе.
Как это выглядит
В разложенном виде всё это выглядит примерно так:

Кстати, хотя на реле написано, что оно начинает срабатывать при напряжении на входе 3В, от пяти вольт оно срабатывало ненадежно (могло не сразу сработать, отключаться и снова включаться). Поэтому питание реле было переделано от входного источника 12В – в этом случае проблем замечено не было.
Что ещё можно сделать?
Уровень сигналов Nano – 5 В, интерфейс UART M660 – 2,8 В (напряжение не должно превышать 3,1 В). Для согласования уровней используем схему из этой статьи.
Вывод 13 (счастливое число!) модуля – выход 2,8 В (максимальный ток 5 мА), специально предназначен для питания согласователей уровней. Просто припаиваемся к контакту 13 модуля, другой конец – к схеме преобразователя уровней.
Питание Arduino Nano
Arduino Nano будем запитывать от небольшого блока питания 12 В через контакт Vin.








