X

Oldschoolowa bramka SMS

mdziewie 07 Jul 2011 21:23
  • Positive voted Helpful post? (+206)
    Oldschoolowa bramka SMS

    Dzień dobry,
    w myśl prawdy, iż najwięcej satysfakcji przynoszą wynalazki głupie, chciałbym dziś zaprezentować moje nowe dzieło. Jest nim urządzenie do wysyłania i odbierania krótkich wiadomości tekstowych, czyli tzw. bramka SMS.
    Dociekliwi wprawdzie zapytają, po co to komu, skoro każdy telefon to potrafi, niemniej, jak napisałem, najwięcej satysfakcji...

    Do rzeczy - bramka SMS składa się z trzech elementów:
    - modemu GSM
    - komputra
    - konsoli użytkownika
    - kabli, drutów i płytki uniwersalnej (nie spodziewałem się hiszpańskiej inkwizycji...)

    Rolę modemu GSM spełnia znany i nielubiany chiński moduł ZTE MG3030 (na następnym zdjęciu wlutowany w płytkę uniwersalną), znany również pod różnymi innymi nazwami. Nie ma się o nim co rozpisywać, wiele osób próbowało go już użyć (niektórzy nawet z sukcesem), a milowy krok stanowi zauważenie, że mniej więcej obsługuje on wszystkie normalne komendy AT dostępne dla modemów GSM, w związku z czym nie trzeba koniecznie używać dokumentacji dostarczonej przez producenta. Modem jak to modem - z jednej strony podłączona jest do niego antenka, a z drugiej - przez UART - mikrokontroler, czyli tzw. komputr. Z trzeciej strony podłączona jest karta SIM (opisuję słownie, bo oczywiście nie namalowałem schematu).

    Oldschoolowa bramka SMS

    Wspomniany Komputr to mikrokontroler STM32F103 (32-bitowy rdzeń Cortex M3, tutaj pracujący z częstotliwością 64 MHz, 20 KB RAM, 128 KB Flash). Elektroniki towarzyszącej jest niewiele - przekaźnik włączający zasilanie konsoli, dwie diodki LED, parę tranzystorów obsługujących transmisję w pętli prądowej, no i zasilacz:)

    Dochodzimy do sedna sprawy - konsolę użytkownika stanowi dalekopis ASR33 amerykańskiej firmy Teletype (ten konkretny egzemplarz to młodziak, wyprodukowany coś koło 1976 roku). Ciekawych konstrukcji tej diabelnej maszyny odsyłam do materiałów w internecie - dodam tylko tyle, że urządzenie ma dwa tranzystory na krzyż, a kodowanie i dekodowanie danych (przesyłanych szeregowo, 1 bit startu, 8 danych, 1 stopu, za pomocą pętli prądowej) odbywa się mechanicznie, za pomocą czegoś, co wygląda jak maszyna Babbage'a;)
    Założeniem projektu było pozostawienie dalekopisu w nienaruszonym stanie (żadnych przeróbek). Swoje kable dołączyłem do panelu zaciskowego znajdującego się z tyłu urządzenia.
    Zdjęcie poniżej prezentuje częściowo rozmontowany (do konserwacji) "dystrybutor" - rejestr przesuwny produkujący dane szeregowe.

    Oldschoolowa bramka SMS

    Oprogramowanie napisałem od zera. Wykorzystuje ono wielowątkowy "system operacyjny" Free-RTOS i właściwie nie ma tu się o czym rozpisywać - po prostu kupa klepania...
    Co do funkcjonalności - użytkownik, poza możliwością wysyłania i odbierania SMS-ów, ma dostęp do książki telefonicznej (oczywiście z możliwością edycji wpisów) i paru funkcji użytkowych, takich jak sprawdzenie siły sygnału.
    Na obrazku - kawał wydruku z dalekopisu.

    Oldschoolowa bramka SMS

    Ostatni obrazek - elektronika zabudowana w "nodze" dalekopisu. (Ten duży transformator robi 115V dla samego teletypa; mój transformator to mały toroid).

    Oldschoolowa bramka SMS

    Zdjęć może być więcej, jak je zrobię; mam również film przedstawiający urządzenie przy pracy (piorunujące wrażenie), ale muszę go trochę odchudzić przed wrzuceniem.

    Pozdrawiam i zachęcam do zadawania pytań. Krytyki nie akceptuję;)

    Edit: Dorzucam filmik. Niestety, część musiałem zamazać, żeby ukryć numery telefonów osób trzecich;)










    P.S. Dzięki za wszystkie pozytywne komentarze, które zazdrośni moderatorzy nieustępliwie wrzucają do kosza;)
  • #2 07 Jul 2011 22:40
    matn__
    Level 13  
    Helpful post? (0)
    No, no. Bramka godna podziwu. Masz podgląd SMS-ów co napisałeś na kartce? Na jakim mikrokontrolerze zrealizowałeś projekt?
  • #3 07 Jul 2011 22:49
    DVDM14
    Level 34  
    Helpful post? (-1)
    Projekt trochę dziwny, ale fajny. Porządne wykonanie, układ wykonuje przewidziane dla niego zadania, brawo. :) A co do pytań, trudno było zaimplementować obsługę tego dalekopisu? Jak dużym wyzwaniem było zmuszenie go do współpracy z mikrokontrolerem?

    matn__ wrote:
    [...]Na jakim mikrokontrolerze zrealizowałeś projekt?


    Przecież Autor tematu napisał:

    mdziewie wrote:
    [...]Wspomniany Komputr to mikrokontroler STM32F103 (32-bitowy rdzeń Cortex M3, tutaj pracujący z częstotliwością 64 MHz, 20 KB RAM, 128 KB Flash).[...]


    Ps. W Twoim poście, kolego mdziewie znajduje się 5 błędów ortograficznych. ;)
  • #4 07 Jul 2011 22:51
    Removed
    Helpful post? (0)
    Na przedostatnim obrazku jest twój numer telefonu :).
  • #5 07 Jul 2011 23:14
    1st
    Level 15  
    Helpful post? (0)
    Jak byś jeszcze dorzucił obsługę taśmy drukowanej to byłby zupełny wypas!
    Archiwum SMS na taśmach - oldschoolowe na maxa.

    Jak wysyłasz te sms? Bo jak rozumiem inicjujesz modem, klepiesz w klawisze wiadomość i "return", czy wpisujesz komendy AT w terminal?
  • #6 07 Jul 2011 23:36
    mdziewie
    Level 18  
    Topic author Helpful post? (0)
    Dobry wieczór,
    odpowiadam na pytania:

    1) Co do błędów ortograficznych - nie dyskutuję:) Dodam, że "komputr" jest celowy, a jedną przekręconą literówkę poprawię w wolnej chwili.

    2) Komunikacja z TTY jest banalnie prosta. Jak pisałem, dalekopis wyposażony jest w łącze szeregowe, więc może być obsłużony przez zwykły UART znajdujący się w mikrokontrolerze. Jest jedno małe "ale" - ASR33 chodzi z historyczną prędkością 110 bodów - żeby taką osiągnąć na wspomnianym STM-ie, trzeba zjechać z taktowaniem peryferiów do minimum (inaczej brakuje licznika, żeby ustawić baudrate). Druga uwaga jest taka, że warstwa elektryczna protokołu to pętla prądowa (20 lub 60 mA). Komunikacja z nią wymaga użycia wzmacniacza na tranzystorze (a w przypadku mojego układu na dwóch). Poza tym istnieje pewna specyfika komunikacji - np. po znaku CR trzeba wysłać kilka "znaków wypełniających" (np. zer) - chodzi o to, że powrót karetki chwilę trwa i w tym czasie nie powinien do terminala dotrzeć żaden drukowalny znak (bo znajdzie się gdzieś pośrodku kartki).
    Ostatnią uwagą jest to, że zasilanie TTY puszczone jest przez przekaźnik i odłączane kiedy nic się nie dzieje (dalekopis robi dużo szumu przy pracy, nawet jak aktualnie nic nie drukuje; w dodatku to zabytek i wypadałoby minimalizować jego zużycie). Urządzenie wyposażyłem w specjalny guzik do "budzenia" konsoli, jeśli chcemy coś napisać (dopóki silnik nie pracuje, dopóty dystrybutor się nie kręci, więc nie jesteśmy w stanie wysłać żadnego znaku z klawiatury).

    3) Komunikacja między procesorem a modemem odbywa się oczywiście za pośrednictwem komend AT. Natomiast konsola użytkownika wyposażona jest w prosty interfejs typu "wiersz poleceń". Interfejs jest tak pomyślany, żeby zużywał jak najmniej papieru, tzn:
    a)linie mają być maksymalnie wypełnione, bez zbędnych znaków nowej linii
    b)drukowane teksty powinny być możliwie krótkie.
    Użytkownik nie ma bezpośredniego dostępu do komend AT - no, chyba że zrobi coś w stylu "AT Intrusion" z tekstu SMS-a:) Po włączeniu zasilania oprogramowanie samo konfiguruje modem, wprowadza numer PIN, podłącza się do sieci itd. - tak jak telefon komórkowy.

    3) Tak, tekst SMS-a jest drukowany w trakcie pisania. Jedyną "innością" w stosunku do wyświetlania na monitorze jest to, że karetka nie potrafi się cofać, więc wciśnięcie klawisza BS (albo DEL) powoduje skasowanie ostatniego znaku z bufora i wydrukowanie na papierze dodatkowego znaku informującego o tym, że poprzedni znak został skasowany. Na przykład:
    Piszemy: Ala ma ps<BS><BS>kota
    Na papierze będzie: Ala ma ps!!kota
    Treść SMS: Ala ma kota

    4) Rzeczywiście, jest tam mój numer:) Ale mój numer jest powszechnie dostępny w Internecie, więc nie mam się czym przejmować. Odfiltrowałem zdjęcia, na których są numery innych osób.

    5)Obsługa taśmy w jest:) Wystarczy włożyć taśmę w dziurkacz i włączyć tenże. Niestety, w TTY sterowanie dziurkaczem i czytnikiem jest tylko manualne, więc z poziomu oprogramowania nie można decydować, czy chcę tekst wydrukować, czy wydziurkować. (Dziurkuje się zawsze to samo, co się drukuje. Alternatywnie się drukuje, ale nie dziurkuje.) O papierowym archiwum SMS też już myślałem - zgadzam się, to już odpał po całości:)

    P.S. Zmieniłem w tym i poprzednim poście słowo "selektor" na "dystrybutor", żeby być w zgodzie z instrukcją obsługi:) Selektorem nazywa się urządzenie spełniające odwrotną funkcję - tzn. dekodujące dane szeregowe. Dla zainteresowanych - składa się z elektromagnesu, klapki i bliżej niezbadanego mechanizmu.

    Pozdrawiam.
  • #7 08 Jul 2011 00:25
    1st
    Level 15  
    Helpful post? (0)
    OK.
    Z mojej strony ostatnie pytanko (chyba :-) )skąd wziąłeś dalekopis? Właśnie pobieżnie przejrzałem allegro i ebay i nic. A pamiętam zabawy z dalekopisem... pamiętam jak mój ojciec był szefem łączności na pewnym przejściu granicznym ileś lat temu. Bawiłem się w tworzenie "ACSI ART" a właściwie "Kropka ART" na tych taśmach.
  • #8 08 Jul 2011 00:41
    mdziewie
    Level 18  
    Topic author Helpful post? (0)
    No cóż, mówiąc krótko, dalekopis uratowałem od śmietnika pewnej dużej polskiej firmy... Dialog wyglądał mniej więcej tak:
    - Ło, skąd to macie?
    - Nie wiem, jak chcesz to bierz, bo wszystko wyrzucamy.
    Było tam jeszcze kilka innych gratów w lepszym lub gorszym stanie; TTY jest pierwszym, który uruchomiłem.

    A z zupełnie innego źródła mam jeszcze prawdziwe cacko - PDP11/44 - ale musi poczekać, aż napiszę pracę doktorską;)

    Do Krzysztofa K: Fajny masz opis:) W jakiej temperaturze tlen jest skrawalny?
    Przy okazji - chałupę mam M3, ale dzieci faktycznie jakoś nie widziałem;)
  • #9 08 Jul 2011 14:07
    kamiljus
    Level 14  
    Helpful post? (0)
    Robi wrażenie ;)
    Mam prośbę. Używam również MG3030. Nie sprawia mi on żadnych problemów, jednak z chęcią wykorzystałbym Twoją pracę dotyczącą oprogramowania tego modułu. Może coś by się przydało i oszczędziło mi pracy.
    Czy mógłbyś udostępnić kod związany z obsługą MG3030?

    Pozdrawiam
    Kamiljus
  • #10 08 Jul 2011 15:18
    mdziewie
    Level 18  
    Topic author Helpful post? (0)
    Wrzucam cały kod. Obsługa modemu jest w plikach gsm.c i gsm.h. Do pracy modułu potrzebna jest obsługa portu szeregowego, biblioteka narzędziowa strtab, RTOS i może cośtam jeszcze:).
    Kilka uwag:
    - Są trzy funkcje "callback", które pozwalają reagować na niezainicjowane przez użytkownika zdarzenia (takie jak podłączenie do sieci czy odebranie sms-a)
    - Numer pin karty jest w tej chwili zapisany na sztywno (jako #define), ale bez problemu można to przerobić
    - Po starcie modem jest automatyczne inicjalizowany. Jeśli się to nie powiedzie, jest resetowany i inicjalizowany jeszcze raz (tak do skutku).
    - Tak naprawdę kluczowe jest to, że biblioteka potrafi parsować komunikaty przychodzące z modemu (rozbija je na drzewko stringów).

    Ogólnie kod jest dosyć złożony, więc w razie problemów proszę o kontakt na PW.


    Pozdrawiam.
  • #11 08 Jul 2011 18:11
    satanistik
    Level 27  
    Helpful post? (0)
    Konstrukcja bardzo mi się podoba, urządzenia z pogranicza retro i współczesności, czyli to co lubię. Czy mógł by kolega udostępnić jakiś filmik z działania takiego dalekopisu? W jaki sposób odbywa się nadawanie znaków?
  • #12 08 Jul 2011 21:45
    mdziewie
    Level 18  
    Topic author Helpful post? (0)
    Film wrzuciłem do pierwszego posta - przepraszam za jakość, ale większego pliku nie udało mi się wrzucić.

    Co do nadawania znaków - wygląda to mniej więcej tak:
    Klawiatura ma szalony system dźwigienek. Po wciśnięciu klawisza dźwigienki ustawiają osiem przełączników definiujących 8 bitów kodu ASCII znaku (ósmy bit jest bitem parzystości), po czym klawiatura się blokuje (nie da się wcisnąć kolejnego klawisza) Sygnał z 8 przełączników podłączony jest do dystrybutora, który w momencie wciśnięcia klawisza jest odblokowywany i robi jeden pełny obrót, nadając w ten sposób znak (dystrybutor ma 10 pól - bit startu, 8 danych, 1 stopu). Na koniec obrotu odpowiednie popychadło odblokowuje klawiaturę i można wcisnąć następny klawisz.

    Odbiór odbywa się za pomocą "selektora" - mechanizmu wyposażonego w elektromagnes, podłączony do linii danych (przez prosty, dwutranzystorowy driver - jest to jedyna elektronika w TTY). Elektromagnes ustawia poszczególne bity w mechanizmie w trakcie pełnego obrotu selektora (szczegółów jeszcze nie rozgryzłem), a układ bitów zamieniany jest na położenie miliona dźwigni odpowiadających za ruchy poszczególnych podzespołów. Konstrukcja jest generalnie niezbitym dowodem na używanie twardych narkotyków w przemyśle;)
  • #13 05 Aug 2011 15:44
    Removed
    Helpful post? (0)
    Kolego szacun, jestem pełen podziwu.. :D
  • #14 13 Aug 2011 20:18
    Czebu
    Level 19  
    Helpful post? (0)
    Ludzie co tu się dziwić. Tak trzeba projektować. Takich projektów mi tu potrzeba na tym forum.

    mdziewie. Dzięki Ci za ten projekt. Właśnie takich projektów mi potrzeba. Pomysł wcale nie jest głupi. Tym projektem pokazujesz i łamiesz stereotyp: Wszystko co najnowsze jest najlepsze. Niestety ten stereotyp jest nieprawdziwy. Istnieje tyle różnych starszych urządzeń elektronicznych, które można połączyć z tymi nowszymi. Istnieje tyle różnych starszych systemów operacyjnych, na których można stworzyć ciekawe i ułatwiające pracę programy komputerowe.

    mdziewie. Trzymaj tak dalej i łam stereotypy.
  • #15 01 Nov 2011 21:05
    mdziewie
    Level 18  
  Search 4 million + Products
Browse Products