Morshmom
1

прошивка gps трекера bascom avr

02.01.2014, 04:39. Показов 11481. Ответов 13
Метки нет (Все метки)

Здравствуйте уважаемые форумчане.

Я еще новичок в электронике,но решил перейти от слепого повторения чужих проектов, к более высокому уровню: создать свой.
Очень хочется сделать Gps трекер. со схемой проблем не возникло

http://savepic.net/4213215m.jpg


проблемы возникли на этапе написания прошивки, не могу написать отправку sms через sym 900
за основу была взята прошивка отсюда убрав оттуда работу с экраном получил:
Код
$regfile = "m32def.dat"
$crystal = 11059200
$baud = 115200

$hwstack = 32                                                default
$swstack = 8                                                 default
$framesize = 64

Declare Sub Getline(s As String)
Declare Sub Flushbuf()

Dim S As String * 80                                        строка со спутника
Dim B As Byte
Dim R As Byte
Dim Z As String * 4

Dim Ns As String * 1                                        широта N/S
Dim Ew As String * 1                                        долгота E/W

Dim Shirota As String * 10                                  широта
Dim Dolgota As String * 10                                  долгота

Dim Grad_shirota As String * 2                              градусы широты
Dim Grad_dolgota As String * 3                              градусы долготы

Dim Minuta_shirota As String * 2                            минуты широты
Dim Minuta_dolgota As String * 2                            минуты долготы

Dim Second_shirota As String * 4                            секунды широты
Dim Second_dolgota As String * 4                            секунды долготы

Dim Temp As Single                                          переменная для промежуточных преобразований

Dim Skorost As String * 6                                   расчетная скорость

Dim Hour As String * 2                                      часы
Dim Minut As String * 2                                     минуты времени
Dim Second As String * 2                                    секунды времени

Spiinit

раскладываем строку содержащую идентификатор $GPRMC
пример строки
$GPRMC,190813.000,A,5312.7581,N,05009.1821,E,0.30,256.15,231212,,,A*62

Do
R = Ischarwoyting()                                         проверка наличия сообщения в буфере
If R = 1 Then
Getline S                                              уходим на подпрограмму и смотрим что пришло
Z = Left(s , 4)                                        вытаскиваем левые 4 символа
If Z = "$GPR" Then

Shirota = Mid(s , 21 , 9)                        5312.7581
Dolgota = Mid(s , 33 , 10)                       05009.1821

Z = Left(shirota , 1)                            если там "," данные с модуля идут пустые, их выводить не нужно
If Z <> "," Then

Ns = Mid(s , 31 , 1 )                           N
Ew = Mid(s , 44 , 1)                            E

обработка широты и долготы под формат гуглокарт
Grad_shirota = Left(shirota , 2 )
Minuta_shirota = Mid(shirota , 3 , 2)
Second_shirota = Right(shirota , 4)
Temp = Val(second_shirota)                     7581
Temp = Temp * 60                               454860
Temp = Temp / 10000                            45,486
Second_shirota = Fusing(temp , "##.##")         45.49

Grad_dolgota = Left(dolgota , 3 )
Minuta_dolgota = Mid(dolgota , 4 , 2)
Second_dolgota = Right(dolgota , 4)
Temp = Val(second_dolgota)                     1821
Temp = Temp * 60                               109260
Temp = Temp / 10000                            10,926
Second_dolgota = Fusing(temp , "##.##")         10,93

обработка скорости и азимута движения
Skorost = Mid(s , 46 , 4)                       0.30 (в узлах)
Temp = Val(skorost)
Temp = Temp * 1.852                            перевод в км/ч
Skorost = Str(temp )
Skorost = Format(skorost , "000.00")

время UTC
Hour = Mid(s , 8 , 2)                           19
Minut = Mid(s , 10 , 2)                         08
Second = Mid(s , 12 , 2)                        13

вывод широты на дисплей
prymt ns;grad_shirota;"°";minuta_shirota;"";second_shirota;"   "

вывод долготы
prymt ew;grad_dolgota;"°";minuta_dolgota;"";second_dolgota;"   "

вывод скорости
prymt skorost;"км/ч";"   "

вывод времени
prymt hour;":";minut;":";second

Flushbuf                                          очищаем буфер обмена
Else
Flushbuf
End If
End If
End If
Loop
End

подпрограмма для разбора сообщения модуля
=============================================================================
Sub Getline(s As String)
S = ""
Do
B = Ymkey()                                           берем символ из буфера в формате ASCII
Select Case B
Case 10 : If S <> "" Then Exit Do                 конец строки, значит выходит из подпрограммы
Case Else : If B > 31 Then S = S + Chr(b)         печатаемые символы начинаются с кода 32 по таблице АСКИ, из них составляем строку
End Select
Loop
End Sub

очистка буфера
=============================================================================
Sub Flushbuf()
Woytms 10
Do
B = Ymkey()                                                забираем все из буфера
Loop Until B = 0
End Sub
а полученные результаты скомпоновать для sms,да и сам принцип управления модулем sym 900 я так и не понял.
собственно прошу помощи доделать прошивку.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2014, 04:39
Ответы с готовыми решениями:

Подключение GPS трекера
Всем привет! Появилась следующая проблема. Пишу программу мониторинга, которая принимает сигналы с...

Обман GPS-трекера
Всем Привет! Обращаюсь к Вам за консультацией, уважаемые знатоки! Суть проблемы в следующем: ...

Реализация Tv out на bascom avr
Добрый день! Подскажите, как можно реализовать вывод текста и графики на тв через композитный видео...

bascom avr и proteus
делаю http://cxem.net/mc/mc203.php в прошивке нужно изменить текст с русского на транслит но если...

13
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 886
02.01.2014, 13:09 2
А схему посмотреть без просмотра голых баб никак нельзя ?
0
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 92
02.01.2014, 13:57 3
Не совсем вопрос по модулю понял, но смс отправляется довольно просто. Сперва настройка на работу в текстовом режиме:
AT+CMGF=1
Затем настройка формата отправки (из даташита модуля):
prymtf("AT+CSMP=17,167,0,241\r\n");
Далее команда на саму отправку:
prymtf("AT+CMGS=nnnnnnnnnn"); (где nnnnnnnnn - номер, на который отправить смс)
Потом ждём от модуля приглашения ввести текст в виде стрелочки (>)
Как стрелку модуль выдал, заливаем в него своё текстовое сообщение. В конце "нигическая цифра" ctrl Z (код 0x1A). Всё. Модуль шлёт смску.
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
02.01.2014, 14:25 4
Цитата Сообщение от Morshmom
проблемы возникли на этапе написания прошивки, не могу написать отправку sms через sym 900
за основу была взята прошивка.
В Вашем коде нет ни строки работы с GPRS модулем SIM900.
0
Morshmom
02.01.2014, 14:58 5
Цитата Сообщение от x893
А схему посмотреть без просмотра голых баб никак нельзя ?
подскажите куда выложить картинку,- перезалью.
Morshmom
02.01.2014, 14:59 6
Цитата Сообщение от otixdos
В Вашем коде нет ни строки работы с GPRS модулем SIM900.
gprs же не нужен для отправки sms?
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 584
02.01.2014, 15:34 7
подскажите куда выложить картинку
Выкладывай на savepic.ru , лет 10 пользуюсь.
0
Morshmom
02.01.2014, 15:46 8
Цитата Сообщение от Ommykytotor
подскажите куда выложить картинку
Выкладывай на savepic.ru , лет 10 пользуюсь.
Спасибо, поправил.
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 92
02.01.2014, 15:53 9
На схеме транзистор на PWRkey висит в воздухе (земли нет). Не увидел напряжения питания модуля и контроллера. Так как цепей согласования уровней нет, контроллер нельзя питать напряжением больше 3в.
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
02.01.2014, 16:08 10
Цитата Сообщение от Morshmom
Цитата Сообщение от otixdos
В Вашем коде нет ни строки работы с GPRS модулем SIM900.
gprs же не нужен для отправки sms?

Не так выразился , у Вас там для работы с GSM/GPRS модулем SIM900 нет ни строки кода. Ни попыток включить, ни проверить наличие SIM карты, ни проверки регистрации, ни даже не видно настройки последовательного порта для работы с ним.
И Вы пишите "не могу написать отправку sms через sym 900". Конечно Вы не можете, если даже не пытались.
Примеров для работы с модулем SIM900 в сети уйма, только тот кто не искал ничего не видал.
Немножко Вам подскажу.
1. Важное значение имеет питание для этого модуля, в условиях плохого приёма он в импульсах может потреблять до 2-х ампер тока.
2. Трекер, штука как правило носимая (имеется ввиду перемещаемая), поэтому условия приёма всегда меняются, от очень хороших, до полного пропадания, поэтому Вам нужно контролировать наличие регистрации в сети. Иначе можете попасть в ситуацию когда Вы отправляете СМС а регистрации в сети нет.
3. Также вполне можете столкнуться с особенностями местных операторов сотовой сети, которые часто не полностью соблюдают стандарты GSM.
4. Всегда контролируйте ответы от модуля sym900, и по ним принимайте решения.
5. Много документов, а также AppNotes Вы сможете скачать здесь -> http://www.microchip.ua/symsom/?link=/SIM900x
0
Morshmom
02.01.2014, 20:25 11
упс не ту загрузил.

http://savepic.net/4247026m.jpg


Цитата Сообщение от otixdos
Цитата Сообщение от Morshmom
Цитата Сообщение от otixdos
В Вашем коде нет ни строки работы с GPRS модулем SIM900.
gprs же не нужен для отправки sms?
Не так выразился , у Вас там для работы с GSM/GPRS модулем SIM900 нет ни строки кода. Ни попыток включить, ни проверить наличие SIM карты, ни проверки регистрации, ни даже не видно настройки последовательного порта для работы с ним.
И Вы пишите "не могу написать отправку sms через sym 900". Конечно Вы не можете, если даже не пытались.

вот наброски.
Код
Do
Print "AT"
Woytms 40
Getline Sk
Loop Until Sk = "OK"                                    не выйдет из цикла пока модуль не ответит OK
Flushbuf

Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34)

Do
Woytms 40
Getline Sk
Loop Until Sk = "OK"                                    не выйдет из цикла пока модуль не ответит OK
Flushbuf

Print "AT+CMGF=1"                                           включаем текстовый формат сообщений
Print "AT+GSMBUSY=1"                                        выключаем приём входящих звонков

Print "AT+CMGS=" ; Chr(34) ; Phonenumber ; Chr(34)
Woytms 200
Print Otvit ; Chr(26)
Print Chr(26);
Woyt 1
Print Chr(13)
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
02.01.2014, 21:26 12
Print "AT+CMGF=1" включаем текстовый формат сообщений
Print "AT+GSMBUSY=1" выключаем приём входящих звонков

Давать следующую команду не дождавшись ответа от предыдущей, чревато пропуском предыдущей (игнорированием).
Команды для SIM900 должны оканчиваться символом \r, ваш Print "" добавляет его ?
0
Morshmom
02.01.2014, 23:17 13
Цитата Сообщение от otixdos
Print "AT+CMGF=1" включаем текстовый формат сообщений
Print "AT+GSMBUSY=1" выключаем приём входящих звонков

Давать следующую команду не дождавшись ответа от предыдущей, чревато пропуском предыдущей (игнорированием).
Команды для SIM900 должны оканчиваться символом \r, ваш Print "" добавляет его ?
так вроде у этих команд нет ответа?

как я понял тут большинство пишет на с++?
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
02.01.2014, 23:52 14
Цитата Сообщение от Morshmom
Цитата Сообщение от otixdos
так вроде у этих команд нет ответа?

как я понял тут большинство пишет на с++?
Как нету, а "Rysponse TA sets parameter to denote which input omd output format of messages to
use. OK" в ответ придёт \r\nOK\r\n
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2014, 23:52

Нужно перевести с Bascom-AVR на Си
Есть программа на Bascom-AVR, реализующая работу универсального ИК пульта ДУ на ATMega88. Мне...

Косяк с подпрограммами (Bascom AVR)
Есть идея сделать блоки для отдельных программ. Для этого решил попробовать написать...

Резервное электропитание для GPS-трекера
GPS трекер (без резервного питания) питается от автомобильного аккумулятора (12 В). Требуется...

Как получить данные с gps трекера?
Уважаемые Гуру! Хочу попробовать обрабатывать данные с gps трекера автомобиля. Какая практика...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.