Рубрики
Схемы на MSP430

Система отслеживания автомобилей на MSP430G2 и модулях GPS и GSM

В предыдущих статьях на нашем сайте мы уже рассматривали создание системы определения местоположения автомобиля на основе платы Arduino, GSM и GPS и отслеживание местоположения автомобиля на Google Maps с помощью Arduino. Также мы рассматривали систему предупреждения об авариях автомобиля на основе Arduino и акселерометра. В этой же статье мы постараемся объединить эти три проекта на основе платы MSP430G2 launchpad, GPS модуля и датчика вибрации, который будет использоваться для обнаружения аварии автомобиля.

Модуль датчика вибрации будет обнаруживать вибрацию автомобиля и передавать соответствующий сигнал на плату MSP430G2 Launchpad. Затем плата MSP430G2 будет считывать информацию с GPS модуля, обрабатывать ее и передавать на мобильный телефон пользователя с помощью GSM модуля. Также при обнаружении аварии автомобиля будет загораться светодиод. Местоположение аварии будет передаваться пользователю в виде ссылки на Google Map с указанием широты и долготы места аварии, полученных с GPS модуля. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Необходимые компоненты

  1. Плата MSP430G2 LaunchPad (купить на AliExpress).
  2. GSM модуль SIM900 (купить на AliExpress).
  3. GPS модуль Ublox NEO-6M (купить на AliExpress).
  4. Модуль датчика вибрации (купить на AliExpress).
  5. ЖК дисплей 16х2 (купить на AliExpress).
  6. Потенциометр 10 кОм (купить на AliExpress).
  7. Макетная или перфорированная плата.
  8. Соединительные провода.
  9. Светодиод.
  10. Источники питания 3.3v, 5v и 12v.

Основные принципы работы с GPS модулем

GPS представляет собой глобальную систему навигации и определения положения (Global Positioning System) и используется для определения широты и долготы точки земного шара, а также определения всеобщего скоординированного времени (Universal Time Coordinated, UTC time). GPS модуль в нашем проекте будет использоваться для определения местоположения произошедшей аварии автомобиля. Он будет получать со спутников GPS каждую секунду координаты, время и дату. Он передает много различных строк, мы для извлечения необходимой нам информации будем использовать строку $GPGGA. Ранее на нашем сайте мы уже рассматривали извлечение координат из данной строки в аналогичном проекте на основе платы Arduino.

GPS передает данные, идентифицирующие местоположение, в реальном времени. Но вместе с этими данными он передает и очень много других данных в формате NMEA – смотрите приведенный ниже рисунок. NMEA содержит несколько строк (предложений) – нам из всей этой совокупности данных будет нужна всего лишь одна строка. Эта строка начинается с $GPGGA и содержит координаты, время и другую полезную информацию. Эти данные относятся к фиксированным данным глобального позиционирования (Global Positioning System Fix Data).

Мы можем извлечь нужные нам данные из строки $GPGGA при помощи подсчета запятых в строке. К примеру, если вы нашли строку $GPGGA и сохранили ее в массиве, то широта может быть найдена в нем после двух запятых, а долгота – после четырех запятых. После извлечения значения широты и долготы можно поместить в другие массивы.

Приведем пример $GPGGA строки с расшифровкой:

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47

$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data

В следующей таблице представлен перевод (описание) этих данных GPS.

Идентификатор Описание
$GPGGA Фиксированные данные системы глобального позиционирования
HHMMSS.SSS Время в формате: час минута секунда и миллисекунда
Latitude Широта (координата)
N Направление: N=North (север), S=South (юг)
Longitude Долгота (координата)
E Направление: E= East (восток), W=West (запад)
FQ Данные фиксированного качества (Fix Quality Data)
NOS Номер использованного спутника
HPD Фактор снижения точности при определении положения в горизонтальной плоскости (Horizontal Dilution of Precision)
Altitude Высота над уровнем моря
M Meter (метр)
Height Height (высота)
Checksum Данные контрольной суммы

Как видите, информации в строке $GPGGA достаточно много.

GSM модуль

SIM900 представляет собой GSM/GPRS модуль, способный работать в четырех диапазонах частот: 850/900/1800/1900MHz. Находит широкое применение среди энтузиастов электроники. Способен передавать голос, данные, SMS и отличается малым энергопотреблением.

Особенности модуля SIM900:

  • построен на однокристальном процессоре с интегрированным ядром AMR926EJ-S;
  • отличается малым размером;
  • поддерживает технологии GSM/GPRS;
  • способен работать в 4-х диапазонах частот.

Для использования GSM модулем используются AT команды.

С примерами использования подобных команд для управления GSM модулем вы можете ознакомиться в проектах по следующей ссылке. Для теста GSM модуля мы отправляем ему AT команду. Если с модулем все нормально, он нам ответит OK. Далее приведены некоторые из наиболее часто используемых AT команд.

ATE0 For echo off – отключение режима «эхо», то есть чтобы модуль не повторял в ответ команды, которые мы ему передаем
AT+CNMI=2,2,0,0,0 <ENTER> включение режима автоматического приема команд
ATD<Mobile Number>; <ENTER> осуществление вызова (ATD+919610126059;\r\n)
AT+CMGF=1 <ENTER> выбор текстового режима
AT+CMGS=”Mobile Number” <ENTER> назначение мобильного номера адресата
>>После этого мы можем писать наше сообщение
>>После написания сообщения
Ctrl+Z передаем команду сообщения (26 в десятичном формате).
ENTER=0x0d in HEX

Модуль датчика вибрации

В нашей системе обнаружения аварий автомобилей мы будем использовать модуль датчика вибрации, который будет обнаруживать вибрации и неожиданные «движения». На выходе датчика вибрации может использоваться логика HIGH или LOW в зависимости от типа данного модуля. В нашем проекте мы будем использовать датчик вибрации с выходной логикой HIGH. То есть всегда, когда данный датчик будет обнаруживать вибрацию, он будет подавать уровень HIGH на вход микроконтроллера.

Схема проекта

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

В данной схеме передающий контакт (Tx pin) GPS модуля непосредственно подключен к цифровому контакту P1_1 платы MSP430G2 Launchpad. Для питания GPS модуля используется напряжение 5v. С помощью библиотеки Software Serial мы будем использовать последовательную связь на контактах P_6 и P1_7 платы, то есть делать их контакты Rx и Tx – их мы будем использовать для связи с GSM модулем. Для питания GSM модуля будет использоваться напряжение 12 В.

Датчик вибрации подключен к контакту P1_3 платы. Для сигнализации об авариях в нашем проекте также используется светодиод.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Для написания программы мы будем использовать среду Energia IDE, которая фактически является аналогом Arduino IDE.

Первым делом в коде программы подключим необходимые библиотеки и объявим используемые переменные.

Функция SensorRead будет использоваться для считывания сигнала с датчика вибрации, она будет фильтровать незначительные и ложные вибрации.

В функции void loop() мы будем считывать сигнал с датчика вибрации, вызывать функцию gpsEvent() для считывания GPS координат и функцию Send() для передачи SMS с помощью GSM модуля.

Функция gpsEvent() используется для считывания GPS строки с GPS модуля, извлечения из нее координат и преобразования их в десятичный формат.

И, наконец, функция Send() используется для передачи SMS на указанный номер пользователя.

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *