Передача данных на веб-сервер с использованием Arduino и GPRS/GSM

В этой статье мы рассмотрим проект на основе платы Arduino, в котором мы будем передавать данные на веб-сервер с помощью технологии GPRS. Этот проект относится к проектам интернета вещей (IoT), в котором мы будем использовать для связи с “внешним миром” технологию GPRS, реализованную в GSM модуле SIM900A.

Передача данных на веб-сервер с использованием Arduino: внешний вид конструкции

В этом проекте мы будем с помощью буквенно-цифровой панели 4х4 вводить некоторый текст и затем передавать его на сайт SparkFun с использованием Arduino и GPRS. На сайте SparkFun вы потом сможете посмотреть переданный текст из любой точки земного шара где есть сеть интернет. Также в проекте мы использовали ЖК дисплей 16х2 чтобы на нем также отображать передаваемые данные. Также вы можете посмотреть аналогичные проекты на Arduino, рассмотренные на нашем сайте:

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

Плата Arduino Uno
Источник питания с напряжением 12 В
ЖК дисплей 16х2
GSM модуль SIM900A
4х4 матричная клавишная панель
Макетная плата
Соединительные провода
SIM карта

Использование GPRS в GSM модуле

В этом проекте мы использовали обычный GSM модуль с SIM картой для GPRS соединения. Технология GPRS в нашем проекте ответственна за передачу данных на сервер Sparkfun. Ранее на нашем сайте мы уже рассматривали передачу данных на веб-сервер с помощью Arduino и Wi-Fi модуля ESP8266, здесь же мы вместо технологии Wi-Fi применим технологию GPRS. Более подробно все описанные в статье процессы можно посмотреть на видео, приведенном в конце статьи.

GPRS расшифровывается как General Packet Radio Services и переводится как пакетная радиосвязь общего назначения. Данная технология способна обеспечивать выход в сеть интернет и работать со скоростями передачи данных 56-114 кбит/с.

При этом нет необходимости покупать какой то отдельный модуль для работы с GPRS поскольку она реализована в обычном GSM модуле. Для управления GSM модулем мы будем использовать так называемые AT команды. Далее рассмотрены некоторые из этих команд доступные для модуля SIMCOM SIM900A (на самом деле их достаточно много, информацию по ним легко найти в сети интернет), которые нам понадобятся в данном проекте.

Внешний вид модуля SIMCOM SIM900A

Для передачи данных на веб-сервер с помощью технологии GPRS нам, прежде всего, необходимо инициализировать GSM модуль.

Команды для инициализации GSM модуля

Команды для инициализации GPRS интернет соединения

После ввода данных мы передаем 26 на сервер. Если все нормально, то данные будут успешно загружены на сервер и SparkFun (сервер в нашем рассматриваемом случае) отвечает что все нормально или произошла ошибка.

Лог данных на SparkFun

Лог данных у нас

Объяснение работы проекта

Процесс передачи данных с помощью технологии GPRS, реализованной в GSM модуле, достаточно прост. В нашем проекте мы будем передавать некоторую строку на сервер, набранную на клавиатуре (клавишной панели). Эта же самая строка будет высвечиваться на экране ЖК дисплея. После этого мы будем нажимать клавишу D/OK чтобы передать введенную строку на сервер. Структурная схема работы проекта изображена на следующем рисунке.

Структурная схема работы проекта

Внешний вид собранного проекта

В этом проекте мы использовали алфавитно-цифровую клавишную панель для ввода символов или цифровых значений в Arduino. Более подробно о работе с подобной панелью можно прочитать в этой статье. Клавиша 0/clear запрограммирована для ввода пробела.

Внешний вид алфавитно-цифровой клавишной панели Назначение клавиш алфавитно-цифровой клавишной панели в нашем проекте

Работа схемы

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

Схема устройства для передачи данных на веб-сервер с использованием Arduino и GPRS/GSMДля передачи данных на сервер SparkFun мы должны подключить клавишную панель и GSM модуль к плате Arduino, которая будет принимать данные (строку) от клавишной панели и передавать команды на GSM/GPRS модуль. GSM/GPRS модуль используется для подключения к сети интернет и передачи данных на сервер Sparkfun. Контакты GSM модуля Rx и Tx непосредственно подключены к контактам D3 и D2 платы Arduino (земля платы Arduino и земля GSM модуля должны быть соединены друг с другом).

ЖК дисплей 16×2 используется для отображения строк, которые мы будем передавать на сервер, и отображения некоторых статусных сообщений. Его контакты Rs, en, d4, d5, d6 и d7 соединены с контактами 14, 15, 16, 17, 18 и 19 платы Arduino соответственно. Клавишная панель 4×4 используется для ввода строк в Arduino и ее контакты строк R1, R2, R3, R4 непосредственно подключены к контактам 11,10, 9, 8 платы Arduino, а контакты столбцов C1, C2, C3, C4 – к контактам 7, 6, 5, 4 платы Arduino.

Также мы подключили контакт Tx GSM модуля к контакту Tx платы Arduino для целей отладки проекта с помощью монитора последовательной связи (serial monitor).

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

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

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

То есть ли мы нажмем клавишу 2 на панели (ABC2), то на экране ЖК дисплея высветится ‘A’. Если мы нажмем эту клавишу снова, то ‘A’ на экране ЖК дисплея заменится на ‘B’, а если еще раз – то на ‘C’. Если мы подождем некоторое время после нажатия клавиши курсор на экране ЖК дисплея автоматически переместится на следующую позицию. Аналогично и для других клавиш на панели. То есть наша алфавитно-цифровая клавишная панель фактически будет работать как клавиатура на старых кнопочных телефонах.

В программе мы подключили библиотеку Keypad.h и инициализировали массив символов для клавиш.

Далее мы в программе запрограммировали функцию getkey для ввода символов.

Далее функции void initGSM() и void initGPRS() используются для инициализации GSM модуля и GPRS.

Следующая часть кода используется для создания URL и передачи данных на сервер через этот URL.

После этого мы сможем передавать любые данные на сервер SparkFun при помощи технологии GPRS, чтобы потом можно было просматривать эти данные из любой точки Земли. Процесс создания страницы на SparkFun, где мы будем просматривать данные с помощью сети интернет, подробно показан на видео, приведенном в конце статьи.

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

(Проголосуй первым!)
Загрузка...
291 просмотров

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

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