Общие сведения
В этом уроке мы соберём устройство на основе Trema модуля GPS с отображением текущей скорости передвижения или часов реального времени.
Видео
Нам понадобится
- Arduino/Piranha ULTRA
- Battery Shield
- Trema Shield
- Trema модуль GPS
- Set Box XL (конструктор ПВХ)
- Trema-модуль Кнопка
- Четырехразрядный индикатор LED
Подключение
Для удобства подключения мы воспользуемся Trema Shield
Установим Battery Sheild

Установим Trema Shield

Подключим модули

Скетч проекта
Необходимо установить библиотеки
Если Вы не знаете как устанавливать библиотеки в Arduino IDE - Вы можете узнать по этой ссылке
// Подключаем библиотеки
#include <iarduino_4LED.h>
#include <iarduino_GPS_NMEA.h>
#include <iarduino_GPS_ATGM336.h>
#include <Battery_Shield.h>
// Определяем вывод кнопки
#define BUTTON 3
// Инстанцируем объекты библиотек
iarduino_4LED dispLED(4,5);
iarduino_GPS_NMEA gps;
iarduino_GPS_ATGM336 SettingsGPS;
Battery_Shield pwrBank;
// Флаг переключения режима работы
bool mode = false;
// Флаг состояния двоеточия
bool colon = false;
// Время последнего переключения двоеточия
unsigned long colonMillis = 0;
// Время последнего переключения кнопки
unsigned long buttonMillis = 0;
void setup()
{
// Инициируем объект Battery Shield
pwrBank.begin(0.0128f);
// Инициируем последовательный порт
Serial.begin(9600);
// Инициируем работу с модулем GPS
SettingsGPS.begin(Serial1);
// Инициируем интерпретацию строк NMEA
gps.begin(Serial1);
// Устанавливаем часовой пояс
gps.timeZone(3);
// Устанавливаем скорость передачи данных модулем
SettingsGPS.baudrate(9600);
// Указываем, что данные можно получать от спутников GPS и GLONASS
SettingsGPS.system(GPS_GP, GPS_GL);
// Указываем, что нам необходимы только строки с текущей скоростью и временем
SettingsGPS.composition(NMEA_VTG, NMEA_ZDA);
// Устанавливаем режим "Транспортное средство"
SettingsGPS.model(GPS_VEHICLE);
// Указываем частоту обновления
SettingsGPS.updaterate(10);
// Инициируем четырёхразрядный дисплей
dispLED.begin();
}
void loop()
{
// Проверяем состояние кнопки
checkButton();
// Если флаг режим работы установлен
if (mode) {
// Отображаем время
displayTime();
}
// Иначе
else {
// Отображаем скорость
displaySpeed();
}
}
// Функция проверки состояния кнопки
void checkButton()
{
// Если на выводке логическая "1"
if (digitalRead(BUTTON)) {
// Очищаем дисплей
dispLED.clear();
// Устраняем дребезг
if ((millis() - buttonMillis > 100) && digitalRead(BUTTON)) {
// Сохраняем время нажатия
buttonMillis = millis();
// Меняем режим работы
mode = !mode;
}
}
}
// Функция отображения скорости
void displaySpeed()
{
// Считываем данные из модуля
gps.read();
// Если курс ошибочен
if (gps.errCrs) {
// Выводим буку "Е" на дисплей (Error)
dispLED.print("e");
}
// Иначе
else {
// Выключаем двоеточие дисплея
dispLED.point(0, 0);
// Выводим скорость
dispLED.print(gps.speed);
}
}
// Функция отображения времени
void displayTime()
{
// Считываем данные из модуля
gps.read();
// Сохраняем данные в локальные переменные
uint8_t H = gps.Hours;
uint8_t m = gps.minutes;
// Сохраняем флаг ошибки в локальную переменную
bool error = gps.errTim;
// Если время ошибочно
if (error) {
// Выводим символы "E" и "Т" на дисплей (Error Time)
dispLED.print("et");
}
// Если прошла секунда,
if (millis() - colonMillis > 1000) {
// меняем состояние флага двоеточия
colon = !colon;
// Записываем текущее время
colonMillis = millis();
// Если время верно
if (!error)
// Обновляем его на дисплее
dispLED.print(H, m, TIME);
}
// Если флаг двоеточия установлен
if (colon)
// Включаем двоеточие на дисплее
dispLED.point(0, 1);
// Иначе
else
// Выключаем двоеточие на дисплее
dispLED.point(0, 0);
}
Ссылки
Комплект для повторения проекта
Что понадобится
Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.
7 позиций
GPS/GLONASS модуль (Trema-модуль)
Поддерживает GPS (США), Глонасс (Россия) и Beidou (Китай)
Открыть в iArduino
Piranha Ultra R3
Улучшенный аналог Arduino Uno R3 c микроконтроллером ATmega1284P на ядре AVR для разработки электронных устройств на языке C++
Открыть в iArduino
Battery Shield (Li-po, 3200 мА·ч)
Battery Shield
Открыть в iArduino
Trema Shield
Плата расширения для удобного подключения периферийных устройств
Открыть в iArduino
Конструктор ПВХ Чёрный «Корпус Set Box XL»
Корпус из решётчатого конструктора для Arduino с платами Trema Set Shield и Battery Shield
Открыть в iArduino
Кнопка, синяя (Trema-модуль)
Тактовая кнопка, которая может служить источником сигналов (команд) для Ваших проектов
Открыть в iArduino
Четырехразрядный индикатор LED, красный (Trema-модуль)
Яркий индикатор, отлично подойдет для проектов где нужно выводить цифровые значения. Имеет программную регулировку яркости
Открыть в iArduino