
Witam.
Od zawsze irytowała mnie konieczność podchodzenia do domofonu, aby wpuścić np. listonosza...
Zacząłem więc przeszukiwać internet w poszukiwaniu interfejsu pomiędzy telefonem i domofonem.
Znalazłem Bramotela, ale tenże po poczytaniu o nim, został zdyskwalifikowany ze względu na jego cenę i kilka wad, czyli brak możliwości regulacji czasu dzwonienia telefonów, brak reakcji na podniesienie słuchawki unifonu (telefon dzwoni dalej, i to była największa jego wada) i brak generowania CLIP'a podczas dzwonienia z domofonu.
Postanowiłem zrobić coś samemu. Na początek wydawało się to dość skomplikowane, ze względu na interfejs do telefonu (generator dzwonienia, zasilanie i balansowanie linii ect). Aż do momentu, kiedy na AliExpress trafiłem na gotowy moduł QCX601. Jest to moduł interfejsu SLIC zawierający w sobie wszystko, co potrzeba wraz z przetwornicą generującą napięcia zasilania telefonu i sygnał dzwonienia. Rewelacja i to do tego za około 20zł.
Jako że miało być tanio, to całość została poskładana prawie tylko z gotowych "klocków". Moduł QCX601, Arduino Pro Mini na AtMega328 (5V, 16MHz), miniaturowa chińska przetwornica DC/DC (z 12 na 5V) do zasilania całości, no i trochę elementów zewnętrznych i złącz. Koszt całości zamknął się w około 50zł.

Tak wygląda z zewnątrz (niezbyt okazale, ale obudowa to jakiś tani gotowiec walający się w szufladzie)...

Początkowo współpracowało toto z analogowym domofonem 6-cio przewodowym (mogło też z 4 i 5 przewodowym), ale w pewnym momencie wymieniono nam domofon na nowy - cyfrowy (firmy ACO) z instalacją 2-przewodową. No i klops, urządzenie zrobiło się chwilowo bezużyteczne. Tak nie mogło zostać, bo już zbytnio się do tego przyzwyczaiłem. Trzeba było poprawić.
Komercyjne rozwiązanie, czyli zakup modułu CYF-AN - zabijało ceną. Więc trzeba było zakasać rękawy i zrobić poprawkę.
I tak to po tym nieco przydługawym wstępie powstał sprzęg domofonu cyfrowego z telefonem, i okazało się, że elektronika się uprościła w stosunku do wersji analogowej, a skomplikował się tylko program.
Kilka słów o interfejsie domofonu "cyfrowego". Tak na prawdę w tych domofonach cyfrowo przesyłany jest tylko "adres" czyli numer lokalu w którym ma zostać odblokowany unifon tak aby zaczął dzwonić i można było go odebrać. Cała reszta, czyli dźwięk dzwonka oraz rozmowa prowadzona jest w tradycyjny analogowy sposób, jak w zwykłym telefonie PSTN.
Trochę teorii czyli jak wygląda protokół komunikacji "cyfrowego" domofonu ACO.
Zacisk L- domofonu to masa. L+ to zasilanie i sygnały. W stanie spoczynku panuje tam napięcie ok +9V.
Po wybraniu numeru lokalu z panelu przy drzwiach rozpoczyna się transmisja numeru lokalu.
Najpierw występuje impuls "Reset", czyli zanik napięcia na linii trwający 370ms. Potem napięcie 9V powraca na 180ms.
Następnie transmitowany jest numer lokalu w postaci serii impulsów 25us niski + 77us wysoki.
Impulsów może być ponoć od 1 do 255 - i odpowiada to numerowi lokalu. Po impulsach jest ok. 450ms przerwy (stan 9V na linii) i rozpoczyna się dzwonienie. Dzwonienie to przebiegi o pełnej 9V amplitudzie, a ilość dzwonków i częstotliwość sygnału zależy od zaprogramowania centralki. W momencie odebrania słuchawki unifonu napięcie na linii spada do 6V, zaczyna się przepływ prądu i rozpoczynamy rozmowę. Naciśnięcie przycisku "otwórz" powoduje tzw. "flash", czyli rozwarcie pętli na czas ok. 8ms.
Ot, cała filozofia. Tak działa system firmy ACO. Cyfrowe domofony innych firm działają identyczne, z tym że mogą mieć inne czasy impulsów, resetu i pauz pomiędzy kolejnymi fazami.
Teraz praktyka. Oto schemat interfejsu.

Złącze J2 (TEL) służy do podłączenia aparatu telefonicznego, a J3 (LINE) do podłączenia linii miejskiej.
Przekaźnik K2 podłącza aparat telefoniczny albo do linii miejskiej, albo do modułu SLIC. Przy braku zasilania aparat podłączony jest do linii miejskiej.
Przekaźniki K1 i K2 powinny być subminiaturowe (szybkie, w obudowie DIL) z cewką na 12V. Przykładowo takie jak na zdjęciu poniżej, czyli P-12. Można też zastosować 5V przekaźniki podłączając cewki do VCC a nie do +12V. Ja zastosowałem 12V bo takie miałem w domu. Stosując przekaźniki na 5V można zrezygnować z przetwornicy 12/5V (DC_CHINA) i całość zasilać z zasilacza 5V/1A.
Transoptor ISO1 wykrywa dzwonienie z linii telefonicznej, i jeśli takowe wystąpi podczas prowadzenia rozmowy przez domofon, to w słuchawce usłyszymy "pukanie" - ton sygnalizujący, że właśnie ktoś dzwoni z miasta. Jak telefon z miasta zadzwoni w czasie gdy aktywne jest dzwonienie z domofonu (czyli ktoś zadzwonił domofonem, ale zanim go odebrano to ktoś zadzwoni z miasta), to dzwonienie z domofonu jest przerwane, i telefon zostaje przełączony na linię miejską. Zmienia się pattern dzwonienia z podwójnego na pojedynczy, i odebranie telefonu odbiera linię miejską. Domofon trzeba w takim przypadku obsłużyć unifonem.
Transoptor ISO2 wykrywa przepływ prądu z linii miejskiej do telefonu w czasie rozmowy telefonicznej blokując funkcje interfejsu w tym czasie (rozmowa miejska nie jest przerywana).
UWAGA ! Transoptory ISP814X są transoptorami dwukierunkowymi (mają dwie diody świecące połączone przeciwsobnie) i mogą być zastąpione tylko innym dwukierunkowym transoptorem. Na schemacie jest symbol zwykłego transoptora, bo nie miałem w bibliotece dwukierunkowego, a nie chciało mi się tworzyć nowego elementu.
Element DC_CHINA to po prostu moduł przetwornicy DC/DC z regulowanym napięciem kupionej za dolara na AliExpress.
Należy pamiętać o ustawieniu 5V na wyjściu tej przetwornicy przed montowaniem jej do układu, bo możemy napytać sobie biedy. Dioda DZ1 powinna uchronić elektronikę w przypadku uszkodzenia przetwornicy albo złego ustawienia potencjometru w przetwornicy, ale polecam nie sprawdzać jak skutecznie działa. Oczywiście musi to być dioda "mocy" czyli 1W.
Przekaźnik K1 podłącza linię L+ domofonu do układu rozmównego. Styki zostały zrównoleglone aby zmniejszyć efekt "bouncingu", czyli odbijania styków które powoduje niepożądane impulsy. Tranzystor Q4 pracuje jako układ antylokalny i interfejs audio. Potencjometr RN1 reguluje poziom sygnału (głośność) z mikrofonu w telefonie do domofonu, a RN2 głośność odsłuchu, czyli z domofonu na telefon. Tranzystor Q2 służy do wyciszania sygnałów DTMF (i nie tylko), aby nie darły się poprzez domofon.
Dzielnik R18, R19, C15 to wejście detekcji sygnałów z domofonu do procesora. Tą drogą procesor dekoduje sygnały kodu abonenta, dzwonienia, i odebrania lokalnego unifonu. Rezystancja dzielnika, jest większa niż w typowym unifonie, więc obciążenie linii jest mniejsze niż jeden dodatkowy unifon. Rezystory R11 i R20 to "bezpieczniki" - tak na wszelki słuczaj.
Elementy R5, R8 i C4 to filtr sygnału PWM generowanego przez procesor i podawanego do aparatu telefonicznego. Tędy wychodzą wszelakie beepy słyszalne w słuchawce, a także sygnały CLIP'a generowanego w standardzie FSK lub DTMF - wybór zworką JP1, założona = DTMF, zdjęta = FSK. Poprzez obwód R2,R3,C10 procesor dostaje sygnały DTMF z telefonu.
Dwukolorowa dioda LED D2 sygnalizuje stan urządzenia.
Układ zapewnia separację galwaniczną pomiędzy domofonem a linią miejską, co jest bardzo ważne.
Po odebraniu domofonu aparat telefoniczny jest galwanicznie połączony z domofonem, ale to nie stwarza problemu.
Tak samo nie ma separacji pomiędzy zasilaniem układu a domofonem, a więc do zasilania najlepiej jest należy użyć zasilacza "dogniazdkowego" 12V 300mA. Wszystko jedno czy transformatorowy, czy impulsowy. Układ działa poprawnie przy zasilaniu napięciem od 10 do 16V.
Nie należy tylko uziemiać minusa zasilania ani żadnego z przewodów do aparatu telefonicznego.
Moje wykonanie - jak zwykle po taniości, bo 1szt. dla siebie to mnie się nie chce inaczej robić, czyli płytka uniwersalna i kynar:


Dla dociekliwych... To czarne wystające na żółtych kablach to przycisk "Test" zawinięty w taśmę.

Jak to działa?
W stanie spoczynku linia telefoniczna jest podłączona do aparatu telefonicznego, dioda D2 świeci na zielono, i raz na ok 15 sekund krótko mrugnie na czerwono sygnalizując, że układ "żyje". Jeśli do zacisków L+ i L- domofonu nie jest podłączona centralka domofonu (nie ma napięcia na linii domofonu) mrugnięcia na czerwono są częstsze - raz na 2 sekundy.
Aparat telefoniczny działa normalnie. Po podniesieniu słuchawki zielona dioda zaczyna mrugać sygnalizując aktywną rozmowę telefoniczną. W tym stanie interfejs nie reaguje na wywołanie z domofonu.
W stanie spoczynku dzwonienie z domofonu spowoduje podłączenie aparatu do modułu SLIC, i dzwonienie aparatu. Wysyłany jest też CLIP z numerem telefonu "11111111" oraz (tylko w trybie FSK) z opisem tekstowym "Domofon". Moje dwa różne bezprzewodowe Panasoniki ładnie to wyświetlają, zarówno opis, jak i numer.
Układ generuje podwójne dzwonki - dla odróżnienia od dzwonków z PSTN.
Telefon dzwoni przez ustawialny czas - od 10 do 90 sekund (czego nie da się zrobić w Bramotelu). W trakcie dzwonienia dioda zmienia kolor z zielonego na żółty (w takt dzwonków). Odebranie telefonu łączy nas z domofonem. Dioda zaświeca się na czerwono. Można rozmawiać przez maksymalnie 2 minuty. Aby otworzyć zamek domofonu należy wcisnąć na telefonie (musi być z wybieraniem tonowym, ale teraz to chyba norma) przycisk * albo # . Zamek zostanie otwarty.
Naciskanie klawiszy (odbiór DTMF) powoduje zmianę koloru świecenia diody z czerwonego na żółty - tak długo jak telefon wysyła DTMF. Tony DTMF są wyciszane i mogą być słyszalne w domofonie przy drzwiach przez bardzo krótki czas (50ms).
Rozmowę kończymy normalnie odłożeniem słuchawki. Odebranie unifonu zamiast telefonu powoduje zaprzestanie dzwonienia przez telefon. To kolejna zaleta w stosunku do Bramotela.
Aha, jeszcze jedno. Domofony "cyfrowe" mają funkcje "podzwaniania", czyli sygnalizacji unifonem, że ktoś otwiera zamek kodem.
Układ przewiduje tę opcję i ignoruje "podzwanianie". W systemie ACO dzwonek informacyjny jest krótki (ok 0.8s), a normalny pierwszy dzwonek trwa 1,2s. Układ zareaguje tylko wtedy, jeśli pierwszy dzwonek trwa dłużej niż 1s.
Tak więc "podzwanianie" jest ignorowane i nie wywołuje dzwonienia w telefonie.
Tryb programowania i testowy.
Interfejs posiada możliwość programowania czasu dzwonienia telefonu, oraz numeru lokalu, na który będzie reagował.
Na wejście w tryb programowania są dwie metody:
1. Jeśli mamy podłączoną linię miejską, to podnosimy słuchawkę telefonu i naciskamy 3 razy FLASH (w odstępach mniejszych niż 2 sekundy).
Przy każdym flashu dioda mruga na czerwono, a po trzecim sygnał w słuchawce milknie, zapala się na stałe czerwona dioda, telefon jest podłączony do interfejsu (ale nie do domofonu).
2. Jeśli nie ma linii miejskiej, i do interfejsu podłączony jest tylko telefon, to naciskamy przycisk S1. W tym momencie telefon powinien zacząć dzwonić, wyświetla CID, tak samo jak przy wywołaniu z domofonu. Odbieramy telefon. Lądujemy w tym samym stanie jak w poprzednim punkcie. Ten sposób to również test dzwonienia telefonu i prezentacji numeru domofonu (CLIP).
Teraz z klawiatury telefonu wybieramy:
01 dla ustawienia czasu dzwonienia telefonu. Usłyszymy beep w słuchawce, po czym z klawiatury wybieramy cyfrę od 1 do 9. 1 to 10 sekund dzwonienia, 2 to 20s... 9 to 90s. Po wybraniu słychać podwójny dźwięk potwierdzenia (niski, wysoki) i wybór zostaje zapamiętany.
Jeśli wybierzemy * , 0 lub # to wybór zostanie anulowany - podwójny dźwięk błędu, najpierw wysoki, potem niższy.
02 dla ustawienia numeru lokalu. Tak samo usłyszymy beep w słuchawce, po czym z klawiatury wybieramy trzycyfrowy numer naszego lokalu (np 017 dla numeru lokalu 17). Po wpisaniu trzech cyfr słychać podwójny dźwięk potwierdzenia i wybór zostaje zapamiętany. Jeśli wybierzemy * lub # zamiast cyfry, to wybór zostanie anulowany - podwójny dźwięk błędu.
Wybór pierwszej cyfry większej niż 2 lub całego numeru większego niż 254 lub równego 000 również spowoduje anulowanie.
Programowanie kończymy odłożeniem słuchawki telefonu. Jeśli nie zaprogramujemy numeru lokalu, to układ nie będzie reagował
na dzwonienie z domofonu.
Na koniec chcę zaznaczyć, że program został napisany z uwzględnieniem czasów stosowanych w domofonach firmy ACO, i ma pewne ustalone reżimy czasowe prawidłowej detekcji numeru lokalu i dzwonienia. W związku z tym może nie działać na innych systemach domofonów cyfrowych. Niestety nie mam możliwości przetestowania tego na innych systemach, więc jeśli nie będzie działał na systemie innej firmy, to jedyną możliwością uruchomienia tego będzie analiza czasowa sygnałów na linii domofonu podczas wywołania i dzwonienia. Bez tych danych nie będę w stanie zmodyfikować firmware.
A właśnie. Apropo firmware. Udostępniam tylko skompilowaną wersję w postaci pliku HEX, który można wgrać do Arduino przy pomocy XLoader'a, albo w inny sposób umożliwiający wgrywanie HEX'ów.
Firmware:
Druga sprawa. Oryginalny bootloader Arduino ma spapraną obsługę watchdoga. Jako że w moim sofcie korzystam z watchdoga, to proponuję (dla bardziej doświadczonych userów) wymianę bootloadera w arduino na np. FastBoot (by Peter Dannegger) z włączoną opcją WDTRIGGER (zakomentowane ".equ WDTRIGGER = 0"). Jeśli program wykryje oryginalny bootloader "arduino", to nie uruchomi watchdoga.
Dla oszczędności energii program też dynamicznie zmienia prędkość taktowania procesora - od 1 do 16MHz w zależności od potrzeb.
I jeszcze jedna bardzo WAŻNA informacja.
Nie zgadzam się na jakiekolwiek komercyjne wykorzystanie tego projektu, schematu, bądź oprogramowania, bez wcześniejszego uzgodnienia tego ze mną !
Oczywiście każdy może sobie zmontować takie coś dla siebie bez pytania i ceregieli. W końcu to dział DIY.
Cool? Ranking DIY