Дипломная (вкр): Разработка блока управления шлагбаумом с использованием сетей мобильной связи GSM

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Easy Scan - получение информации об окружающих базовых станциях без подключения SIM-карты;

PING - проверка доступности адреса в Internet посредством обмена ICMP пакетами.

Прошивка с поддержкой технологии Embedded AT позволяет записывать в память модуля и исполнять пользовательский код, написанный на языке С.

.5 Wi-Fi модуль

В качестве Wi-Fi модуля приёмо-передачи данных используется модуль HLK-RM04 (рис. 4).

Рисунок 4.4. Модуль HLK-RM04.

RM04 - это новый недорогой встраиваемый UART-Ethernet-WiFi модуль, разработанный компанией Shenzhen Hi-Link Electronic co., Ltd. Модуль поддерживает последовательный интерфейс, стек протоколов TCP/IP, сеть Ethernet, беспроводные сети (Wi-Fi). Основная особенность - любые обычные устройства, работающие с последовательным портом, могут передавать данные через HLK-RM04 в сеть Интернет без какой-либо дополнительной настройки. Также, обеспечивает простое и быстрое решение для передачи данных с пользовательских последовательных устройств в сети Ethernet.

Особенности:

совместимость с 802.11b/g/n 2,4ГГц;

поддержка 802.3 и 802.3u;

Wi-Fi: клиентский режим, режим точки доступа (WAP), режим роутера;

поддержка WPS/WDS;

диапазон скоростей передачи данных: 1200~500000 бит/c;

поддержка прозрачного режима передачи;

поддержка множества механизмов обеспечения безопасности при аутентификации:

o     WEP64/WEP128/ TKIP/ AES

o     WEP/WPA-PSK/WPA2-PSK;

- поддержка беспроводного роуминга;

поддержка множества сетевых протоколов:

o     PPPOE/TCP/UDP/DDDNS

o     DHCP/DNS/HTTP/Firewire;

распознавание команд AT+

два метода настройки - через последовательный интерфейс или по WEB;

размеры: 29мм*40мм* 8.8мм.

Преимущества:

хорошее решение для WiFi-роутера;

может использоваться во множестве различных продуктов;

сокращает время разработки готовых продуктов;

нет завышенных радиочастотных требований;

совместимость со стандартами CE и FCC (часть 15)

Области применения:

индикаторы состояния WiFi-подключения;

выключатели питания WiFi-устройств;

системы умного дома и автоматизации;

системы беспроводной диагностики (по протоколу OBDII);

системы радиочастотной идентификации;

периферия для игровых устройств;

промышленные системы;

телеметрия;

дистанционное управление.

Электрические характеристики

Примечание

Ток потребление при включенном Wi-Fi

140 мА

Работающий в любом из трех режимов Wi-Fi

Ток при одном включенном разъеме RJ-45

120 мА

Последовательный в RJ45

Ток при двух включенных разъёмах RJ-45

135 мА

Один разъём для LAN, другой для WAN

Работают Wi-Fi и 2 разъёма RJ-45

160 мА

Режим работы по умолчанию

Радиочастотные характеристики

Примечание

Чувствительность приёма

-70 дБм


 

Максимальная мощность передачи

18 дБм/15дБм/13.5 дБм

802.11b/g/n

 

Сопротивление антенны

50 Ом

2.4 - 2.5ГГц

 

VSWR (max)

2:1

2.4 - 2.5ГГц

 

Точность центральной частоты

±25ppm

Дополнительно разрешается ±15ppm

 

Периферия

Примечание

UART

2 шт.

1200-500 Кбит/с

Разъёмы RJ-45 (WAN)

4 шт.

Поддержка PPPOE

Разёемы RJ-45 (LAN)

4 шт.

Поддержка DHCP

Выход 3.3 В

1 шт.

300 мА/3.3В

Выход 1,8 В

1 шт.

300 мА/1,8В

4.6 Источник резервного питания

В качестве источника резервного питания используется литий-ионный аккумулятор повышенной ёмкости TrustFire 18650 (рис. 4.5).

Рисунок 4.5 Аккумулятор TrustFire 18650.

Технические характеристики аккумулятора:

напряжение: 3,7 В;

ёмкость: 2400 мАч;

габариты, мм: 67 х 18,5;

напряжение заряда: 4,2 В.

Защита от перезаряда: есть. Защищённые аккумуляторы TrustFire 18650 / 2400 мАч оригинальный аккумулятор, с фирменной платой защиты, прошедший множество заводских тестов, и на сегодняшний день является лидером продаж среди аккумуляторов Li-ION 18650. Содержат электронную плату контроля внешнего/внутреннего напряжения. Она автоматически отключает зарядку батареи при превышении напряжения 4,20 В, а также при глубокой разрядке элемента (ниже 2,75 В). Кроме того, система контроля убережет TrustFire 18650 от случайного короткого замыкания.

Методика заряда LION аккумуляторов остаётся неизменна. Аккумуляторы Li-ION не любят сильного разряда и максимального заряда. Аккумуляторы 18650 Li-ION не требуют так называемого "разгона". Ими можно пользоваться сразу, достав из упаковки.

Аккумулятор устанавливается на модуле в специальный отсек (рис. 4.6)

Рисунок 4.6. Отсек для Li-ion аккумулятора форм-фактора 18650.

5. Описание функциональной схемы

Функциональная схема блока управления шлагбаумом изображена на плакате №2.

GSM модуль SIM900 подключён к интерфейсу USART2 микроконтроллера. Wi-Fi модуль HLK-RM04 подключён к USART1 микроконтроллера и работает в режиме USART-моста. Bыход данных приёмника XY-MK-5V подключён к порту таймера 4, который работает в режиме захвата и измерения временных интервалов входящего сигнала. Вход данных передатчика FS1000A подключён к выходу таймера 2, который работает в режиме формирования временных интервалов. В качестве памяти для хранения телефонных номеров абонентов используется EEPROM 24С512, имеющая следующие технические характеристики:

- тип организации памяти: 64k x 8 <#"863934.files/image010.jpg">

Рисунок 7.1 Пакет данных с битом синхронизации

Перед посылкой каждого пакета данных передаётся «бит синхронизации», преамбула. Когда передатчик молчит, на выходе приёмника присутствует случайный шум в виде частых случайных переключений «0»/«1». Для начала приёма полезных данных необходимо определить молчание на выходе приёмника - «бит синхронизации».

За битом синхронизации передаются сами данные. Здесь у разных микросхем - разная трактовка. Например, у RT1527 - короткий импульс = бит «0», длинный импульс = бит «1» (рис. 7.2),

Рисунок 7.2 Формат пакета данных микросхемы RT1527

а у SC2272 - последовательность двух коротких = бит «0», последовательность двух длинных = бит «1», последовательность короткого и длинного - бит «F» (рис. 7.3).

Рисунок 7.3 Формат пакета данных микросхемы SC2272

Но в любом случае соотношение времён импульсов имеет закономерность: если принять время короткого импульса за 1t, то при передаче короткого импульса - соотношение импульса и паузы 1t/3t, при передаче длинного импульса - соотношение импульса и паузы 3t/1t. Время передачи «бита синхронизации» будет 32t.

При таком соотношении таймингов в БУШ реализован следующий алгоритм приёма с автоматическим определением «биттайминга»:

ожидание длительности паузы (уровень «0») больше чем 4мс - «бит синхронизации»;

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

после приёма «бита синхронизации» переход в режим принятия всего пакета. Контроллер следит, чтобы импульсы примерно попадали в рассчитанные времена, и учитывает, что за коротким импульсом следует длинная пауза, за длинным импульсом - короткая пауза, после передачи пакета следует «бит синхронизации».

Если при приёме что-то не попало в своё время - сбрасывает приём и возвращается к ожиданию преамбулы.

После успешного приёма принятые биты сохраняются в массив, их количество и временные характеристики.

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

.3 Работа блока управления шлагбаумом в режиме редактирования массива телефонных номеров в памяти

При приходе с терминальной программы команды на чтение EEPROM микроконтроллер через интерфейс USART2 последовательно передает в Wi-Fi модуль содержимое ячеек памяти EEPROM. При этом считываются только те ячейки памяти, которые содержат информацию, пустые ячейки игнорируются (пустыми считаются те ячейки памяти, в которых все 4 байта номера телефона содержат нули). Структура записи телефонных номеров в EEPROM:

Номер телефона 1

Номер телефона 2

Байт1

Байт2

Байт3

Байт4

Байт1

Байт2

Байт3

Байт4

Адр.0

Адр.1

Адр.2

Адр.3

Адр.4

Адр.6

Адр.7


При записи телефонных номеров в память терминальная программа передает в БУШ только измененные номера телефонов вместе с индексами. Это необходимо для сокращения количества циклов перезаписи EEPROM, т.е. увеличения ресурса её работы.

. Описание конструкции блока управления шлагбаумом

Сборочный чертеж БУШ изображен на плакате 5.

Плата с радиоэлектронными компонентами размещается в пластиковом влагозащищенном корпусе. Размер корпуса 156х68х43.6 мм.

На передней панели корпуса имеются индикаторы питания (Power), зарядки аккумулятора, (Charge) режима ожидания (Standby), активности Wi-fi сети (Wi-Fi act), наличия и статуса GSM сети (GSM net и GSM status).

На боковых панелях с одной стороны выведен разъём питания +5В, с другой - антенна сети Wi-Fi.

На корпусе предусмотрены также отверстия для крепления его на стену.

Габариты корпуса позволяют устанавливать БУШ практически в любом удобном месте, в том числе в стойку с автоматикой шлагбаума.

Энергопотребление БУШ не превышает 2А.

9. Описание ПО блока управления шлагбаумом

Управляющая программа для микроконтроллера БУШ написана на языке С++ c использованием среды программирования CooCox IDE для микроконтроллеров ARM Cortex M3.

Главный модуль программы:main (void)

{

u8 i;

//Инициализация тактирования системы

RCC->CR |= 0x00010000; //включение внешнего источника тактирования

while((RCC->CR&0x00020000) == 0); //ждем пока источник тактирования не готов

RCC->CFGR |= 0x001C0200; //умножитель на 9

RCC->CR |= 0x01000000; //включаем блок умножения

while((RCC->CR&0x02000000) == 0); //ждём пока блок умножения не готов

RCC->CFGR |= 0x00000002; //выбираем внешний источник как источник тактирования

while ((RCC->CFGR&0x0000000C) != 0x00000008); //ждём пока источник не запустится

//Инициализация частот тактирования периферии

RCC->APB2ENR |= 0x501D; //AFIO; GPIO A,B,C; USART1 enable

RCC->APB1ENR |= 0x18260002; //TIM3; PWR; BKP; I2C1; USART2, enable>AHBENR |= 0x0001; //DMA1 enable

//Инициализация USART1

//PA9 - USART1_TX - режим AF PP 50

//PA10 - USART1_RX - режим IN FLOATING 50>CRH            &= 0xFFFFFF0F;>CRH              |= 0x000000B0;->BRR                    = 0x0271; //baudrate - 115200(0x0271)->CR1                    = 0x202C; //mode TX and RX, RX interrupt enable, USART1 on->CR3                |= 0x00C0; //USART1 DMA TX and RX enable

//Инициализация USART2

//PA2 - USART2_TX - режим AF PP 50

//PA3 - USART2_RX - режим IN FLOATING 50>CRL                &= 0xFFFFF0FF;>CRL               |= 0x00000B00;->BRR                  = 0x004E; //baudrate - 115200(0x004E)->CR1                   = 0x202C; //mode TX and RX, RX interrupt enable, USART1 on

//Инициализация модуля I2C1 (EEPROM)

//adressing mode 7-bit slave adress, interface adress = 1

//PB7 - I2C1 SDA - режим AF OD 50 (or SD CS)

//PB6 - I2C1 SCL - режим AF OD 50>CRL      &= 0x00FFFFFF;>CRL        |= 0xFF000000;C1->CR2 |= 0x0009;C1->TRISE = 0x10;C1->CCR = 0x002D;C1->OAR1 = 0x4001;

//конфигурирование контроллера прерываний NVIC>ISER[0]           |= 0x2003C048; //Timer 3 interrupt enable,RTC, DMA1 channel 4,5,6,7, exti line 0 interrupt enable>ISER[1]           |= 0x00000160; //USART1, USART2,

//Инициализация контроллера DMA для USART1 TX

DMA1_Channel4->CCR        |= 0x00001092;

//read from memory, memory inc mode, priority medium, TC int enable_Channel4->CPAR = (u32)&(USART1->DR);_Channel4->CMAR = (u32)&TxBuffer;

//Инициализация контроллера USART1 RX DMA init

DMA1_Channel5->CCR        |= 0x00001082;

//read from pheripherial, memory inc mode, priority medium, TC int enable_Channel5->CNDTR = 6;_Channel5->CPAR = (u32)&(USART1->DR);_Channel5->CMAR = (u32)&RxBuffer;

__enable_irq();_CODE = 5;_CPBF();(1);

}

Процедура записи сектора в EEPROM:

void EEPROM_PageWrite(u8 *data, u16 WriteAddr, u16 N_data)

{i;C1->CR1 |= 0x0401; //I2C1 acknowledge enable, I2C1 enable(I2C1->SR2&0x02); //wait while bus busyC1->CR1 |= 0x0100; //send signal START((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00030001) != 0x00030001); //check EV5=0x00030001C1->DR = 0xA0; //send EEPROM adress((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070082) != 0x00070082); //check EV6=0x00070082C1->DR = (u8)((WriteAddr&0xFF00)>>8); //send Hi adr((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070084) != 0x00070084); //check EV8=0x00070084 (ACK)C1->DR = (u8)(WriteAddr&0x00FF); //send Lo adr((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070084) != 0x00070084); //check EV8=0x00070084 (ACK)(i=0;i<N_data;i++)

{C1->DR = data[i]; //send data((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070084) != 0x00070084); //check EV8=0x00070084 (ACK)

}C1->CR1 |= 0x0200; //send signal STOPC1->CR1 &= 0xFFFE; //I2C1 disable(5);

}

Процедура чтения сектора из EEPROM:

u8 EEPROM_SecRead(u8 *data, u16 ReadAddr, u16 N_data)

{i;C1->CR1 |= 0x0401; //I2C1 acknowledge enable, I2C1 enable(I2C1->SR2&0x02); //wait while bus busyC1->CR1 |= 0x0100; //send signal START((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00030001) != 0x00030001);          //check EV5=0x00030001C1->DR = 0xA0; //send EEPROM adress((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070082) != 0x00070082);          //check EV6=0x00070082C1->DR = (u8)((ReadAddr&0xFF00)>>8); //send Hi adr((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070084) != 0x00070084); //check EV8=0x00070084C1->DR = (u8)(ReadAddr&0x00FF); //send Lo adr((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00070084) != 0x00070084);          //check EV8=0x00070084C1->CR1 |= 0x0100;((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00030001) != 0x00030001); //check EV5=0x00030001C1->DR = 0xA1;((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00030040) != 0x00030040);          //check EV6=0x00030040(i=0;i<N_data;i++)

{[i] = I2C1->DR;((((I2C1->SR1|(I2C1->SR2)<<16)&0x00FFFFFF)&0x00030040) != 0x00030040); //check EV6=0x00030040

}C1->CR1 &= 0xFBFF; //I2C1 acknowledge disableC1->CR1 |= 0x0200; //send signal STOPC1->CR1 &= 0xFFFE;//I2C1 disable(1);

return data;

}

Процедура записи/чтения терминалом номеров телефонов из EEPROM с использованием канала 5 DMA контроллера:

void DMA1_Channel5_IRQHandler(void)

{mas_ind[2];(DMA1->ISR&0x00010000)

{->IFCR = 0xFFFFFFFF;_Channel5->CCR &= 0xFFFE;(rx_flag)

{_ind[0] = (u8)index;_ind[1] = (u8)(index>>8);_PageWrite(mas_ind,0,2);_PageWrite(RxBuffer,2,index*4);_Channel5->CNDTR = 3;_Channel5->CCR |= 0x0001;_flag = 0;;

}(RxBuffer[0])

{0x03:_SecRead(TxBuffer,0,index*4+2);_Channel4->CNDTR = index*4+2;_Channel4->CCR |= 0x0001;;0x01:_flag = 1;= (u16)RxBuffer[1] | (u16)RxBuffer[2]<<8;_Channel5->CNDTR = index*4;_Channel5->CCR |= 0x0001;

break;

}

}

}

Процедура считывания и анализа входящего телефонного номера:

void USART2_IRQHandler(void)

{S_inc_tel[9], ATH0[] = {65,84,72,48,13};j;mas_tel[4];inc_n_tel;(USART2->SR&0x0020)

{[k] = USART2->DR;((RxBuffer[k]=='"')&N_tel_flag)

{_tel_flag = 0;= 0;(j=0;j<9;j++) S_inc_tel[j] = RxBuffer[j];_n_tel = str_to_u32(S_inc_tel);= 2;(j<=ind*4+2)

{_SecRead(mas_tel,j,4);(inc_n_tel == ((u32)mas_tel[0] | (u32)mas_tel[1]<<8 | (u32)mas_tel[2]<<16 | (u32)mas_tel[3]<<24))

{->CR1 |= 0x0001; //play code

//trans_flag = 1;_Text(0,0,"Numer accepted",14,0xFFFF,0);

//TS_dec(l,15,0,15,0xFFFF,0);(50);(j=0;j<5;j++)

{((USART2->SR&0x0080)==0);->DR = ATH0[j];

};

}= j+4;

};

}((k>3)&(RxBuffer[k-2]=='+')&(RxBuffer[k-1]=='7')&(RxBuffer[k++]=='9'))

{= 0;_tel_flag = 1;

}

}

}

10. Описание ПО терминала

Данный программный модуль написан на языке программирования С# в среде программирования Microsoft Visual Studio 2012.

Вид окна программы изображен на рис. 10.1.

После запуска программы необходимо выбрать номер виртуального COM - порта, к которому подключен модуль Wi-Fi БУШ (работающего в режиме UART-моста).

При нажатии экранной кнопки «Загрузить» программа считывает из EEPROM БУШ перечень номеров телефонов абонентов и отображает их в виде перечня.

Рисунок 10.1 Окно терминальной программы.

Экранные кнопки «Добавить» и «Удалить» служат для добавления или удаления номеров из списка.

Экранная кнопка «Сохранить» служит для записи перечня номеров в EEPROM БУШ.

Данная программа дополнительно обладает функцией переключения БУШ в режим считывания статического кода пульта шлагбаума. Данный режим активируется нажатием экранной кнопки «считать код пульта». После окончания процесса считывания БУШ автоматически возвращается в прежний режим работы.

Источник: https://www.bibliofond.ru/detail.aspx?id=863934