Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.02.2023, 12:06
|
#1
|
Прохожий
Регистрация: 08.02.2021
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Подключение датчика давления BMP280 к Arduino.
Здравствуйте уважаемые участники форума! На сайте https://3d-diy.ru/wiki/arduino-datchiki/sensor-bmp280/ описано подключение атмосферного датчика давления BMP280 к плате Arduino Nano.
Схема подключения
Это скетч (файл прошивки)
Код:
|
// Подключаем библиотеки для раблты с дисплеем NOKIA 5110
#include ‹SPI.h›
#include ‹Adafruit_GFX.h›
#include ‹Adafruit_PCD8544.h›
// Номара выводов Arduino для подключения димплея
#define PIN_5110_SCLK 3
#define PIN_5110_DIN 4
#define PIN_5110_DC 5
#define PIN_5110_CS 6
#define PIN_5110_RST 7
Adafruit_PCD8544 display = Adafruit_PCD8544(PIN_5110_SCLK, PIN_5110_DIN,
PIN_5110_DC, PIN_5110_CS, PIN_5110_RST);
// Подключаем библиотеки для работы с датчиком BMP280
#include ‹Wire.h›
#include ‹Adafruit_BMP280.h›
Adafruit_BMP280 bmp;
uint8_t pp[84]; // Массив значений атм. давления для вывода графика
uint8_t index = 0; // Текущий индекс (точка на графике)
void setup() {
display.begin(); // Инициализация дисплея
display.setContrast(45); // Настройка контрасности
display.display(); // Подготовка к выводу изображения
delay(2000);
display.clearDisplay(); // Очистка дисплея
bmp.begin(); // Инициализация датчика BMP280
// Настройка режима работы датчика BMP280
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,
Adafruit_BMP280::SAMPLING_X2,
Adafruit_BMP280::SAMPLING_X16,
Adafruit_BMP280::FILTER_X16,
Adafruit_BMP280::STANDBY_MS_500);
for(uint8_t i = 0; i ‹ 84; i++) pp[i] = 0; // Обнуляем массив
}
void loop() {
// Считываем и выводим показания температуры
float t = bmp.readTemperature();
display.setTextSize(1); display.setCursor(0, 0);
display.print("t="); display.print(t); display.println("oC");
// Считываем и выводим показания высоты
float a = bmp.readAltitude(1005);
display.setCursor(0, 8);
display.print("h="); display.print(a); display.println("m");
// Считываем и выводим показания атмосверного давления
float p = bmp.readPressure();
p = p * 0.00750062; // Преобразуем Паскали в мм.рт.ст.
display.setCursor(0, 16);
display.print("p="); display.print(p); display.println("mmGh");
// Преобразуем показания для построения графика
pp[index] = map(p, 730, 760, 0, 24);
// Строим график
index++;
if(index › 83) {
for(uint8_t i = 0; i ‹ 84; i++) pp[i] = 0;
index = 0;
}
display.fillRoundRect(0, 24, 84, 24, 0, WHITE);
for(uint8_t i = 0; i ‹ 84; i++)
display.drawLine(i, 48, i, 48 - pp[i], BLACK);
display.display();
delay(60000); // График будет обновляться 1 раз в минуту
display.clearDisplay();
} |
Измеренные значения атмосферного давления, температуры, высоты выводятся на дисплей LCD Nokia 5110. Так вот, на дисплее что на сайте, все показания выводятся как положено в цифровом виде. А у меня строки показаний есть, но цифровые данные отсутствуют. Вот и встает вопрос почему нет данных. Подскажите пожалуйста в чем причина этого. Только пожалуйста не пинайте слишком сильно, если что не так написал или " слона не приметил".
Последний раз редактировалось mike-y-k; 09.02.2023 в 17:17.
Причина: очипятка
|
|
|
|
09.02.2023, 12:44
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,848
Сказал спасибо: 5,591
Сказали Спасибо 25,471 раз(а) в 5,729 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
Видимо данные не отображаются потому как Ардуинка их не может получить от датчика. А вот почему это происходит отсюда не видать..
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
09.02.2023, 12:57
|
#3
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
Ну так отладку запусти и проверь, в чем дело. Для начала можно проверить сырые данные: по I2C вообще отклик есть или нет
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
09.02.2023, 16:39
|
#4
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,318
Сказал спасибо: 2,140
Сказали Спасибо 1,734 раз(а) в 986 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
eddy, а что, в новых версия IDE Arduino появилась возможность отладки?
kosta, перепроверьте подключение (провода) датчика. Посмотрите внимательней - не перепутан ли "+" и "-" питания датчика.
Цитата:
|
Большинство датчиков BMP280 имеют адрес 0х76, а библиотека Adafruit_BMP280.h по умолчанию работает с адресом 0х77. Чтобы это исправить необходимо открыть файл Adafruit_BMP280.h любым текстовым редактором, найти строку вида:
#define BMP280_ADDRESS (0x77) /**‹ The default I2C address for the sensor. */ После этого нужно заменить значение в скобках, сохранить изменения и перекомпилировать проект.
|
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
Последний раз редактировалось mtit; 09.02.2023 в 16:46.
|
|
|
|
09.02.2023, 17:21
|
#5
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,258
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
kosta, на этот случай и придумали ЛА (логический анализатор) с осциллографом - сразу видно правильно ли все работает…
Если макет сделан не паяльником, а на беспаечной макетной плате - проверьте надежность контакта во всех цепях…
Проверьте питание и все подтягивающие резисторы, отсутствие короткого замыкания и обрыва дорожек…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
09.02.2023, 18:40
|
#6
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
mtit, а вы погуглите "AVR ISP debug". Она всегда была.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
09.02.2023, 19:08
|
#7
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,258
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
mtit, таки это определяется подключением SDO к GND (0x76) или VDDIO (0x77).
kosta, почитайте DS https://cdn-shop.adafruit.com/datash...0-DS001-11.pdf и проверьте подключение всех выводов. Заодно проверьте напряжение питания (3V3) у датчика. Подключение его к 5V, как и отключение VDDIO при наличии сигналов на линиях ведут к смерти…
Использование этих датчиков как с I2C, так и с SPI не вызывает никаких проблем - есть готовые библиотеки под множество МК…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
09.02.2023, 20:05
|
#8
|
Гражданин KAZUS.RU
Регистрация: 20.05.2005
Сообщений: 660
Сказал спасибо: 40
Сказали Спасибо 187 раз(а) в 117 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
mtit
Начиная со 2-й версии IDE в анонсах была заявлена отладка. Но она только под 64Х, на своих 32 битах не пробовал.
Последний раз редактировалось mike-y-k; 09.02.2023 в 20:13.
Причина: 7.15
|
|
|
|
09.02.2023, 20:15
|
#9
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
Сообщение от mike-y-k
|
есть готовые библиотеки под множество МК…
|
Я тоже чужое использовал, лень было нормально написать свое…
Сообщение от lyk
|
на своих 32 битах не пробовал.
|
Ух ты! На дворе 2023 год. Я думал, 32 бита лишь на очень старых ARMах остались (и то, новые дешевые orange pi zero2 на 64-битном!)...
Ну, а если по-человечески разрабатывать, а не "методом Монте-Карло", то и отладка работать будет, и не нужно будет кривые С++ "скетчи" использовать. И флоаты никто в своем уме на 8-битную аврку совать не будет тоже…
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось mike-y-k; 09.02.2023 в 20:16.
Причина: очипятка
|
|
|
|
10.02.2023, 00:14
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,318
Сказал спасибо: 2,140
Сказали Спасибо 1,734 раз(а) в 986 сообщении(ях)
|
Re: Подключение датчика давления BMP280 к Arduino.
Сообщение от eddy
|
И флоаты никто в своем уме на 8-битную аврку совать не будет тоже…
|
Ржу во всю глотку. Т.е. такая конструкция в коде
Сообщение от kosta
|
delay(60000);
|
Вас не смущает. А правила хорошего тона, что, де, "нехорошо использовать Float там, где можно масштабировать Int" - прям бревном в глазу.
Сообщение от eddy
|
Я думал, 32 бита лишь на очень старых ARMах остались (и то, новые дешевые orange pi zero2 на 64-битном!)...
|
Эту фразу не понял. Возможно мы про разные вещи. Насколько я понимаю: lyk сообщил информацию, что в среде Ардуино, наконец-то, появилась отладка. Но сам он пока не протестировал, т. к. у него ОСь на компьютере 32-битная.
Собственно, возвращаясь к Вашему сообщению:
Сообщение от eddy
|
mtit, а вы погуглите "AVR ISP debug". Она всегда была.
|
Отладка была всегда в камнях серии AVR. Но, среда разработки Arduino_IDE - такую возможность не поддерживала. Т.е. Вы (не зная уровень ТС) советуете перепрыгнуть на другую IDE, где есть возможность отладки.
Без обид (не пытаюсь ввернуть шпильку) - у Вас, коллега, профессиональная деформация. ТС, очень вероятно, только начитает делать первые шаги, а Вы его пытаетесь на свой уровень затянуть (где Вы научились работать с любым инструментарием).
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:36.
|
|