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...

  • Сообщения

    • Гар ответил: Да, тяжёлый случай. От магнитопровода многое зависит...   Да магнитопровод здесь один, это воздух (вакуум). Феррит работает эффективно до 1го Мгца, а дальше работает воздух. По идее у феррита Гестирезова  петля перемагничивания не успевает срабатывать на высокой частоте, и такой сердечник просто перестаёт на ней работать, то есть передавать магнитный поток. А у воздуха (вакуума) Гестерезовой петли нет, ему всё равно какая частота. Вообще сердечник используется в трансформаторах для передачи магнитного потока от первичке его ко вторичке. Лучше всего передаёт магнитный поток, то есть намагничивается, железо. Но оно работает до 400 Гц. Дальше магнитный поток, но уже меньше передаёт феррит. А уж воздух (вакуум) совсем его передаёт плохо. Происходит слабое магнитное потокосцепление первички со вторичкой. И видимо на СВЧ частотах магнитное поле, из-за высокой частоты не успевает распространяться, и доставать до вторички. Может так, раз слух идёт, что трансформаторы на СВЧ частотах не работают. Надо посмотреть магнитную проницаемость воздуха (вакуума) по таблице и сравнить её с другими сердечниками. Может для лучшего магнитного потокоцепления первички и вторички в воздухе, сделать первичку из широкой ленты, и на СВЧ частотах повышение напряжения тогда будет? Тик Ток , что такое
    • А чем это грозит? Напрасной тратой 6 рублей 60 копеек? Контакт там в обоих случаях точечный, разница может быть только в качестве металла контактов и силе прижима. Если ток не предельный, то и разницы не будет.
    • Факты есть или это было написано где-то на заборе?  "Пятую" колону не там ищешь.
    • У в обшем случае у них комплексный подход, они не зацикливаться на одних лишь "нулях" в ущерб устойчивости, повторямости, массогабаритам, цене и тп. Чего не скажешь о любительских творениях.   
    • Да, тяжёлый случай. От магнитопровода многое зависит...
    • У меня проблема. Мне надо получить с трансформатора как можно выше напряжение с минимальным количеством витков во вторичке его. Начинаю повышать напряжение на первичке его, и тогда это требует повышения числа витков в ней, что бы не шёл активный ток. Но тогда приложенное напряжение делится на большое количество витков первички и тогда ко вторичке прикладывается меньшее напряжение через коэффициент трансформации. Тогда надо повышать частоту. Слышал, что на СВЧ частотах трансформаторы перестают повышать, только на каких?    По расчётам моего трансформатора, его рабочая частота должна быть в районе 1000 Мгц. Будет ли на такой частоте повышать трансформатор напряжение. Или надо частоту по ниже.                                   
  • 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...