Jump to content
Дмитрий -

Простая говорящая GSM - сигнализация.

Recommended Posts

 

scheme_jpg.jpg.f6efa0bb1e6d66ad368b34e567b8ab05.jpgПрограмма для говорящей GSM-сигнализации на языке BASCOM-AVR 

' Авторская работа. Автор:  Дмитрий Абловацкий.
'Программа для говорящей GSM сигнализации на модуле SIM800L.
'SIM800L Revision:1418B04SIM800L24.
'Настройка микроконтроллера Attiny85: фюзы, изменение только LOW на $E2

$regfile = "attiny85.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portb.0 = Input
Config Portb.1 = Output
Config Portb.2 = Input
Open "comb.3:9600,8,n,1" For Input As #2       'RXD - вход
Open "comb.4:9600,8,n,1" For Output As #1       'TXD - выход

Dim Buffered As String * 300
Dim On_off As Bit
Dim In_str As Byte
Dim I As Byte
Dim I1 As Long
Dim Telephone As String * 12

Config Debounce = 100
Telephone = "registered"

' - - - - - - - - - - -Подготовка модуля - - - - - - - - - -
Reset Portb.1       'выход модуля из спящего режима
Wait 12   ' время для самоподготовки модуля
Print #1 , "AT"       ' Проверка на готовность модуля к работе
Input #2 , Buffered       ' Ответ
In_str = Instr(buffered , "0")
If In_str = 0 Then
Waitms 250
Print #1 , "ATE0V0+CMEE=0;+CLIP=0"       'Выкл эха, только код ошибки, выключить АОН
Input #2 , Buffered       ' Ответ
'Waitms 250
'Print #1 , "AT+CNMI=1,2,0,0,0"       ' СМС не сохранять, направлять в микроконтроллер
'Input #2 , Buffered       ' Ответ
Waitms 250
Print #1 , "ATS0=0"       ' автоответ ручной
Input #2 , Buffered       ' Ответ
Waitms 250
Print #1 , "AT+CSCLK=1"       ' спящий режим
Input #2 , Buffered       ' Ответ
Waitms 250
Print #1 , "AT+CLCC=1"       ' установить автоматическое отображение статуса
Input #2 , Buffered       ' Ответ
Waitms 250
Print #1 , "AT&W"       ' сохранить
Input #2 , Buffered       ' Ответ
End If

Print #1 , "AT+CPIN?"       ' Готовность модуля к работе с картой
Input #2 , Buffered       ' Ответ  +CPIN READY  или 4- нет карты
In_str = Instr(buffered , "SIM PIN")
Input #2 , Buffered       ' Ответ 0 - OK  или нет ответа
If In_str <> 0 Then       'если карта есть, но нужен PIN - код
Print #1 , "AT+CPIN=0000"       'PIN - код   !Возможно Сим-карта заблокируется  после 3 неправильных
Input #2 , Buffered       ' Ответ  0 - OK или 4- неправильный PIN - код
Input #2 , Buffered       ' Ответ +CPIN READY  или  нет ответа
Input #2 , Buffered       ' Ответ Call Ready   или  нет ответа
Input #2 , Buffered       ' Ответ SMS Ready  или  нет ответа
End If

Wait 2
For I = 1 To 3
Print #1 , "AT+CPAS"       'Готовность к выполнению команд
Input #2 , Buffered       ' Ответ
In_str = Instr(buffered , "0")
If In_str <> 0 Then       'Если модуль готов к работе
Wait 1
Print #1 , "AT+CREG?"       ' проверка на регистрацию в сети
Input #2 , Buffered       ' Ответ
In_str = Instr(buffered , ",1")
If In_str <> 0 Then       ' если зарегистрирован
Goto M1   ' выход , иначе ещё попытки
End If
End If
If I = 2 Then
Wait 1
Print #1 , "AT+CFUN=1,1"       'перезагрузка модуля
Input #2 , Buffered       ' Ответ
Wait 5
End If
Wait 5
Next

M1:
Do
' - - - - - - - - - - - PIR датчик  - - - - - - - - - -
 If Pinb.2 = 1 And On_off = 1 And Pinb.0 = 1 Then       ' если 1
Wait 3  ' время для пробуждения  SIM800L
For I = 1 To 3       ' три попытки дозвониться
Print #1 , "AT+CCALR?"       ' идентификатор готовности совершить звонок
Input #2 , Buffered       ' Ответ
Input #2 , Buffered       ' Ответ
In_str = Instr(buffered , " 1")
If In_str <> 0 Then       ' если готов совершить звонок       ' если 2
Wait 1
Print #1 , "ATD" ; Telephone ; ";"       '  набор номера
Input #2 , Buffered       'ответ
Input #2 , Buffered       'ответ
Input #2 , Buffered       'ответ    ' голосовое соединение
In_str = Instr(buffered , "3,0,0")       '
If In_str <> 0 Then       ' если голосовое соединение  ' если 3

For I1 = 1 To 4000000       ' примерно 40 сек ожидание, если соединение и бездействие до сброса
If Pinb.3 = 0 Then       ' если  абонент возьмёт трубку или  сбросит соединение
Input #2 , Buffered       'ответ

Wait 1
For I1 = 1 To 500000       ' примерно 5 сек ожидание сброса
If Pinb.3 = 0 Then       ' если сброс соединения
Input #2 , Buffered       'ответ
Goto M2
End If
Next

In_str = Instr(buffered , "0,0,0")
If In_str <> 0 Then       ' если голосовое соединение
Print #1 , "AT+CREC=4,C:\User\3__.amr,1,100"       ' передача речевого сообщения
Input #2 , Buffered       ' Ответ
Wait 8    'Время речевого сообщения + добавленное
M2:
Waitms 250
Print #1 , "ATH0"
Input #2 , Buffered
Bitwait Pinb.2 , Reset
Goto M1
End If

End If
Next

End If    ' 3-End If
End If    ' 2-End If
Wait 1
Print #1 , "ATH0"
Input #2 , Buffered
Wait 10
Next

End If    ' 1-End If
' - - - - - - - - - - -Проверка на входящий звонок по  RING - - - - - - - - - -
If Pinb.0 = 0 Then       ' если поступил звонок
 ' - - - - - - - - - - - включение и выключение сигнализации  - - - - - - - - - -
Input #2 , Buffered       ' Ответ   +CLCC: 1,1,4,0,0,"+7**********",145,""
In_str = Instr(buffered , "+7" )
If Telephone = "registered" Then
Telephone = Mid(buffered , In_str , 12 )
Else
In_str = Instr(buffered , Telephone )
End If
Input #2 , Buffered       ' Ответ 2 - первый звонок
Input #2 , Buffered       ' Ответ 2 - второй звонок
If In_str <> 0 Then       ' если зарегистрированный номер телефона
In_str = Instr(buffered , "1,6,0,0,")       '  если сброс
If In_str = 0 Then       '  если входящий звонок продолжается
Waitms 250
Print #1 , "ATA"
Input #2 , Buffered       ' Ответ
Input #2 , Buffered       ' Ответ  +CLCC: 1,1,0,0,0,"+7**********",145,""
If On_off = 0 Then
On_off = 1
Wait 1
Print #1 , "AT+CREC=4,C:\User\1__.amr,1,100"       ' передача речевого сообщения
Input #2 , Buffered       ' Ответ
Wait 8    'Время речевого сообщения + добавленное
Print #1 , "ATH0"
Input #2 , Buffered       ' Ответ
Else
On_off = 0
Wait 1
Print #1 , "AT+CREC=4,C:\User\2__.amr,1,100"       '  передача речевого сообщения
Input #2 , Buffered       ' Ответ
Wait 8    'Время речевого сообщения + добавленное
Print #1 , "ATH0"
Input #2 , Buffered       ' Ответ
End If
End If
Else      ' если незарегистрированный номер телефона
Wait 1
Print #1 , "ATH0"
Input #2 , Buffered       ' Ответ
Bitwait Pinb.0 , Set
End If
End If

Set Portb.1       ' в спящий режим SIM800L
Enable Interrupts
Enable Int0
Enable Pcint0
Idle      ' в спящий режим микроконтроллер
Reset Portb.1       ' выход модуля из спящего режима
Disable Interrupts
Disable Int0
Disable Pcint0
Loop
End

Источник https://178654.blogspot.com/p/gsm.html

 

 

Edited by Дмитрий -

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Предохранитель замедленного действия - это зачем? Чтобы перед его срабатыванием что-нибудь успело случиться с защищаемой цепью?
    • А кпд Вашего «генодвигателя»  случайно не зависит от формы питающего напряжения? Если его подключить к ослику и посмотреть форму генераторной ЭДС, совпадёт ли она с тем, что выдаёт Ваш блок управления? Это так, мысли вслух.
    • Это не может быть без нагрузки) транзистор открыт продолжительное время на хх - проверяйте ОС, и лучще на этой мощности делать обратноход в ССМ.   30-1.2/0.05 = расчёт сопротивление R10
    • @ТИПТОНИК я уже подсказал, с чего можно начать. R10 не маловат? Раза в два увеличить попробуй?
    • Прошу прощения, что влезаю в чужой разговор. У меня кажись проблема с обратноходом. Делаю сейчас на 12 вольт и 4 А. Вроде все работает, ничего не греется, но присутствует подозрительная картинка на осциллографе. Чую сердцем, такого быть не должно, а природу сего явления не знаю. На картинке осциллограмма без нагрузки. При почти максимальной нагрузке, осциллограмма принимает стандартный вид, т.е. ничего не расплывается. Два раза дроссель перематывал, а результат одинаковый. Хотя бы примерно знать в чем дело. Схема на UC3842 c обратной связью на TL431. В общем схема типовая.
  • Similar Content

    • By Boris_Boroda
      Всем привет. Гугл не помог, как и другие поисковики, а так же поиск по разным форумам. Если у кого-то есть схема на данную сигнализацию, буду очень признателен.
    • Guest Артем
      By Guest Артем
      Здравствуйте, помогите решить задачу.
      В общем, есть большой объект, на объекте 8 выходов, которые изнутри можно открыть, так вот нужна простейшая сигнализация чтоб при открывании одной из дверей на проходной загорался светодиодик (хочу рассовать диодики на плане эвакуации, чтоб при открытии дверей охранник видел какая именно дверь открылась).
      вопрос собственно в том какое оборудование мне надо (какой блок управления или что там еще) кроме самих диодов и датчиков открытия дверей.
      GSM не нужен, аккумулятор тоже. Просто нужна вот такая вот примитивная сигнализация.
      Заранее спасибо за помощь
    • By Дмитрий -
      На примере GSM/GPRS Goouuu Tech IOT-GA6-B и ATtiny85.
      Программа «Звонилка». 
      Программа на BASCOM-AVR. 
      Источник https://178654.blogspot.com/p/uart.html
       

    • Guest Георгий
      By Guest Георгий
      Добрый день, уважаемые.
      В наше время становится всё тяжелее бороться с воровством в магазине. У нас на входе ворота, через которые выходить нельзя, но знаки и объявления воров не останавливают. 
      Задача такая: Если человек заходит, проходит датчик №1, потом №2 - сигнал не звучит. Если выходит в неположенные ворота и проходит сначала датчик №2, а потом №1 - подается напруга на звонок чтобы вздрогнул, а лучше обмочился. Нет, ну замаяло ворьё правда.
      Подскажите как может называться такая система датчиков на Алиэкспресс  или варианты изготовления. Сам занимался эти давно, схемка не сложная, но это было 30 лет назад , так что лучше доверюсь профессионалам.))
       
    • By Евгений-1990
      Здравствуйте. Необходимо воплотить в жизнь идею: для сигнализирования о открытии двери было решено использовать беспроводной звонок который будет срабатывать от геркона. Геркон в нормальном состоянии разомкнут, и нормально замкнутого контакта не имеет, это сподвигло на мысль использовать логическую микросхему (ту что была в наличии) к155лн2. Какие шансы на жизнь у этой идеи?
×
×
  • Create New...