logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 + Nokia 5110 - Sterowanie telefonem przez F-BUS komendami AT

takilogin 25 Sie 2015 15:10 3333 25
  • #1 14946397
    takilogin
    Poziom 15  
    Cześć,
    Chcę sterować przy pomocy portu szeregowego mikrokontrolera Atmega8 starym telefonem Nokia 5110
    Na tych stronach wszystko wydaje się banalnie proste:
    http://www.avrland.ovh/2014/07/komendy-at-wysyanie-sms-pdu-mode.html
    http://majsterkowo.pl/wlasny-modem-gsm-do-arduino
    Wysyłam polecenia AT i telefon dzwoni, wysyła SMS-y itp.

    W tym artykule to już wydaje się bardziej skomplikowane:
    http://ep.com.pl/files/8115.pdf
    Najpierw 230 bajtów synchronizacji, później cały szereg ramek danych, zapytań i potwierdzeń.

    Jak to jest z tym tym F-BUSem, dam radę zbudować prosty automat dzwoniący przy alarmie, czy może wlutować Atmegę pod przyciski ;-)

    Dzięki i pozdrawiam :)
  • #3 14947956
    takilogin
    Poziom 15  
    Hej,
    Konkretnie to mam mętlik w głowie :)
    Nie wiem czy aby nawiązać jakiekolwiek połączenie z telefonem to wystarczy że wyślę dwa znaki po porcie szeregowym, czyli np :"AT"
    albo czy muszę postępować zgodnie z procedurą opisaną w artykule EP.
  • Pomocny post
    #4 14948446
    vania
    Poziom 24  
    takilogin napisał:
    Hej,
    Konkretnie to mam mętlik w głowie :)
    Nie wiem czy aby nawiązać jakiekolwiek połączenie z telefonem to wystarczy że wyślę dwa znaki po porcie szeregowym, czyli np :"AT"
    albo czy muszę postępować zgodnie z procedurą opisaną w artykule EP.

    Zgodnie z procedurą opisaną w EP. "AT" to przy telefonach obsługujących komunikację komendami AT. Wrzuć w google "fbus avr" i poczytaj. Są gotowce na atmega8 wysyłające SMS.
  • #5 15060611
    takilogin
    Poziom 15  
    Witam po przerwie :-)
    Po ciężkich bojach udało mi się w końcu uzyskać połączenie ze staruszką Nokią przy pomocy dokumentacji:
    http://www.insidegadgets.com/wp-content/uploads/2013/01/nk6110.txt i artykułu z EP jak wyżej.

    Robię coś takiego:
    - wysyłam 128x 0x55 w celu zsynchronizowania połączenia
    - następnie wysyłam ramkę z poleceniem 0x01 „Call”
    
    {0x1E,0x00,0x0C,0x01,0x00,0x18,0x00,0x01,0x00,0x01,0x09,
    0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,     // nr tel w ASCII (123456789)
    0x05,0x01,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x40, [suma kontrolna 1], [suma kontrolna 2]}
    

    I wszystko ładnie działa, telefon dzwoni.

    Tylko teraz za bardzo nie wiem jak zakończyć połączenie ;)
    Próbuję używać polecenia 0x0c „Keys” i odkładać po prostu słuchawkę ale telefon nie chce mnie słuchać.
    Robię tak:
    
    {0x1E,0x00,0x0C,0x0C,0x00,0x07,0x00,0x42,
    0x01,0x19,    // wciśnij klawisz menu (kończenie połączenia)
    0x01,0x01,0x41,0x00 [suma kontrolna 1], [suma kontrolna 2]}
    


    Proszę o pomoc :)
  • #6 15060788
    vania
    Poziom 24  
    takilogin napisał:
    Tylko teraz za bardzo nie wiem jak zakończyć połączenie ;)
    Próbuję używać polecenia 0x0c „Keys” i odkładać po prostu słuchawkę ale telefon nie chce mnie słuchać.
    Robię tak:
    
    {0x1E,0x00,0x0C,0x0C,0x00,0x07,0x00,0x42,
    0x01,0x19,    // wciśnij klawisz menu (kończenie połączenia)
    0x01,0x01,0x41,0x00 [suma kontrolna 1], [suma kontrolna 2]}
    


    Proszę o pomoc :)


    Polecenie Terminate Call z protokołu F-Bus, coś takiego:
    Header: 0x1E, 0x00, 0x0C
    Terminate: 0x0A,0x00,0x08,0x00,0x01,0x00,0x42,0x01,0x0F
    0x01, seq, padding, chksum, chksum
  • #7 15060902
    takilogin
    Poziom 15  
    ok, super dzięki, sprawdzę wieczorem czy działa :)

    Ale skąd Ty to wiesz? Nie jest to zgodne z dokumentacją do której link podałem wyżej.
    Chyba że ja jej jakoś źle używam...

    Dzięki za szybką odpowiedz :)
  • #8 15062854
    takilogin
    Poziom 15  
    
    {0x1E,0x00,0x0C,0x0C,0x00,0x07,0x00,0x42, 
    0x01,0x19,    // wciśnij klawisz menu (kończenie połączenia) 
    0x01,0x01,0x41,0x00 [suma kontrolna 1], [suma kontrolna 2]} 
    

    No niestety u mnie to nie działa.

    A wie może ktoś jak "używać" klawiatury przy pomocy tego protokołu?
  • #9 15063354
    vania
    Poziom 24  
    takilogin napisał:
    ok, super dzięki, sprawdzę wieczorem czy działa :)

    Ale skąd Ty to wiesz? Nie jest to zgodne z dokumentacją do której link podałem wyżej.
    Chyba że ja jej jakoś źle używam...

    Dzięki za szybką odpowiedz :)


    To jest ze starego kodu na 51 (sprzed 10lat). Z tego co pamiętam to działało.
    Nie mam aktualnie możliwości odpalenia tego kodu, ewentualnie jak znajdę czas i nokie 5110 w piwnicy to sprawdzę na programie w Delphi (kiedys pisałem coś do komunikacji po FBus)

    Dodano po 2 [godziny] 16 [minuty]:
    Jeszcze jedna sprawa. Czy masz zrobioną pełną komunikację FBUS razem z potwierdzaniem ramek wraz z numerem sekwencji?
  • #10 15063910
    takilogin
    Poziom 15  
    Cytat:

    Jeszcze jedna sprawa. Czy masz zrobioną pełną komunikację FBUS razem z potwierdzaniem ramek wraz z numerem sekwencji?

    tzn sprawdzałem to tak że zrobiłem sobie taką sekwencję:
    - wysyłam 128 x 0x55
    - czekam 100 ms
    - wysłałem ramkę z poleceniem"Call" z seq 0x40 (telefon wybrał nr)
    - czekam 15s
    - wysyłam ramkę z poleceniem "Terminate Call" z seq 0x41(telefon nie zakończył połączeni)

    Przyznam się że nie sprawdzam co telefon do mnie wysyła...
  • Pomocny post
    #11 15064884
    vania
    Poziom 24  
    takilogin napisał:
    Cytat:

    Jeszcze jedna sprawa. Czy masz zrobioną pełną komunikację FBUS razem z potwierdzaniem ramek wraz z numerem sekwencji?

    tzn sprawdzałem to tak że zrobiłem sobie taką sekwencję:
    - wysyłam 128 x 0x55
    - czekam 100 ms
    - wysłałem ramkę z poleceniem"Call" z seq 0x40 (telefon wybrał nr)
    - czekam 15s
    - wysyłam ramkę z poleceniem "Terminate Call" z seq 0x41(telefon nie zakończył połączeni)

    Przyznam się że nie sprawdzam co telefon do mnie wysyła...

    Z tego co pamiętam to po "Call" telefon wysyła potwierdzenie a następnie kolejną ze statusem na którą trzeba odpowiedzieć potwierdzeniem.
    Najlepiej by było sobie monitorować transmisję. Oczywiście mogę się mylić bo dawno temu bawiłem się Nokiami ale na 100% dało się z nich wyciągnąć informacje czy zdalny telefon odrzucił połączenie, czy zajęty czy trwa dzwonienie (nie odbiera). Tylko nie jestem pewien czy wymagało to pytania o status czy telefon sam po FBUS to wysyłał.
  • #12 15188599
    takilogin
    Poziom 15  
    Trochę skomplikowana ta rozmowa z Nokią. Trzeba się nagadać, pilnować numeracji...
    Poradziłem sobie z zakończeniem rozmowy poprzez wyłączenie telefonu ;)
    Wiem że nie jest to najlepsze rozwiązanie ale działa :)
    Cel został osiągnięty. Zbudowałem proste powiadomienie o alarmie z wykorzystaniem starego telefonu.
    Dziękuję za pomoc.
    Pozdrawiam :)
  • #13 15189334
    Przemek7
    Poziom 19  
    Operator ma możliwość "zbleklistować" ;) terminal, który zachowuje się niezgodnie ze standardami czyli np w każdej rozmowie wysyła do sieci swój "powerdown".
    Może działać do czasu... albo do końca świata i jeden dzień dłużej. Albo, albo. Tylko czy na "albo" można sobie pozwolić w systemach alarmowych? ;)
  • #14 15190622
    takilogin
    Poziom 15  
    Źle się wyraziłem pisząc "alarm" To powiadomienie o pewnym zdarzeniu mniej więcej raz na rok. W instalacji alarmowej nigdy bym sobie nie pozwolił na takie rozwiązanie. Ale dzięki za info :)
  • #15 15190799
    vania
    Poziom 24  
    Przemek7 napisał:
    Operator ma możliwość "zbleklistować" ;) terminal, który zachowuje się niezgodnie ze standardami czyli np w każdej rozmowie wysyła do sieci swój "powerdown".
    Właśnie miałem to pisać :) Parę razy mi się to zdarzyło przy testowaniu.

    Dodano po 6 [minuty]:

    takilogin napisał:
    Źle się wyraziłem pisząc "alarm" To powiadomienie o pewnym zdarzeniu mniej więcej raz na rok. W instalacji alarmowej nigdy bym sobie nie pozwolił na takie rozwiązanie. Ale dzięki za info :)
    Jaką masz pewność że po roku akurat zadziała i zadzwoni? Ja bym dodał opcję cyklicznego (np raz na dobę) wysyłania testu SMS żeby wiedzieć czy układ żyje.
  • #16 15203000
    takilogin
    Poziom 15  
    Wkurzyliście mnie ;-)
    Przez Wasze gadanie o czarnej liście znowu musiałem się zabrać za tego F-BUSa
    Wysyłam taką ramkę i telefon grzecznie odkłada słuchawkę:
    
    0x1e, 0x00, 0x0c, 0x0a, 0x00, 0x08, 0x00, 0x01, 0x00, 0x42, 0x01, 0x0f, 0x01, 0x42, 0x12, 0x0c
    

    :-)
    Nie wiem czemu wcześniej nie działało, nawet nie trzeba wysyłać żadnych potwierdzeń, po prostu ramka dzwoń, ramka zakończ.
    A da się przez F-BUS załączyć/ wyłączyć telefon
  • #17 15203193
    vania
    Poziom 24  
    takilogin napisał:
    Wkurzyliście mnie ;-)
    Przez Wasze gadanie o czarnej liście znowu musiałem się zabrać za tego F-BUSa
    Wysyłam taką ramkę i telefon grzecznie odkłada słuchawkę:
    
    0x1e, 0x00, 0x0c, 0x0a, 0x00, 0x08, 0x00, 0x01, 0x00, 0x42, 0x01, 0x0f, 0x01, 0x42, 0x12, 0x0c
    

    :-)
    Nie wiem czemu wcześniej nie działało, nawet nie trzeba wysyłać żadnych potwierdzeń, po prostu ramka dzwoń, ramka zakończ.
    A da się przez F-BUS załączyć/ wyłączyć telefon

    Załączenie:
    Header: 0x1E, 0x00, 0x0C
    Power On: 0x0A,0x00,0x08,0x00,0x01,0x00,0x42,0x01,0x0D
    0x01, seq, padding, chksum, chksum

    Wyłączenie:
    Header: 0x1E, 0x00, 0x0C
    Power Off: 0x0A,0x00,0x08,0x00,0x01,0x00,0x42,0x01,0x49
    0x01, seq, padding, chksum, chksum
  • #18 15203435
    takilogin
    Poziom 15  
    Wielkie dzięki za pomoc.
    Powiedz proszę skąd czerpiesz wiedzę ?
    Skoro da się tak załączyć telefon to i pewnie się da "wciskać" inne klawisze.
    Czy mogę Cię prosić o udostępnienie dokumentacji?

    Pozdrawiam
  • #19 15206241
    vania
    Poziom 24  
    takilogin napisał:
    Wielkie dzięki za pomoc.
    Powiedz proszę skąd czerpiesz wiedzę ?
    Skoro da się tak załączyć telefon to i pewnie się da "wciskać" inne klawisze.
    Czy mogę Cię prosić o udostępnienie dokumentacji?

    Tu Ci pisałem że to z moich (i nie tylko) projektów z czasów kiedy N5110 była popularnym telefonem do "zabawy" z uC. Dokumentacji jakiejś specjalnej nie mam to tylko moje zapiski i fragmenty kodów. To co stosowałem w komunikacji z N5110 to:
    - włączenie telefonu
    - wpisanie PIN
    - wysyłanie SMS
    - odbieranie SMS (to jest w kodzie ale nigdy nie wywołane)
    - kasowanie SMS
    - dzwonienie
    - przerwanie dzwonienia
    - odczyt statusu
    - chyba wyłączenie telefonu (to co Ci wysłałem) w sumie tego nigdzie w kodzie nie widzę żeby było używane ale ramka jest

    Mój kod na AVR/51 to rozwiązanie zrobione dla kogoś więc nie mogę udostępnić w całości (poza tym jest w asemblerze i bardzo brzydki bo z początków mojego programowania AVR). Jakieś szczątki dokumentacji znalazłem, część jest dostępna tylko w WebArchive FBUS Załączam spakowane.
  • #20 15217754
    takilogin
    Poziom 15  
    Dziękuję za materiały.
    Mam pytanie:
    Czy tutaj:
    Cytat:

    Załączenie:
    Kod:
    Header: 0x1E, 0x00, 0x0C
    Power On: 0x0A,0x00,0x08,0x00,0x01,0x00,0x42,0x01,0x0D
    0x01, seq, padding, chksum, chksum

    nie powinno być 0x13 zamiast 0x0D?
    Tak jak w Twojej dokumentacji:
    Cytat:

    Power ON [0x13]
    First frame from phone after power on.
    Power OFF [0x49]
    Last frame from phone before power off
    Initialization (0x15)
    Initialization OK [0x16]
  • #21 15217998
    vania
    Poziom 24  
    takilogin napisał:
    Cytat:

    Załączenie:
    Kod:
    Header: 0x1E, 0x00, 0x0C
    Power On: 0x0A,0x00,0x08,0x00,0x01,0x00,0x42,0x01,0x0D
    0x01, seq, padding, chksum, chksum

    nie powinno być 0x13 zamiast 0x0D?
    Tak jak w Twojej dokumentacji:

    Z tego co pamiętam to ramka podana powyżej działała. Skopiowane jest to z kodu. Z tego co poszukałem to jest ramka która "naciska" przycisk Power. Z tego wynika że to co Ci podałem jako wyłączenie nie będzie działać (w kodzie to miałem ale nigdy nie używane).
    Podsumowując wysyłasz ramkę powyżej (Power On), telefon potwierdza i chyba wysyła:
    Power ON [0x13]
    First frame from phone after power on. 

    Podejrzewam że ponowne wysłanie "Power On" spowoduje odesłanie przez telefon potwierdzenia i ramki:
    Power OFF [0x49]
    Last frame from phone before power off 
    Trzeba by to sprawdzić. Tutaj jest jeszcze dostępna dokumentacja protokołów Nokii gnokii
  • #22 15219297
    takilogin
    Poziom 15  
    Wyłączenie mi działa jak dwa razy wyślę ramkę z 0x0D
    Czyli ok :)
    Ale czy na pewno da się załączyć telefon przez F-BUS ?
    Próbuję różnych kombinacji i nie chce się załączyć
    Ale nie poddaje się :)
  • #23 15221468
    vania
    Poziom 24  
    takilogin napisał:
    Wyłączenie mi działa jak dwa razy wyślę ramkę z 0x0D
    Czyli ok :)
    Ale czy na pewno da się załączyć telefon przez F-BUS ?
    Próbuję różnych kombinacji i nie chce się załączyć
    Ale nie poddaje się :)
    Da się załączyć. Jak znajdę chwilkę czasu (sobota/niedziela) to wygrzebię w piwnicy N5110 i sprawdzę.
  • #24 15244948
    takilogin
    Poziom 15  
    Udało Ci się może coś potestować ?
  • #25 15247461
    vania
    Poziom 24  
    takilogin napisał:
    Udało Ci się może coś potestować ?
    Mam na stole właśnie Nokię 6310, 5110 nie dałem rady wygrzebać w piwnicy (jest w jakimś pudle). W najbliższym czasie (najprędzej sobota) sprawdzę ramki na 6310.
  • #26 15248075
    takilogin
    Poziom 15  
    Super, dzięki za poświęcony czas.
REKLAMA