Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Zrób to sam – zdalne sterowanie aparatem cz. 1 (chyba, ogólny opis)

Ewentualnie „żadne rynkowe rozwiązanie nie było zadowalające, więc zrobiłem własne, a teraz się chwalę”. Oraz w razie zainteresowanie bliższymi szczegółami jak to działa, będzie kolejna część.

Po co?

Z kilku powodów, zdarza mi się często focić pioruny, często – znaczy jak tylko jest ku temu okazja zwana dalej burzą. Przy burzach wykorzystuje się albo krótkie czasy migawek + sprzęt, który wykrywa pioruny albo po prostu ustawia się aparat na najdłuższy możliwy czas i czeka na to co się złapie. Wole drugą opcję. Ale aparaty fotograficzne mają w tym zakresie ograniczenia, maksymalny automatyczny czas otwarcia migawki to maks 30s. Jeśli chcemy dłuższy, musimy użyć zewnętrznych urządzeń albo stopera (dusząc spust migawki jakiś określony czas). Wolimy urządzenia zewnętrzne, bo raz że jesteśmy leniwi, dwa, że trzymanie spustu aparatu powoduje jakieś tam drgania aparatu, a to przekłada się na ostrość zdjęć. Szczęśliwie tanie lustra Canona (a takie mam) mają wejście wężyka spustowego w postaci jacka 2,5mm. Podłączenie tego jacka jest banalnie proste, mamy trzy piny – masę wyzwolenie migawki i ustawienie ostrości. Aby wyzwolić migawkę/ustawić ostrość wystarczy zewrzeć odpowiedni pin do masy. Więc wystarczy jakiś układ czasowy zwierający styki na określony czas.

Ale jam jest Kaw…

A to oznacza, że opcja „prosty układ czasowy” nie jest opcją. :D Skonstruowany prototyp ma:

  • Regulowane opóźnienie do pierwszego zdjęcia;
  • Regulowane odstępy miedzy zdjęciami;
  • Regulowany odstęp między „focus” a „shutter release”;
  • Regulowany czas trzymania migawki;
  • Port USB;
  • Układ ładowania swojego akumulatora;
  • Układ komunikacji radiowej (aby można było używać wyzwalacza zdalnego i wyzwalać zdalnie lampy);
  • Buzzer i ledy, ot tak dla satusu widzenia;
  • 128x64px wyświetlacz LCD z podświetleniem;
  • 5 przycisków do zabawy;
  • Dodatkowo, projekt drugiego prototypu posiada kontroler Host-USB (do sterowania aparatem przez protokół PTP);

Sercem układu jest układ Atmela, XMEGA pracująca z maksymalna częstotliwością 32MHz. ATXMEGA128A3U. Dlaczego ten? Bo ma > 2kiB pamięci SRAM (sam bufor ramki dla wyświetlacza to 1024B), przerwania na wszystkich portach, wbudowany transciver USB (ot dla wygodnej aktualizacji firmware). I jego wyjścia mogą być ustawione jako Wired-AND. Poza tym, z potrzebnych nam rzeczy – moduł SPI do komunikacji z radiem i wyświetlaczem, 2kiB EEPROMu i duuużo GPIO.

Układ zasilania i ładowania

System zasilany jest z jednego akumulatora 18650 o napięciu nominalny 3.7V i pojemności 2200mAh. Wystarcza na jakieś 40-120h ciągłej pracy. Napięcie oryginalnie stabilizował LM1117, LDO. Regulatory tego typu działają w praktyce jako regulowany rezystor, zamieniają w ciepło różnice napięć wejściowego i wyjściowego, nie są zbyt sprawne, ale jak mamy do czynienia z niskimi prądami i małymi różnicami napięć – nadają się bardziej do stabilizacji napięcia niż regulatory impulsowe. Bo w praktyce potrzebują do poprawnej pracy tylko 2 kondensatorów. Niestety okazało się, że wspomniany LM1117 ma spadek napięcia rzędu 1.1V. 3.7V-1.1V=2.6V a my do poprawnej pracy potrzebujemy 3V3, a tu płytka już gotowa i poskładana… no to się zrobi mały hack i podmieni 1117 na LM3965 – ten ma tylko 50mV spadku i wszystko na nim działa poprawnie.
Akumulator może być wyjęty i naładowany w dedykowanej ładowarce (pełno tego na allegro) jak i za pomocą MAX1811 ładowany przez port USB. To jak aku jest ładowany jest kontrolowane przez CPU, ładowanie z zewnątrz może być włączone lub nie, bo może akurat połączyliśmy sobie układ do telefonu i nie chcemy wyssać z niego energii. Maksymalny prąd ładowania dla tego kontrolera – 500mA, naładowanie akumulatora od zera do 100% zajmuje około 4h.

Połączenie z aparatem

Oryginalnie między CPU a aparatem były zainstalowane optoizolatory (PC817), ot tak aby galwanicznie oddzielić całą elektronikę aparatu (i jej poziomy zasilania) od układu sterownika. W praktyce mają one pewną wadę, diody LED w nich ssą sporo (jak na pobór prądu całego układu) prądu, ~2x10mA. Można wstawić transoptory z wyjściem darlingtonowym (mają bardzo duże wzmocnienie, więc w praktyce wystarczy do LEDów 1-2mA), ale skoro mój Canon i tak działa na 3V3 jak i sterownik, prościej będzie je wywalić, a w razie potrzeby zainstalować je między sterownikiem a aparatem. Kabelek nie jest wmontowany na stałe, wszystkie interesujące rzeczy wyprowadzone są na złączu RJ45. Zasilanie, dwie końcówki CPU, TWI i dwa przerwania. Jedno przerwanie do podłączenia do gorącej stopki, aby kontroler wiedział kiedy faktycznie aparat zrobił zdjęcie i mógł te informacje rozesłać do lamp a drugie – jakbym chciał w adapter wstawić jakiś układ wykorzystujący komunikację po I2C, i ten by chciał coś przekazać sterownikowi. Końcówki do sterowania spustem są ustawione jako Wired-AND, co znaczy że mogą tylko ciągnąć napięcie w dół. Pamiętamy, aby wyzwolić migawkę trzeba połączyć jeden z pinów do masy – CPU robi dokładnie to. Dlatego właśnie kontrolerem jest XMEGA a nie MEGA (mają tylko wyjścia totem-pole). Totem-pole działa tak – jak ustawiasz bit w porcie na 1, układ zwiera ten pin z zasilaniem, jak ustawiasz go na 0 to układ zwiera go z masą. W wired-AND pin można tylko zewrzeć do masy, układ nie utrzymuje na nim napięcia w stanie wysokim (w stanie wysokim jest „nieobecny”). Jakby utrzymywał to no… port aparatu jest już w stanie wysokim do tego stan wysoki z naszego układu i w wypadku różnic napięć obu układów można coś uszkodzić. A tak nasz kontroler jest w stanie obsługiwać dowolne napięcia do 3V3 w logice ujemnej (gdzie zwarcie do masy = aktywny). A gdyby było coś innego potrzebne, to zawsze można wstawić dodatkowy układ miedzy kontroler a aparat. Końcówki MCU na wszelki wypadek zabezpieczone diodami zenera. Więc jeśli jakimś cudem napięcie przekroczy 3V6 to dioda zewrze nóżkę do masy, i pewnie sama się przy okazji spali bo nie dałem rezystorów ograniczających prąd. No ale lepiej spalić diodę niż MCU.

USB (Host)

XMEGA ma wbudowany port USB 2.0 Full Speed. Pracuje jako port szeregowy i umożliwia zmianę parametrów pracy naszego urządzenia, a poza tym podmianę firmware. Nic o czym można by się rozpisywać, rozwiązanie wykorzystanie bo akurat było obecne w MCU, nie mogło więc leżeć odłogiem. Ale projekt numer dwa zawiera dodatkowy układ MAX3421, który jest kontrolerem USB ale nie device tylko host. Dodany jako druga forma kontroli aparatu, która dodatkowo umożliwia automatyczną zmianę parametrów zdjęć (o ile aparat obsługuje protokół PTP). Po co? Po HDR na przykład. Z automatyka aparatu mogę zrobić maksymalnie 3 zdjęcia +-2EV. A tak nie mam takiego ograniczenia. Znaczy, nie będę miał bo układ obecny w drugim projekcie, ale jego brata MX3420 stosowałem w moim dodatku do RPI dodającym mu zegar RTC z bateryjnym podtrzymaniem, port USB device, dwa kanały PWM do sterowania LEDami, kanał do sterowania głośnikami i level-shifter I2C. Po co? Bo mogę. ;P

Radio

Układ komunikacji radiowej to RFM22B-S2, poza tym nie napisałem do jego obsługi jeszcze kodu więc jest ale nie działa. Więcej o tym będzie w kolejnej części, pewnie z większą ilością opisu „jak działa soft”.

Przyciski

5 przycisków, podłączone bezpośrednio do CPU. 4 w bezpośrednim sąsiedztwie wyświetlacza, dzięki czemu można na nim pokazywać jaką funkcję aktualnie pełnią. Jako pull-up wykorzystywane tylko rezystory MCU, aktywne w stanie niskim. To co to pull-up… to takie coś co pozwala zmienić stan nieustalony w ustalony. Bo to jest tak, można podłączyć przycisk jedną stroną do zasilania lub masy, a druga do CPU. Kiedy wciśniesz taki przycisk, konkretny pin zmieni stan na wysoki lub niski. Tylko w jakim jest wtedy stanie kiedy nie jest wciśnięty? No właśnie, w żadnym. Może być w wysokim, może w niskim, może być w takim stanie jak pin obok, pływa sobie i skacze i robi generalnie dziwne rzeczy. I do tego stosujemy pull-up albo pull-down, jakiś względnie duży rezystor, który łączy nasze wejście z masą (down) lub zasilaniem (up) – i co za tym idzie ustala jakiś jego konkretny stan kiedy „nic się nie dzieje”. Ale wracając do przycisków, ostatni przycisk jest specjalny, po podłączony do asynchronicznego przerwania. Przerwania synchroniczne od asynchronicznych różnią się w AVR tym, że aby działały potrzebny jest włączony zegar taktujący peryferia MCU. Kiedy MCU śpi/jest w stanie „power down” tego zegara nie ma, i tylko asynchroniczne przerwania mogą go z tego stanu wybudzić. Znaczy – ostatni przycisk jest tez włącznikiem/wyłącznikiem.

Wyświetlacz

LCD, z gigantycznym czasem reakcji ale za to z dużym kontrastem, nie wymaga podświetlenia w dzień. Choć w ciemnościach się ono przydaje (dlatego jest obecne). Ma jakieś 3 cale i całe 128x64px, rozdzielczości (czyli piksel wielkości około 0,5mm). Do poprawnej pracy potrzebuje 9 kondensatorów i magistrali SPI. Niestety nie da się z niego odczytywać danych, można tylko zapisywać (stąd przydatny framebuffer w RAM). Ah i tylko dwa kolory. Sterownik ST7565R. Do którego jest w sieci przynajmniej kilka bibliotek, i masa dokumentacji. A jak używamy ASF (takie biblioteki do procesorów Atmela) to tam też sterownik do tegoż znajdziemy.

I tyle na dziś, efekt (nie) końcowy jest taki:

Software się jeszcze trochę musi porozwijać (bo brak kontroli nad radiem i kilku pomniejszych funkcji jak ręczne sterowanie migawką). A jak będziecie grzeczni to mogę jeszcze napisać co trzeba skompletować, na co uważać i jaką fortunę wydać aby zbudować sobie drona:

No i oczywiście, że nie takiego "ze sklepu" bo ma kompletnie customowy odbiornik RC, dzięki czemu ma sterowanie dualshockiem i telemetrię. ;)

 

sprzęt programowanie hobby

Komentarze

0 nowych
gowain   19 #1 28.06.2014 14:11

Hehe, czyli co? Za tydzień na HZ testujemy quadrocopter? :P

Kaworu   13 #2 28.06.2014 15:17

Jak skończę nadajnik i go ustabilizuję, bo chwilowo atakował meble. ;P Ale tak, zastanawiałem się czy go wziąć. ;P

Semtex   18 #3 28.06.2014 15:55

Mówisz: atakuje meble, a może on chce się po prostu schować w szafie... ;)

Kaworu   13 #4 28.06.2014 16:00

Tak się chował w tej szafie, że drzwi wyglądały jakby je zaatakował tygrys. ;D

PAMPKIN   11 #5 28.06.2014 21:39

Ciekawe, ciekawe! Przeczytałem raz, czytam drugi. Czytam trzeci raz, ten dron wybija mnie z koncepcji!

Kaworu   13 #6 28.06.2014 21:48

Tak mi się coś wydawało, że to się może stać.

SweetDreams   10 #7 28.06.2014 22:45

" z potrzebnych nam rzeczy – moduł SPI do komunikacji z radiem i wyświetlaczem, 2kiB EEPROMu i duuużo GPIO."
Do czego tak bardzo potrzebna jest "duża" ilość GPIO w tym projekcie?

cyryllo   17 #8 28.06.2014 23:18

@SweetDreams "Bo mogę. ;P" ;)

@Kaworu Ciekawy projekt. Wszystko sam od podstaw zaprojektowałeś czy na podstawie jakiegoś innego projektu?

wobes   4 #9 29.06.2014 00:00

Ja jak zwykle trochę pokrytykuję:
-bufor w ramki w cpu dla takiego wyświetlacza to przerost formy nad treścią
-jako cpu wybrałeś prawdziwą armatę, w zupełności wystarczyłby atmega32u4 (żeby nie było, to też ma USB). Z drugiej strony po co USB w cpu skoro masz MAX3421?
-wykorzystując atmegę zamiast xmegi można rozważyć darowanie sobie stabilizatora
-to co napisałeś o wyjściach atmegi też nie jest do końca prawdą, również w atmedze mogą bez problemu pracować w trybie "wiszące w powietrzu - podciągnięte do masy", nie musi się na nich pojawiać "1", a jak się nie chce kombinować to zawsze można użyć tranzystora za 10gr.
-zabezpieczenie diodą zenera to żadne zabezpieczenie, jak dym puści dioda, to i procesor, zresztą w tym układzie trudno o prawdziwie zabójcze dla elektroniki napięcia
-pomysł z transoptorami jest (był) słaby i całkowicie zbędny.


Dron fajny, swego czasu też zacząłem robić własny, w zasadzie jest kompletny z dokładnością do softu, którego jeszcze nie ma, jedyne co jest to obsługa wszystkich urządzeń. Niestety wolny czas w odróżnieniu od części (na które swoją drogą poszło już 1,5k) ciężko kupić.
Jaki moduł radiowy i CPU użyłeś w swoim? Ja użyłem RFM23BP-868-S2 + STM32F103RBT6. Masz jeden akumulator, czy osobne na każdy silnik?

Kaworu   13 #10 29.06.2014 09:06

@SweetDreams: Bo jak wszystko podłączyłem, to zostało mi zdaje się tylko 8 portów analogowych wolnych. RFM potrzebuje poza SPI jeszcze 3 pinów (irq, nsel, shdn), wyświetlacz poza spi też 3 (rst, a0, cs), max1811 czterech (vsel, isel, chrg, enable)... i tak wszystko razem pożarło piny. :D

@cyryllo: Wszystko mojej roboty.

@wobes:
- ja tam lubie, ale ja jestem dziwny.
- atmega32u4 ma mało pinów, iiii jest droższy niż ta xmega. :D A maxim został dodany do drugiej wersji układu, i w sumie mógłby obsługiwać wszystko od strony usb (i host i dev), ale skoro już ładny kod od usb mam, to będą dwa. porty, poza tym tak mam prostszy design, bo nie musze sie zajmować za bardzo obsługą voltage-boostera i układu ładowania na jednym porcie.
- Racje masz.
- Jak dioda puści dym to na ogół zewrze się do masy na stałe. Poza tym, to raczej ochrona przed za dużym napięciem niż prądem, pozabezpieczałem tak porty rpi po tym jak spaliłem sobie przypadkiem jedną, i no - już dwa razy zadziałało jak powinno. Choć dla "porządności rozwiązania" to by się jeszcze bezpiecznik przydał i rezystor.

Ten sam, RFM22B-868-S2 i megę 328p, kontrolera lotu samego nie robiłem, bo by mnie obudowy układów rodziny mpu6050 doprowadziły do czegoś (tak wiem, moduły ale jakoś meh), więc wziąłem gotowy i tylko sobie odbiornik zrobiłem (i dodatki). Aku jeden, zawsze jeden aku ma lepszą wydajność niż kilka.

  #11 29.06.2014 10:28

Planujesz udostępnienie schematów i/lub kodu?

Samurai   16 #12 29.06.2014 10:40

Bardzo fajny projekt powodzenia w realizacji :)

Shaki81 MODERATOR BLOGA  38 #13 29.06.2014 16:59

No i w końcu ktoś na blogu zabrał się za drony :)

Kaworu   13 #14 29.06.2014 17:02

@Shaki81: No ja od jakiegoś emm, roku, z przerwami go montuję. :D

#r2d2#   11 #15 29.06.2014 23:46

Bardzo ciekawy projekt. Sam zaczynam swoją przygodę z elektroniką. Czy możemy liczyć na udostępnienie kodu i schematu tego cacuszka?

command-dos   18 #16 30.06.2014 06:22

Ludzie, jesteście z kosmosu :) czekam na drugą część, drona i co tam jeszcze masz

Kaworu   13 #17 30.06.2014 08:43

@#r2d2#: Ze schematem jest zawsze taki problem, że jestem leniem i ich nie robię, tylko od razu projekt pcb. :P A co do kodu się zobaczy, najpierw go muszę skończyć i upiększyć. ;)

Kaworu   13 #18 30.06.2014 08:44

@command-dos: Ja tam mam dużo rzeczy, pytanie co z tego (poza dronem) jest ciekawe.

sr57be45   5 #19 02.07.2014 12:05

Raz w roku gdy pojawią się błyski to dobrze, morze masz bardziej burzową okolicę ;).

Podobno działa trochę słabiej niż CHDK z "kompaktów"

Magic Lantern

Motion detector (aka Lightning script) (import from CHDK)
https://bitbucket.org/hudson/magic-lantern/issue/248/motion-detector-aka-lightni...

sr57be45   5 #20 02.07.2014 12:05

Raz w roku gdy pojawią się błyski to dobrze, morze masz bardziej burzową okolicę ;).

Podobno działa trochę słabiej niż CHDK z "kompaktów"

Magic Lantern

Motion detector (aka Lightning script) (import from CHDK)
https://bitbucket.org/hudson/magic-lantern/issue/248/motion-detector-aka-lightni...

sr57be45   5 #21 02.07.2014 12:06

;] *może

Kaworu   13 #22 02.07.2014 12:31

No burz w tym roku to już było trochę, ale żadne z ładnymi piorunami. W zeszłym roku było lepiej. ;>

Ani ML ani CHDK nie są kompatybilne z moim aparatem (Canona). Poza tym, i tak wolę długie czasy naświetlania choćby ze względu na łapanie wielu wyładowań na pojedynczej ramce. Oraz... chdk mi lamp nie wyzwoli. ;P

sr57be45   5 #23 03.07.2014 12:08

Szkoda że twój aparat nie obsługuje CHDK/ML.

Dowolnie długie czasy są do ustawienia, ograniczeniem jest tylko przesłona F 8.0 w kompaktach.

CHDK wyzwala lampę wbudowaną w kompaktach, niektóre wysokie modele miały chyba gorącą stopkę ale czy chdk obejmuje to nie wiem, jak nie to jest chyba "fotocela?"

Kaworu   13 #24 03.07.2014 13:20

Ja nie mam kompaktu, wiec mi to ryba, nawet podwójna bo mi i tak nie działa żaden z tych hacków.

No jest, ale foto-cela jest tak sobie wygodna jak masz lampę akurat w takim miejscu że ją niewygodnie ruszać. A tak sobie tylko w sofcie ustawisz, ze tej konkretnej ma nie wyzwać i po kłopocie.

Bo znaczy no, jasne, że są rozwiązania, którymi da się osiągnąć to co potrzebuję na rynku ale albo są niedostępne bo nie taki sprzęt albo drobie, albo robią tylko jedną z rzeczy, które by mi się przydały, a tak - mam wszystko w jednym miejscu. Plus sam zrobiłem, więc podwójna frajda a do tego opanowywanie nowych rzeczy ;)