Походная станция на базе ардуино…
Процесс постижения микроконтроллера Arduino идет у нас полным ходом. Как
говориться когда есть новые модули и датчики, то хочется их протестировать и
тут же найти им применение в новом очередном проекте. Вот и на этот раз… Нет,
конечно проект далеко не новый таких проектов оказывается много, и в интернете
все найти можно. Но настолько полно там «воды» что разбираться начинающим
просто невероятно. Но может быть единицы разобрались и сделали…
Ладно ближе к делу. В прошлый раз мы научились выводить на LCD экран информацию с
датчика DHT-11. Провели тестирование датчика
в общем получилось неплохо. Но с другой стороны если делать, так делать то что
действительно будет нужно. А нужна мне небольшая метеостанция, которую можно
было бы взять с собой в экологическую экспедицию. К тому же модуль датчик
атмосферного давления GY-68 уже так и ждет когда я его
подключу к МК. Так что за дело. С чего нужно начать? Правильно с исследования
датчика: как его правильно подключить, и найти нужную библиотеку. Вот здесь
поджидал первый сюрприз: датчик оказывается тоже нужно подключить к пинам А4 и
А5, но они вроде как уже «заняты» LCD. Попробовал найти даже готовый проект где бы данный датчик
подключался через I2C к LCD экрану. Искал долго, но не нашел. Но
нашел зато полезную информацию: оказывается к I2C можно подключить одновременно несколько самых разных устройств.
Это уже радует. Но опять таки в интернете только одна теория: что такое I2C, как это работает. А вот практики
вроде того как же подключить GY-68
через I2C включая LCD экран к Arduino нет ни слова. Даже схемы и то нет.
Ладно будем действовать старым проверенным способом: метод проб и ошибок.
Но сначала нужно было еще спаять кое что. В моем случае к
датчику GY-68 нужно
было припаять штырьковый разъем, а если еще точнее четыре «ножки». В общем это
дело простое, и любой с этим справиться. А вот дальше нужно найти библиотеку для датчика. В интернете
есть много источников, но почти все эти библиотеки оказались нерабочими. Как
только дело доходит до компиляции примера скетча (в самой библиотеке) так тут
же всплывает и ошибки. Но все же удалось в конце концов найти и работающую
библиотеку. Эта библиотека называется Adafruit_BMP085.
Так же не забудьте поставить (если вы еще не установили) библиотеки: LiquidCrystal_I2C1602V1 а так же DHT-sensor-library-master. И последнее
очень важно компиляцию и запись скетча в МК осуществляйте старой версией arduino-1.6.4-windows.
Первый тест был связан с проверкой и ответом на вопрос: а
вообще работает ли датчик? И случайно я его при пайке не перегрел? В общем в
стандартной библиотеке нашелся пример, где можно будет проверить датчик и
информацию вывести в монитор порта. Все получилось! Первый шаг сделан – ура. Теперь
остается самое главное: переработать (дополнить) скетч который мы с успехом
применили в первом проекте. Пришлось добавить библиотеку для датчика GY-68, и написать перерасчет
давления из Паскалей в наши родные миллиметры ртутного столба. Еще немного
изменить скетч пришлось и в месте, где информация выводиться на экран дисплея.
Скетч новый проверил на ошибки, «выловил» две ошибки, и в итоге все. Но это
только скетч (загружаем его по ссылке здесь), а еще нужно правильно подключить датчик давления…
Даже не просто подключить датчик давления, но и при этом еще
начертить схему. Ведь в итоге на макетной плате появиться еще один модуль и еще
четыре провода нужно будет подключить. Благодаря программе sPlan, черчение заняло всего то пару
минут. Теперь нужно собрать и саму схему. Присоединяю датчик к макетке, тут же
подключаю провода. Да не запутаться бы. Но все пару раз проверил – все точно. А
теперь будем пробовать: подключаю ардуино к компьютеру, записываю скетч в МК.
Проходит загрузка, экран засветился приветливо и. Ура! Все работает! Получилось
точно так, как и планировалось.
Потом разумеется еще немного поработаем над самим скетчем,
чтобы выводить информацию на экран более рационально. Тем более что это
возможно. В моем случае в верхней строчке через каждые две секунды выводиться
показания влажности, потом давления. А нужно сделать чтобы все величины
выводились одновременно на экран. Этот недочет исправлю, но уже в другой раз.
А теперь подведем важнейшие итоги:
·
Перед компиляцией скетча не забудьте подключить
три библиотеки: Adafruit_BMP085
(датчик давления), LiquidCrystal_I2C1602V1
(работа с LCD
дисплеем с I2C модулем), DHT-sensor-library-master (сенсор с
которого мы будем получать только влажность, температуру мы будем получать с
датчика GY-68).
·
К I2C можно
одновременно подключить несколько разных устройств. В моем случая я даже не
заморачивался которое из них будет «мастер», а которое «слейв». Все работает и
без этих указаний. Подключите все устройства согласно схеме и все обязательно
получиться.
·
Для компиляции и записи скетча (скетч метеостанции здесь) в МК используйте
старую версию ардуино: arduino-1.6.4-windows.
Так как в новой возникает проблема с выводом информации на дисплей: будет
выводиться только один символ. Со старой версией такой проблемы нет.
Алексей Тепцов
(RN6LLV)
Дисплей можно подключить кстати и через цифровые выводы,например- 2,3,4,5,6,7 подключив соответственно на rs, e,d4,d5,d6,d7 в обход модуля i2c.
ОтветитьУдалитьКстати не пойму вашей схемы, А4 и А5-это аналоговые входы, а интерфейс I2C это SCL и SDA в противоположной части платы по диагонали.Соответственно схема нерабочая.
ОтветитьУдалитьна arduino uno A4 и A5 и есть SCL и SDA
Удалитьчото не работает пишет "Could not find a valid BMP280 sensor, check wiring!" и не какой реакции нет!!!!!!!!!!
ОтветитьУдалитьну я только поменял BMP085 на BMP280 хотя пишут что это аналог
УдалитьДоброго времени суток! Вопрос, в наличии имеется лёд цифровой led на max7219, "общается" по spi, есть возможность совмещения, т.е. вывод данных в цифре? (У меня в наличии arduino uno atmega 328p) Ссылка тут http://radiolaba.ru/microcotrollers/max7219-drayver-svetodiodnyih-indikatorov.html
ОтветитьУдалить