Temat w dziale ARDU ponieważ OSD jest dedykowane pod MWC i wielowirnikowce. To mój pierwszy sprzęt FPV i OSD więc proszę o wyrozumiałość. Wszelkie pomysły, modyfikacje jak najbardziej mile widziane. Liczę że projekt będzie się fajnie rozwijał.
I. Kupujemy płytkę OSD
MinimOSD do kupienia:
-DealExtreme 15,70$
-EBAY 16,88$
-Goodluckbuy 18$
-Hobbyking 19$
Taniej nie znalazłem.
II. Mały hardware mod
Na płytkach v0.1 Atmega zasilana jest z portu FTDI 5V a układ MAX7456 zasilany jest napięciem 12V z pinów kamerki. Płytki często palą się właśnie przez to zasilanie 12V. Potrzebny jest mały mod dzięki któremu oba układy będą jednocześnie zasilanie napięciem 5V z portu FTDI.
Obok układu MAX7456 znajdują się 2 małe pady (zaznaczyłem na zdjęciu poniżęj). Łączymy je na stałe kropelką cyny.
III. Programowanie płytki
Płytkę programujemy konwerterem FTDI. Tradycyjnie 5V-5V, GND-GND, RX-TX, TX-RX. Najlepszy jest konwerter FTDI z RCtimera. Wpina się prosto pod wyprowadzenia bez kombinowania z kabelkami.
Pobieramy:
-- Soft v2.2 (Najnowszy) POBIERZ
-- Soft v370 POBIERZ
-- Soft v345 (Działa ze wszystkimi wersjami multiwii i z każdym softem Misia) : POBIERZ
Przed wgraniem softu, należy wyczyścić EEPROM czyli wybrać w arduino Plik->Przykłady->EEPROM->eeprom_clear. Wgrywamy to na płytkę i restartujemy ją. Jest gotowa do wrzucenia softu OSD.
1.Wgrywamy soft z folderu KV_Team_OSD na płytkę poprzez FTDI i program Arduino
2.Uruchamiamy GUI (z folderu KV_Team_OSD_GUI)
3.Trzeba załadować czcionki więc po połączeniu płytki w GUI w obszarze Font tools klikamy upload.
Resztę opcji ustawiamy w GUI jak nam się podoba.
Starsza wersja działająca z KFC Marbalona:
Soft v2.1 : POBIERZ
1. Zawartość folderu Metro library przenosimy do folderu Libraries w głównym katalogu Arduino.
2. Wgrywamy przez Arduino program ładujący czcionki (Max7456_Font_Update)
3. Przez program TerraTerm (w załączniku) wrzucamy czcionki. Uruchamiamy, wybieramy port, Setup->serial port i zmieniamy baudrate na 19200. Potem File->send file i wskazujemy plik Rushduino.mcm z paczki
4. Wgrywamy właściwy soft Rush_KV_2_1 na płytkę
UWAGA:GUI nie obsługuje starszego softu v2.1 Nie wgrywamy czcionek w tym sofcie przez GUI tylko przez TerraTerm. Najlepiej to w ogóle nie żenić GUI z softem v2.1 bo skiełbasimy soft w OSD.
Płytka jest gotowa do pracy.
IV. Podłączenie pod FC
OSD podłączamy do FC przez obojetnie który port serial. Wiadomo TX-RX, RX-TX. Napięcie 5V i GND pobieramy najlepiej ze złącza i2c. Kamerka podłączamy pod OSD w pin Vin i GND, nadajnik w Vout i GND.
+12V nie tykamy bo po modzie z zasilaniem możemy sfajczyć OSD
V. RSSI, czujnik napięcia video, czujnik prądu, czujnik temperatury
Uwaga: Aby OSD odczytywało powyższe parametry włączamy "Enable OSD read ADC"
1.Aby nasze OSD pokazywało RSSI musimy podlutować się pod nogę procka w ten sposób:
2.Czujnik prądu możemy zakupić np od kolegi PitLab:czujnik prądu PitLab i podłączyć w ten sposób:
Nie bawiłem się jeszcze w czujnik prądu ale chyba będzie trzeba go skalibrować w sofcie OSD.
3. Dla czujnika napięcia baterii video musimy wykonać dzielnik pomiarowy jak poniżej:
Dotatkowo trzeba włączyć czujnik w GUI
4. Dla czujnika temperatury będziemy potrzebować czujnik LM35 za 3zł:
Wiadomo. Noga Vs pod +5V, GND do masy, Vout pod analog pin atmegi:
W globalvariables.h zmieniamy:
Kod: Zaznacz cały
const uint8_t temperaturePin=6;
Kod: Zaznacz cały
const uint8_t temperaturePin=5;
TUTORIALE VIDEO:
Jeżeli ktoś ma sprawne rączki to OSD zrobi w pół godzinki. Efekty:
FAQ:
Błędy:
1. Aby wysokość z barometru zerowała się przy każdym uruchomieniu Multiwii, trzeba pobrać najnowszy soft Multiwii z oficjalnej strony. Jeżeli użyjemy misiowego softu multiwii, wysokość nie będzie się zerowała. Próbowałem coś zdziałać w sofcie OSD ale niestety kuleję z programowania ardu i nic nie wyszło. Może ktoś wpadnie na pomysł jak to rozwiązać.
/// ROZWIĄZANIE
W oprogramowaniu Multiwii w serial.ino zmieniamy:
Kod: Zaznacz cały
case MSP_ALTITUDE:
headSerialReply(6);
serialize32(EstAlt);
serialize16(vario);
break;
Kod: Zaznacz cały
case MSP_ALTITUDE:
headSerialReply(6);
serialize32(EstAlt - TakeofAltitude); //ZCZ wys. wzgl. startu
serialize16(vario);
break;