Читаем Цифровая электроника для начинающих полностью

Чтение данных с барометра BMP280 аналогично. Нужно скачать библиотеки с сайта https://github.com/adafruit/Adafruit_BMP280_Library и поместить их в папку Документы\Arduino\libraries.

Код аналогичен приведенному выше.

#include

#include

#include

#include

Adafruit_BMP280 bmp;

void setup() {

Serial.begin(115200);

Serial.println(F("BMP280 test"));

if (!bmp.begin()) {

Serial.println(F("Could not find a valid BMP280 sensor"));

while (1);

}

}

void loop() {

// Чтение температуры

Serial.print(F("T = "));

Serial.print(bmp.readTemperature());

Serial.println(" *C");

// Атмосферное давление

Serial.print(F("Pressure = "));

Serial.print(bmp.readPressure());

Serial.println(" Pa");

// Барометрическая высота относительно “нулевой” отметки

Serial.print(F("Approx altitude = "));

Serial.print(bmp.readAltitude(1013.25)); // Давление на “нулевой” отметке

Serial.println(" m");

Serial.println();

delay(2000);

}

Разумеется, атмосферное давление не меняется столь же быстро, как показания акселерометра. Оставив программу работать некоторое время, можно получить график изменения атмосферного давления. Барометрическая высота кстати, активно используется в авиации, т.к. позволяет получать довольно-таки точную высоту над уровнем моря относительно нулевой отметки. Точность цифровых датчиков весьма высока, и позволяет улавливать даже разницу в высоте менее 1м. Это используется например, в квадрокоптерах для удержания заданной высоты полета.

Самостоятельная работа #1: Вывести на графике изменение атмосферного давления за ночь. Т.к. давление изменяется медленно, паузу в коде можно увеличить, это уменьшит требуемое количество сохраняемых данных.

Самостоятельная работа #2: Создать устройство “тревожной сигнализации”, которое будет мигать светодиодом и включать звук, если кто-то сдвинул прибор с места. Для этого при включении устройства стоит запоминать текущее значение акселерометра или компаса, и если значения вышли за заданные пределы, значит устройство было сдвинуто. Также можно предусмотреть отдельную кнопку “сброс” для запоминания новых значений. Разместив такой прибор в компактном корпусе, его можно использовать например, для охраны чемодана.

2.10 Подключаем часы реального времени (RTC)

Мы уже знаем, как подключить к Arduino внешнюю нагрузку через полевой транзистор или реле, как запрограммировать паузы и считывать температуру с внешнего сенсора. Допустим, мы решили сделать полив цветов по расписанию - утром и вечером. Но как Arduino узнает, какое сейчас время суток? Для этого может использоваться специальная микросхема - модуль часов реального времени (Real Time Clock). Данный модуль передает данные по I2C, время хранится в специальной микросхеме DS1307, на плате также есть батарейка, обеспечивающая работу модуля когда питание отключено.

Подключение модуля к Arduino весьма просто.

Для использования модуля, необходимо скачать и установить библиотеку https://github.com/Makuna/Rtc.

Пример использования DS1707 показан ниже.

#include

#include

RtcDS1307 Rtc(Wire);

void setup ()

{

Serial.begin(57600);

Rtc.Begin();

// Если время не было установлено, установить его

if (!Rtc.IsDateTimeValid()) {

RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);

Rtc.SetDateTime(compiled);

}

// Запустить отсчет времени, если не запущен

if (!Rtc.GetIsRunning()) {

Rtc.SetIsRunning(true);

}

// Выход square wave не используется

Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);

}

void loop ()

{

if (!Rtc.IsDateTimeValid()) {

// Ошибка, возможно, пропадание питания при отсутствии батареи

Serial.println("RTC Error!");

return;

}

RtcDateTime now = Rtc.GetDateTime();

Serial.println(now.Year());

Serial.println(now.Month());

Serial.println(now.Day());

Serial.println(now.Hour());

Serial.println(now.Minute());

Serial.println(now.Second());

Serial.println();

// 10с пауза

delay(10000);

}

Код довольно-таки прост. Если часы DS1307 не установлены (функция IsDateTimeValid возвращает FALSE), то они устанавливаются с помощью констант __DATE__ и __TIME__ - они содержат время компиляции программы. Таким образом, при первом запуске в таймер будет автоматически занесено текущее время. Затем с помощью функции GetDateTime мы получаем время и дату, из которой можно узнать год, месяц, день, часы, минуты и секунды.

Теперь, загрузив программу в Arduino, мы можем отключить устройство. При последующем включении программа всегда будет “знать” текущее время.

Самостоятельная работа #1: сделать “вечернее освещение” с помощью Arduino и таймера, например, настроить зажигание светодиода с 23 вечера до 7 часов утра.

Самостоятельная работа #2: сделать “настольный будильник”, подключив к Arduino модуль RTC, “пищалку” и кнопку. Задать в коде срабатывание будильника в определенный час и минуту, кнопку использовать для остановки звучания.

2.11 Подключаем ультразвуковой дальномер HC-SR04

Перейти на страницу:

Похожие книги

GPS: Все, что Вы хотели знать, но боялись спросить
GPS: Все, что Вы хотели знать, но боялись спросить

Определение своего положения с помощью GPS навигатора, отдельного прибора, или устройства, встроенного в карманный компьютер или сотовый телефон, уже стало совершенно обычной вещью.Постепенно столь же привычным становится определение положения объекта с помощью систем телематики на основе GPS/GSM/GPRS, когда на мониторе компьютера или экранчике сотового телефона можно увидеть участок карты с отметкой, где находится другой человек или его автомобиль.«GPS» — это первые буквы английских слов «Global Positioning System» — глобальная система местоопределения. GPS состоит из 24 искуственных спутников Земли, сети наземных станций слежения за ними и неограниченного количества пользовательских приемников-вычислителей. «GPS» предзначенна для определения текущих координат пользователя на поверхности Земли или в околоземном пространстве.По радиосигналам спутников GPS-приемники пользователей устойчиво и точно определют текущие координаты местоположения. Погрешности не превышают десятков метров. Этого вполне достаточно для решения задач НАВИГАЦИИ подвижных объектов (самолеты, корабли, космические аппараты, автомобили и т.д.).Как и многие многоцелевые вещи в нашем быту, приемник системы глобального позиционирования (GPS) по мере знакомства с ним обнаруживает массу полезных свойств, даже сверх тех, для которых он был приобретен первоначально. Оказывается существует много любопытных вопросов, на который он с легкостью отвечает, — например, какую скорость вы развиваете при ходьбе, какое расстояние вы преодолеваете при занятии бегом и с какой максимальной и средней скоростью, какую скорость вы развили, спускаясь с горы на лыжах, насколько точен спидометр вашего автомобиля и т. д. Однако основное его назначение — определение координат.

Б. К. Леонтьев , Борис Константинович Леонтьев

Компьютерное 'железо' (аппаратное обеспечение), цифровая обработка сигналов / Компьютерное «железо» / Книги по IT
Wi-Fi: Все, что Вы хотели знать, но боялись спросить
Wi-Fi: Все, что Вы хотели знать, но боялись спросить

Жизнь современного человека — это движение. Мобильность для нас становится одним из самых важных моментов для работы, для общения, для жизни. Многие из нас сейчас уже не представляют жизнь без сотовых телефонов, которые из средства роскоши превратились в предмет, без которого жизнь современного человека стала просто немыслима. Многие уже оценили все преимущества Bluetooth, GPRS. Эти устройства превратили наши телефоны из средств связи в незаменимых помощников в работе. К сожалению, один из самых главных недостатков этих беспроводных технологий — малый радиус действия и низкая скорость передачи данных, что сейчас становится очень важным фактором для всех нас. Поэтому к нам на помощь приходит активно развивающийся во всем мире и в России стандарт Wi-Fi. Особенно радует, что в крупных городах России, особенно в Москве и Санкт-Петербурге, начинается массовое внедрение беспроводных сетей Wi-Fi в публичных местах (так называемых Hot Spot) — отелях, аэропортах, ресторанах, торговых центрах и кафе.Что же такое Wi-Fi? Очередной мыльный пузырь IT-индустрии, который изо всех сил надувают производители и поставщики телекоммуникационного оборудования или новая технология, призванная в очередной раз изменить наш привычный мир, как это случилось когда-то с появлением Интернет и сотовой связи?

А К Щербаков , А. К. Щербаков

Компьютерное 'железо' (аппаратное обеспечение), цифровая обработка сигналов / Интернет / Компьютерное «железо» / Книги по IT
Аппаратные интерфейсы ПК
Аппаратные интерфейсы ПК

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

Михаил Юрьевич Гук

Компьютерное 'железо' (аппаратное обеспечение), цифровая обработка сигналов