DIY Arduino Variometer for Paragliding
by XONIX in Circuits > Arduino
33316 Views, 59 Favorites, 0 Comments
DIY Arduino Variometer for Paragliding
All paraglider and hang glider pilots can be devided into two categories: those who have the variometer and those who want to have it. In this post you'll see, how you can make such device with your owh hands and not pay a lot of money. Of course, the DIY device will not have such precision as the factory one, but it's still enough for flights.
So, let's go...
Important! In the end of the post you can find links to the 3d case models on Thingiverse.com for printing and also updates for BMP280 and BME280 sensors.
/////
Все пилоты парапланов и дельтапланов делятся на два типа: те, у кого есть вариометр, и те, кто не отказался бы его заиметь. В этой инструкции вы увидите, как можно собрать подобный девайс самостоятельно на базе Ардуино Нано, и обойдётся он гораздо дешевле, чем заводской прибор. Разумеется, добиться такой точности, как у заводского, у нас навряд ли получится, но, тем не менее, прибор будет вполне полётопригоден.
Итак, поехали...
Важно! В конце статьи Вы найдёте ссылки на модели под печать корпуса на сайте Thingiverse.com, а также дополнения для желающих построить девайс на датчиках BMP280 и BME280.
What We'll Need / Нам Понадобится
Also we'll need some software:
- Arduino IDE - https://www.arduino.cc/en/main/software
- Libraries for BMP180, LCD I2C and for buttons (four attached zip-archives)
After installing the IDE, just unpack archives to "Program Files\Arduino\libraries".
/////
Нам так же понадобится немного софта и библиотек:
- Arduino IDE - https://www.arduino.cc/en/main/software
- Библиотеки для датчика BMP180, LCD экрана с I2C переходником и для правильной работы кнопок (четыре прикреплённых zip-архива)
После установки среды Arduino просто распакуйте архивы по этому пути: "Program Files\Arduino\libraries".
Connection Diagram / Схема Подключения
Development / Разработка Устройства И Прошивки
Firstly I wanted to make a simple small beeper with a screen to show the vario and altitude values. But then I wanted more and more. As a result the device has a big bulky case with several buttons, but it can do much more useful things than I originally planned! Here are some pictures of the development process.
To reduce the firmware development time, the algorithm of the variometer averager was borrowed from these two awesome projects:
https://www.instructables.com/id/GoFly-paraglidingh...
http://redhats.ru/variometer-arduino-2015/
A lot of thanks to their authors!
P.S. I have to honestly admit, this is my first serious project on Arduino and this is my first code for seven years after graduation from University. Therefore, the code itself is creepy enough, complicated, poorly optimized and all stands on crutches! But it works! And, as is known, if something works - do not touch it! And, in general, this is not a bug, it's a feature! =)
The first version of ino-file - Vario_nX_v1.0.ino!
P.S. The new firmware version Vario_nX_v1.1.ino has more pleasant descent sound! Check it out! =)
P.P.S. The next version - Vario_nX_v1.2.ino
Changes: Added new values to the series of preset values.
For treshold on descent the extended line is: -0.5, -0.7, -0.9, -1.1, -1.3
For treshold on falling the extended line is: -2.5, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0
Px3.S. The next version - Vario_nX_v1.3.ino
Added a "shortcut key" for the LCD backlight ON/OFF.
Now to turn on or off the backlight you just need to enter the MENU by short pressing the Button 1 and then just long press the same button until the device beeps.
/////
Сперва я хотел сделать простую маленькую пищалку с экраном, что бы видеть скороподъёмность и высоту. Но с каждой новой фичей хотелось всё большего. В результате получилась неуклюжая коробка с кнопками, которая умеет делать намного больше полезностей, чем изначально планировалось! На фотках запечатлено несколько моментов процесса разработки.
Что бы не тратить время на изобретение велосипеда, я позаимствовал алгоритм усреднителя из этих двух наикрутейших проектов:
https://www.instructables.com/id/GoFly-paragliding...
http://redhats.ru/variometer-arduino-2015/
Огромное спасибо их авторам!
P.S. Я должен честно признаться, это мой первый серьёзный проект на Arduino и это мой первый код за семь лет после выпуска из универа. Поэтому сам код достаточно жуткий, сложный, плохо оптимизированный и весь стоит на костылях! Но он работает!
А, как известно, работает – не трогай! И, вообще, это не баг, это фича! =)
Первая версия прошивки (ino-файлик) - Vario_nX_v1.0.ino!
P.S. В следующей версии прошивки Vario_nX_v1.1.ino ощутимо изменён звук варика на снижении. Он стал более приятным, не режет слух.
P.P.S. Очередная версия - Vario_nX_v1.2.ino
Изменения: по просьбам братьев-пилотов расширены ряды значений порога срабатывания на сливе и для тревоги.
Новый ряд порога на снижении: -0.5, -0.7, -0.9, -1.1, -1.3
Новый ряд порога при падении: -2.5, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0
А так же в комменты (в коде) добавлены пометки "МОЖНО МЕНЯТЬ!!!". Эти пометки указывают, какие начальные значения можно поправить, что бы более гибко настроить прибор под себя любимого! =) Там, где нет такой пометки, трогать ничего не стоит, иначе код может поломаться!
Px3.S. Следующая версия - Vario_nX_v1.3.ino
Добавлена "быстрая клавиша" для выключения/включения подсветки экрана. Теперь, что бы включить или выключить подсветку, Вам нужно войти в МЕНЮ путём кратковременного нажатия Кнопки 1 и затем снова нажать Кнопку 1 примерно на 1-2 секунды до звукового сигнала.
Assembly / Сборка
The assembly doesn't look pretty good. I used a lot of heat-shrink tubing and hot-melt glue, but the elements are fixed firmly, nothing hanging. The BMP180 sensor can be found by the yellow heat-shrink tube. Sensor board is covered with foam rubber.
/////
После сборки в корпус внутрянка выглядит слегка не по-заводскому - сплошняком термоклей и кембрик. Но держится всё намертво, разумеется, если не кидаться прибором в стену! Сам датчик можно найти по изогнутому куску жёлтого кембрика. Плата датчика укутана в поролон.
Description / Описание
As a result I got such devise. I'm really bad at painting, so the box looks a little creepy in style of FallOut world. But it works and works not too bad.
The video shows main screens and menu items, also there is a small room test.
Main screen shows you the Vario value, one of three altitudes, air temperature and flight time (and some more features, which are described in more detail in the Instruction manual).
The device has also the screen of Maximal altitudes and the screen of Max and Min Vario values.
The Menu has 11 items:
- Sea level pressure setup
- Vario treshold on climb
- Vario treshold on descent
- LED Vario light ON/OFF
- Button sound ON/OFF
- Falling alarm treshold set
- Falling alarm test mode ON/OFF
- Long beep at certain altitude on climb
- Long beep at certain altitude on descent
- Vario mode (one of two)
- LCD Backlight ON/OFF
All these features are more detailed in the Instruction manual (in English and in Russian).
We also have now the Japanese version of Instruction manual! Many thanks to Osa from Japan, who kindy translated it to his native language!
And also thanks to our friend Aldo (LU7HQW) from Argentina, we now have Instruction manual translated to Spanish! That's awesome! :)
/////
В результате получился вот такой девайс. Художник из меня не очень, поэтому после покраски прибор выглядит довольно жутко, будто из мира FallOut. Но он работает и работает вполне неплохо.
Видео показывает главные экраны устройства, пункты меню, а так же в нём есть небольшой комнатный тест.
Основной экран после запуска прибора показывает значения вариометра, выбранной высоты, температуры воздуха и полётного времени (и ещё несколько полезных штучек, которые подробно описаны в мануале, приложенном к этому посту). Так же прибор может отображать экран максимальных набранных высот и экран максимального и минимального значений вариометра.
В меню есть 11 пунктов:
- Отображение и ввод давления на уровне моря
- Порог срабатывания вариометра при наборе высоты
- Порог срабатывания вариометра при потере высоты
- ВКЛ/ВЫКЛ светодиодной индикации вариометра
- ВКЛ/ВЫКЛ звука клавиш
- Настройка порога срабатывания сигнализации
- ВКЛ/ВЫКЛ тестового режима сигнализации
- Длинный сигнал при проходе заданной высоты в наборе высоты
- Длинный сигнал при проходе заданной высоты на сливе
- Выбор одного из двух режимов вариометра
- ВКЛ/ВЫКЛ подсветки экрана
Все эти опции подробно описаны в мануале (на английском и русском языках).
А сейчас дополнительно появился мануал на японском языке благодаря Osa - товарищу-пилоту из Японии, за что ему огромное спасибо!
Также благодаря нашему другу Aldo (LU7HQW) из Аргентины, у нас теперь есть инструкция, переведенная на испанский язык!
Results and Tests / Результаты И Тесты
Here is a small video of the second flight test.
By the time this post was written, the device had passed several elevator tests on the ground for calibration and two final tests in the flight. Several bugs have been fixed, and now, in general, the device is ready. Of course, in future there will be more bugs, but they are unlikely to be critical.
If, or more correctly, when the
device shows up bugs, throw me a description on my E-mail (xonix2004@list.ru), or you can find me in VK or Facebook for more convenient communication. If you know some tricky function that should be built into the variometer, but did not find it in the list of available ones, also write. If it’s possible, I’ll try to implement and upload a new version of the firmware.
Live long and fly safe! =)
/////
А вот небольшое видео со второго испытательного полёта.
К моменту написания данного поста прибор качественно накатался в лифте для калибровки, а так же прошёл два боевых теста в воздухе. Было исправлено несколько багов, и теперь, в принципе, девайс готов к эксплуатации. Конечно, в будущем проявятся ещё баги, но навряд ли они будут критичными.
Если, верней, когда в работе устройства обнаружатся баги, скидывайте мне их описание на мыло (xonix2004@list.ru), или же можете найти меня в ВК или Facebook для более удобного общения. Если вы знаете какую-то хитрую функцию, которая должна быть заложена в вариометр, но не нашли её в списке имеющихся, тоже напишите, по возможности постараюсь реализовать и выложить новую версию прошивки.
Всем пилотам встречного ветра и пусть у вас в полёте ничего не складывается! Летайте безопасно! =)
3D-Printed Box! Finally! / Наконец-то! Корпус Для Печати!
Finally! After almost two years it is time to make a new good box for the vario! Two years were enough to realize what the box will look like and what features it is necessary to include in it. The Solidworks weekend gave a result captured on the photo! =) The new box doesn't differ too much from the previous one in dimentions and shape, but it has some important changes inside. First, everything now has its place, you shouldn't use hot glue now. Second, the box is much more strong. And third, in this box I tried to realise the system which should help to fix the temperature indication bug. This should be achieved by adding a specional isolated channel for the baro sensor. Now it's time to test it! =)
At this moment there are two versions of case available. I recommend you to print the second one (ver.1.2).
The second version has several improvements:
- The battery now can be changed without the whole case disassembly;
- Reduced number of fasteners;
- Reduced the height of the device to about 5 mm;
- A bunch of other small improvements.
Ver.1.1:
https://www.thingiverse.com/thing:3301499
Ver.1.2 (RECOMMENDED):
https://www.thingiverse.com/thing:3321624
Also here is a short timelapse video with modelling, printing and assembly of the device:
/////
Наконец-то, спустя почти два года настал момент напечатать нормальный корпус для прибора. За эти два года стало примерно понятно, как будет выглядеть корпус, и какие обязательные элементы будут в нем присутствовать. В общем, выходные, проведённые в Solidworks дали примерно такой результат как на фото! =) По общим габаритам и форме корпус не сильно отличается от первоначального, но внутри есть некоторые полезные изменения. Во-первых, для всего теперь есть свое место, не надо ничего сажать на термоклей. Во-вторых, печатный корпус гораздо крепче, чем распределительная коробка. В третьих, что на мой взгляд, самое главное, в этом корпусе я постарался реализовать систему, которая должна помочь исправить косяк с завышением показаний температуры за счет создания специального изолированного канала, в который помещается датчик. Собственно, осталось дело за тестированием!.. =)
На данный момент для печати доступно две версии корпуса. Рекомендую к печати именно вторую (1.2), так как она содержит в себе несколько полезных улучшений:
- Батарейка теперь меняется без разборки всего корпуса;
- Уменьшено количество крепежа;
- Уменьшена высота прибора примерно на 5 мм (в руках очень ощутимо!);
- Ну и ещё целая кипа мелких улучшений!
Версия 1.1:
https://www.thingiverse.com/thing:3301499
Версия 1.2 (РЕКОМЕНДУЮ ЕЁ):
https://www.thingiverse.com/thing:3321624
Also here is a short timelapse video with modelling, printing and assembly of the device:
Updates (BME280 Version) / Обновления (версия С BME280)
We now also have the sketch for BME280 sensor. Many thanks to Osa from Japan who decided to make a vario with this sensor and shared the changed sketch.
It seems that he used the SparkFunBME280.h library, which you can find here:
https://github.com/sparkfun/SparkFun_BME280_Arduin...
Waiting for his spring tests! ;)
/////
У нас так же теперь имеется версия прошивки для датчика BME280, благодаря небесному брату Osa из Японии! Он задумал собрать девайс именно на этом датчике, и пусть через небольшие костыли, но у него это получилось! Спасибо ему огромное за предоставленный модифицированный код!
Очевидно, он использовал библиотеку SparkFunBME280.h, которую вы сможете обнаружить здесь:
https://github.com/sparkfun/SparkFun_BME280_Arduin...
С нетерпением ждём его весенних тестов! ;)
Downloads
Updates (BMP280 Version) / Обновления (версия С BMP280)
And here is a new firmware version for BMP280 sensor! Many thanks to our fellow Ivan Koshelevsky for it!
Initially the divice was build with Mega board, and after turning on several small bugs appeared. Straight after assembling the device with Nano board everything got fine. So if you are going to use any other board except Nano, get ready to catch and fix bugs! =)
Troubleshooting:
Our friend LU7HQW had some troubles with BMP820 (sensor provided no data) and he solved this problem by changing the sensor address in the Adafruit_BMP280.h library.
Many thanks to him for sharing the solution. Here's his original text:
Maybe could be useful this info. My BMP280 (same as the picture) couldn´t read any value. In the adafruit library, (Adafruit_BMP280.h), i modified the BMP280 main address from 0x77 to 0x76 (switch main and alternative adresses). Left like this:
I2C ADDRESS/BITS/SETTINGS
-----------------------------------------------------------------------*/
/** The default I2C address for the sensor. */
#define BMP280_ADDRESS (0x76)
/** Alternative I2C address for the sensor. */
#define BMP280_ADDRESS_ALT (0x77)
/** Default chip ID. */
#define BMP280_CHIPID (0x58)
/////
А вот подоспела ещё и версия под датчик BMP280! За нее спасибо огромное нашему коллеге по небу - Ивану Кошелевскому!
Сперва девайс был собран на плате Arduino Mega, но после заливки кода полезли мелкие косяки. После сборки на плате Nano всё встало на свои места. Так что, если задумаете собирать на плате отличной от Nano, будьте готовы отлавливать и фиксить баги! =)
Если вдруг Ваш датчик отказывается выдавать данные, то можете воспользоваться советом пользователя под ником LU7HQW, который решил проблему путем смены адреса датчика в библиотеке Adafruit_BMP280.h.
Спасибо огромное за предоставленный им код:
I2C ADDRESS/BITS/SETTINGS
-----------------------------------------------------------------------*/
/** The default I2C address for the sensor. */
#define BMP280_ADDRESS (0x76)
/** Alternative I2C address for the sensor. */
#define BMP280_ADDRESS_ALT (0x77)
/** Default chip ID. */
#define BMP280_CHIPID (0x58)
Updates (BMP280 + OLED 16x2) / Обновления (BMP280 + OLED 16x2)
Also our friend Ivan changed a sketch to use BMP280 sensor with OLED 16x2 Display.
Here is his sketch and wiring diagram!
P.S. He also found an ideal case for the vario on AliExpress!
https://www.aliexpress.com/item/86-Plastic-Project...
/////
Также Иван адаптировал код под использование датчика BMP280 с дисплеем OLED 16x2.
Вот список его изменений:
- Добавлены переменные relcd и PrintLCD для снижения обновления данных на экране (от Автора статьи: это особенность OLED)
- Исправлена проблема перескока символа при установке давления (там была запятая) (от Автора статьи: если честно, сам не совсем понял, что это за хитрый косяк)
- Убрано меню 11 (подсветка дисплея) (от Автора статьи: для OLED пункт действительно бесполезный)
- Сброс высоты старта при включении (от Автора статьи: в оригинале при включении высота старта всегда считается по давлению 760 мм рт. ст. и должна быть сброшена вручную)
- Исправлен алгоритм вычисления макс/мин значений вариометра (сделана зависимость от высоты, т.к. при включении были неверные значения) (от Автора статьи: тоже не совсем понял)
- Индикация уровня заряда батареи в 4-м главном окне (кнопка 3) и при включении питания (от Автора статьи: очень крутая тема, поскольку Иван применяет для питания 18650 элемент)
- Убрал символ "B" при работе варио (от Автора статьи: в оригинале этот символ служит индикатором срабатывания бипера при отключенном звуке и выключенной LED-индикации)
А вот сам скетч и схема подключения компонентов!..
P.S. А еще он нашел идеальный кейс, который не надо печатать, а можно просто купить на Али!