Содержание
Недостатки платы SIM800C
Не могу сказать, что модуль SIM800C разработан удачно. Замечания такие:
- Расстояние между гребенками не кратно 2,54 мм, поэтому модуль не встает в breadboard макетные платы. Этой проблемы нет даже у дешевой платы SIM800L. Она встает в макетную плату без проблем. Это очень большой косяк разработчиков!!!
- Для понижения напряжения с 5V до 3,7V используется схема с двумя диодами. Как говорится в статье, падение напряжения на диодах в обычном режиме работы порядка 0,6 — 1,2V и SIM800 достаточно напряжения для работы. Однако при пиковых значениях токов падение напряжения возрастает и на чипе напряжение может быть ниже 3,3 V. В результате, например, при запуске, когда энергопотребление высокое, модуль может многократно перегружаться. Поэтому я рекомендую запитывать модуль через вход VBAT подав напряжение 3,8 V c DC-DC конвертера напряжения (DC-DC stepdown converter) или от батареи.
Распиновка платы модуля SIM800C
- 5V: power supply pin, the only input DC5V, used to power the board.
- V_TTL: access control board microcontroller core target voltage of 5V / 3.3V (according to its own microcontroller is much to distinguish kernel V), this pin is used to convert the GSM module board TXD and RXD for the corresponding TTL logic. Описание пространное. На этот пин нужно подать 5V при подключении к платам с уровнем логики 5V (например, Arduino) и 3,3V при подключении GSM модуля к ESP8266/ESP32.
- GND: power supply ground
- TXD: send pin serial port module, TTL level (not directly connected to RS232 level)
- RXD: receive pin serial port module, TTL level (not directly connected to RS232 level)
- DTR: Data Terminal Ready
- SPKP: Core Audio output pin
- SPKN: Core Audio output pin
- MICN: Core Audio input
- MICP: Core Audio input
- RI: Ring core pin tips
- VRTC: RTC pin external battery
- GND: power supply ground
- PWR: This pin can turn down or turn off the module. Этот пин должен быть замкнут на GND на время не менее 1 с для включения модуля. Чтобы модуль стартовал сразу при включении — PWR закорачивают на GND.
- GND: power supply ground
- VBAT: lithium battery input pin, 3.3v-4.4v
Схема соединения SIM800C c USB-to-TTL конвертером
Перед использованием модуля SIM800C с микроконтроллерами стоит проверить его работоспособность соединив с конвертером USB to TTL.
Таблица соединения SIM800C с USB-to-TTL converter
SIM800C pin | USB-to-TTL converter | БП +5 V | Примечания |
TXD | RXD | ||
RXD | TXD | ||
GND | GND | GND | |
+5V | +5V | Блок питания на пиковы ток не менее 1 А!!! | |
V_TTL | +5V | ||
PWX | GND | Закоротить пин PWX на GND, чтобы модуль стартовал сразу при включении питания. |
Схема подключения модуля SIM800C
Лучше подавать сначала питание на модуль GSM, а затем уже подключать USB к PC, но это не критично.
Usage
Initiate the driver and the module
First, you have to initiate the driver by telling him the serial link and the RESET pin. The next two parameters defined the size of the internal buffer and the size of the reception buffer.
The size of the reception buffer is depending on the data you will receive from the web service/API. If the buffer is too small, you will receive only the first 512 bytes in the examples below. The driver has a buffer overflow protection.
To initiate with a SoftwareSerial link (on pin TX_PIN and RX_PIN):
To initiate with a hardware serial link (Serial1):
Setup and check all aspects for the connectivity
Then, you have to initiate the basis for a GPRS connectivity.
The module has to be initalized and accept AT commands. You can test it and wait the module to be ready.
The GSM signal should be up. You can test the signed strenght and wait for a signal greater than 0.
The module has to be registered on the network. You can obtain the registration status through a specific command and wait for a REGISTERED_HOME or REGISTERED_ROAMING depending on your operator and location.
Connecting GPRS
Before making any connection, you have to open the GPRS connection. It can be done easily. When the GPRS connectivity is UP, the LED is blinking fast on the SIM800L module.
HTTP communication GET
or
If the method returns 200 (HTTP status code for OK), you can obtain the size of the data received.
And you can obtain the data received through a char array.
HTTP communication POST
The arguments of the method are:
- The URL ()
- (optional) Headers («Header-1:value1\r\nHeader-2:value2»)
- The content type (application/json)
- The content to POST ({«name»: «morpheus», «job»: «leader»})
- The write timeout while writing data to the server (10000 ms)
- The read timeout while reading data from the server (10000 ms)
or with headers
If the method returns 200 (HTTP status code for OK), you can obtain the size of the data received.
And you can obtain the data recieved through a char array.
Схема платы SIM800C
В datasheet модуля указан максимальный уровень логической единицы на входе RX — 3,1 В (при минимальном 2,1 В). Для конвертации TTL уровней на плате SIM800C разведен конвертер. В принипе достаточно было конвертер поставить только на RX вход, поскольку микроконтроллеры Arduino/ESP8266/ESP32 чувствительны к низкому входному напряжению TTL с SIM800C.
Конвертер TTL уровней и преобразователь напряжения 5V -> 3,7V модуля SIM800C
Схема двунаправленного конвертера уровней довольно стандартная и обеспечивает приведение напряжения логической 1 на SIM800 к уровню VDD_EXT. Это напряжение снимается с SIM800 и по datasheet соотвествует 2,8 V.
Напряжение на выходе VDD_EXT чипа SIM800
Соотвественно, на входе модуля SIM800 преобразователь уровней обеспечивает напряжение логической 1 не выше 2,9 V при максимальном значении.
Поскольку двунаправленного преобразования на RX не требуется, в теории, можно было бы использовать дешевый резистивный делитель, как указано в статье по подключению модуля SIM800L. Подробная схемотехника подключения этого модуля к ESP32 и код программы в моей статье.
Резистивный делитель при подключении входов SIM800 напрямую к Arduino
Вероятно, в данном случае использовали более дорогую схему согласования уровней, чтобы гарантировать, что пользователь неосторожными действиями не сожжет RX порт чипа SIM800. В случае резистивного делителя это можно сделать попутав Rx и Tx
Ну и важно для полноценного согласования уровней SIM800 с микроконтроллером 5-ти вольтовой логики, когда уровень логический единицы может быть высоким, так что микроконтроллер не будет воспринимать уровень логической единицы на выходе Tx
Замечу, что при использовании дешевого модуля SIM800C/L без конвертера уровней, даже при подключении его напрямую к ESP8266/ESP32 с уровнем логики 3,3 V вместо максимальных 3,1 V, указанных в datasheet, можно вывести SIM800 из строя. По крайней мере у меня один модуль SIM800L перестал реагировать на RX. Видимо, внутри чипа нет защитных диодов, либо они не справились даже с такой небольшой разницей в напряжении.
Поэтому при подключении модуля SIM800 без конвертера уровней к ESP8266/ESP32 тоже нужно добавить хотя-бы резистивный делитель на вход RXD.
Резистивный делитель напряжения для подключения SIM800 без конвертера TTL уровней к ESP8266/ESP32
Напряжение питания модуля SIM800 (VBAT) 3,4 — 4,5 V, рекомендуемое 4 V при максимальном токе до 2А. Модуль достаточно прожорлив, поэтому его нельзя запитывать от платы Arduino и от маломощных USB зарядок, дажы не вывести их из строя.
На плате уже разведен фильтр для подавления импульсных помех для обеспечения стабильной работы модуля, однако, как показывает опыт, этого фильтра недостаточно при работе от простых блоков питания.
Схема фильтрации питания платы SIM800C
Слот SIM карты, в отличие от недорогого модуля SIM800L, подключен к чипу с защитой диодной сборкой SMF05C. Она предохраняет чип SIM-карты и SIM800C от статического электричества.
Arduino Code – Receiving Call
Receiving call doesn’t require any special code; you just have to keep listening to the SIM800L module. Yet, you may find this sketch very useful, when you need to trigger an action when a call from specific phone number is received.
Incoming call is usually indicated by ‘RING’ on serial monitor followed by phone number and caller ID. To accept/hang a call following AT commands are used:
ATA – Accepts incoming call.
ATH – Hangs up the call. On hanging up the call it sends NO CARRIER on the serial monitor indicating call couldn’t connect.
Below output on serial monitor shows call received by SIM800L GSM module.
Тестирование SIM800
- Запускаем Arduino IDE.
- В настройках порта (Tools -> Port) выбираем порт на котором работает USB-to-TTL конвертер.
- Переходим в Tools -> Serial Monitor (Ctrl-Shift-M).
- Выбираем скорость 115200. Где-то проскакивает, что у чипа работает автоопределение скорости. По моим тестам — не работает.
- Набираем AT и ввод. Документация по AT коммандам SIM800 здесь.
- Если модуль рабочий и корректно подключен, то появится хотя-бы ответ «OK». Если модуль определил SIM-ку и зарегистрировался в сети оператора, то будет развернутая информация.
AT OK +CPIN: READY Call Ready SMS Ready
- Отправляем команду: AT+COPS=?После нескольких секунд ожидания появится ответ, вроде: +COPS: (2,»Bee Line GSM»,»BeeLine»,»25099″),(1,»MTS»,»MTS»,»25001″),(1,»MOTIV»,»MOTIV»,»25020″),(1,»MegaFon»,»MegaFon»,»25002″),,(0-4),(0-2). Модуль «видит» ближайшие соты. Уже хорошо.
- Проверим статус PIN кода на SIM карте командой: AT+CPIN? Если появился ERROR — что-то не так.
- Запускаем команду: AT+CMEE=2. Эта команда при выводе сообщения об ошибке предоставляет максимально детальную информацию. Сохраняем командой: AT&W.
- Поворяем комунду AT+CPIN? Появляется детальный код ошибки. Например, в моем случае: +CME ERROR: SIM not inserted.
- Проверяем установку SIM карты. SIM слот распаянный на модуле «без защиты от дурака», т.е. позволяет вставить SIM-ку любым способом, без привычных ограничений как на сотовом телефоне или в других типах слотов. На SIM слоте мелко есть пиктограмма правильной установки карты.
- Повторяем команду AT+COPS=? Ответ изменился. Появились строчки «Call Ready» и «SMS Ready», значит карта определилась нормально и зарегистрировалась в сети оператора:
AT+COPS=? Call Ready SMS Ready +COPS: (1,"Bee Line GSM","BeeLine","25099"),(1,"MOTIV","MOTIV","25020"),(3,"MTS","MTS","25001"),(3,"MegaFon","MegaFon","25002"),,(0-4),(0-2) OK
- Отправляем команду AT+CSQ для получения уровня сигнала. Первая цифра в ответе должна быть отлична от нуля. Например, +CSQ: 23,0.
- Проверяем регистрацию в сети оператора командой AT+CREG? Правильный ответ: +CREG: 0,1
Задачи GSM модуля:
- Отправлять данные о времени работы насоса полива;
- Отправлять температуру насоса и воды;
- Принимать данные с веб-сервера о статусе вкл/выкл насоса.
Первым делом в корневом каталоге сервера создаем файл index.php.
На Листинге 2 показан начальный код разметки HTML страницы.
Листинг 2. Начальный код разметки HTML страницы.
В моем случае веб-страница будет открываться только в телефоне, поэтому выберем самый простой дизайн для нее. При желании можно сделать страницу более удобной и информативной.
Результат открытого в браузере файла index.php показан на Рисунке 7.
Рисунок 7. | Результат открытого в браузере файла index.php. |
Добавим пару кнопок на включение насоса и создадим txt файл на сервере для сохранения данных о статусе работы насоса. Кнопки выполним в виде картинок, а их обработку сделаем с помощью AJAX (технология взаимодействия с сервером без полной перезагрузки html-страницы, использует JavaScript). Для этого перед тегом вставляем код, показанный в Листинге 3.
Листинг 3. AJAX обработчик.
Определение картинок кнопок включим в форму. При нажатии на картинку будет записываться значение статуса в файл pomidor.txt. Код обработки кнопок показан в Листинге 4.
Листинг 4. HTML код обработки кнопок.
В коневом каталоге создаем папку transfer и файл pomidor.php, код из которого приведен в Листинге 5.
Листинг 5. PHP скрипт записи статуса кнопки.
Рисунок 8. | Основной интерфейс управления. |
Для полученных значений создаем еще одну папку txt и файл pomidor.txt. Добавляем картинку насоса и получаем минимальный интерфейс управления, который показан на Рисунке 8. На Рисунке 9 показан результат нажатия на кнопку «Выкл». Соответственно, если нажмем на кнопку «Вкл», то будет результат «ON».
Рисунок 9. | Запись данных на сервер в результате нажатия на кнопку «Выкл». |
Сделаем так, чтобы при переключении статуса, менялась картинка насоса. Для этого в поле расположения картинки насоса добавим код (Листинг 6).
Листинг 6. PHP скрипт изменения картинки статуса работы насоса.
Создаем функцию «Nasos», которая каждую секунду читает и сравнивает значение с файла pomidor.txt. В зависимости от результата меняется картинка визуализации насоса. На Рисунке 10 показан пример визуализации насоса при нажатии на кнопку «Вкл».
Рисунок 10. | Визуализация статуса включенного насоса. |
По аналогии добавим вывод температур и времени полива (Рисунок 11).
Рисунок 11. | Законченный интерфейс управления. |
Вопросы безопасности, в случае атаки на веб сервер, выходят за рамки данного повествования, поэтому опустим их.
Реализация Bluetooth в модулях SIM800x
Компания MediaTek реализовала поддержку технологии Bluetooth 3.0 на уровне ядра в двух популярных сериях чипсетов собственной разработки — МТ6260 и МТ6261. Обе серии используются компанией SIMCom Wireless Solutions в GSM-модулях линейки SIM800x. В модулях на чипсете МТ6261 отсутствует поддержка CSD (модули SIM800C, SIM800C-DS, SIM800F и SIM868), это их основное функциональное отличие от модулей на чипсете MT6260 (SIM800, SIM800H). В части, касающейся поддержки функционала Bluetooth, упомянутые чипсеты идентичны.
Технология Bluetooth 3.0 совместила в себе:
- поддержку Bluetooth 2.0 с низким энергопотреблением и скоростью передачи данных до 3 Мбит/с;
- использование спецификаций стандарта 802.11, в теории обеспечивающее возможность передачи данных с существенно более высокой скоростью (передача файлов большого объема).
Заметим, что использование в Bluetooth 3.0 методов передачи стандарта 802.11 не влечет за собой их совместимость со спецификациями технологии IEEE802.11(b/g/n) и устройствами Wi-Fi, функционирующими в том же частотном диапазоне.
Приведенные далее примеры работы с технологией Bluetooth посредством модулей производства компании SIMCom Wireless Solutions будут рассматриваться применительно к устройствам SIM800C. Существует две аппаратные версии этих модулей — с 24 и 32 Мбит flash-памяти. Обе они имеют версии предустановленного производителем ПО с поддержкой Bluetooth. В контексте статьи будут рассмотрены версии ПО с поддержкой Bluetooth в части, касающейся работы с этим функционалом. По умолчанию, во всех модулях 800-й серии, во всех версиях встроенного ПО он отключен. Его включение производится командой
AT+BTPOWER=1.
Возможно, вам также будет интересно
Технология беспроводной связи ZigBee, разработанная на основе стандарта IEEE 802.15.4, характеризуется сверхнизким энергопотреблением. Она предназначена для передачи данных с небольшой скоростью и очень удобна для создания сетей сбора данных от различных датчиков и исполнительных устройств.
Настоящая статья представляет собой обзор продукции ведущего китайского производителя GSM-модемов для M2M-приложений — компании SIMCom Limited, входящей в холдинг Sim Technology Inc.
В статье рассматривается учебное оборудование, предназначенное для практического изучения современных технологий, применяемых в таких отраслях, как микроэлектроника, цифровые технологии, IT, телекоммуникации и связь.
Программное обеспечение для разработки EAT-приложений
Определившись с аппаратной частью, можно приступать к установке и настройке ПО для разработки EAT-приложений, которое можно запросить у локального дистрибьютора или у службы технической поддержки SIMCom Wireless Solutions .
При подготовке данной статьи применялся следующий набор программных продуктов:
- RealView Development Suite v3. 1 сосредойразработкиEclipse ;
- SIM800H_EAT_140516_ECLIPSE, пример проекта под среду Eclipse ;
- 01, программа для записи ПО в память программ модуля ;
- 1032, USB-драйвервиртуальногоCOM-порта.
После того как среда Eclipse будет установлена, можно воспользоваться готовым примером проекта, импортировав его, как показано на рис. 8.
Рис. 8. Импорт примера проекта
После нажатия кнопки Finish (рис. 8д) нужно очистить проект (рис. 9).
Рис. 9. Очистка проекта
После всего проделанного вы увидите окно проекта (рис. 10). Теперь код примера проекта можно модифицировать и компилировать при помощи интерфейса среды разработки.
Рис. 10. Окно среды разработки Eclipse с загруженным примером проекта
Окно среды разработки имеет несколько внутренних окон, имеющих различное назначение. Основным является окно текстового редактора, в котором собственно и пишется Си-код программы. Кстати, надо отметить, что редактор умеет классифицировать текст по содержанию и окрашивать его участки в различные цвета, автоматически выделять начало и конец функций и т. д. Это значительно упрощает процесс написания кода и анализ его текста.
Левее от текстового редактора расположен навигатор по проекту, в котором «под рукой» у программиста структура всех файлов, причастных к проекту, включая исходные файлы, бинарный файл ядра, документация, результаты компиляции и проч. Здесь же можно найти руководство программиста с подробным описанием архитектуры EAT и доступных API-функций модуля.
Подробнее о работе Eclipse можно ознакомиться на сайте www.eclipse.org/platform, а мы покажем, как создать свое ПО и записать его в модуль.
Для компиляции кода нужно пройти по меню Project->Build All, при этом в нижнем консольном окне не должно быть ошибок компиляции, иначе компилятор не создаст результат проекта — бинарный файл EAT, который можно записать в модуль.
Arduino Code – Reading SMS
Now let’s program our Arduino to read incoming messages. This sketch is very useful when you need to trigger an action when a specific SMS is received. For example, when the Arduino receives an SMS, you can instruct it to turn on or off a relay. You got the idea!
The sketch is similar as earlier except below code snippet. Once the connection is established, we send below AT commands:
AT+CMGF=1 – Selects SMS message format as text. Default format is Protocol Data Unit (PDU)
AT+CNMI=1,2,0,0,0 – specifies how newly arrived SMS messages should be handled. This way you can tell the SIM800L module either to forward newly arrived SMS messages directly to the PC, or to save them in message storage and then notify the PC about their locations in message storage.
Its response starts with +CMT: All the fields in the response are comma-separated with first field being phone number. The second field is the name of person sending SMS. Third field is a timestamp while forth field is the actual message.
Note that this time we have NOT kept the loop function empty as we are polling for newly arrived SMS messages. Once you send the SMS to SIM800L GSM module, you will see below output on serial monitor.
Expanding Arduino SoftwareSerial Buffer Size
If your message is long enough just like ours, then you’ll probably receive it with some missing characters. This is not because of a faulty code. Your SoftwareSerial receive buffer is getting filled up and discarding characters. You are not reading fast enough from the buffer.
The simplest solution to this is to increase the size of the SoftwareSerial buffer from its default size of 64 bytes to 256 bytes (or smaller, depending on what works for you).
On a Windows PC, go to C:\Program Files (x86) -> Arduino -> hardware -> Arduino -> avr -> libraries -> SoftwareSerial (-> src for newer version of Arduino IDE) Open SoftwareSerial.h and change the line:
to
Save the file and try your sketch again.
Expanding Arduino SoftwareSerial Buffer Size
Инициализация
Первым делом необходимо провести инициализацию и первичную настройку модуля SIM800L. Для этого в теле setup() вызываем подпрограмму init_GSM(), которая перезагружает модуль и последовательно отправляет команды:
AT
ATE0
AT+GSMBUSY=0
AT+CPAS
AT+CREG?
AT+CSQ
AT+CBC
AT+CUSD=1,»*111#»
Разберем назначение каждой команды:
- AT – проверяем готовность модуля в приему команд.
- ATE0 – отключаем режим ЭХО.
- AT+GSMBUSY=0 – запрещаем входящие звонки.
- AT+CPAS – проверяем готовностью и текущее состояние модуля.
- AT+CREG? – проверка регистрации в сети.
- AT+CSQ – проверка уровня сигнала.
- AT+CBC – проверяем питание.
- AT+CUSD=1,»*111#» – проверяем баланс SIM-карты.
Каждую команду необходимо проверять на наличие положительного ответа «ОК», в противном случае нужно заново отправить команду и дождаться нужного ответа. Как правило, при первом включении команда AT+CPAS с первого раза не дает ответ «ОК», обычно готовность появляется после 2-3 попыток.
На Рисунке 5 показан процесс выполнения подпрограммы init_GSM.
Рисунок 5. | Процесс выполнения подпрограммы init_GSM. |
На Листинге 1 показан пример обработки команды AT+CPAS.
Листинг 1. Программа обработки команды AT+CPAS.
Во время ответа от модуля в cycle_for() происходит сравнение и установка значения в bit_ok. Если значение равняется 1, то модуль вернул «ОК», при ответе 2 – модуль возвращает «Error». Если положительно ответа нет, то через 1 секунду повторяем отправку i раз.
Результат
22:21:40.333 -> Read all SMSs. 22:21:40.367 -> Data: 1,"REC READ","+79601XXXXX","","19/05/05,16:52:16+12" 22:21:40.435 -> Message: Test again. 22:21:40.469 -> Data: 2,"REC READ","+79601XXXXX","","19/05/05,16:53:01+12" 22:21:40.502 -> Message: And again 22:21:40.537 -> Data: 3,"REC READ","+79601XXXXX","","19/05/05,17:12:05+12" 22:21:40.604 -> Message: And one again 22:21:40.637 -> Data: 4,"REC READ","+79601XXXXX","","19/05/05,17:58:59+12" 22:21:40.706 -> Message: Ones again 22:21:40.706 -> Data: 5,"REC READ","+79601XXXXX","","19/05/05,21:27:58+12" 22:21:40.777 -> Message: New message again.
Реализация
В качестве примера наиболее массового применения встроенного Bluetooth-функционала GSM-модулей в клиентских устройствах можно привести его использование производителями терминалов мониторинга транспортных средств для поддержания обратной голосовой связи с водителем. Теперь для инсталляции такого устройства в автомобиль не требуются дополнительные отверстия в панели приборов для подключения гарнитуры. При этом беспроводное подключение позволяет отказаться от использования проводов, что повышает как техническую надежность решения, так и безопасность дорожного движения.
Импульсный DC step-down преобразователь
Готовый миниатюрный DC-DC конвертер Mini-360 на базе MP2307 стоит недорого на Aliexpress. Этот модуль я не раз использовал совместно с SIM800, и он показал достаточно стабильную работу. Обычно я добавлял электролитический или танталовый конденсатор минимум на 1000 uF или суперконденсатор, чтобы не было просадки напряжения при максимальном потреблении модуля SIM800. На «красной» плате с SIM800L уже распаян танталовый конденсатор большой емкости.
Mini-360 MP2307 DC-DC step-down конвертер
На Aliexpress представлено немало различных DC-DC down-step модулей для снижения напряжения с 5V до 4 V. У них регулируемое выходное напряжение, и это не очень хорошо: при сборке требуется подстройка, на что уходит время, нельзя впаивать SIM800 или нужно предусматривать джамперы для разрыва соединения на время настройки, иначе можно случайно подать высокое напряжение и вывести из строя SIM800.
Я взял типовую схему на MP2307 и собрал малогабаритный DC-DC конвертер с 5V до 4V. Он очень компактен и обладает высоким КПД. Схема импульсного понижающего преобразователя 5V до 4V для SIM800 и схема коммутации ESP32 с «красной» платой с SIM800L:
Схема ESP32 и SIM800 c DC-DC step-down converter («понижайка») c 5V до 4V.
Пара сопротивлений R5 (33K, 1%) и R4 (10K, 1%) рассчитаны на формирование выходного напряжения 4 V.
В этой схеме используются следующие основные компоненты:
- «Красная» плата SIM800L. Её прелесть в том, что на ней уже есть распаянный IPEX разъем для подключения антенны, обвязка для фильтрации с танталовым конденсатором большой емкости и сам модуль SIM800. Причем эта плата в сборе обойдется дешевле, чем приобретать на Aliexpress чип SIM800 отдельно.
- MH ET Live Mini ESP32 — на мой взгляд, лучший вариант реализации платы для прототипирования на ESP32.
- Экранированная индуктивность 10 uH.
- Чип DC-DC step-down конвертер MP2307DN.
В datasheet SIM800 приведен пример импульсного DC-DC step-down конвертера на LM2596-ADJ:
DC-DC step-down конвертер для SIM800 на LM2596
Готовый 3A конвертер на базе LM2596 с возможностью регулировки выходного напряжения можно приобрести на Aliexpress:
LM2596 DC-DC понижающий преобразователь для SIM800
LM2596 — габаритный чип, поэтому использовать его можно там, где нет особых требований к размерам устройства.
Таймеры EAT
Многие программы имеют нелинейный алгоритм исполнения последовательности действий, и для реализации такого поведения программ применяют таймеры, встроенные в MCU. В EAT также реализованы два типа таймеров — программный (eat_timer_start) и аппаратный (eat_gpt_start) (рис. 4).
Рис. 4. Пояснение разницы между программным и аппаратным таймерами
Когда программный таймер переполняется, ядро пошлет пользовательскому ПО сообщение «EAT_EVENT_TIMER». Пользовательское ПО должно его «отловить» в цикле главной функции app_main. А когда переполнится аппаратный таймер, ядро вызовет callback-функцию
При этом важно, чтобы код внутри callback-функции имел короткий цикл исполнения. Недопустимо, чтобы в ней были заключены блокирующие события, такие как режим сна, ожидание освобождения семафора, работа с памятью и т
п.