Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Uniwersalny Moduł sterownika IR + gadżety (klocek lego)

mirekk36 10 Mar 2008 22:47 11570 21
  • Uniwersalny Moduł sterownika IR + gadżety (klocek lego)

    Witam,

    chciałbym zaprezentować wykonanie pewnego mojego pomysłu, jest to w zasadzie jeszcze prototyp chociażby pod względem nie doszlifowanego jeszcze oprogramowania,. Jednak na tyle już się dobrze sprawuje, że od razu można go używać w dowolnych konfiguracjach.

    Nazwałem "to coś" Uniwersalny sterownik IR, chociaż pomimo to, że ten moduł (w zasadzie jak klocek lego) posiada jeszcze kilka ciekawych funkcji, które często się przydają w projektowanym większym układzie a tymczasem nieraz pomimo użycia większych procków jak ATmega16/32/64/128 brakuje nam a to jeszcze jednego Timera, a to jeszcze jakichś wyjść a to czegoś jeszcze aby spokojnie zrealizować główne zadania podstawowego projektu.

    Aby przybliżyć to o czym mówię, przedstawiam na fotkach także prototyp choć jeszcze na płytkach uruchomieniowych pewnego kolejnego mojego "zegarka z wodotryskami" . Teraz zrobienie czegokolwiek staje się o wiele prostsze zakładając, że ma się pod ręką taki "klocek lego" - czyli moduł Uniwersalnego Sterownika IR ;)

    tak miała wyglądać płytka wstępnie zanim dałem ją do zrobienia:
    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)
    a wygląda prawie tak samo na zdjęciu na górze tylko te piny skierowane są w dół ;)

    co on może? ... zacznę od schematu blokowego:
    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)

    sercem sterownika jest tani i popularny procek ATmega8. Jego główne zadanie to odbieranie kodów z pilotów i nadajników IR (TV) itp oraz przekazywanie tych kodów w jakiś uniwersalny sposób dalej poza układ, ale o tym za chwilę. Gdyby cały sterownik miał tylko to realizować to użyłbym mniejszego procka ale on jeszcze ma 6 sterowanych autonomicznie wyjść (oznaczone jako OUTx) , które mogą być włączane lub wyłączane za pomocą pilota IR lub za pomocą łącza RS232.

    Ważną cechą jest to, że stan tychże wyjść jest zapamiętywany w pamięci EEPROM dzięki czemu po resecie/włączeniu itp urządzenia, którymi układ może sterować nadal są w takim stanie jak przed resetem czy wyłączeniem

    Istotne jest też to, że układ sterownika można w prosty sposób poprzez łącze RS232 zaprogramować tak aby dobrać (nauczyć) które klawisze dowolnego pilota, którego mamy pod ręką miały włączać/wyłączać odpowiednie wyjścia. Układ można w ten sposób uczyć nie tylko poszczególnych klawiszy ale także rodzajów pilota, czy to będzie pilot od TV czy od VCR czy radia lub jakiś własnej roboty. Dane te także zapamiętywane są w pamięci EEPROM dzięki czemu łatwo i szybko można go dostosować do dowolnego pilota oczywiście w standardzie narazie tylko RC5 (ale to i tak najpopularniejszy chyba standard) w planach rozwoju oprogramowania procka jest aby jednocześnie obsługiwał 3 standardy (RC5, SONY(SIRC) oraz JVC)

    Układ jak widać posiada podłączony typowy czujnik IR , diodę LED sygnalizującą działanie przylatująych kodów z pilota, wyjścia OUTX, złącze RS232, w planach złącze I2C Slave, złącze ISP, wejście do podłączenia czujników temperatury DS18B20 (na tą chwilę można ich podłączyć 4 sztuki do jednej magistrali), poza tym posiada BUZZER, który w delikatny sposób sygnalizuje dźwiękiem, włączanie/wyłączanie urządzeń podłączonych do wyjść OUTX

    Układ posiada także wejście przywracające ustawienia, że tak powiem fabryczne, jeśli sobie namieszamy coś w EEPROMIE a akurat nie mamy pod ręką czegoś do przeprogramowania ;) ... wtedy znowu z klawiatury numerycznej klawiszami 1-6 zmienamy stany wyjść OUTX itp

    Co bardzo istotne - wzwiązku z tym, iż ten "klocek lego" może działać jak mówiłem w pełni autonomicznie to powinien jakoś sygnalizować na zewnątrz fakt, że właśnie przyleciał do niego jakiś kod pilota, że właśnie zmieniło stan któreś z wyjść OUTX, dlatego układ posiada wyjście zgłaszania przerwania z tym związanego - na zewnątrz IRQ !

    dzięki czemu nie musi być ciągle odpytywany co się w nim dzieje, ot poprostu zgłasza krótkie przerwanie a następnie można odczytać z niego odpowiednie dane. Obojętnie czy robimy to za pomocą jakiegoś innego układu mikroprocesorowego czy też łącza RS232 z PC'tem

    poniżej schemat układu:
    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)

    mocną stroną układu jest to, że może być podłączony bezpośrenio (tzn przez przejściówkę RS232/TTL lub USB/RS232 do komputera PC z którego bezpośrednio za pomocą załączonego oprogramowania można odbierać w prosty sposób kody pilotów i dalej sterować nimi różne rzeczy w komputerze, jak również z komputera można sterować wyjściami OUTX typu ON/OFF

    ... a co najważniejsze można odczytywać sobie temperaturkę z 4 czujników DS18B20, poniżej 2 fotki programu, który jest w trakcie łączenia ze sterownikiem, oraz po połączeniu, gdzie widzimy stany wyjść OUTX, przylatujące kody pilotów a także mamy możliwość zaprogramowania - przypisania klawiszy pilota do wyjść OUTX, przypisania rodzaju pilota poprzez mianę adresu, możliwość włączania wyłączania dźwięków w układzie , możliwość programowania różnych akcji w komputrze na odpowiednie kody z pilota.....
    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)

    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)
    (sorki te fotki programu są jeszcze z początkowej wersji, która obsługiwała tylko 2 czujniki, teraz są jeszcz dodatkowe 2 czarne okienka z temperaturami)

    .... oczywiście jeśli chcemy na szybko zrobić jakieś urządzonka na dowolnym procku a potrafimy się posługiwać podstawowym rodzajem komunikacji RS232 to odrazu wstawiamy sobie takiego klocka (układ ma tak wyprowadzone łącza, że można go ładnie na tzw kanapkę wpiąć w płytkę główną naszego podstawowego urządzenia) i w sposub uniwersalny po RS232 odbierać kody pilotów, odczytywać temperatury z czujników - jednocześnie nie obawiając się iż w głównym naszym procku zabraknie nam jak już mówiłem wcześniej miejsca i zasobów na obsługę tak podstawowych rzeczy, które prawie w każdym urządzeniu są przydatne i aż szkoda za każdym razem od nowa je oprogramowywać. Lepiej wlurować na płytkę sterownika elementy (parę szt) i prawie za darmo jeśli chodzi o cenę ale także wysiłki programistyczne (po wgraniu wsadu) mamy podstawowe funkcje jak sterowanie IR, pomiar temperatury , strowanie wyjść jeśli brak nam ich w głównym procku itp itp

    aby poprzeć moje teorie o uniwersalności tego modułu (przynajmniej dla mnie) to poniżej pkażę właśnie tworzony kolejny zegraek z wodotryskami oparty o ATmega16 na wyświetlaczach LED. Mogę sobie "poszaleć" gdyż nie muszę sobie w programie głównym zawracać głową procedurami OBSŁUGI DS18B20, IR i tym podobnych - odczytuję je kiedy chcę lub po przerwaniu od modułu. Natmiast sama Atmega 16 zarządza ładnie wyświetlaczem LED, obsługą zegrka PCF8583, sterowaniem PWM diod świecąych do efektów, kontaktowaniem się z komputerem PC poprzez łącze albo RS232 (jedno dla komunikacji z PC - to sprzętowe) a drugi programowy RS232 do komunikacji ze Sterownikiem IR. Programowy RS232 na 9600 wystarcza z dużym zapasem na taką niewielką wymianę danych i ślicznie się sprawuje. Właśnie dokładam jeszcze do ATmega16 komunikację z PCtem ale drogą radiową opartą o nadajniczki Telecontrolli - przy prędkości 4800 też z powodzeniem wystarcza a już można pozbyć się nadmiaru kabli - a dzięki temu synchronizować czas poprzez PCta z wzorcami czasu SNTP w internecie.

    Tak więc dzięki modułowy, mój budzik - to już żelazna opcja - musi mieć obsługę IR a szczególnie włączanie DRZEMKI eeech lubię pospać zawsze rano a budzik grzecznie się przypomina i nie trzeba wstawać tylko "klik" w pilota który leży na szafeczce tuż przy łóżku - eeech słodkie lenistwo

    .... acha zapomniałbym - a dodatkoy klocek, który sobie poczyniłem to taka mała prosta ale przyjemna przejścióweczka RS232 pomiędzy np PCtem a prockiem na popularnym układziku MAX232 wraz z dwiema diodami LED ładnie sygnalizującymi transmisję w jedną i drugą stronę
    Uniwersalny Moduł sterownika IR + gadżety (klocek lego)


    tu poniżej ten testowy jeszcze w wersji alfa zegarek ;)

    ....na koniec, oczywiście wielu z was zapewne uzna, że to bzdura tak marnować procki, skoro to wszystko można upchać w jednej ATmega16 - ale moim zdaniem - to żadna przesada przy obecnych cenach procków, przy tym, że mamy gotowe moduły i nie trzeba za każdym razem tracić cennego czasu na uruchamianie wszystkiego - bo sprawdzone rzeczy - jak ten sterownik działają od tzw "pierwszego kopa" i wszyscy są zadowoleni

    pozdrawiam

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    mirekk36
    Poziom 42  
    Offline 
    Ciekawy kurs VIDEO - EAGLE - zajrzyj na mój blog
    mirekk36.blogspot.com - VOLATILE ? to łatwe

    Specjalizuje się w: programowanie: avr c, delphi pc, android
    mirekk36 napisał 9195 postów o ocenie 2226, pomógł 964 razy. Mieszka w mieście Szczecin. Jest z nami od 2006 roku.
  • IGE-XAOIGE-XAO
  • #2
    duziorek
    Poziom 12  
    Bardzo fajny projekcik...
    Być moze niedoczytałem ale czy Ty używasz róznej chemii do zabezpieczania płytek drukowanych np. PLASTIK 70?
    Słyszałem że jest to nieopłacalne, prosiłbym o opinię :)
  • #3
    Macko1234
    Poziom 10  
    Bardzo ciekawy projekt chciał bym coś takie zrobić. jaki koszt tego klocka i z kont wziąć płytkę czy sam ją zrobiłeś, jakie jeszcze zastosowanie może mieć to cacko?? czy mógł bym zastosować to jak sterownik oświetleniem??


    Proszę poprawić post (przycisk "Zmień"), o ile jestem pobłażliwy jeśli chodzi o "ogonki" i sporadyczne błędy ortograficzne to takie "kwiatki" są dobijające. [c_p]
  • #4
    mirekk36
    Poziom 42  
    duziorek -> nie, nie używam PLASTIK 70 - to są płytki zrobione na moje zamówienie w firmie, która w tym się specjalizuje. Wystarczy tylko, że wyśle się do nich projekt płytki w eagle

    Macko1234 -> nie liczyłem dokładnie kosztów takiego "klocka" ale podejrzewam, że razem z tą zamówioną płytką nie przekroczyły one kilkunastu złotych. Co do zastosowań - to już wg własnej wyobraźni, opisałem tylko kilka przykładowych. A sterownik oświetlenia można zrobić w oparciu o niego jak najbardziej. Trzeba by było tylko dodać jakieś elementy wykonawcze w zależności od tego czym dokładnie chciałbyś sterować, czyli jakieś tranzystory, triaki, przekaźnki czy inne. I od razu można sterować tym albo z komputera albo z pilota
  • IGE-XAOIGE-XAO
  • #5
    pkris74
    Poziom 12  
    mirekk36 jaka byłaby szansa na to abyś upublicznił wsad i ten fajny program do komputera?
    Przyznam, że projekt bardzo mnie zaciekawił i chętnie bym sobie go zbudował.
  • #6
    seba_x
    Poziom 31  
    jak rozumiem urządzenie obsługuje tylko rc5 ?
  • #7
    mirekk36
    Poziom 42  
    pkris74 -> na dzień dzisiejszy nie jestem w stanie udostępnić bo to się jeszcze tworzy. Najszybciej chyba będzie możliwość udostępnienia samego wsadu do procka, ale to dam znać kiedy

    seba_x -> na dzień dzisiejszy obsługuje to tylko rc5, ale jak mówię mam już opracowane procedury odbierania SONY i JVC - tylko jeszcze pracuję nad "wszczepieniem" tego "organu" do sterownika ;) problem mój polega narazie na tym, że gotowe procedury odbiorcze, działające i sprawdzone napisałem już kiedyś ale w asemblerze a cały ten projekt robiłem w Bascomie i teraz staram się "ożenić" te dwie rzeczy
  • #8
    seba_x
    Poziom 31  
    no właśnie , w bascomie jest gotowiec ale tylko do wysyłania ir sony
  • #9
    mirekk36
    Poziom 42  
    seba_x -> kiedyś bym się uśmiał po pachy gdyby ktoś mi mówił, że w czystym Bascomie można napisać obsługę pilota w dowolnym innym standardzie, ale dzisiaj już się nie śmieję i sam używam często Bascoma - a żeby potwierdzić co można zrobić w Bascomie to proszę, z linków ze strony producenta tego miłego kompilatorka - ktoś napisał jednak procedury do odbioru kodów SONY w czystym Bascomie - więc jeśli ci to bardzo potrzebne - sam spójrz na kod - może uda ci się to zastosować do własnych rozwiązań

    http://www.mcselec.com/index.php?option=com_content&task=view&id=199&Itemid=57
  • #10
    seba_x
    Poziom 31  
    :oops: aż wstyd się przyznać rzadko tam zaglądam , dzięki za linka
  • #11
    Cyborg_3D
    Poziom 21  
    Witam serdecznie.



    @mirekk36, wspominałeś coś o firmie zajmującej sie robieniem płytek drukowanych. Mógł byś mi dać namiary na tą firmę? I jak wygląda sprawa z cenami płytek?



    Pozdrawiam.
  • #12
    mirekk36
    Poziom 42  
    Cyborg_3D -> zrobiłem to akurat w Merkarze
    http://www.merkar.pl/cennik.html

    ... i jestem zadowolony, płytki ładnie zrobione, co ważne czas oczekiwania rzeczywiście taki jak mówią a często u innych bywa z tym problem (tu czekałem ciut ponad 2 tygodnie) - hmm zamówiłem trochę tych płytek więc i kaski poszło trochę bo ok 290zł z przesyłką kurierską.
    Ale wyszło mnie to razem z przygotowaniem produkcji po ok 8,9zł (10szt) za płytki RS232 i ok 6,5zł (20szt) za płytki do sterownika - więc nie jest tak źle ;)
  • #13
    duziorek
    Poziom 12  
    Moim zdaniem to nie ma jak samemu wykonać płytkę...
    Co to za satysfakcja złozyć coś z kita?
    To jest praktycznie to samo co kity Jabel'a bo płytke masz, otwory takze, tylko elementy wlutować :/
  • #14
    mirekk36
    Poziom 42  
    duziorek -> pewnie, że masz rację iż wykonanie płytki we własnym zakresie daje jakąś satysfakcję ale to przy pojedyńczych egzemplarzach gdy coś robisz ;) ... to co ja zrobiłem tym różni się od "kita" jak to mówisz , że tę płytkę sam zaprojektowałem w eaglu, sam opracowałem schemat , napisałem program itp itp .... więc nie do końca rozumiem twoje porównanie ...

    .... a swoją drogą to jeśli opanowałeś metodą domową robienie metalizacji otworów, soldermaskę itp to gratuluję, ... Jak widzisz w całym procesie stworzenia takiego jakby "kita" sam etap wykonania płytki to mały szczegół. Jeśli jednak jesteś zainteresowany doprowadzaniem własnoręnego robienia płytek do mistrzostwa to polecam zapoznać się z wystawionymi na elektrodzie pracami kolegi Markosik20, dla którego i soldermaska jest nie straszna a jego płytki wyglądają prawie tak samo jak te robione na zamówienie.
  • #15
    tomba
    Poziom 17  
    Witajcie
    od wielu projektów przygotowanych przez mirekk36'a no może już mirekk37-38 ( latka lecą również u mnie )
    serce mi sie raduje - WIELKIE gratulacje !!!
    ale zawsze idę w moich poczynaniach na tz. wygodę i dbałość o body ( obudowa ) i proszę odpowiedz ...
    czemu nie stosujesz gotowych przewodów rs232 to TTL stosowanych do tel komórkowych - przyznam sie ja tylko je stosuję a maxa 232 widziałem w akcji tylko w ferdku
  • #16
    mirekk36
    Poziom 42  
    tomba -> na wstępie dzięki za miłe opinie. Hmmm dlaczego nie stosuję gotowych przewodów RS232/TTL od telefonów - może czegoś jeszcze nie wiem poprostu, ale generalnie robię czasami sporo różnych urządzonek, które komunikują się najczęściej przez RS232 i dla mnie najbardziej istotne jest to aby zachować zawsze ten sam standard. Tzn do którego bym się nie chciał podłączyć to zawsze mam pod ręką standardowy kabel RS232 i po kłopocie - nigdy mnie to nie zawiodło. Dlatego jeśli już to robię sobie przejścióweczki na MAX232.

    ... ale jak mówię, może czegoś nie wiem - podaj mi źródło gdzie zawsze można kupić taki sprawdzony kabel od telefonu, ile on kosztuje i ile jest roboty z jego przeróbką itp - może się przekonam?

    hmmm wspomniałeś też coś o obudowie o tym że idziesz na wygodę i dbałość jeśli o nią chodzi - ale co dokładniej miałeś na myśli?

    pozdrawiam
  • #17
    pkris74
    Poziom 12  
    mirekk36 zastanawiając się jak można by rozszerzyć możliwości twojego sterownika aby mógł odbierać sygnały od każdego pilota ir bez względu na standard nadawania, więc mam do ciebie pytanie z klasycznego pilota pracującego w RC5 możesz wykorzystać wszystkie przyciski, czy tylko jakąś część?
    Posiadam procedurę, która umożliwia korzystanie z każdego pilota, po pierwszym uruchomieniu uczy się komend z pilota , a co ciekawe napisana jest właśnie w bascomie.
  • #18
    mirekk36
    Poziom 42  
    pkris74 -> nie wiem czy dobrze zrozumiałem twoje pytanie, ale odpowiadam:

    - nie ma znaczenia jakiego pilota w standardzie RC5 się użyje na obecną chwilę, nie ma też znaczenia jakie pilot ma przyciski - ponieważ ten moduł transmituje na zewnątrz kody dowolnego wciśniętego klawisza. Moduł, pełni głównie rolę narzędzia i ma za zadanie pobierać dane i przekazywać je dalej w prosty sposób za pomocą prostego standardu RS232. To, że przy okazji można zaprogramować w nim także dowolne przyciski jakie akurat posiadamy na dowolnym pilocie RC5 pod ręką aby załączać wyjścia OUTX - to inna sprawa - i powoduje, że dzięki temu układ może działać także autonomicznie np odrazu po przypięciu do PC'ta

    .... a swoją drogą to z chęcią zobaczyłbym taką procedurę o jakiej piszesz o ile jest ona FREE

    pozdrawiam
  • #19
    pkris74
    Poziom 12  
    Nie ma problemu jeśli chodzi o kod. Został upubliczniony na www.edw.com.pl
    Szczerze to jestem ciekaw jak ten twój kod wygląda.
    W załączniki jest kod o którym mówiłem.
  • #20
    mirekk36
    Poziom 42  
    pkris74 -> przeszukałem całe edw.com.pl i nie znalazłem procedury w bascomie, która umożliwia korzystanie z każdego pilota - hmmm może źle szukałem - a może podaj bezpośredni link do tej procedury czy opisu jeśli możesz????

    albo ten załącznik, który ci się chyba nie dołączył do postu

    znalazlem tylko sporo tematów jeśli chodzi o piloty RC5 w tym taki układ jak mówisz, który pozwala na nauczenie się kodów dowolnego pilota ale RC5 - a nie dowolnego i takich, które pracują w innych standardach - a to ogromna różnica....
  • #22
    mirekk36
    Poziom 42  
    pkris74 -> dzięki, rzeczywiście ciekawy kodzik, będę go musiał w wolnej chwili postudiować.

    Ale generalnie widzę, że tu jest inne podejście bo w zasadzie nie są istotne kody przesyłane przez piloty IR czyli (Address i Command). Program dokonuje tylko pomiarów czasów nadlatującej próbki impulsów - rzeczywiście z dowolnego pilota IR i taką próbkę zapisuje do EEPROM. Później natomiast taką próbkę można wyemitować po przyporządkowaniu do niej jakiejś funkcji(klawisza). Problemem jest to, ze na zapisanie tych próbek potrzeba dosyć dużo pamięci EEPROM i w zwaiązku z tym nie można zapamiętać zbyt dużej ilości klawiszy .... no ale coś za coś ..... raz może się przydać i takie rozwiązanie a innym razeminne... - ja jednak wolę aby układ retransmitował czyste kody klawiszy pilota nawet jeśli miałbym się ograniczyć do 1 albo 2-3 standardów bo w końcu nie jest problemem zdobyć pilota RC5, SONY - to chyba najbardziej popularne