Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



GSM СССР

Сообщений 91 страница 120 из 140

1

Вопрос прям наболевший за сутки, нужна передача по USB 8 бит, маленький код, дескриптор и т.п. Кто может видел с описанием на нашенском ). А то пробежался и все варианты очень жрут много памяти. Не могу найти по минимум кода и простоты передачи данных. Может я принцип не понял, объясните мне пожалуйста, там каждый раз при приёме и ответе нужно указывать принято и ждать подтверждение?).
Вообщем нужна связь с ПК по USB, софт на ПК можно написать ... интересует как можно принять и отправить 8 бит, с минимум кода в библиотеке.
Может конечно я ря тревожусь и Ва потревожу, но такая ситуация. Есть можем SIM300, контроллер atmega8, хочу сделать себе мобилу знатную и блатную (спортивную). Хватит мне памяти МК, если я экран не буду использовать, только RX/TX общение с модемом и по USB временами СМСить, врятли хватит на чтение голосом СМС.

Приложение для ознакомления:

Телефонный аппарат:
http://cs315219.vk.me/v315219419/7b9a/RdME_AOz5js.jpg
модем, микрофон, динамик:
http://cs315219.vk.me/v315219419/7b7f/7OvpN8Ot9Ps.jpg
Перемотанный в 270 Ом звонок:
http://cs315219.vk.me/v315219419/7b4f/cA7tN5S07FY.jpg
Вытравленная пробая плата, позже весь проект выложу вместе с исходником Lay 6
http://cs315219.vk.me/v315219419/7b88/0glq4LYVGEI.jpg
Девайс в начальной стадии, звонок уже работает, мини инвертор пашет ), всё как в атс 4 сек пауза / 1 сек звонок.
http://cs315219.vk.me/v315219419/7bcb/BP9UY6fZhxw.jpg

0

91

Блин, комп во сней был ночь и пол дня, разбудил и видимо Bascom AVR глюкнул, за всё нормально! за исключением одного мистического момента.

Ну почему такие проблемы?
Всё просто, звоню на модем, снимаю трубку, микрофон работает, но когда происходит исходящий выов - микрофон не работает! Ну ни как.
Вызов принимаю: "ATH"
Номер набираю "ATD..." - не работает микрофон (он просто отключен, может какая команда есть?)
со всех жду подтверждение "ОК", всё отлично.
Камера на готове,  как всё исправлю, останется подтянуть таймер для гудка в трубке, а треск при наборе и если взять трубку во время звонка - уже сделал  :crazyfun:
А да, предпологаю использую выход гарнитуры - AT+CHFA=1

Отредактировано Ev3658 (2013-09-09 15:06:33)

0

92

как понимаю модуль вырван из охранки? если "да", то там в функционале был микрофон (обработка его)? если "нет" - значит прошивка в чипе такая.

0

93

RDW написал(а):

как понимаю модуль вырван из охранки? если "да", то там в функционале был микрофон (обработка его)? если "нет" - значит прошивка в чипе такая.

Онработает в одном направлении,  дело в том, что всё зависит исходящий или входящий звонок. Модуль из охранки Mega SX100 (вроде), врят-ли производили в РФ стали прошивать и так рабочее средство, у них охранка на Atmega165.
Прост оспрашиваю, кто сталкивался с выбором канала микрофона и наушника по отдельности?
Для архивности выложу, вдруг откатываться буду:

Код:
$regfile = "m8def.dat"
$crystal = 14745600
$hwstack = 16
$swstack = 64
$framesize = 32
$baud = 19200

'Config Timer0 = Timer , Prescale = 1024 , Compare A = Set , Clear Timer = 1
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0
'Config Serialin = Buffered                                  , Size = 32

Declare Sub Nokia_init()
Declare Sub Nokia_clear()
Declare Sub Nokia_text(byval Nokia_x As Byte , Byval Nokia_y As Byte , Byval Nokia_text As String , Byval Nokia_inversion As Byte)


Nokia_spi_data Alias Portb.1                                'MOSI       - можно задать любую ножку
Nokia_spi_clock Alias Portb.2                               'SCK        - можно задать любую ножку
Nokia_cs Alias Portb.0                                      'CS         - можно задать любую ножку
Display_reset Alias Portd.7                                 'LCD_RESET  - можно задать любую ножку
Display_reset = 1
Nokia_cs = 1

Dim W As Iram Word At 8 Overlay
Dim Nokia_data_9 As Integer


Dim X As Byte



'порты экрана
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.2 = Output
Config Portb.1 = Output


Config Portc.3 = Output                                     'подсветка и питание набирателя
Config Portc.4 = Input                                      'начало набора номера

Config Portd.2 = Output                                     ' питание микрофона и звуки
Config Portd.4 = Output                                     ' Таймер Звука Занято И Т.п.



'порт положения трубки
Config Portd.3 = Input
'порты звонка
Config Portd.5 = Output
Config Portd.6 = Output
'алиасы
Faza1 Alias Portd.5
Faza2 Alias Portd.6

Faza2 = 0

Trubka Alias Pind.3
Naborcifri Alias Pinc.2
Pitanienabiratela Alias Portc.3
Prerivanienabiratela Alias Pinc.4
Microfon Alias Portd.2
Dinamik Alias Portd.4
Dinamik = 0

Dim Pause1 As Integer

Dim Kodgoroda As String * 10
Dim Gorodcifri As Byte

'========================================================================================================================
Kodgoroda = "883145"                                        'тут внесите код города
Gorodcifri = Len(kodgoroda) - 1                             ' можно просто приравнять к числу цифр городского местного номера если он меньше 7ми
Pause1 = 16000                                              'подстройка паузы, если набираете 5значный номер, то до продолжения набора другой цифры по истечении этой паузы телефон начинает набор.
'========================================================================================================================
Dim Eror As Byte
Dim P As Byte
Dim O As Byte
Dim N As Byte                                               'переменные для набирателя
Dim N1 As Byte                                              'переменные для набирателя
Dim Buff As Byte
Dim B As Byte
Dim Cifra(11) As Byte
'Dim Trubka As Byte
Dim Nabor As Byte                                           'состояние положена/снята трубка
Dim T As Byte
Dim T1 As Byte
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As Byte
Dim Tbuf As Integer                                         'антизависание в чтение буфера
Dim Zvonok As Byte
' Если Zvonok:
'0-трубка положена
'1-трубка снята без поступления звонка
'2-поступление звонка при положенной трубки
'3-трубка снята в ответ на звонок
'4-трубка положена после ответа на звонок
'5-режим набора номера
'
'
'




Dim Modem As String * 255
Dim S As String * 255
Dim Text1 As String * 16
Call Nokia_init()

Call Nokia_text(1 , 1 , ">Модем АУ" , 1)
Text1 = "AT"
Gosub Inicilizacija
Call Nokia_text(10 , 1 , "-Я тут" , 1)

Call Nokia_text(1 , 2 , "Как состояние-" , 1)
Do
Gosub Sim300

If Left(modem , 1) = "+" Then Exit Do
Loop
Call Nokia_text(15 , 2 , "ОК" , 1)
Call Nokia_clear
Waitms 1
Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
'Disable Urxc


Waitms 270
Print "AT"
Text1 = "AT+CHFA=1"
Call Nokia_text(1 , 2 , ">AT+CHFA=1" , 1)                   '0-телефон, 1-гарнитура (выходы у модема)
Gosub Inicilizacija
Call Nokia_text(1 , 3 , ">OK" , 1)
Text1 = "AT+CLVL=100"
Call Nokia_text(1 , 4 , ">AT+CLVL=100" , 1)

Gosub Inicilizacija
Call Nokia_text(1 , 5 , ">ОК" , 1)
Wait 1

Call Nokia_clear

Goto Programma:
'======================== ПОДПРОГРАММА =====================
'блок, которому в переменную Text1 указать команду можема, он будет ждать ответ ОК и повторять через каждые 25000 циклов комманду в переменной Text1 - пока не дождётся ОК
Inicilizacija:
Modem = ""
Do
Call Nokia_text(1 , 7 , Text1 , 0)
T4 = T4 + 1
Gosub Sim300
If T4 > 250 Then
'      Text1 = Left(s , 16)
     'Text1 = Str(t4)
     'Call Nokia_text(1 , 5 , Text1 , 0)
     Print Text1
     T4 = 0
   End If
If Modem <> "" Then
   If Modem = "OK" Then
      Eror = 0
      Exit Do
   End If

   If Left(modem , 3) = "ERR" Then
      Eror = 1
      Exit Do
   End If
   'Waitms 1

End If
Loop
Return

'Error:
'If Mid(modem , 6 , 12) = ":SIMERR" Then
'      If N > 0 Then
'         For P = 1 To 25
'            Sound Dinamik , 50 , 140
'        Next P
'        Eror = 1
'        End If
'End If

Return

'============================= конец блока мозгоёбной части.


'==================== Звонок ==============================
Zumer:
   Waitms 1                                                 'общая задержка для 4х сек.
   T2 = T2 + 1
   If T2 <= 30 Then
      Faza1 = 1
      Faza2 = 0
      Pitanienabiratela = 0
      Waitms 35                                             'пауза фазы +
      Faza1 = 0
      Faza2 = 1
      Pitanienabiratela = 1
      Waitms 35                                             'пауза фазы -
      Faza2 = 0
   End If
   If T2 = 4000 Then T2 = 0                                 'пауза между звонком (в литре сказано должно 4 сек. но опрос буфера выгребает секунду-две
Return






'======================  ВЫВОД ГРАФИЧЕСКОЙ ИНФОРМАЦИИ =====================
Informacia:
   'Call Nokia_clear()
   Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
   Call Nokia_text(1 , 2 , "Данные с модема:" , 0)
   'Call Nokia_text(1 , 3 , "                " , 0)
   'Text1 = "Zvonok:" + Str(zvonok)
   'Call Nokia_text(1 , 4 , Text1 , 1)
   Call Nokia_text(1 , 8 , "=RADIOKSTOVO.RU=" , 1)
'тех.информация для отладки набора номера /переменные N/N1/порт Ц2/порт Ц4

If Zvonok = 0 Then Call Nokia_text(1 , 4 , "0Ожидание       " , 0)
If Zvonok = 1 Then Call Nokia_text(1 , 4 , "1Ожидан.действия" , 0)
If Zvonok = 2 Then Call Nokia_text(1 , 4 , "2Вам звонят!    " , 0)
If Zvonok = 3 Then Call Nokia_text(1 , 4 , "3Разговор       " , 0)
If Zvonok = 4 Then Call Nokia_text(1 , 4 , "4Трубка положена" , 0)
If Zvonok = 5 Then Call Nokia_text(1 , 4 , "5Набор номера   " , 0)
   Text1 = Left(modem , 16)
   Call Nokia_text(1 , 3 , Text1 , 0)
   Text1 = "T3:" + Str(t3)
   Call Nokia_text(1 , 6 , Text1 , 0)

'===вывод номера
'Call Nokia_text(1 , 4 , "Набранный номер" , 0)
Text1 = ""
Gosub Sbornomera
     Text1 = ">" + Text1
     Call Nokia_text(1 , 5 , Text1 , 0)


Return

'================================ РАБОТА С БУФЕРОМ И ОПРОСОМ МОДЕМА ========================================
Sim300:
'B = Inkey()
'If B > 0 Then

Tbuf = 0
If Ischarwaiting() = 1 Then
Do
   B = Inkey()
   Tbuf = Tbuf + 1
   Select Case B
       Case 10 : If S <> "" Then
                     Modem = S
                     S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
                     Exit Do
                    End If
                  Case Else
         If B > 32 Then
            Tbuf = 0
            S = S + Chr(b) :
         End If
    End Select
    If Tbuf > 25000 Then
           If Len(s) > 30 Then
             S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
             Exit Do
             End If
           Exit Do
            End If

   Loop
End If
Return
'
'End If
Return
'================ Подпрограмма режима ожидания===============================================================
Ozhidanie:

'Text1 = Left(modem , 4)
If Modem = "RING" Or Text1 = "+CLI" Then                    'поступление звонка
Print "AT+CHFA=1"

         If Zvonok = 5 Then Gosub Antitrubka
         If Trubka = 0 Or Zvonok = 4 Then Zvonok = 2
End If


If Zvonok = 1 And N = 1 Then Zvonok = 5





If Zvonok = 3 Then

   If T < 125 Then
      Pitanienabiratela = 0
      Else
      Gosub Pitanie
   End If

End If

If Zvonok = 4 Then Zvonok = 0


If Zvonok = 1 Or Zvonok = 5 Then                            '================= ОЗВУЧКА ГУДОК и Т.П.
    If N = 1 Or N = 0 Then Sound Dinamik , 1 , 220
    If N = 2 And Cifra(1) = 8 Then Sound Dinamik , 1 , 200
End If

Gosub Sim300


If Zvonok = 5 Then                                          ' ========== начало 5го правила "Режим набора номера"

   Gosub Nabornomera

   If N = 11 Then
      Text1 = "ATD"                                         'Если городской 7 значный, то не добавляем
      Gosub Sbornomera
      Text1 = Text1 + ";"
      Print Text1
      Zvonok = 3
   End If

   If Cifra(1) <> 8 And Cifra(1) <> 0 Then
      If N < 3 And N = 6 Then T3 = 0
      If N > 7 Then T3 = 0
      If N = Gorodcifri Or N = 7 Then T3 = T3 + 1
      If N = 3 Then T3 = T3 + 1

         If T3 = Pause1 Then
            Text1 = "ATD"                                   'задержка набора 5ти значного номера
            If N = Gorodcifri Then Text1 = Text1 + Kodgoroda       'Если городской пятизначный, добавляем префикс
               Gosub Sbornomera
               Text1 = Text1 + ";"
                print Text1
               Zvonok = 3                                   'переходим В Режим "трубка снята"
         End If
   End If
End If


Return

'=================== Подрограмма набора номера (заранее лучше обнулить N - номер ячейки массива N1 - кол-во тактов набирателя Nabor - шаг набора цифры/номера, запоминает 11 цифр в Cifra(n)
'==== Подпрограмма сбора номера из массива, желательно переменную Text1 обнулить=======================================================
Sbornomera:
For P = 1 To N
   Text1 = Text1 + Str(cifra(p))
   B = Cifra(p) * 10
   B = B + 150
Next P
Return


Sbros:
   For P = 1 To 11
      Cifra(p) = 0
   Next P
   N = 0
   N1 = 0
   Eror = 0
   T3 = 0
   Call Nokia_clear
Return                                                      '========================================================================


Antitrubka:                                                 'положить вызов
   Text1 = "ATH"
   Gosub Inicilizacija
Return



Nabornomera:
Pitanienabiratela = 1                                       'включение питания номеронабирателя
If Nabor = 0 And Naborcifri = 1 Then
   If Prerivanienabiratela = 0 Then
      N1 = N1 + 1
      Sound Dinamik , 150 , 40                              'украшение
     Nabor = 1
   Waitms 20
   End If
End If

If Prerivanienabiratela = 1 And Nabor = 1 Then

   Nabor = 2
   Waitms 20
End If

If Nabor = 2 And Naborcifri = 1 Then Nabor = 0


If N1 <> 0 And Naborcifri = 0 Then
   If Prerivanienabiratela = 1 Then
      If N1 = 10 Then N1 = 0

         N = N + 1
         Cifra(n) = N1
         If N = 12 Then
            N = 1
            For P = 1 To 11
            Cifra(p) = 0
            Next P
         End If
         Gosub Informacia
         Nabor = 0
         N1 = 0
   End If
End If

Return

Pitanie:
If Trubka = 1 Then
   Microfon = 1
   Pitanienabiratela = 1
      Else
         Microfon = 0
         Pitanienabiratela = 0
End If

Return


'================ Подпрограмма режима разговора===========================================================
Razgovor:

Return

'========================================================================================
'========================================================================================
'========================================================================================
'========================================================================================





Programma:
Do


If Trubka = 1 Then
   If Zvonok = 0 Then
      Gosub Pitanie
      Zvonok = 1
   End If
   If Zvonok = 2 Then
      Gosub Pitanie
      Zvonok = 3
      Text1 = "ATA"
      Gosub Inicilizacija
      If T2 <= 30 Then                                      'Украшение
        For P = 1 To 20
         Sound Dinamik , 50 , 25
         Waitms 40
        Next P
      End If
   End If
End If

If Trubka = 0 Then
         If Zvonok = 3 Or Zvonok = 5 Or Zvonok = 1 Then
            Gosub Pitanie
            Gosub Antitrubka
            Gosub Sbros
            Zvonok = 0
         End If


End If
If Zvonok = 2 Or Zvonok = 4 Then Gosub Zumer

                          'Getline Modem




If Zvonok = 1 Or Zvonok = 5 Then Gosub Nabornomera

'If Zvonok = 3 Then Gosub Ozhidanie 'на всякий случай.


If Zvonok = 0 Then Gosub Sim300
If Naborcifri = 0 Then
   Gosub Ozhidanie
   T = T + 1
   If T = 255 Then                                          'испоняем то, что нужно исполнять редко с периодичностью
      T = 0
      If Ischarwaiting() = 0 Then                           'если буфер пуст, то вывести на экран (иначе задержка будет начительная)
         Gosub Informacia
            Else
               Gosub Sim300
      End If
   End If
End If



'СТРОГОЕ ПРАВИЛО ТРУБКИ==================









'Waitms 1

Loop




$include "Nokia-1100 Library.inc"
End

Пока использую старую библиотеку LCD Nokia 1110, спасибо за это чудо! Позже переведу на новую.

Отредактировано Ev3658 (2013-09-09 17:36:17)

0

94

Плюнул я на всё... вот видео:

исходный код:

Код:
$regfile = "m8def.dat"
$crystal = 14745600
$hwstack = 16
$swstack = 64
$framesize = 32
$baud = 19200

'Config Timer0 = Timer , Prescale = 1024 , Compare A = Set , Clear Timer = 1
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0
'Config Serialin = Buffered                                  , Size = 32

Declare Sub Nokia_init()
Declare Sub Nokia_clear()
Declare Sub Nokia_text(byval Nokia_x As Byte , Byval Nokia_y As Byte , Byval Nokia_text As String , Byval Nokia_inversion As Byte)


Nokia_spi_data Alias Portb.1                                'MOSI       - можно задать любую ножку
Nokia_spi_clock Alias Portb.2                               'SCK        - можно задать любую ножку
Nokia_cs Alias Portb.0                                      'CS         - можно задать любую ножку
Display_reset Alias Portd.7                                 'LCD_RESET  - можно задать любую ножку
Display_reset = 1
Nokia_cs = 1

Dim W As Iram Word At 8 Overlay
Dim Nokia_data_9 As Integer


Dim X As Byte



'порты экрана
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.2 = Output
Config Portb.1 = Output


Config Portc.3 = Output                                     'подсветка и питание набирателя
Config Portc.4 = Input                                      'начало набора номера

Config Portd.2 = Output                                     ' питание микрофона и звуки
Config Portd.4 = Output                                     ' Таймер Звука Занято И Т.п.



'порт положения трубки
Config Portd.3 = Input
'порты звонка
Config Portd.5 = Output
Config Portd.6 = Output
'алиасы
Faza1 Alias Portd.5
Faza2 Alias Portd.6

Faza2 = 0

Trubka Alias Pind.3
Naborcifri Alias Pinc.2
Pitanienabiratela Alias Portc.3
Prerivanienabiratela Alias Pinc.4
Microfon Alias Portd.2
Dinamik Alias Portd.4
Dinamik = 0

Dim Pause1 As Integer

Dim Kodgoroda As String * 10
Dim Gorodcifri As Byte

'========================================================================================================================
Kodgoroda = "883145"                                        'тут внесите код города
Gorodcifri = Len(kodgoroda) - 1                             ' можно просто приравнять к числу цифр городского местного номера если он меньше 7ми
Pause1 = 16000                                              'подстройка паузы, если набираете 5значный номер, то до продолжения набора другой цифры по истечении этой паузы телефон начинает набор.
'========================================================================================================================
Dim Eror As Byte
Dim P As Byte
Dim O As Byte
Dim N As Byte                                               'переменные для набирателя
Dim N1 As Byte                                              'переменные для набирателя
Dim Buff As Byte
Dim B As Byte
Dim Cifra(11) As Byte
'Dim Trubka As Byte
Dim Nabor As Byte                                           'состояние положена/снята трубка
Dim T As Byte
Dim T1 As Byte
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As Byte
Dim Tbuf As Integer                                         'антизависание в чтение буфера
Dim Zvonok As Byte
' Если Zvonok:
'0-трубка положена
'1-трубка снята без поступления звонка
'2-поступление звонка при положенной трубки
'3-трубка снята в ответ на звонок
'4-трубка положена после ответа на звонок
'5-режим набора номера
'
'
'




Dim Modem As String * 255
Dim S As String * 255
Dim Text1 As String * 16
Call Nokia_init()

Call Nokia_text(1 , 1 , ">Модем АУ" , 1)
Text1 = "AT"
Gosub Inicilizacija
Call Nokia_text(10 , 1 , "-Я тут" , 1)

Call Nokia_text(1 , 2 , "Как состояние-" , 1)
Do
Gosub Sim300

If Left(modem , 1) = "+" Then Exit Do
Loop
Call Nokia_text(15 , 2 , "ОК" , 1)
Call Nokia_clear
Waitms 1
Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
'Disable Urxc


Waitms 270
Print "AT"
Text1 = "AT+CHFA=1"
Call Nokia_text(1 , 2 , ">AT+CHFA=1" , 1)                   '0-телефон, 1-гарнитура (выходы у модема)
Gosub Inicilizacija
Call Nokia_text(1 , 3 , ">OK" , 1)
Text1 = "AT+CLVL=100"
Call Nokia_text(1 , 4 , ">AT+CLVL=100" , 1)

Gosub Inicilizacija
Call Nokia_text(1 , 5 , ">ОК" , 1)
Wait 1

Call Nokia_clear

Goto Programma:
'======================== ПОДПРОГРАММА =====================
'блок, которому в переменную Text1 указать команду можема, он будет ждать ответ ОК и повторять через каждые 25000 циклов комманду в переменной Text1 - пока не дождётся ОК
Inicilizacija:
Modem = ""
Do
Call Nokia_text(1 , 7 , Text1 , 0)
T4 = T4 + 1
Gosub Sim300
If T4 > 250 Then
'      Text1 = Left(s , 16)
     'Text1 = Str(t4)
     'Call Nokia_text(1 , 5 , Text1 , 0)
     Print Text1
     T4 = 0
   End If
If Modem <> "" Then
   If Modem = "OK" Then
      Eror = 0
      Exit Do
   End If

   If Left(modem , 3) = "ERR" Then
      Eror = 1
      Exit Do
   End If
   'Waitms 1

End If
Loop
Return

'Error:
'If Mid(modem , 6 , 12) = ":SIMERR" Then
'      If N > 0 Then
'         For P = 1 To 25
'            Sound Dinamik , 50 , 140
'        Next P
'        Eror = 1
'        End If
'End If

Return

'============================= конец блока мозгоёбной части.


'==================== Звонок ==============================
Zumer:
   Waitms 1                                                 'общая задержка для 4х сек.
   T2 = T2 + 1
   If T2 <= 30 Then
      Faza1 = 1
      Faza2 = 0
      Pitanienabiratela = 0
      Waitms 35                                             'пауза фазы +
      Faza1 = 0
      Faza2 = 1
      Pitanienabiratela = 1
      Waitms 35                                             'пауза фазы -
      Faza2 = 0
   End If
   If T2 = 4000 Then T2 = 0                                 'пауза между звонком (в литре сказано должно 4 сек. но опрос буфера выгребает секунду-две
Return






'======================  ВЫВОД ГРАФИЧЕСКОЙ ИНФОРМАЦИИ =====================
Informacia:
   'Call Nokia_clear()
   Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
   Call Nokia_text(1 , 2 , "Данные с модема:" , 0)
   'Call Nokia_text(1 , 3 , "                " , 0)
   'Text1 = "Zvonok:" + Str(zvonok)
   'Call Nokia_text(1 , 4 , Text1 , 1)
   Call Nokia_text(1 , 8 , "=RADIOKSTOVO.RU=" , 1)
'тех.информация для отладки набора номера /переменные N/N1/порт Ц2/порт Ц4

If Zvonok = 0 Then Call Nokia_text(1 , 4 , "0Ожидание       " , 0)
If Zvonok = 1 Then Call Nokia_text(1 , 4 , "1Ожидан.действия" , 0)
If Zvonok = 2 Then Call Nokia_text(1 , 4 , "2Вам звонят!    " , 0)
If Zvonok = 3 Then Call Nokia_text(1 , 4 , "3Разговор       " , 0)
If Zvonok = 4 Then Call Nokia_text(1 , 4 , "4Трубка положена" , 0)
If Zvonok = 5 Then Call Nokia_text(1 , 4 , "5Набор номера   " , 0)
   Text1 = Left(modem , 16)
   Call Nokia_text(1 , 3 , Text1 , 0)
   Text1 = "T3:" + Str(t3)
   Call Nokia_text(1 , 6 , Text1 , 0)

'===вывод номера
'Call Nokia_text(1 , 4 , "Набранный номер" , 0)
Text1 = ""
Gosub Sbornomera
     Text1 = ">" + Text1
     Call Nokia_text(1 , 5 , Text1 , 0)


Return

'================================ РАБОТА С БУФЕРОМ И ОПРОСОМ МОДЕМА ========================================
Sim300:
'B = Inkey()
'If B > 0 Then

Tbuf = 0
If Ischarwaiting() = 1 Then
Do
   B = Inkey()
   Tbuf = Tbuf + 1
   Select Case B
       Case 10 : If S <> "" Then
                     Modem = S
                     S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
                     Exit Do
                    End If
                  Case Else
         If B > 32 Then
            Tbuf = 0
            S = S + Chr(b) :
         End If
    End Select
    If Tbuf > 25000 Then
           If Len(s) > 30 Then
             S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
             Exit Do
             End If
           Exit Do
            End If

   Loop
End If
Return
'
'End If
Return
'================ Подпрограмма режима ожидания===============================================================
Ozhidanie:

'Text1 = Left(modem , 4)
If Modem = "RING" Or Text1 = "+CLI" Then                    'поступление звонка
Print "AT+CHFA=1"

         If Zvonok = 5 Then Gosub Antitrubka
         If Trubka = 0 Or Zvonok = 4 Then Zvonok = 2
End If


If Zvonok = 1 And N = 1 Then Zvonok = 5





If Zvonok = 3 Then

   If T < 125 Then
      Pitanienabiratela = 0
      Else
      Gosub Pitanie
   End If

End If

If Zvonok = 4 Then Zvonok = 0


If Zvonok = 1 Or Zvonok = 5 Then                            '================= ОЗВУЧКА ГУДОК и Т.П.
    If N = 1 Or N = 0 Then Sound Dinamik , 1 , 220
    If N = 2 And Cifra(1) = 8 Then Sound Dinamik , 1 , 200
End If

Gosub Sim300


If Zvonok = 5 Then                                          ' ========== начало 5го правила "Режим набора номера"

   Gosub Nabornomera

   If N = 11 Then
      Text1 = "ATD"                                         'Если городской 7 значный, то не добавляем
      Gosub Sbornomera
      Text1 = Text1 + ";"
      Print Text1
      Zvonok = 3
   End If

   If Cifra(1) <> 8 And Cifra(1) <> 0 Then
      If N < 3 And N = 6 Then T3 = 0
      If N > 7 Then T3 = 0
      If N = Gorodcifri Or N = 7 Then T3 = T3 + 1
      If N = 3 Then T3 = T3 + 1

         If T3 = Pause1 Then
            Text1 = "ATD"                                   'задержка набора 5ти значного номера
            If N = Gorodcifri Then Text1 = Text1 + Kodgoroda       'Если городской пятизначный, добавляем префикс
               Gosub Sbornomera
               Text1 = Text1 + ";"
                print Text1
               Zvonok = 3                                   'переходим В Режим "трубка снята"
         End If
   End If
End If


Return

'=================== Подрограмма набора номера (заранее лучше обнулить N - номер ячейки массива N1 - кол-во тактов набирателя Nabor - шаг набора цифры/номера, запоминает 11 цифр в Cifra(n)
'==== Подпрограмма сбора номера из массива, желательно переменную Text1 обнулить=======================================================
Sbornomera:
For P = 1 To N
   Text1 = Text1 + Str(cifra(p))
   B = Cifra(p) * 10
   B = B + 150
Next P
Return


Sbros:
   For P = 1 To 11
      Cifra(p) = 0
   Next P
   N = 0
   N1 = 0
   Eror = 0
   T3 = 0
   Call Nokia_clear
Return                                                      '========================================================================


Antitrubka:                                                 'положить вызов
   Text1 = "ATH"
   Gosub Inicilizacija
Return



Nabornomera:
Pitanienabiratela = 1                                       'включение питания номеронабирателя
If Nabor = 0 And Naborcifri = 1 Then
   If Prerivanienabiratela = 0 Then
      N1 = N1 + 1
      Sound Dinamik , 150 , 40                              'украшение
     Nabor = 1
   Waitms 20
   End If
End If

If Prerivanienabiratela = 1 And Nabor = 1 Then

   Nabor = 2
   Waitms 20
End If

If Nabor = 2 And Naborcifri = 1 Then Nabor = 0


If N1 <> 0 And Naborcifri = 0 Then
   If Prerivanienabiratela = 1 Then
      If N1 = 10 Then N1 = 0

         N = N + 1
         Cifra(n) = N1
         If N = 12 Then
            N = 1
            For P = 1 To 11
            Cifra(p) = 0
            Next P
         End If
         Gosub Informacia
         Nabor = 0
         N1 = 0
   End If
End If

Return

Pitanie:
If Trubka = 1 Then
   Microfon = 1
   Pitanienabiratela = 1
      Else
         Microfon = 0
         Pitanienabiratela = 0
End If

Return


'================ Подпрограмма режима разговора===========================================================
Razgovor:

Return

'========================================================================================
'========================================================================================
'========================================================================================
'========================================================================================





Programma:
Do


If Trubka = 1 Then
   If Zvonok = 0 Then
      Gosub Pitanie
      Zvonok = 1
   End If
   If Zvonok = 2 Then
      Gosub Pitanie
      Zvonok = 3
      Text1 = "ATA"
      Gosub Inicilizacija
      If T2 <= 30 Then                                      'Украшение
        For P = 1 To 20
         Sound Dinamik , 50 , 25
         Waitms 40
        Next P
      End If
   End If
End If

If Trubka = 0 Then
         If Zvonok = 3 Or Zvonok = 5 Or Zvonok = 1 Then
            Gosub Pitanie
            Gosub Antitrubka
            Gosub Sbros
            Zvonok = 0
         End If


End If
If Zvonok = 2 Or Zvonok = 4 Then Gosub Zumer

                          'Getline Modem




If Zvonok = 1 Or Zvonok = 5 Then Gosub Nabornomera

'If Zvonok = 3 Then Gosub Ozhidanie 'на всякий случай.


If Zvonok = 0 Then Gosub Sim300
If Naborcifri = 0 Then
   Gosub Ozhidanie
   T = T + 1
   If T = 255 Then                                          'испоняем то, что нужно исполнять редко с периодичностью
      T = 0
      If Ischarwaiting() = 0 Then                           'если буфер пуст, то вывести на экран (иначе задержка будет начительная)
         Gosub Informacia
            Else
               Gosub Sim300
      End If
   End If
End If



'СТРОГОЕ ПРАВИЛО ТРУБКИ==================









'Waitms 1

Loop




$include "Nokia-1100 Library.inc"
End

Отредактировано Ev3658 (2013-09-17 23:59:03)

0

95

Поздравляю!
Такого телефона точно ни у кого нет!

0

96

А схема исправленная есть?

0

97

Сил нет доделывать, не пойму, почему на исходящем вызове с телефона не работает микрофон, а на входящем он работает чётко, питание микрофона в норме.
Вот ссылка на печатку - http://radiokstovo.ru/images/cccpgsm/cc … mega8.lay6

Отредактировано Ev3658 (2013-09-18 13:22:57)

0

98

Ev3658 написал(а):

Сил нет доделывать, не пойму, почему на исходящем вызове с телефона не работает микрофон, а на входящем он работает чётко, питание микрофона в норме.
Вот ссылка на печатку - http://radiokstovo.ru/images/cccpgsm/cc … mega8.lay6

Отредактировано Ev3658 (Сегодня 14:22:57)

Сталкивался с такой бякой, GSM модуль возможно регистрируется в сети как устройство передачи данных, а не голоса и база просто не принимает от него голосовых данных.  Я пишу с объяснений, данных мне когда то оператором мобильной связи. Заменил модуль на телефонный от старого Сименса, все заработало сразу как надо.

0

99

IgorL написал(а):

Сталкивался с такой бякой, GSM модуль возможно регистрируется в сети как устройство передачи данных, а не голоса и база просто не принимает от него голосовых данных.  Я пишу с объяснений, данных мне когда то оператором мобильной связи. Заменил модуль на телефонный от старого Сименса, все заработало сразу как надо.


Всё-же голосовые функции работают как надо, за исключением в исходящих вызовах. Может какая иницилизация есть? Использую гарнитуру.

0

100

Так, для забавы, сооружал в детстве )

0

101

Mrshilov написал(а):

Я переписал библиотеку для Nokia1100, если есть желание потестировать - она здесь
Теперь поддерживаются стандартные баскомовские шрифты и картинки "bgf". Подключение на выбор: по 4, 3 или 2 проводам. При этом освобождается CS и можно подключить несколько дисплеев. Здесь пример подключения двух дисплеев.
Сделана обрезка символов и картинки, вылезающих за край экрана.
Это бета-версия, поэтому - название ног нужно задавать как в примере (используются имеющиеся в компиляторе пины), конфиг не соответствует разрешению - не обращайте внимания.

С LCD Nokia 1202 есть какие шаманства? Ща такие ещё есть в продаже в гринспаре по 40р.

0

102

Друзья, может не в тему, но тоже про модули (sim900). У меня стоит проблема отправки данных на сервер.
Работаю с gprs так (если грубо):
Print "AT+CIPSTART=" ; Chr(34) ; "TCP" ; Chr(34) ; "," ; Chr(34) ; Host ; Chr(34) ; "," ; Chr(34) ; "80" ; Chr(34) ' соединяюсь с сервером host.com после прихода CONNECT OK отправляю:
Print "AT+CIPSEND"  ' команда отправки, жду > и отправляю данные методом GET
Print "GET /" ; Putch ; "?" ; "device_id=1235&device_pass=123&T1=35" ; " HTTP/1.0"
Waitms 100
Print "Host: " ; Host ; " HTTP/1.0"
Waitms 10
Print Chr(10) '
Waitms 10
Print Chr(13) '
Waitms 10
Print Chr(26) 'отправка
Wait 5
Print "AT+CIPCLOSE" ' закрыть соединение

После этих манипуляций всегда приходит ответ SEND OK, но на сервер данные не передаются.
Если же приходит ответ
SEND OK
HTTP/1.0 200 OK, то тогда данные на сервере

причем железо раз в 10сек передает данные на сервер и посылка приходит с вероятностью 50 на 50
Кто сталкивался, что я не так делаю, подскажите, пож?

Отредактировано kostr (2013-12-03 14:54:11)

0

103

Решение отправки нашлось? Делись )

0

104

У моего дедуки 22 апреля день рождения. Он недавно отключил городской телефон и тут появилась идея собрать опять подобный телефон заново.
Начал ещё в марте, но проблемы на работе мешали продолжить, вообщем уволился, ща безработный, скоро бомж, так уж всё в порядке!
За пару дней нарисовал печатку, вытравил плату и теперь всё объединяю. Вот что сейчас имею:

фото телефона

https://pp.userapi.com/c845324/v845324373/1e82f0/-exwt7uTqZQ.jpg

Плата

https://pp.userapi.com/c851024/v851024323/1063d6/c84gqo1O6BE.jpg
https://pp.userapi.com/c845123/v845123965/1dcf8e/zj9q_uo7GJc.jpg
https://pp.userapi.com/c855220/v855220100/20596/kuWIm7HUi88.jpg
https://pp.userapi.com/c849036/v849036253/16baea/lvw-PYitGbE.jpg
https://pp.userapi.com/c852136/v852136712/f27e7/NugOjukBrZU.jpg

Для подсветки использовал WS2812

Подсветка

https://pp.userapi.com/c854124/v854124235/21196/2CXiLCbvlT0.jpg


Свернутый текст

https://pp.userapi.com/c851028/v851028588/fdf11/zeCTAh4-3T0.jpg

Проблемой было подобрать тон звонка, кстати, и сейчас актуально:

Для отладки подключил TX модема и контроллера через два диода на USB-COM переходник.

Связь для отладки

https://pp.userapi.com/c846120/v846120469/1e2619/5UIkPy4-QAA.jpg
https://pp.userapi.com/c844417/v844417469/1e23ec/9ZZg5F4Viuc.jpg

Кратко:
-два полевых транзистора P типа для включения преобразователя DC-DC 3в.-24в. и усилителя (дедушка плохо слышит)
-фаза звонка через IR4427
-тон в трубку из OC1A
-RGB подсветка диска
-подключение микроволнового датчика движения
-номеронабиратель забрал два INT
-Li-On АКБ + модуль зарядки.

Надеюсь за неделю сделаю и с функцией охраны

Отредактировано Ev3658 (2019-04-13 16:54:19)

+3

105

Как оказалось усилитель вообще не нужен, громкость в динамик ТК-67-УТ прям с модема отличная. Единственное что плохо, штатный тройной провод не годится, если из модема использовать 1 выход из двух, то помехи от GSM слышны.
По микрофону не знаю, буду пробовать угольный оставить, дед всё время кричит в телефон, у него жизненный опыт в угольный микрофон кричать, они не грубят на таких децибелах ))))

http://s9.uploads.ru/t/Io3uw.jpg

При вызове в динамике играет музыка. Модем по умолчанию выдаёт RING - можно смело при приёме RING выдавать сразу 1 секунду колокольчика с частотой 25Гц. Если больше 4х секунд "RING" небыло, можно считать вызов сброшен или получив команду
"NOCARRIER".

Микрофон тоже с набором конденсаторов подключается. По идее всю схему вместе с аккумулятором уже можно запихнуть в эту трубку ))) Модем маленький.

http://s5.uploads.ru/t/vE6By.jpg

При подключении SIM800L можно не париться со скоростью, а сразу дать команду АТ, он хорошо определяет, особенно если кварц 14745600

http://s9.uploads.ru/t/cDJAU.jpg

АТ команды - http://www.2150692.ru/faq/47-at-komandy-a6
Даташит - https://img.filipeflop.com/files/downlo … IM800L.pdf

------------------------------------------------------ Немного информации:
Частота вызывного сигнала :25(+-2) Гц.
Временные параметры вызывного сигнала:

• Городской вызов: -- 1 сек. вызов --|-- 4 сек. пауза--|-- 1 сек. вызов --
• Автоматический междугородний вызов : -- 1 сек. вызов --|-- 2 сек. пауза --|-- 1 сек. вызов --

Отредактировано Ev3658 (2019-04-14 00:37:41)

+1

106

Ev3658 написал(а):

По микрофону не знаю, буду пробовать угольный оставить, дед всё время кричит в телефон, у него жизненный опыт в угольный микрофон кричать, они не грубят на таких децибелах ))))

Можно и электретный спокойно ставить, только боком к источнику звука.

0

107

Nord написал(а):

Можно и электретный спокойно ставить

Не не не.... угольный ещё та тема оказалась!!!! Проверил сейчас, голос отличный!!! Я бы сказал это лучшее решение для телефона, он просто заточен под частоты речи и эти звуковые вибрации!!!
Схема ещё проще, подтянуть питание через сопротивление и через конденсатор снять.

0

108

Ev3658 написал(а):

Я бы сказал это лучшее решение для телефона, он просто заточен под частоты речи и эти звуковые вибрации!!!

Схематически угольный несомненно проще включается, но его наработка "на отказ" оставляет желать лучшего...
Сколько в свое время этих м/ф позаменял - счету уже нет...

Вот однозначно работающая схема, только резисторы надо уменьшить для работы от +5в
http://ua.nauchebe.net/i/a/electronics/SoberySamRadioSxemyZaVecher_image058.jpg

Отредактировано Nord (2019-04-14 01:39:17)

0

109

Nord написал(а):

м/ф позаменял - счету уже нет...


Знаю, работал в детстве с этими угольными микрофонами. Всё-же плюс в их сторону громаден. Они даже в автоматах на улице отлично работали, в крайнем случае просушить и потрясти. У меня не будет такого высокого напряжения, чтоб уголь в них сгорал, скорей всего он будет там почти вечный. Я сейчас в шоке от разборчивости голоса, нет посторонних шумов на фоне, только голос и не более, то-есть рабочий телевизор не слышно, окружающего шума вообще нет, исключительно только произносимая в угольный микрофон речь. Буду пробовать угольный микрофон сохранять, он у меня МК-16-Н 1987г.  :rolleyes:

http://www.quartz1.com/price/image150.php?img=PIC%2F218Q0420102.jpg

Технические характеристики
Номинальный диапазон частот, Гц  300-3400
Коэффициент передачи микрофона на частоте 1000 Гц, мВ/Па  120-240
Показатель громкости микрофона, дБ  4,5±2,5
Температура эксплуатации, ºС -50 … +55
Габаритные размеры, мм Ø48×24
Масса, г   35
Средняя наработка на отказ, не менее, ч 50000
Производитель  г.Рига завод VEF

Отредактировано Ev3658 (2019-04-14 02:32:28)

0

110

Ev3658 написал(а):

У меня не будет такого высокого напряжения, чтоб уголь в них сгорал, скорей всего он будет там почти вечный.

Согласен, выбор за вами. ;)
Спекались они в ТА, когда из-за неисправности контактной группы вызывное напряжение попадало на трубку при ее снятии. В этом случае был слышен характерный рокот в наушнике.
В исправном ТА работали долго.

0

111

Тут ещё другая причина оставить всё как есть. Я дедушке постоянно ищу старые мобильные телефоны Nokia, во всех новых телефонах он не может разобрать речь и действительно, нет такой выразительности  речи, хоть и громче новьё работает.
Тут мембрана в ТК-67-УТ по лучше будет, да и речь отлично слышна, очень выразительно, а самое главное, я в трубку кричал, а в старом наушнике ничего не дребезжит.

http://www.quartz1.com/price/image150.php?img=PIC%2F212Q0650400.jpg

Технические характеристики ТК-67-УТ:
Диапазон частот, Гц 300 - 3400
Средняя отдача в диапазоне частот 300-3400 Гц, Па, не менее 5,5
Модуль полного электрического сопротивления на частоте 1000 Гц, Ом 260 ± 52
Габаритные размеры, мм Ø48x24
Масса, г 40 ± 5
Коэффициент гармоник на частоте 1000 Гц, %, не более 4

0

112

http://s5.uploads.ru/t/lDtd8.jpg

То-есть кнопка трубки не должна быстрей изменять состояние меньше 200мс. (иди от 50-200мс)
Фильтр дребезга контактов номеронабирателя 20-100мс.
Не пойму что за "Пауза набора номера" и "Межцифровой интервал набора номера" - так как значение в мс.

0

113

Ev3658 написал(а):

Не пойму что за "Пауза набора номера" и "Межцифровой интервал набора номера" - так как значение в мс.

"Пауза набора номера" - пауза работы контакта номеронабирателя между "Импульсом набора номера".
Другими словами - процесс набора одной цифры складывается из "Импульсов набора" и "Пауза набора".
В цифровой форме - "0" это пауза, а "1" - замыкание контакта номеронабирателя.

В "дисковых" номеронабирателях для соблюдения этих параметров работали в паре спиральная пружина и центробежный тормоз... ;)
При их неисправности возникали ошибки в наборе.

"Межцифровой интервал набора номера" - промежуток между очередными наборами.
К примеру: если этот интервал будет более 20000 мс, то АТС считает, что набор номера прекращен и сбрасывается, если не набрано необходимое количество цифр.

Отредактировано Nord (2019-04-15 21:20:48)

0

114

Если есть работающий номеронабиратель (барабан), то можно на нём посмотреть скорость импульсов.

0

115

Ev3658
Вот здесь - все, что нужно для понимания работы ТА "тех лет": https://lib.qrz.ru/book/export/html/2682
Надеюсь, поможет. ;)

Отредактировано Nord (2019-04-16 23:25:48)

+1

116

Спасибо!

Оказалось АЦП в контроллере не нужно было использовать, модем выдаёт и напряжение и уровень заряда в процентах по команде: "AT+CBC" - "
Ответ приходит: "+CBC: 0,95,4134".
Где 0 - это режим (1-заряжается, 2-зарядка, 0 -не заряжается), видимо отдельный вывод где-то используется так как это значение не изменяется
95 - процент заряда
4134 - напряжение в мв.
подробнее тут - https://elschemo.ru/dlya-nachinayushhix … t-komandy/

Выделил процент заряда вот так:

Код:
If Left(buff(rxbuftm) , 4) = "+CBC" Then
   Waitms 1
   L = Instr(buff(rxbuftm) , ",")
   L = L + 1
   Vr = Instr(l , Buff(rxbuftm) , ",")
   Vr = Vr - L
   S = Mid(buff(rxbuftm) , L , Vr)
   Batt = Val(s)
End I


Как думаете, есть ещё проще метод выдернуть одну из трёх цифр в строке?

0

117

Ev3658 написал(а):

есть ещё проще метод выдернуть одну из трёх цифр в строке?

Да, если не брать проверки дополнительные:

Код:
    a = "+CBC: 0,95,4134"
    n = Split(a, b(1), ",")
    c1 = Val(b(1))
    c2 = Val(b(2))
    c3 = Val(b(3))

Отредактировано RDW (2019-04-18 12:32:52)

+1

118

Жаль время нельзя узнать у базовых станций, а батарейка к самому модему в модуле не выведена, но часы есть.

0

119

Ev3658 написал(а):

Жаль время нельзя узнать у базовых станций, а батарейка к самому модему в модуле не выведена, но часы есть.

Попробуй AT+CCLK? Если базовая станция нормальная, то она должна выдать дату и время в таком виде +CCLK:<yy/MM/dd,hh:mm:ss±zz>
Если нет то будет просто ОК/

0

120

0