Arduino – współpraca z projektorami NEC, EPSON

Arduino – współpraca z projektorami NEC, EPSON

INFORMACJA: Poniższy post znajduje się w Poczekalni.

Komunikacja RS232 Arduino  z projektorami NEC, EPSON

Temat podany w tytule porusza tylko kwestię komunikacji z projektorami, natomiast jest tylko częścią dużego projektu, który ze względu na specyfikę sali w jakiej jest używany nie nadaje się w całości do publikacji. Myślę jednak, że ze względu na znikome informacje w sieci na temat Arduino sterującego projektorami, może się to komuś przydać.

          Postanowiłem zaprojektować sterownik do obsługi oświetlenia z możliwością wysyłania sygnału zał/wył do projektorów marki NEC oraz EPSON przy pomocy Arduino, modułu bluetooth, aplikacji na Androidzie.

Sterownik mój działa na podobnej zasadzie jak sterownik podlewania „Rain” z poprzednich publikacji więc jeżeli, ktoś będzie chciał zbudować sobie sterownik, to do Raina udostępniłem pełną dokumentację.

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

          Teoretycznie każdy z projektorów  posiada gniazdo RS232 . Komendy mogą się różnić w modelach danego producenta w zależności od osprzętu jaki posiada projektor, ale podstawowe funkcje włącz, wyłącz są zawsze takie same . Ze względu na to, że mam dostęp do projektorów EPSON i NEC przedstawię tu sposób na komunikację przy pomocy Arduino z nimi.

EPSON

Transmisja 9600 bps

Brak parzystości

Bity stopu : 1

Sterowanie przepływem: Brak

Komenda RS załączająca projektor:

PWR ON\r

Komenda wyłączająca:

PWR OFF\r

 

NEC

Jeżeli chodzi o komunikację RS, jest ona konfigurowalna z menu projektora ( ja zmieniłem aby było jak w Epsonie 9600bps) a domyślne jej parametry:

Transmisja 38400 bps

Brak parzystości

Bity stopu : 1

Sterowanie przepływem: Brak

Komenda RS załączająca projektor:

02 00 00 00 00 02

Komenda wyłączająca:

02 01 00 00 00 03

 

Wpadłem na pomysł aby zbudować sterownik na bazie arduino MEGA ze względu na większą (patrz 3 ) liczbę portów RS232 oraz ze względu na ilość pamięci Megi. Na nano też można zrobić i działać przy pomocy softwareseriall. Po zakupie Megi i kabelka RS232 damsko-męskiego przystąpiłem do napisania kodu uruchomieniowego dla projektora EPSON . Co najlepsze program zadziałał od startu poprzez wpisanie w linii Serial – komend na Serial2 dzięki poleceniu println(„komenda”); w postaci kodów ASCII.

Problem pojawił się z NEC-kiem, który w ogóle nie chciał podjąć współpracy. Nakombinowałem się z kodem aby uruchomić go, jednak bez sukcesu. Postanowiłem wziąć przejściówkę usb-rs232 i podpatrzyć transmisję z terminala. Moje zdziwienie było wielkie gdy okazało się, że wymiany danych brak. Pomyślałem o kablu tzw NullModem, na szczęście kolega miał taki więc podłączyłem go z przejściówką do PC i odpaliłem RealTerm. Sukces -> projektor bez problemu odpalił oraz zgasił się po wydaniu komend.

Teraz czas na Arduino, ale okazuje się, że kabelek nie pasuje z Arduino wychodzi żeński wtyk, kabelek jest żeńsko-żeński a do projektora męski „fuck” i tu chwila przerwy………………..

Załatwiłem przejściówkę męsko-męską DB9 myślałem, że to rozwiąże sprawę, ale jednak byłem w błędzie. Powiem lepiej g… a nie działa. Podszedłem do sprawy inaczej przejściówkę (patrz rs232-> usb ) podłączyłem do arduino i spiąłem na jednym kompie oba urządzenia ze sobą. Real terminal połączył się i wygląda na to że arduino wysyła i odbiera dane, a projektor nadal nie. Jedyna ciekawostka to taka, że przy połączonym konwerterze z projektorem podświetla się linia CTS – a do jasnej anieli miało nie być hardwareowej kontroli przepływu !!!! Patrzę na schemat NECA:

Arduino - współpraca z projektorami NEC, EPSON

 no i ma narysowany kabel RX->TX, TX->RX, GND->GND CTS-RTS !! HA HA  a arduino nie ma sterowania przepływem, jedyny pomysł to zwarcie tych dwóch linii aby urządzenie (patrz-projektor „myślał”, że ma ) zobaczymy . 

Arduino - współpraca z projektorami NEC, EPSON

Zlutowanie pinów 7-8 tez nie pomogło w pierwszej fazie, choć jest to jedno z najważniejszych rzeczy jakie trzeba zrobić. Chciałem się już poddać, ale kolega, który przyszedł mnie odwiedzić powiedział, abym jeszcze raz przedzwonił kable i okazało się, że dwa z trzech testowanych są krosowane a ten który działa z Epsonem jest na „wprost” i o dziwo ten też zadziałał z Neckiem.

Wniosek następujący :

– cierpliwość zostanie nagrodzona !

– nie ufać przejściówkom RS232C->USB bo mogą mieć odwrócone linie RX -> TX i wprowadzą cię w błąd .

– Należy zlutować linie CTS -> RTS – w przypadku arduino nie ma znaczenia czy zrobi się to na wtyczce z modułem max3232 – czy też we wtyczce przy projektorze, grunt aby zwora była bo inaczej NEC nie reaguje na komendy ! W przypadku Epsona nie ma różnicy czy ta zwora jest czy nie.

– No i podłączając Arduino z modułem RS3232 (jak RX łączysz z TX) to stosuj kabel na „wprost”, bo żyły masz już odwrócone.

Kolejna kwestia to linia komend. Przeprowadziłem wiele prób, więc wy już nie musicie, najlepszy sposób na obudzenie EPSONA:

Serial1.begin(9600);    // i najlepiej niech będzie przed każdą  komendą bo obudzi  Serial od zera.

Serial1.println(„\r\n”);

delay(10);

Serial1.println(„PWR ON\r\n”);

Usypiamy go w następujący sposób:

Serial1.begin(9600);

Serial1.println(„PWR OFF\r\n”);

 

Jeżeli chodzi o NECa to najlepszy kod uruchamiający:

Serial1.begin(9600);

Serial1.write(02);

Serial1.write(00);

Serial1.write(00);

Serial1.write(00);

Serial1.write(00);

Serial1.write(02);

Tak samo działa też :

Serial1.begin(9600);            

byte message[] = {0x02, 0x00, 0x00, 0x00, 0x00, 0x02};

Serial1.write(message, sizeof(message)); 

Wyłączanie:

Serial1.begin(9600);

Serial1.write(02);

Serial1.write(01);

Serial1.write(00);

Serial1.write(00);

Serial1.write(00);

Serial1.write(03);

To sprawdzone i działa, jeżeli chodzi o dodatkowe komendy to polecam lekturę producentów projektorów, w każdym bądź razie podsumowując:

– Serial.begin(9600); potrzebny przy każdej komendzie bo projektory usypiają port rs232 i wywołanie od nowa komunikacji pobudza je do działania ( bez tego raz działa raz nie).

– w przypadku Epsona „\r\n” czyści linię i stąd i gwarantuje poprawny odczyt danych.

– NEC jest mniej wybredny za wyjątkiem tego sygnału CTS->RTS, którego jeżeli fizycznie nie zapętlimy to nic nam nie pokarze.

          Można zadać pytanie a co z komunikatami jakimi odpowiadają projektory ? Odpowiem w następujący sposób, jak ktoś potrzebuje, to niech sobie czyta po Serialu i interpretuje to w kodzie, wg mnie ma to sens, gdy zależy nam na debugowaniu projektora a nie przy jego uruchomieniu czy zgaszeniu, bo widać to w rzeczywistości. W przypadku potrzeby odczytu stanów projektora należy zdefiniować jakiś „bufor” odczytu i zdecydować w jaki sposób będziemy to interpretować zdefiniować znaki końca linii itd.. bez sensu uważam, że w takim przypadku lepiej już zarządzać z menu  projektora, lub przy pomocy PC.

 

 

INFORMACJA: Oceń artykuł aby pomóc mu trafić na stronę główną Majsterkowa.

UWAGA: Zaloguj się, aby móc zagłosować na ten projekt.

Ocena: 5/5 (głosów: 3)
Nettigo - patron działu Elektronika

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

Jeden komentarz

Odpowiedz

anuluj

Arduino - współpraca z projektorami NEC, EPSON

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?