Disclaimer. Данный материал представляет собой не руководство по эксплуатации, а скорее инструкцию для продвинутого пользователя по изготовлению анемометра с возможностью загрузки данных в сеть Интернет.
Итак откуда возникла идея. Ни для кого не секрет, что построение собственной метеостанции с выходом Интернет, даже с минимальным набором параметров например сила и направления ветра, связано с серьезными финансовыми затратами и измеряется сотнями долларов. С другой стороны данные по ветру актуальны для многих людей - кайтеры, виндсерферы, парапланеристы и т.д. Возник вопрос, есть ли не дорогие метеостанции выходящие в интернет не через полноценный компьютер, а например через устройства на Android, что заметно удешевляет систему и упрощает условия по ее размещению. В принципе есть готовое, красивое устройство работающее по Bluetooth:
http://www.scarlet.com.tw/smart-wind-meter
Но минус в цене: 199$ анемометр + 199$ указатель направления ветра. К тому же, насколько мне известно, программа в комплекте с данным устройством умеет рисовать графики, но не умеет выкладывать данные в сеть. Стало интересно, можно ли собрать аналогичное устройство на коленке? К сожалению программирование под android мне абсолютно не знакомо, но к счастью на github случайно был обнаружен интереснейший проект Arduino-Android-Sensors, который вполне мог послужить основой устройства
https://github.com/HarryGoodwin/Arduino-Android-Sensors. Выкристаллизовалась идея:
Но для начала был изготовлен датчик ветра.
Датчик ветра был изготовлен на основе вот этого материала:
http://skootsone.yolasite.com/wind-pow-02.php В качестве основы датчика используется компьютерный вентилятор любого размера, главное условие наличие в нем двух подшипников (хотя и одного верхнего возможно будет достаточно учитывая установку датчика) и трех (или 4х) проводной интерфейс. Я препарировал имеющийся в хозяйстве боксовый кулер Intel.
Процесс изготовления подробно описан в статье указанной выше, если в двух словах: снимаем крыльчатку (для боксового кулера Intel этот процесс может быть не тривиальным), удаляем обмотку (удалял варварским методом, кусачками выгрыз обмотки, потом снял пластину за пластиной сердечник), удалил 4й провод (осталось 3: черный - минус, желтый - питание, зеленый - тахометр). Плату залил лаком, для предотвращения замыкания в случае дождя. Дальше удалил крылья на крыльчатке, на этом подготовка закончена. Новую крыльчатку сначала сделал как у автора статьи (вырезал из CD диска), однако был ошарашен его чувствительностью. Не знаю как у автора получилась чувствительность 0.4м/с, у меня датчик с трудом стартовал от 4м/с. Что было сделано не так, разобраться не удалось, поэтому пошел другим путем - купил пару теннисных шариков, которые были разрезаны канцелярским ножом на 2 части. Полученный полусферы были посажены на термоклей прямо на цилиндр крыльчатки (фото не сохранилось). Стало гораздо лучше, датчик спокойно стартует от 3 м/с чего уже вполне достаточно, по крайней мере для кайтеров. В принципе на этом можно было закончить, но чисто из спортивного интереса посадил полусферы на ножки (нейлоновые стойки + винт) и снова приклеил термоклеем. Стало еще лучше - стартуем с 1.5-2 м/с. Крыльчатку желательно отбалансировать, для это ставим ее вертикально (боком как автомобильное колесо) и вращаем. Крыльчатка должна останавливатся в произвольной позиции. Если одна из лопастей всегда оказывается внизу (оказалась тяжелее других) то на противоположную добавляем камельку термоклея. Повторяем процесс до достижения требуемого результата.
Дальше был самый простой этап, работа с Arduino. В качестве контролера была выбрана плата Arduino mini Pro 5V 16MHz(как самый дешевый вариант)
http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.TRS0&_nkw=Arduino+mini+Pro+5V+16MHz&_sacat=0 но подойдет и Arduino nano и любая другая плата на процессоре Atmega 328P. Arduino мне известно достаточно давно, а пример на github оказался почти тем что нужно. Немножко поработал паяльником:
на фото виден Bluetooth модуль BC-02, но подойдет любой модуль с последовательным портом, например HC-06:
http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=Bluetooth+Module+RS232+pin&rt=nc&LH_BIN=1 Питание, любое 5В, например от стандартного USB. Поправил немного скетч, загрузил в плату, нет проблем. Контроллер выполняет простейшую работу - считает импульсы от тахометра на входе D4, измеряет напряжение на входах A1, A2, A3 (диапазон 0...+5В, предназначено для дальнейших расширений, например указатель направления ветра и/или термометр) и передает эти 4 числа в Bluetooth модуль. Скорость модуля по умолчанию 57600bps, но может быть изменена в скетче. Данные по Bluetooth попадают на Android.
Ну а дальше была terra incognita, хотя вряд ли мои проблемы кому-то интересны. Через н-ное количество часов получилось вот такое приложение, ужасное снаружи и доброе внутри:
снова функции только базовые - вывод на экран числовых значений датчиков и загрузка их на ftp сервер с определенным интервалом. На веб сервере появляется вот такая вот страничка:
Дальше эти данные можно использовать для отрисовки красивых страничек с графиками по типу не работающего сейчас wind-online.com.ua либо meteostations.com.ua Но это уже задача вебмастеров, мне и одного числа было бы достаточно. В принципе загрузка не обязательно, в этом случае весь комплекс превращается в банальный анемометр.
Логичный вопрос, а что с направлением ветра? Как уже говорил, комплекс готов к подключению новых сенсоров (свободны 3 аналоговых входа), осталось только сделать такой указатель. В реальности сделать указатель ветра чуть сложнее чем анемометр, готовых нет, пока самая простая схема которая приходит в голову это 8 герконов и десяток резисторов. Кому интересно могу поделится соображениями отдельно. В принципе на Arduino mini Pro содержит 14 цифровых входов и выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, использовать можно любые. Я уже молчу про готовые датчики за смешные деньги:
температура и влажность
http://www.ebay.com/itm/DHT11-Temperature-Sensor-Humidity-Sensor-for-Arduino-3-3V-5V-/381360772172?hash=item58cadf944c
уровень жидкости
http://www.ebay.com/itm/Rain-Water-Level-Sensor-Module-Depth-Detection-Liquid-Surface-Height-Arduino-MUS-/391159275594?hash=item5b12e8e04a
и т.д. Но это уже совсем другая история
Подсчитаем расходы:
Arduino mini Pro = 2$
Bluetooth HC-06 = 4$
Кулер с двумя подшипниками = 3$
Б/у телефон на Android (пойдет даже с треснувшим экраном) = 15-20$
плюс мелочовка типа проводов и разъемов. В общем бюджет всего мероприятия порядка 30$, а если в хозяйстве есть ненужный кулер и старый телефон Android то аж 6$ затрат.
По размещению оборудования. Подразумевается, что датчик будет размещается снаружи, остальное оборудование в защищенном от дождя помещении (например дом). Допустимая длинна кабеля (кабель любой, минимум 3 провода - земля, питание, сигнал), например витая пара для компьютерных сетей, от датчика до Arduino исчисляется десятками метров. Я проверял на кабеле длинной 20м - все работало без проблем. Теоретически можно и сотни метров, но тогда цена кабеля будет дороже самого комплекса. Arduino и Bluetooth модуль размещаются вместе, смысла разносить их нет. От Arduino до блока питания (например стандартный USB провод и зарядник) можно метров 10, т.к. ток потребления скромный, порядка 60мА. От Bluetooth до телефона, нормально работает тоже метров 10, дальше возможны проблемы. Везде говорил о максимальной длине, а вообще чем короче, тем меньше проблем.
Т.к. объем пересылаемых данных от Android очень скромный, требования к подключению Интернет минимальны, проверено и на Wi-Fi и на EDGE, работает без проблем, даже лимитированные тарифные планы скорее всего подойдут. Конечно все это теория, практика может оказаться гораздо печальней, типа первый же дождь убьет датчик, но кто не рискует...
P.S. Все необходимые файлы для построения комплекса во вложении