Arduino - oregon або погодна станція своїми руками

Не так давно до мене в руки потрапив набір юного радіоаматора Arduino і багато різних проектів отримали путівку в життя (або «в стіл»), але погана голова рукам спокою не дає досі.
Завдяки вдалому збігу обставин сталося так, що в одному місці виявилися:

  • Arduino - 1 шт.
  • Датчик для вимірювання температури і вологості Oregon THGN132N - 2 шт.
  • RF-kit (приймач і передавач) на 433МГц - 1 шт.

Додатково до вищепереліченого (виключно для швидкого прототипування) використовувався Starter Kit від Seeed Studio (з нього знадобився base shield, дисплей 16х2 з послідовним інтерфейсом, модуль світлодіода і сполучні кабелі).

Фото для самих нетерплячих:

Arduino - oregon або погодна станція своїми руками

Діапазон 433МГц широко використовується в різних побутових приладах - на цій частоті «спілкуються» автосигналізації, системи управління світлом, погодні станції і т.п. Приймачі і передавачі для цього ДІПАЗОН широко доступні і коштують зовсім недорого.

Датчиками THGN132N оснащуються багато погодні станції Oregon і їх так само можна придбати окремо. Вони дозволяють вимірювати температуру і відносну вологість, працюють в широкому температурному діапазоні (-40.0 ° C до + 70.0 ° C), при цьому точність вимірювання температури - 0.1 ° C. Вартість невисока і визначається більшою мірою жадібністю продавців.

Під кришкою батарейного відсіку знаходиться перемикач «каналів» - доступні 3 варіанти.

Arduino - oregon або погодна станція своїми руками

Датчик один раз приблизно в 40 секунд передає дані про свій стан.
Передача здійснюється за допомогою «on-off-keying» (OOK) і Манчестерського кодування на несучої частоті 433.92МГц.

Досить теорії, переходимо до практики. Збираємо тестовий стенд:

  • До Ардуіно підключаємо base shield,
  • RF-приймач підключаємо до D2 (будемо використовувати переривання),
  • Дисплейний модуль - до D11 і D12 (TX і RX відповідно),
  • Модуль світлодіода - до D13.

Я використовував комплектуючі серії Grove - вони все оснащені ідентичними роз'ємами і гранично просто підключаються до відповідних роз'ємів Шілд.

З'ясувалося, що (послідовно):
1A 2D - тип датчика (до речі, тут відразу вилізло деяка невідповідність опису протоколу і датчиків - цим кодом відповідає інший набір датчиків, але це не завадило подальшій роботі),
10 (20 для іншого датчика) - номер каналу передається в старших 4 бітах (залежить від положення перемикача на датчику, приймає значення 1, 2, 4, при цьому 4 відповідає 3 обраному каналу),
E3 (08) - ідентифікатор конкретного датчика (?), Але це значення може змінюватися після заміни батарейки в датчику і натискання кнопки Reset (розташована поруч з перемикачем каналів і рекомендована до обов'язкового натискання після заміни батарейки).
Далі міститься інформація про стан батарейки (прапор того, що її пора змінити) і дані, характерні для датчика: інформація про поточну температурі і відносній вологості повітря.

З цього «розбору» для себе я виявив наступне: для метеостанції на Ардуіно можна задіяти значно більше датчиків, ніж до заводської (наприклад, для ідентифікації використовувати комбінацію «тип датчика - канал», а не просто «канал» і т.п.) , можна використовувати не тільки ті датчики, що ви придбали самостійно, але і «сусідські» (на жаль, в моєму радіоефірі були дані тільки від моїх датчиків - у сусідів чи ні таких, або просто «не маєте наміру звертатися»).

Тепер останні приготування: для першого датчика вибираємо 1 канал і відправляємо його за вікно на мороз, другого датчику призначаємо 2 канал і залишаємо поки жити при кімнатній температурі. Датчики будемо ідентифікувати саме по каналу - для поточного випадку цього більш ніж достатньо.

Трохи програмування і готово:
На першому рядку дисплея відображається поточна температура, відносна вологість і стан батареї датчика за вікном, на другий - те ж саме, але для кімнатного датчика. Світлодіод, підключений до Ардуіно моргає, коли прийняті дані від будь-якого датчика (just for fun).

Arduino - oregon або погодна станція своїми руками

Невелике зауваження по дальності: в специфікації на орегоновскіе датчики заявлено, що вони працюють на відстані до 30 метрів від базового блоку.
У моєму ж випадку (мабуть через те, що якість RF-приймача або «забрудненість» ефіру висока) система стійко працює за умови, що датчик знаходиться на відстані до 5-7 метрів (перешкоди у вигляді 1-2 стін теж присутні) . Треба буде при нагоді придбати приймач іншого виробника і протестувати з ним.

Таким чином в «сухому залишку»:

  • якщо у вас є метеостанція (або датчики Oregon) їх можна досить просто включити в систему домашньої автоматизації без порушення їх штатної роботи в складі заводської метеостанції,
  • можна використовувати не тільки свої, але і «сусідські» датчики,
  • кілька годин проведено з користю і досягнуто бажаного результату.
  • Додати більше датчиків (вже готові до підключення модулі на DHT11, DHT22 (температура і вологість), BMP085 (температура і атмосферний тиск).
  • Підключити Ethernet-Шилд з SD-картою і, використавши Google Chart Tools, зробити сторінку з поточними значеннями параметрів і красивими графіками (можливо, що веб-сервер доведеться городити де-небудь на NAS, а Ардуіно буде тільки вимірювати і передавати серверу значення, але це вже зовсім інша історія).
  • Задіяти RF-передавач для управління люстрою (зараз поки до її оригінального пульта інша Ардуіно підключена за допомогою оптопари і «натискає» кнопки на ньому, але це теж тема не для цього топіка).
Посилання по темі:

Схожі статті