Программа «Звонилка».
На примере GSM/GPRS Goouuu Tech IOT-GA6-B
и микроконтроллере ATtiny85.
Из этого, легко можно сделать сигнализацию. Например: вместо кнопки S2 использовать датчик движения, а кнопку S1 использовать для того, чтобы успеть выйти из помещения или автомобиля, заменив на фиксированную вкл/выкл.
Из этого, легко можно сделать сигнализацию. Например: вместо кнопки S2 использовать датчик движения, а кнопку S1 использовать для того, чтобы успеть выйти из помещения или автомобиля, заменив на фиксированную вкл/выкл.
При включении:
- если светится светодиод больше 11 секунд значит модуль не отвечает;
- если мигает светодиод значит идёт инициализация параметров. Если это долго тянется - значит нужно проверить ответы на соответствие;
- если светодиод погас - значит всё ОК! Можно звонить.
При нажатии на кнопку S2 светодиод включится, после завершения звонка, через 5 секунд, выключится и можно повторно звонить. Если что-то нештатное произойдёт, то программа перейдёт на инициализацию параметров.
Программа на BASCOM-AVR.
'Авторская работа. Автор: Дмитрий Абловацкий.
'Настройка модуля GOOUUU TECH_GA6-B: ATE0, ATV0, AT+IPR=9600
'Настройка микроконтроллера Attiny85: фюзы, изменение только LOW на $E2
$Regfile="attiny85.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32
Dim Buffered As String*30
Dim i_INC As Byte
Dim In_str As Byte
Config Portb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output
Set PortB.3
CONFIG DEBOUNCE = 100
Open "comb.1:9600,8,n,1" For Output As #1 'TXD-выход
Open "comb.0:9600,8,n,1" For Input As #2 'RXD-вход
M1:
Do
WAIT 10 'Пропуск первых ответов и ожидание
i_INC = 0
Print #1,"AT+CPAS" 'AT+CPAS Готовность к выполнению команд
Gosub RXD_IN
In_str = Instr(Buffered, "0")
Gosub LED_
Print #1,"AT+GMM" 'AT+GMM - Идентификатор модуля
Gosub RXD_IN
In_str = Instr(Buffered, "GOOUUU TECH_GA6-B")
Gosub LED_
Print #1,"AT+CPIN?" 'Готовность модуля к работе с картой
Gosub RXD_IN
In_str = Instr(Buffered, "READY")
If In_str = 0 Then
WAIT 2
Print #1,"AT+CPIN=XXXX" 'XXXX PIN - код
Gosub RXD_IN
In_str = Instr(Buffered, "0") '!
End If
Gosub LED_
Print #1,"AT" 'AT Готовность модуля к работе
Gosub RXD_IN
In_str = Instr(Buffered, "0")
Gosub LED_
Print #1,"AT+CSQ" 'AT+CSQ Уровеь сигнала
Gosub RXD_IN
In_str = Instr(Buffered, " ")
INCR In_str
Buffered=Mid(Buffered,In_str,4)
If VAL(Buffered) > 8 Then
In_str = 1
Else
In_str = 0
End If
Gosub LED_
Print #1,"AT+CREG?" 'AT+CREG? Тип регистрации сети
Gosub RXD_IN
In_str = Instr(Buffered, "1,1")
Gosub LED_
Print #1,"AT+CBC?" 'AT+CBC? Напряжеие питания
Gosub RXD_IN
In_str = Instr(Buffered, ",")
INCR In_str
INCR In_str
Buffered=Mid(Buffered,In_str,2)
If VAL(Buffered) > 20 Then
In_str = 1
Else
In_str = 0
End If
Gosub LED_
Loop Until i_INC = 7
Reset PortB.3
Do
i_INC = 0
BITWAIT Pinb.2, Set
Set PortB.3
Print #1,"ATD+7XXXXXXXXXX;" 'Набрать номер
Gosub RXD_IN
In_str = Instr(Buffered, "0")
Gosub ATD_
WAIT 20 'ждать 20 сек
Print #1,"ATH" 'Повесить трубку
Gosub RXD_IN
Gosub RXD_IN
Gosub RXD_IN
In_str = Instr(Buffered, "0")
Gosub ATD_
If i_INC < 2 Then
GOTO M1
End If
WAIT 5
Reset PortB.3
Loop
End
RXD_IN:
Input #2, Buffered
Return
LED_:
If In_str > 0 Then
Reset PortB.3
INCR i_INC
End If
WAIT 2 'Пропуск ненужных ответов
Set PortB.3
WAIT 1
Return
ATD_:
If In_str > 0 Then
INCR i_INC
End If
Return
Скачать файл программы GOOUUU TECH_GA6-B.bas
Ответы от GOOUUU TECH_GA6-B на команды микроконтроллера.
Комментариев нет:
Отправить комментарий