Bluetooth-метеостанция на Arduino для начинающих

Bluetooth-метеостанция на Arduino для начинающих

В данной статье я расскажу о том, как сделать первый шаг в мир Arduino и смастерить собственную метеостанцию. Метеостанция будет состоять из двух модулей: один модуль будет считывать информацию с подключенных датчиков, другой — выводить считанные данные на небольшой экран. Для передачи информации будем использовать Bluetooth.

Также приведу информацию по настройке BT-модулей для работы друг с другом.

С чего начать?

Начнем с того, что для того чтобы начать свои первые поделки на платформе Arduino не требуется обширных знаний. Всю информацию можно получить из интернета, в частности, очень помогли обучающие уроки от Amperka.ru.

Подготовка

Для изготовления прототипов устройств понадобятся следующие элементы:

  • Фоторезистор 500 кОм (x1)
  • Барометр BMP085 (x1)
  • BT-модуль HC-05 (x2)
  • LCD дисплей, ЖК экран LCM 1602 i2c (x1)
  • Набор эл. компонентов (макетная плата, резисторы, диоды) (x1)
  • Arduino UNO R3 (x2)

Для прошивки будем использовать родную Arduino IDE.

Хочу обратить внимание на то, что хотя бы один модуль должен быть HC-05 (не 06!), это важно. Дело в том, что HC-06 не поддерживает режим master, т.о. взяв оба модуля 06 нам не удастся настроить их на работу друг с другом. Я решил взять оба модуля HC-05 чтобы заодно избежать проблем с совместимостью, если таковые возникнут.

Нюансы настройки BT-модулей будут описаны ниже.

Оба модуля встроены в шилд, то есть проблем с подключением к плате Arduino возникнуть не должно.

Начинаем сборку

Подключаем фоторезистор

Сопротивление фоторезистора зависит от света, попадающего на него. Используя фоторезистор в связке с обычным резистором, мы получаем делитель напряжения, в котором напряжение проходящее через фоторезистор, изменяется, в зависимости от уровня освещенности.

Механизм получения полезной информации от датчика очень прост: функция analogRead(pin_number) вернет значение, которое будет представлять степень освещенности. Чувствительностью датчика можно управлять играясь с резисторами разных номиналов; на мой взгляд, 10кОм — оптимальный номинал.

Датчик давления и температуры

Для измерения температуры, давления, а также высоты над уровнем моря будем использовать барометр BMP085.

Для подключения датчика BMP085 к Arduino нам понадобится 4 контакта:

  • Vcc – подключаем к питанию +5в
  • SDA – SDA на плате Arduino (A4)
  • SCL – SCL на плате Arduino (A5)
  • GND – подключаем к земле

Для снятия значений с датчика необходимо подключить билиотеку Adafruit.

Подключение дисплея

Контакты дисплея LCD1602 подключаются аналогично, как и для BMP085:

  • ЖК SDA -> Arduino SDA (A4)
  • ЖК SCL -> Arduino SCL (А5)
  • ЖК GND -> Arduino GND
  • ЖК VCC -> Arduino 5V

Подключение Bluetooth

А теперь самое интересное. «Насаживаем» наши шилды с bt-модулем на нашу Arduino:

Master-устройство будет подключаться к Slave-устройству, которое будет ждать входящего подключения. На одной из плат устанавливаем переключатель в H, это и будет наш master. На другой плате — в L, это будет slave.

Прикрепив модули к Arduino можно начинать настройку. Для настройки master-a нужно будет послать некоторый набор команд в bt-модуль, будем делать это с помощью Serial Monitor (Ctrl+Shift+M). При обмене сообщениями рекомендуется выставить Baud rate -> 38400 & «Both NL&CR».

Послав команду «AT» и нажав отправить, мы ожидаем ответ «OK». Если это так — плата подключена правильно, можно продолжать. Если нет — стоит вернуться на пару шагов назад и проверить корректность подключения bluetooth-модуля.

Несколько важных АТ-команд, которые нам могу пригодиться:

AT — просто вернет «OK», значит всё в порядке AT+NAME? — вернет имя модуля. Мы также можем задать своё имя, послав, например, AT+NAME=WEATHER_MONITOR AT+ROLE? — одна из ключевых команд, вернет роль устройства, master/slave. Задать значение можно с помощью AT+ROLE=0 — перевести в режим slave, либо AT+ROLE=1 — режим master. AT+PSWD? — вернёт пин-код, используемый для подключения. AT+ADDR? — вернёт адрес устройства, например «14:2:110007». Стоит заметить, что при использовании адреса в посылаемых AT-командах двоеточия ":" нужно заменять запятыми ",", т.о. «14:2:110007» -> «14,2,110007».

Настройка Slave'a

Тут никаких телодвижений не требуется, поэтому просто подключаем плату к питанию.

Настройка Master'a

Этап первый. Конфигурация.

  1. Посылаем AT+ORGL, тем самым возвращая модуль к его изначальной конфигурации
  2. Имя модуля можно изменить, послав AT+NAME=myname.
  3. AT+RMAAD — удаляем информацию о предыдущих «спариваниях».
  4. AT+PSWD=1234 — устанавливаем пароль
  5. AT+ROLE=1 — говорим устройству, что оно будет работать в master режиме.
  6. AT+CMODE=1 — говорим устройству, что оно будет подключаться к любым адресам.

Этап второй. Подключение.

  1. Отправляем команду AT, чтобы удостовериться, что модуль подключен и готов к работе.
  2. AT+INIT — инициализация. Если в ответ получаем ERROR(17) — ничего страшного, значит команда инициализации уже посылалась, продолжаем работу.
  3. AT+INQ — начинаем поиск доступных BT-устройств, ответ будет содержать список из адресов
  4. AT+LINK=<адрес> — тут происходит непосредственно подключение к slave-устройству. Команда на подключение может, например, выглядеть так: AT+LINK=14,2,110007.

После выполнения последней команды диоды начнут мигать с меньшей частотой, что говорит об успешном подключении.

Финишная прямая

На этом почти всё. Остается написать скетчи, в которых мы считываем-отправляем-принимаем-отображаем погодные данные. При желании можно отказаться от макетной платы и приступить к пайке, а затем поместить конструкции в корпуса.

📎📎📎📎📎📎📎📎📎📎