Метеостанция на Arduino(ну почти)

Всем доброго времени суток!
Хотелось бы поделиться своим маленьким проектом: создание своей метеостанции на базе контроллера Atmega328p.


Мозгом всего устройства будет чистый контроллер Atmega328p, следовательно необходимо спроектировать печатную плату для контроллера и переходную для периферии.


Данные о микроклимате будем передавать через последовательный порт


Какие параметры микроклимата будем оценивать? Температура, влажность, давление – наиболее важные параметры, следовательно их и будем оценивать.



Какие датчики использовать? Исходя из приемлемой цены и широкого распространения для влажности рассматривались два датчика DHT11 и DHT22. Следует заметить, что датчик определяет также температуру.

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

DHT-11

определение влажности в диапазоне 20-80% с точностью ±5% RH

определение температуры от 0°C до +50°C с точностью ±2 °C

частота опроса 1 раз в секунду

Размеры 15.5mm x 12mm x 5.5mm


DHT-22

определение влажности в диапазоне 0-100% с точностью ±2% RH

определение температуры от -40°C до +125°C с точностью ±0.5℃

частота опроса 1 раз в 2 секунды

Размеры 15.1mm x 25mm x 7.7mm


Преимущества DHT22 очевидны.

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

BMP085

измеряемое давление: от 300гПа до 1100 гПа (от 9000 до -500 метров над уровнем моря)

напряжение питания: от 1.8 до 3.6В

рабочий ток: 5 мкА при 1 опросе в секунду

точность: 0.5м в самом быстром режиме и 0.25м в самом точном


BMP180

измеряемое давление: от 300гПа до 1100 гПа (от 9000 до -500 метров над уровнем моря)

Напряжение питания 1.62В — 3.6В (максимально допустимое 4,25В)

рабочий ток: 5 мкА при 1 опросе в секунду

точность: 0.5м в самом быстром режиме и 0.17м в самом точном


Наверное оптимальным способом определения температуры будет усреднение данных с 2-ух датчиков.

Изготовление печатных плат.


Существует множество технологий изготовления, но в данной работе будем использовать ЛУТ(Лазерно– утюжную технологию).

Суть способа заключается в использовании тонера принтера в качестве “маски” для травления.

Для использования данного способа необходимы:

лазерный принтер

глянцевая фотобумага либо термотрансферная бумага

утюг

перекись водорода 3%

лимонная кислота

поваренная соль (не йодированная)

Сначала необходимо распечатать шаблон платы на глянцевой бумаге либо на термотрансферной бумаге на лазерном принтере. Необходимость использования таких типов бумаг обуславливается тем, что на таких типах бумаги тонер не полностью “въедается” в бумагу и его можно использовать в качестве “маски”.

После распечатки необходимо подготовить текстолит (вырезать необходимую форму, убрать неровности, убрать пыль, обезжирить и тд).

Затем понадобится утюг и лист плотной бумаги: распечатанный шаблон необходимо приложить к стеклотекстолиту напечатанной стороной, затем сверху положить лист плотной бумаги и включить утюг на максимальную мощность, после нагрева утюга “гладим” шаблон, накрытый плотным листом бумаги примерно 2-3 минуты, тем самым перенося тонер на стеклотекстолит (“гладить” нужно до тех пор, пока бумага не пожелтеет).

Затем необходимо убрать шаблон с текстолита(рекомендуется поместить пластину в воду и, размочив бумагу, снять ее).

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

Для этого необходимо смешать 100 мл перекиси водорода 3% c 30 гр лимонной кислоты и 5 гр поваренной соли. Этого раствора должно хватить на травление 100 см^2 меди толщиной 35 мкм. Способы ускорения данной реакции :

взять емкость с горячей водой и поместить туда емкость с раствором. “Водяная баня” будет нагревать стенки нашего основного сосуда, где происходит травление и процесс будет ускоряться. Также можно ускорить реакцию добавлением большего количества соли, т.к. она в данной реакции является катализатором.


Промываем плату.

Затем необходимо убрать тонер с платы, для этого можно использовать растворитель, либо средство для снятия лака с содержанием ацетона.

Еще раз промываем плату.


Но перед началом изготовления необходимо спроектировать плату.

Проектирование плат


Для разводки и проектирования печатных плат существует множество инструментов. Большую популярность использования имеет программа Sprint-Layout, в которой и будет происходить разводка плат.


Для обвязки будем использовать кварцевый генератор 16 МГц как и в оригинальном контроллере. Еще нужны два конденсатора для кварца, это объясняется тем, что они являются фазосдвигающими для встроенного в контроллер генератора и задают режим его работы. Кстати встроенный генератор работает на частоте 8 МГц. Но если бы мы использовали частоту внутреннего генератора, то необходимо будет прошивать другой bootloader и соответственно менять тип платы в среде разработки, да и производительность была бы ниже, поэтому оптимальным решением является установка внешнего кварцевого генератора.

Питаться ATmega 328p должна от 5 вольт, следовательно необходим стабилизатор напряжения, ну и конечно хотя бы один конденсатор для фильтрации. Но так как рабочее напряжение датчика BMP180 1.62В — 3.6В, что никак не равно 5 вольтам, то необходим преобразователь и на 3 вольта + фильтрующий конденсатор.

Далее, на мой взгляд схему преобразователя UART нет смысла реализовывать на самой плате так, как это сделано на оригинальной Arduino, поэтому идея такая – оставить просто выводы типа “штырьки”. Ну и подумать про защиту от “дурака” – чтобы не перепутать + с - (диод).

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

Основные этапы процесса переноса:

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

Следующий этап – изготовление корпуса: корпус будем печатать на 3d принтере: основные этапы проектирования

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост
Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

В результате получили готовое устройство:

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

Для более удобного отображения данных, поступивших от устройства, была написана маленькая программа на QT.

Метеостанция на Arduino(ну почти) Arduino, Метеостанция, Самоделки, Программирование, Интернет вещей, Длиннопост

Исходный код для микроконтроллера и для приложения ПК можно найти в репозитории https://github.com/greadvx/meteostation