Подключение модуля GSM GPRS SIM800
Миниатюрный модуль GSM/GPRS сотовой связи на основе компонента SIM800L, разработан компанией SIMCom Wireless Solutions. Стандартный интерфейс управления компонента SIM800L предоставляет доступ к сервисам сетей GSM/GPRS 850/900/1800/1900МГц для отправки звонков, СМС сообщений и обмена цифровыми данными GPRS. Поставляется с встроенной антенной, также можно подключить дополнительные антенны для улучшения качества сигнала. Управлять модулем можно при помощи персонального компьютера через преобразователь интерфейса USB-UART или непосредственно через UART модулем микроконтроллера самостоятельной разработки или Arduino, Raspberry Pi и аналогичными. Компонент SIM800L имеет реализованный стек протокола TCP/IP. Содержит микросхему MT6260SA компании MediaTek и микросхему приемопередатчика RFMD RF7176.
К модулю GSM GPRS SIM800 MicroSIM подключаются динамик и микрофон. С модуля можно совершать звонки и принимать. Модуль имеет следующие характеристики:
- напряжение питания: 3.7 В ~ 4.4 В;
- потребляемый ток режима ожидания: 0,7 мА;
- пиковый ток: 2 А ;
- скорость UART: 1200 – 115200 бод;
- формат SIM карты: microSIM;
- рабочий диапазон: EGSM900, DCS1800, GSM850, PCS1900;
- мощность передачи DCS1800, PCS1900: 1 Вт;
- мощность передачи GSM850, EGSM900: 2 Вт;
- режим сети: 2G;
- габариты: 25 мм х 24 мм х 4 мм;
- четыре диапазона EGSM900, DCS1800, GSM850, PCS1900
- мощность передачи в различных диапазонах:
- DCS1800, PCS1900 1 Вт;
- GSM850, EGSM900 2 Вт.
- автоматически выполняет поиск в четырех частотных диапазонах;
- поддерживает сеть 2G;
- сопротивление подключаемого динамика 8 Ом;
- микрофон электретный;
- управляется командами AT через UART (3GPP TS 27.007, 27.005 SIMCOM enhanced AT Commands);
- автоматическое определение скорости передачи управляющих АТ команд;
- отправка и получение GPRS данных (TCP/IP, HTTP, и т.д.)
- макс скорость передачи GPRS данных 85,6 Кбод;
- кодирование CS-1, CS-2, CS-3 и CS-4;
- поддерживает GSM 07.10 протокол;
- поддержка пакетной передачи широковещательного канала управления (PBCCH) CSD на скоростях 2.4, 4.8, 9.6 и 14.4 Кбод;
- поддержка неструктурированных данных дополнительных услуг USSD;
- поддерживает PAP ( протокол идентификации пароля);
- поддержка часов реального времени RTC;
- поддерживает симкарт питанием 3 и 1,8 В;
- температура, ℃ :
- воздуха при работе –30…75;
- хранения –45…
Для подключения нужны плата Arduino, модуль SIM800L, провода для соединения и батарея на 12В. Модуль SIM800L требует нестандартное для Arduino напряжение в 3,7В, для этого нужен понижающий преобразователь напряжения, но в нашей программе это учитывается и подключать преобразователь при проектирование необязательно, поэтому в данной работе мы пренебрежем им. Схема контактов модуля SIM800 приведена на рисунке.
Плату Arduino нужно подключить, следующем образом. Выходы с модуля TX и RX нужно подключить к пинам 2 и 3 на Arduino. Несколько модулей можно подключать к любым цифровым пинам выходы с модуля TX и RX нужно подключить к пинам 2 и 3 на Arduino, землю на плате к земле на модуле, 5.5В также подключить к плате Arduino при помощи проводов.
Подключение модуля освещенности LM393
Модуль освещенности на LM393 используется для измерения интенсивности света в различных устройствах, таких как, автоматизация света (включении света ночью), роботах (определения дня или ночи) и приборов, контролирующих уровень освещенности. Измерения осуществляется с помощью светочувствительного элемента (фоторезистора), который меняет сопротивление в зависимости от освещенности.
Технические параметры:
- напряжение питания: 3.3 В ~ 5.5 В;
- потребляемый ток: 10 мА;
- цифрового выход: TTL (лог 1 или лог 0);
- аналогового выход: 0 В … Vcc;
- диаметр монтажного отверстия: 2.5 мм;
- выходной ток: 15 мА;
- габариты: 42мм х 15мм х 8мм.
Существует два модуля, визуально отличие только в количестве выводов (3 pin и 4 pin), дополнительный вывод добавлен, для снятие прямых показаний с фоторезистора (аналоговый выход), в статье пойдет речь о четырех контактом варианте модуля. В этих двух модулей, измерение осуществляется с помощью фоторезистора, который изменяет напряжение в цепи в зависимости от количества света, попадающего на него. Чтобы представить, как свет будет влиять на фоторезистор, краткая таблица приведена на рисунке
Модуль освещенности с четырьмя выводами содержит два выходных контакты, аналоговый и цифровой и два контакта для подключения питания. Для считывания аналогового сигнала предусмотрен отдельный вывод «AO», с которого можно считать показания напряжения с 0 В … 3.3 В или 5 В в зависимости от используемого источника питания. Цифровой вывод DO, устанавливается в лог «0» или лог «1», в зависимости от яркости, чувствительность выхода, можно регулировать с помощью поворотного потенциометра. Выходной ток цифрового выхода, способен выдать более 15 мА, что очень упрощает использования модуля и дает возможность использовать его минуя контроллер Arduino и подключая его напрямую ко входу однокональному реле или одному из входов двухконального реле. Основная микросхема модулей, это компаратор LM393 (U1), который производит сравнение уровней напряжений на входах INA- и INA+. Чувствительность порога срабатывания задается с помощью потенциометром R2 и в результате сравнений на выходе D0 микросхемы U1, формируется лог «0» или лог «2», который поступает на контакт D0 разъема J1.
Назначение J1 (в исполнении 4 pin)
- VCC: «+» питание модуля
- GND: «-» питание модуля
- D0: цифровой выход
- A0: аналоговый выход
Назначение J1 (в исполнении 3 pin)
- VCC: «+» питание модуля
- GND: «-» питание модуля
- D0: цифровой выход
Небольшая управляющая программка:
- Определяем уровень сигнала с аналогового пина.
- Сравниваем уровень с пороговым значением. Максимально значение будет соответствовать темноте, минимальное – максимальной освещенности. Пороговое значение выберем равное 300.
- Если уровень меньше порогового – темно, нужно включать светодиод.
- Иначе – выключаем светодиод.
#define PIN_LED 13
#define PIN_PHOTO_SENSOR A0
void setup() {
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
}
void loop() {
int val = analogRead(PIN_PHOTO_SENSOR);
Serial.println(val);
if (val < 300) {
digitalWrite(PIN_LED, LOW);
} else {
digitalWrite(PIN_LED, HIGH);
}
}