Обзор часов реального времени ds1307 (rtc)

Пример использования

Создадим проект часов с выводом данных на 4-х разрядный семисегментный дисплей на базе драйвера TM1637.

Нам потребуются следующие компоненты:

Плата прототипирования – 1

Модуль DS3231 – 1

4digit display на базе TM1637 – 1

Схема соединения элементов показана на рис. 6.

Для программирования вывода данных на 4-х разрядный семисегментный дисплей на базе драйвера TM1637 установим в Arduino IDE библиотеку TM1637. Каждые 5 секунд меняем на дисплее отображение:

При отображении показаний текущего времени каждые 0.5 секунды мигаем разделителем типа «двоеточие» между вторым и третьим разрядом. Содержимое скетча показано в листинге 3.

Загружаем скетч на плату Arduino и проверяем работу часов.

Часто задаваемые вопросы

1. Отсутствует получение данных времени с модуля DS3231.

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

2. Данные, получаемые с модуля DS3231, неверные.

Установите правильную дату и время, загрузив код из листинга 2 и отправив из последовательного порт правильные данные.

3. При отключении питания сбивается время и дата.

Установите резервное питание модуля (батарейка CR2032 или литий-ионный аккумулятор LIR2032-3,6 В).

Проверьте напряжение резервного питания (должно быть не менее 2,3 В).

Использование DS3231 для пробуждения Ардуино

Итак, наша задача — перевести Ардуино в режим энергосбережения и периодически просыпаться по будильнику для выполнения каких-то действий. Попробуем, например, мигать встроенным светодиодом при пробуждении Ардуино. Практически всё, что нам для этого нужно, уже есть в приведённом выше скетче. Остаётся лишь добавить переход в режим энергосбережения:

#include <avr/sleep.h>
#include <Wire.h>
#include <DS3231.h>

DS3231 clock;

void alarmFunction() {
  
}

void setup() {
  
  clock.begin();
  clock.enableOutput(false); 
  clock.armAlarm1(false);    
  clock.armAlarm2(false);
  clock.clearAlarm1();       
  clock.clearAlarm2();

  
  clock.setAlarm1(, , , 10, DS3231_MATCH_S); 

  
  pinMode(2, INPUT_PULLUP); 
  attachInterrupt(, alarmFunction, FALLING); 

  pinMode(13, OUTPUT); 
  ADCSRA &= ~(1 << ADEN); 
}

void loop() {
  
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  noInterrupts();
  sleep_enable();
  MCUCR = bit (BODS) | bit (BODSE);
  MCUCR = bit (BODS);
  interrupts();
  sleep_cpu();

  
  sleep_disable();
  
  
  if (clock.isAlarm1()) {
    
    clock.clearAlarm1(); 
    
    digitalWrite(13, HIGH);
    delay(2000);
    digitalWrite(13, LOW);
    
  }
}

В данном примере будильник 1 устанавливается на срабатывание в 10 секунд каждой минуты, после чего Ардуино переводится в режим энергосбережения. Доступные для Ардуино (ATmega328P) режимы энергосбережения, а также события, пробуждающие микроконтроллер, я приводил в статье Режимы энергосбережения Ардуино. Проснувшись, не лишним будет проверить флаг будильника, чтобы убедиться, что именно он нас разбудил. Если флаг будильника 1 установлен, то можем выполнять наш код, в данном случае — включение и выключение светодиода.

Будильник не обязательно должен настраиваться единожды, как в приведённых выше скетчах. Его можно менять хоть при каждом срабатывании. Так можно добиться пробуждения Ардуино через определённый интервал времени. Например, чтобы будильник срабатывал каждые 10 минут, его нужно выставлять при каждом пробуждении на текущее время + 10 минут. Это потребует минимальных изменений приведённого выше скетча:

    ...
    
    clock.clearAlarm1(); 
    RTCDateTime dt = clock.getDateTime(); 
    clock.setAlarm1(, , (dt.minute + 10) % 60, dt.second, DS3231_MATCH_M_S); 
    ...

Как подключить DS1302 к Arduino (RTC)

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль DS1302, DS1307 или DS3231;
  • LCD монитор 1602 i2c;
  • провода «папа-мама».


DS1307 схема подключения к Ардуино Уно

Модули часов DS1307 и DS3231 подключаются к плате Ардуино через I2C протокол, как LCD дисплей I2C. Контакт SDA подключается к пину A4, контакт SCL к пину A5 Ардуино Уно. При подключении данных модулей к плате Arduino Mega следует использовать порты SDA (20 пин) и SCL (21 пин). При этом в скетче необходимо снять комментарий в строчке с нужным модулем, а строчку с модулем 1302 наоборот закомментировать.

Скетч. Работа с модулем ds3231 Ардуино DS1307

#include <iarduino_RTC.h>

iarduino_RTC time(RTC_DS1302,6,8,7);  // для модуля DS1302 - RST, CLK, DAT
// iarduino_RTC time(RTC_DS1307);       // для модуля DS1307 с i2C
// iarduino_RTC timeRTC_DS3231);        // для модуля DS3231 с i2C

void setup() {
   delay(300);
   Serial.begin(9600);
   time.begin();
   time.settime(0, 30, 18, 12, 6, 20, 5); // 0  сек, 30 мин, 18 часов, 12, июня, 2020, четверг
}

void loop() {
   // если прошла 1 секунда выводим время
   if (millis() % 1000 == 0) {
      Serial.println(time.gettime("d-m-Y, H:i:s, D"));
      delay(1);
   }
}

Пояснения к коду:

  1. для работы с программой необходимо скачать библиотеку iarduino_RTC.h.
  2. с помощью команды можно установить дату и время, которые будут выводится на монитор порта Arduino IDE каждую секунду.

Проблемы

Да, этот код рабочий, и часы будут идти. Однако, если отключить питание, а через несколько минут включить, то после включения время время вновь станет тем, которое было при компиляции.

Это происходит потому что после включения питания, вновь исполняется код, находящийся в функции . А он записывает в часы реального времени старое значение времени.

Чтобы этого избежать, нам необходимо еще чуть-чуть модифицировать код. Каждый раз в функции будет происходить подсчет «хэша» времени компиляции — будет рассчитываться количество секунд, прошедшее с 00:00:00 до времени компиляции. И этот хэш будет сравниваться с хэшем в EEPROM. Напомним EEPROM — память, которая не обнуляется при отключении питания.

Если значения посчитанного и сохранённого ранее хэша совпадают, то это значит, что перезаписывать время в модуль часов нет необходимости: это уже было сделано. А вот если эта проверка не проходит, то происходит перезапись времени в RTC.

Для записи/чтения числа типа в/из EEPROM написаны две дополнительные функции и . Они добавлены потому что функции и могуть читать и писать только данные типа .

rtc-eeprom.ino
#include <Wire.h>
#include <EEPROM.h>
#include "TM1637.h"
#include "DS1307.h"
 
//Массив, содержащий время компиляции
char compileTime = __TIME__;
 
//Номера пинов Arduino, к которым подключается индикатор
#define DISPLAY_CLK_PIN 12  
#define DISPLAY_DIO_PIN 13
 
//Для работы с микросхемой часов и индикатором мы используем библиотеки
TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
DS1307 clock;
 
 
void setup()
{
 
  //Включаем и настраиваем индикатор
  display.set();
  display.init();
 
  //Запускаем часы реального времени
  clock.begin();
 
  //Получаем число из строки, зная номер первого символа
  byte hour = getInt(compileTime, );
  byte minute = getInt(compileTime, 3);
  byte second = getInt(compileTime, 6);
 
  //Импровизированный хэш времени
  //Содержит в себе количество секунд с начала дня
  unsigned int hash =  hour * 60 * 60 + minute  * 60 + second; 
 
  //Проверяем несовпадение нового хэша с хэшем в EEPROM
  if (EEPROMReadInt() != hash) {
 
    //Сохраняем новый хэш
    EEPROMWriteInt(, hash);
 
    //Готовим для записи в RTC часы, минуты, секунды
    clock.fillByHMS(hour, minute, second);
 
    //Записываем эти данные во внутреннюю память часов.
    //С этого момента они начинают считать нужное для нас время
    clock.setTime();
  }
 
}
 
 
void loop()
{
  //Значения для отображения на каждом из 4 разрядов
  int8_t timeDisp4;
 
  //Запрашиваем время с часов
  clock.getTime();
 
  //Получаем десятки часов с помощью целочисленного деления
  timeDisp = clock.hour  10;
 
  //Получаем единицы часов с помощью остатка от деления
  timeDisp1 = clock.hour % 10;
 
  //Проделываем то же самое с минутами
  timeDisp2 = clock.minute  10;
  timeDisp3 = clock.minute % 10;
 
  //... а затем выводим его на экран
  display.display(timeDisp);
 
  //у нас нет отдельных разрядов для секунд, поэтому
  //будем включать и выключать двоеточие каждую секунду
  display.point(clock.second % 2 ? POINT_ON  POINT_OFF);
 
}
 
char getInt(const char* string, int startIndex) {
  return int(stringstartIndex - '0') * 10 + int(stringstartIndex+1) - '0';
}
 
//Запись двухбайтового числа в память
void EEPROMWriteInt(int address, int value)
{
  EEPROM.write(address, lowByte(value));
  EEPROM.write(address + 1, highByte(value));
}
 
//Чтение числа из памяти
unsigned int EEPROMReadInt(int address)
{
  byte lowByte = EEPROM.read(address);
  byte highByte = EEPROM.read(address + 1);
 
  return (highByte << 8) | lowByte;
}

Подключение модуля MP1095 к Arduino

Для подключения к Arduino Mega 2560 различных устройств и датчиков я использую шилд под названием MEGA Sensor. И для использования шины I2C на нем выведены отдельные пины. Очень удобно, надо сказать.

На плате Arduino Mega дополнительные пины шины I2C соответствуют аналоговым выводам 20 и 21 (тоже самое справедливо и для Arduino Due). Для Arduino Uno это выводы 4 и 5, 2 и 3 в случае Arduino Leonardo. Ориентироваться нужно на названия пинов SDA и SCL.

  • VDD используется для питания микросхемы RTC для получения с него временных данных. Если напряжение +5 В отсутствует, микросхема переходит в спящий режим для сохранения и отсчета времени.
  • GND — земля (общий провод)
  • SCL — тактирующий вывод I2C интерфейса (нужен для коммуникации с часами реального времени)
  • SDA — вывод данных I2C интерфейса (нужен для коммуникации с RTC)
  • SQW (на некоторых аналогичных модулях RTC) — дополнительный выход прямоугольного сигнала частотой 32768 Гц. В большинстве случаев не используется.

Подключите аналоговый 20 пин Arduino Mega (аналоговый 4 пин для других плат Arduino) к выводу SDA модуля и 21 пин (5 — для других плат) к выводу SCL.  

Отличительные особенности DS3231

  • Точность ±2 ppm в диапазоне температур от 0°C до +40°C
  • Точность ±3.5 ppm в диапазоне температур от-40°C до +85°C
  • Вход для подключения автономного источника питания, позволяющего обеспечить непрерывную работу
  • Рабочий температурный диапазонкоммерческий: от 0°C до +70°C
  • индустриальный: -от 40°C до +85°C
  • Низкое потребление
  • Часы реального времени, отсчитывающие секунды, минуты, часы, дни недели, дни месяца, месяц и год с коррекцией високосного года вплоть до 2100
  • Два ежедневных будильника
  • Выход прямоугольного сигнала с программируемой частотой
  • Быстродействующие (400 кГц) I2C интерфейс
  • 3.3 В питание
  • Цифровой температурный датчик с точностью измерения ±3°C
  • Регистр, содержащий данные о необходимой подстройке
  • Вход/выход сброса nonRST

Модуль DS1307

DS1307 – это модуль, который используется для отсчета времени. Он собран на основе микросхемы DS1307ZN, питание поступает от литиевой батарейки для реализации автономной работы в течение длительного промежутка времени. Батарея на плате крепится на обратной стороне. На модуле имеется микросхема AT24C32 – это энергонезависимая память EEPROM на 32 Кбайт. Обе микросхемы связаны между собой шиной I2C. DS1307 обладает низким энергопотреблением и содержит часы и календарь по 2100 год.

Модуль обладает следующими параметрами:

  • Питание – 5В;
  • Диапазон рабочих температур от -40С до 85С;
  • 56 байт памяти;
  • Литиевая батарейка LIR2032;
  • Реализует 12-ти и 24-х часовые режимы;
  • Поддержка интерфейса I2C.

Модуль оправдано использовать в случаях, когда данные считываются довольно редко, с интервалом в неделю и более. Это позволяет экономить на питании, так как при бесперебойном использовании придется больше тратить напряжения, даже при наличии батарейки. Наличие памяти позволяет регистрировать различные параметры (например, измерение температуры) и считывать полученную информацию из модуля.

Взаимодействие с другими устройствами и обмен с ними информацией производится с помощью интерфейса I2C с контактов SCL и SDA. В схеме установлены резисторы, которые позволяют обеспечивать необходимый уровень сигнала. Также на плате имеется специальное место для крепления датчика температуры DS18B20.Контакты распределены в 2 группы, шаг 2,54 мм. В первой группе контактов находятся следующие выводы:

  • DS – вывод для датчика DS18B20;
  • SCL – линия тактирования;
  • SDA – линия данных;
  • VCC – 5В;

Во второй группе контактов находятся:

  • SQ – 1 МГц;
  • BAT – вход для литиевой батареи.

Для подключения к плате Ардуино нужны сама плата (в данном случае рассматривается Arduino Uno), модуль часов реального времени RTC DS1307, провода и USB кабель.

Чтобы подключить контроллер к Ардуино, используются 4 пина – VCC, земля, SCL, SDA.. VCC с часов подключается к 5В на Ардуино, земля с часов – к земле с Ардуино, SDA – А4, SCL – А5.

Для начала работы с модулем часов нужно установить библиотеки DS1307RTC, TimeLib и Wire. Можно использовать для работы и RTCLib.

Проверка RTC модуля

При запуске первого кода программа будет считывать данные с модуля раз в секунду. Сначала можно посмотреть, как поведет себя программа, если достать из модуля батарейку и заменить на другую, пока плата Ардуино не присоединена к компьютеру. Нужно подождать несколько секунд и вытащить батарею, в итоге часы перезагрузятся. Затем нужно выбрать пример в меню Examples→RTClib→ds1307

Важно правильно поставить скорость передачи на 57600 bps

При открытии окна серийного монитора должны появиться следующие строки:

Будет показывать время 0:0:0. Это связано с тем, что в часах пропадает питание, и отсчет времени прекратится. По этой причине нельзя вытаскивать батарею во время работы модуля.

Чтобы провести настройку времени на модуле, нужно в скетче найти строку

RTC.adjust(DateTime(__DATE__, __TIME__));

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

Настройка произведена корректно и дополнительно перенастраивать часы реального времени не придется.

Считывание времени. Как только модуль настроен, можно отправлять запросы на получение времени. Для этого используется функция now(), возвращающая объект DateTime, который содержит информацию о времени и дате. Существует ряд библиотек, которые используются для считывания времени. Например, RTC.year() и RTC.hour() – они отдельно получают информацию о годе и часе. При работе с ними может возникнуть проблема: например, запрос на вывод времени будет сделан в 1:19:59. Прежде чем показать время 1:20:00, часы выведут время 1:19:00, то есть, по сути, будет потеряна одна минута. Поэтому эти библиотеки целесообразно использовать в случаях, когда считывание происходит нечасто – раз в несколько дней. Существуют и другие функции для вызова времени, но если нужно уменьшить или избежать погрешностей, лучше использовать now() и из нее уже вытаскивать необходимые показания.

Способ 2: чтение датчика DS18B20 по адресу

Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.

Поиск адресов датчиков DS18B20s на шине

Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.

Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.

Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:

Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине

Скопируйте все адреса, так как они нам понадобятся в следующем скетче.

Чтение показаний датчиков DS18B20 по адресу

Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.

Вывод вышеприведенного эскиза выглядит так

Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса

Объяснение кода

Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки .

Далее мы вводим адреса, которые были найдены ранее для каждого датчика температуры. В нашем случае имеем следующее.

Во фрагменте настройки мы инициализируем библиотеку путем вызова функции и инициализируем последовательную связь с ПК.

В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию .

Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию , для которой передается в качестве параметра.

Вышеприведенная функция просто вызывает библиотечные функции для отображения температуры в градусах Цельсия и для отображения температуры в градусах Фаренгейта.

——————– WHERE TO BUY ——————–

1. DS1302: https://educ8s.tv/part/DS1302

2. Nokia 5110 LCD: https://educ8s.tv/part/NOKIA5110

3. Arduino Uno: https://educ8s.tv/part/ArduinoUno

4. Small Breadboard: https://educ8s.tv/part/SmallBreadboard

5. Wires: https://educ8s.tv/part/Wires

Full disclosure: All of the links above are affiliate links. I get a small percentage of each sale they generate. Thank you for your support!

We have to connect 5 pins in order to make it work. The first pin of the module is named Vcc. VCC goes Arduino 5 Volts. The second pin is Ground. Ground goes to Arduino Ground. The third pin is Clock and we connect it to digital pin 7 of the Arduino. The fourth pin is named DAT from Data and we connect it to digital pin 6 of the Arduino. The fifth pin is named RST. We connect RST at digital pin 5 of Arduino. Of course, you can attach those pins at any digital pin you like but then you will have to change them in the code as well. In order to see how to connect the Nokia 5110 LCD display check out the tutorial that we have prepared for that.

Модули часов реального времени в проектах Arduino

Модуль часов представляет собой небольшую плату, содержащей, как правило, одну из микросхем DS1307, DS1302, DS3231.Кроме этого, на плате практически можно найти механизм установки батарейки питания. Такие платы часто  применяется для учета времени, даты, дня недели и других хронометрических параметров. Модули работают от автономного питания – батареек, аккумуляторов, и продолжают проводить отсчет, даже если на Ардуино отключилось питание. Наиболее распространенными моделями часов являются DS1302, DS1307, DS3231. Они основаны на подключаемом к Arduino модуле RTC (часы реального времени).

Часы ведут отсчет в единицах, которые удобны обычному человеку – минуты, часы, дни недели и другие, в отличие от обычных счетчиков и тактовых генераторов, которые считывают «тики». В Ардуино имеется специальная функция millis(), которая также может считывать различные временные интервалы. Но основным недостатком этой функции является сбрасывание в ноль при включении таймера. С ее помощью можно считать только время, установить дату или день недели невозможно. Для решения этой проблемы и используются модули часов реального времени.

Электронная схема включает в себя микросхему, источник питания, кварцевый резонатор и резисторы. Кварцевый резонатор работает на частоте 32768 Гц, которая является удобной для обычного двоичного счетчика. В схеме DS3231 имеется встроенный кварц и термостабилизация, которые позволяют получить значения высокой точности.

Питание плат Arduino

Перед рассмотрением способов снижения электроэнергии стоит отметить, что энергоэффективность устройства повышается с понижением питающего напряжения. Большинство плат Arduino поддерживают входное напряжение до 12В, при этом сам микроконтроллер питается напряжением 5В. Таким образом, учитывая, что в большинстве плат Arduino установлены линейные регуляторы напряжения, получается, что при питании платы напряжением больше 5В, значительная часть мощности будет рассеиваться в тепло.

Пример потребления электроэнергии платой Arduino Mini Pro:

Питающее напряжение, В Ток, мА Потребляемая мощность, мВт
9 42 378
5 22 110
3.3 8 26.4

На нашем сайте вы можете найти описание схем энергопитания для плат Arduino Uno, Nano, Mega и Leonardo.

В рамках данной темы мы рассмотрим 4 основных метода снижения энергопотребления:

  • использование режимов энергосбережения;
  • использование библиотеки Narcoleptic;
  • выключение компонентов микроконтроллера;
  • снижение тактовой частоты;

Обзор программ для работы с GPS на компьютере

U-Center

Ссылка на скачивание – https://www.u-blox.com/en/product/u-center-windows

Программа u-center используется для работы с GNSS-проемниками от фирмы U-Blox. С помощью этого программного обеспечения можно тестировать точность позиционирования, изменять конфигурацию ресивера и проводить общую диагностику, обрабатывать полученные данные и отображать их в режиме реального времени. Координаты приемник получает с помощью GPS, ГЛОНАСС.  Полученную информацию можно экспортировать и показывать в картах Google Maps, Google Earth. Программа позволяет создавать двухмерные диаграммы, гистограммы и другие виды графиков. u-center можно использовать при работе с несколькими приемниками.

Возможности программного обеспечения U-Center:

  • Работа с Windows;
  • Чтение NMEA , SiRF данных, UBX;
  • Вывод полученных данных в виде текста и графиков;
  • Запись данных, и воспроизведение;
  • Полное управление модулем GPS;
  • Возможность изменения конфигурации GPS-модуля;
  • Запись новой конфигурации в модуль;
  • Запись конфигурации в файл формата .txt;
  • Обновление прошивки модуля;
  • Возможность холодного, теплого и горячего старта модуля.

Программа позволяет оценивать работоспособность приемника, анализировать его быстродействие и устанавливать его настройки. Помимо U-Center могут использоваться и другие программы, например, Visual GPS, Time Tools GPS Clock и другие.

Visual GPS

Ссылка на скачивание http://www.visualgps.net/VisualGPS/download.htm

Эта программа используется для отображения GPS данных по протоколу NMEA 0183 в графическом виде. Программа позволяет записывать лог GPS данных в файл. Существует два режима работы в программе – в первом Visual GPS связывается с приемником GPS, а во втором Visual GPS считывает показания NMEA из файла. Программа имеет 4 основных окна – Signal Quality (качество сигнала), Navigation (навигация), Survey (исследование), Azimuth and Elevation (азимут и высота).

Time Tools GPS Clock

Ссылка на скачивание https://softadvice.informer.com/Time_Tools_Gps_Clock.html

Эта программа работает на Windows и любых рабочих станциях, она проверяет время со стандартного приемника времени NMEA GPS, который подключен к компьютеру, и позволяет синхронизировать время на ПК. Отображается информация о времени, дате, состоянии GPS, полученная от приемника. Недостатком программы является невозможность высокоточного определения времени, так как GPS-устройства не имеют секундного импульса  для последовательного порта компьютера.

GPS TrimbleStudio

Ссылка на скачивание http://softwaretopic.informer.com/trimble-gps-studio/

Программное обеспечение используется для работы с приемником Copernicus в Windows. Программа отображает принимаемые навигационные данные. Полученные координаты можно отобрать на картах Google Maps, Microsoft Visual Earth. Все установленные настройки приемника можно сохранить в конфигурационном файле

Fugawi

Ссылка на скачивание http://www.fugawi.com/web/products/fugawi_global_navigator.htm

Программа используется для планирования маршрута, GPS навигации в реальном времени. Программа позволяет записывать и сохранять маршруты и путевые точки на картах. Навигация производится как на суше, так и на воде и в воздухе. В программе используются различные виды цифровых карт – топографические карты, стандарты NOAA RNC, отсканированные копии бумажных карт, Fugawi Street Maps.

3D World Map

Ссылка на скачивание www.3dwamp.com

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

Arduino для детей

Принято считать, что Arduino довольно сложен для детей средней школы, но это не так! Сегодня есть огромное количество инструментов и технологий, позволяющих без проблем преподавать ардуино на кружках робототехники даже самых маленьких! На нашем сайте вы можете найти уроки Ардуино, помогающие сделать первые шаги в электронике, программировании и робототехнике.

https://youtube.com/watch?v=XdDgO0hEjGg

Arduino – это целый мир, в котором можно почувствовать себя волшебником. Лучший инструмент для приобщения детей к технологиям и вдохновленного инженерного творчества! Для обучения детей электронике вы можете использовать как отдельные контроллеры Arduino Uno, Mega или Nano, а также наборы и конструкторы ардуино российских и китайских производителей. Обучение детей программированию Ардуино возможно с использованием среды программирования Arduino IDE или же в визуальных средах ArduBlock, S4A, mBlock, основанных на Scratch.

Работа схемы

Схема устройства представлена на следующем рисунке.

Плата Arduino управляет всеми процессами на этой схеме: она принимает данные от GPS модуля, извлекает дату и время из строки $GPRMC и показывает их на экране ЖК дисплея.

Контакты данных ЖК дисплея D4, D5, D6, D7 подсоединены к контактам 5, 4 , 3, 2 Arduino, а контакты управления ЖК дисплея RS и EN подсоединены к контактам 7 и 6 Arduino. Контакт передачи Tx GPS модуля подсоединен к контакту Rx (pin 10) платы Arduino (мы этот контакт сделаем входом последовательного порта с помощью соответствующей бибблиотеки). Контакты земли GPS модуля и платы Arduino соединены вместе. В данной схеме мы использовали GPS модуль SKG13BL, функционирующий на скорости 9800 бод/с, плату Arduino (ее последовательный порт) также можно сконфигурировать на работу со скоростью 9800 бод/с с помощью команды “Serial.begin(9800)”.

Функции кнопок

На LCD шилде кнопки подписаны (смотрите на фото). Первые пять из шести доступных кнопок (button) были запрограммированы следующим образом:

Кнопка #1 (подписана SELECT) — это кнопка Menu. Эта кнопка отвечает за отображение листаемого списка доступных функций (таймер, установка будильника).

Кнопка #2 (подписана LEFT) — кнопка Select. Служит для выбора функции. Примечание: также используется для инкремента на 10 , когда выбраны часы, минуты и т.п.

Кнопки #3 и 4 (подписаны UP и DOWN) — кнопки Increment и Decrement (инкремент и декремент). Используются для уменьшения и увеличения часов и минут при настройке таймера или будильника. Используются также для переключения между временами суток AM и PM.

Кнопка #5 (подписана RIGHT) — GO! Используется для принятия выбранного значения (например, настроенных минут или часов).

Кнопка #6 (отмечена RST) — Reset, которая перезагружает наш Arduino.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Заключение

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

— Часы реального времени. Часто встречается в KIT наборах компонентов для Arduino (arduino starter kit).