Skocz do zawartości

Arudino multisensor logger RC do prędkości i nie tylko


karambolis8
 Udostępnij

Rekomendowane odpowiedzi

Hej.

 

Postanowiłem stworzyć osobny wątek o GPS loggerze, który od jakiegoś czasu rozwijam. Inspirację czerpałem z wątku Marka, ale w zasadzie teraz z kodu nie zostało już nic wspólnego.

 

Funkcje
  • prędkość i wysokość z GPS
  • prędkość z rurki Pitota
  • wysokość z barometru BME280
  • temperatura z TMP36 lub LM35
  • pomiar natężenia w wybranym zakresie 5A/20A/30A/50A...
 
Komunikacja z użytkownikiem to
  • zapis wszystkich odczytów na kartę SD do pliku CSV (np do importu do Excela)
lub
  • wyświetlacz OLED 128x64 z kilkoma ekranami zmienianymi przyciskiem
 
Pamięci RAM jest zbyt mało na obsługę jednocześnie ekranu oraz karty SD. Bufor zapisu na kartę zajmuje co najmniej połowę RAMu i tego się nie przeskoczy.
 
Zostało do zrobienia
  • LEDy sygnalizujęce pracę i przycisk włączania/wyłączania zapisu w trybie z SD bez OLED
  • pomiar przeciążeń w trakcie lotu w 3 osiach z ADXL335/MPU6050
  • zaprojektowanie płytki montażowej wszystkich komponentów
 
Obecnie prototyp wygląda tak :D
ctlWFVz.jpg
Odnośnik do komentarza
Udostępnij na innych stronach

Zapowiada się fajny projekt.

Ten prototyp wygląda bardzo dobrze. :)

 

Przy takiej ilości wskazań i odczytów nie powinieneś czasami zmienić mikroprocesora?

 

Można wykorzystać tanie, gotowe płytki z większością czujników jakie chcesz zastosować. Może to być mini apm z atmegą albo najlepiej taniego omnibusa z osd pomiarem napięcia i niezliczoną ilością wejść i wyjść. Karta SD jest już zamontowana na stałe. Do tego jeszcze ta ilość pamięci wystarczy nawet na wyświetlanie wykresów na wyświetlaczu.

Odnośnik do komentarza
Udostępnij na innych stronach

W mikroprocesorach jestem typowy lajkonik, dlatego zapytam: dlaczego powinienem zmienić mikroprocesor? Chodzi o pamięć? Tutaj przyznam, rzeczywiście docieram do granic możliwości arduino nano/pro mini ;)

 

Chyba wystarczy mi MEGA Pro 2560. U chińczyków 9USD. Płytka 5.5x3.5cm

 

ihYAg3q.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi mi o taką 

https://pl.aliexpress.com/item/Betaflight-OMNIBUS-F4-Pro-V2-Flight-Control-wbudowane-OSD-BEC-dla-FPV-wy-cigi-Drone-Quadcopter/32996639832.html

 

Rozmiar 3,6 x 3,6 cm, na płytce czytnik kart, pomiar napięcia i prądu, barometr, żyroskopy i akcelerometry, BEC oraz wydajny procesor z pamięcią setki razy większą niż w pro mini.

Wystarczy dodać GPS i kompas oraz napisać program i już.

Chodzi głównie o rozmiar końcowego projektu. Mało prawdopodobnym jest zrobienie płytki mniejszej niż chińczyki.

Ale to twój projekt. Potraktuj moje wypociny jako drobną propozycję.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem tą płytkę omnibus. Problem dla mnie polega na tym, że nie znam się na programowaniu mikrokontrolerów. Ja się wywodzę z programowania wysokopoziomowego, jak C#. Arduino jest dla mnie o tyle przystępne, że ma wygodne środowisko, łatwo się je programuje i jest duże wsparcie w sieci. A jak ugryźć taki omnibus nie mam pojęcia :)

Odnośnik do komentarza
Udostępnij na innych stronach

Wniosek taki:

albo super kompaktowy rozmiar + programowanie BF (pewnie wystarczy odpalić podstawowa wersje i włączyć logowanie przy starcie) wtedy będzie wszystko z automatu ale bez wyświetlacza...

albo jakiś gigant (próba zintegrowania wszystkich sensorów) z łatwym programowaniem.

 

aby ugryźć Betaflight należy zaznajomić się z tym:

https://github.com/betaflight/betaflight

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co rozumiem, to Marek nie sugerował wykorzystania betaflight, tylko napisania swojego softu do omnibusa.

 

To jest mój pierwszy projekt w Arduino, dopiero ogarniam to środowisko, bardziej chodzi o naukę, niż stworzenie optymalnego rozwiązania komercyjnego ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co rozumiem, to Marek nie sugerował wykorzystania betaflight, tylko napisania swojego softu do omnibusa.

Nie. Marek nie sugerował zastosowania betaflight. :)

Marek sugerował, że to co chcesz zrobić i jeszcze o wiele więcej już jest zrobione. :)

Nazywa się to autopilot ale z racji, że wielu ma autopilotowstręt nie użyłem tej nazwy.

 

Dlatego też podałem linka do tej płytki ze względu na rozmiar i zawarte tam czujniki. Jest to super baza do różnego rodzaju oprogramowania. 

O czym świadczy to, że nawet ardupilot też ma już oprogramowanie dla tej płytki (sprawdzone bo na tym latam) :)

 

Twój projekt jest świetny pod warunkiem, że napiszesz do niego oprogramowanie wykorzystujące wszystkie czujniki bez opcji autopilota. Bo na ten wyraz niektórzy dostają gęsiej skórki.

 

Ja tam trzymam kciuki. 

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Hej.

 

Mój projekt trochę stoi. Po części z podowodu Wilgi Artexu i budowy skrzydełka pod FPV.

 

Natrafiłem też jednak na pewną blokadę. Mam trochę podłączonych sensorów analogowych typu LM35, ACS758, rurka pitota i odczyty wykonuję w każdym przebiegu pętli. Powoduje to jednak kilka problemów. Przy Arduino znany jest problem "przegrzewania się" ADC podczas bardzo częstych odczytów. Wydaje mi się, że jedno Pro Mini już w ten sposób trwale uszkodziłem. Naturalnym pomysłem jest dodanie delay() przed odczytem analogowym. Wydaje mi się, że rozwiązało to u mnie problem przegrzewania, jednak spowodowało inną komplikację. Mianowicie GPS przestał łapać fixa. Objawia się to tym, że w pierwszym etapie działania programu, kiedy czekam na satelity, i nie wykonuję analogRead, GPS łapie wymagane minimum satelit. Kiedy jednak w kolejnym etapie dochodzą odczyty analogowe, raz na jakiś czas GPS gubi wszystkie satelity. Usunięcie delay(50) przed odczytami naprawia GPSa, ale obawiam się, że znowu uszkodzę ADC. Ktoś ma jakiś pomysł o co może chodzić? Dla chętnych kod do wglądu tutaj

https://bitbucket.org/karambolis8/gpslogger/src/master/LoggerV2/LoggerV2.ino

 

Mam już zakupioną płytkę STM32, ale kupiłem w pakiecie czasu na przeprotowanie kodu ;)

 

PS. Zrezygnowałem z tworzenia "sensor huba" z MAVLinkiem. Przy cenie Pixhawka i podobnych w okolicach 150zł nie ma to dla mnie sensu, a możliwości ArduPlane są strasznie kuszące ;)

 

Pzdr

Adam

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym spróbował wykorzystać funkcję millis(), dzięki niej (choć pewnie wiesz :) ) można w pewien sposób zrobić "wielowątkowość". Mógłbyś wtedy wykonywać pomiar co jakiś określony czas nie blokując reszty programu.

 

Mam na myśli coś takiego, nie ma niepotrzebnych delay() które zawieszają cały program:

if(millis()-last>=1000) //wejście co minimum sekundę
   {
     //odczyt z czujników, wyświetlenie itp.
     last=millis();
   }
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Problem z analog read ogarnięty dzięki milis(), odczyty co 250.

 

Do sensora prądu ACS758 wstawiłem stabilizator liniowy L7805-5V, dzięki czemu cały układ jest zasilany po podpięciu do lipola, nie trzeba osobnego 5V z odbiornika/ECS.

 

Wczoraj odbył się pierwszy lot

N6IMwXk.jpg?1

Mp8F5K9.jpg

 

Mam pytanko do kogoś, kto trochę lepiej niż ja ogarnia komunikację z GPS. Mianowicie mam dwa moduły, które nieopatrznie podłączyłem do Pixhawka. Po tym przestały one współpracować z biblioteką NMEA w Arduino. Odpalałem kod diagnostyczny, który próbował się łączyć z modułem na każdym możliwym baud i za każdym razem odczytuje jakieś krzaki i jest nie do użytku. Natomiast Arduplane w Pixhawku, jak i program do konfiguracji ubloxa jakoś sobie z tym modułem rozmawiają i działa on poprawnie. Ktoś może ma jakiś pomysł co się mogło stać?

Odnośnik do komentarza
Udostępnij na innych stronach

 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.