Skocz do zawartości

quandziadek

Użytkownicy
  • Zawartość

    35
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    4

quandziadek zajął 1. miejsce w rankingu.
Data osiągnięcia: 7 września 2017.

Treści użytkownika quandziadek zdobyły tego dnia najwięcej polubień!

Informacje

  • Płeć
    Mężczyzna
  • Zawód
    Student programista

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Osiągnięcia użytkownika quandziadek

Wynalazca

Wynalazca (6/19)

  • Za 5 postów
  • Za 25 postów
  • To już rok!
  • To już 5 lat!

Odznaki

5

Reputacja

  1. Error: libusb_open() failed with LIBUSB_ERROR_ACCESS sugeruje, że OpenOCD nie może się uzyskać dostępu do portu USB. Czy w Eclipcie robisz Terminate na sesji debugowania? Jeśli nie, to w tabie o nazwie "Debug" klikasz prawym na główny obiekt w drzewie i klikasz Terminate - to zamyka OpenOCD. Jeśli pomimo Terminate nie działa, to możesz spróbować po prostu odłączyć i podłączyć płytkę, może pomoże.
  2. Jeśli jesteś kumaty, jeśli chodzi o komputery i chcesz wiedzieć trochę lepiej, jak to wszystko działa pod spodem, a co najważniejsze umieć później z tej wiedzy skorzystać i napisać samemu jakąś bibliotekę, to naucz się porządnie C. Tylko tak naprawdę porządnie;) Jak już zrozumiesz, jak działa komputer, to później nauczenie się C++ czy Pythona będzie proste, bo będziesz wiedział, co się dzieje pod spodem. Podejrzewam, że w drugą stronę, czyli od Pythona do C może być trochę trudniej, chociaż na pewno szybciej zobaczysz efekty. Ale no Pythona poza RPi chyba nie poużywasz.
  3. Miałem ten sam problem i pomogło mi to samo rozwiązanie. Całkiem możliwe, że to dosyć powszechny problem, bo mój PC jest całkiem standardowy, używam go prawie tylko do grania i nie mam tam dziwnych aplikacji zainstalowanych.
  4. Może ROS? Zawiera program rviz, który po skonfigurowaniu wyświetli Ci mapę i pozycję robota, masz też opcję po prostu kliknięcia na mapie i wtedy ustawiasz zadaną pozycję. Nie wiem, co jeszcze mógłbyś chcieć ustawić, ale pewnie też się jakoś da. Jeśli chodzi o to, jakbyś miał to połączyć, to w Pythonie albo C++ musiałbyś napisać program, który odbierałby dane z Twojego robota, konwertował do standardowych typów danych ROSa, a potem publikował na odpowiednim topicu. Innym rozwiązaniem na szybko jest Pythonowy matplotlib. Możesz po prostu stworzyć macierz n x m ze swoją mapą, wyświetlić to na wykresie jako bitmapa, na to nakładasz pozycję robota i już. Jak dodasz sobie obsługę klikania, to i możesz wysłać komendę, gdzie robot ma pojechać 😉
  5. quandziadek

    IR nie odbiera

    deshipu chyba ma rację 🙂 //+============================================================================= // Restart the ISR state machine // void IRrecv::resume ( ) { irparams.rcvstate = STATE_IDLE; irparams.rawlen = 0; } Wywołując resume w każdej iteracji głównej pętli zerujesz stan odebranej wiadomości, przez co biblioteka nie jest w stanie odczytać wszystkich danych.
  6. Wtrącę swoje trzy grosze, jako, że mam doświadczenie z nRF24L01+. Po pierwsze, to chyba jedna z lepszych opcji na Arduino jeśli chodzi o dostępność oprogramowania, przykładów i opisów, co nie działa i dlaczego. Po drugie da się je usypiać. Jeśli chodzi o zasięg, to tylko te kartofle mogą stanąć na przeszkodzie, ale to już najlepiej jak sprawdzisz to w praktyce. Dużo do stracenia nie masz, bo moduły kosztują 5-10zł. Chociaż w sumie z góry wiadomo, że jakieś 433MHz będą działać lepiej. Teraz jeśli chodzi o wady, to jest jedna rzecz, o której jeszcze nie wspomniano - zasilanie. Te standardowe tanie moduły nRF24L01+ wymagają całkiem stabilnego zasilania, lepszego niż to, co masz w Arduino. W moim przypadku do Arduino Uno po prostu wstawiałem dodatkowy kondensator 10uF i jakoś to działało, ale mam przeczucie, że przy Arduino Pro Mini taka fuszerka może nie wystarczyć i będziesz musiał mieć dodatkowy moduł zasilający. Niby do przeżycia, ale jednak zawsze to dodatkowe rzeczy do łączenia.
  7. To chyba wystarczy po prostu tak: void send(uint8_t data[], uint8_t len, DEV_Select dev) { select_dev(dev); // tę funkcję powinieneś sobie napisać dodatkowo for (uint8_t i = 0; i < len; i++) { SPI_Send_Byte(data[i]); } } Ogólnie to programowanie mikrokontrolerów warto zacząć od nauki programowania 🙂
  8. Polecam przejrzeć to: https://en.wikipedia.org/wiki/C_string_handling Słowem kluczowym dla rozwiązania Twojego problemu jest null terminator 🙂
  9. Nie wiem jakiego masz promotora, ale raczej to mało dydaktyczne, żeby miał się z czegokolwiek śmiać w Twoim rozwiązaniu. Jak uzna coś za zbyt prymitywne, to po prostu powinien zasugerować, że powinieneś to zmienić i tyle. Jeśli chodzi o obraz z kamery, to nie jestem w tej dziedzinie ekspertem. MJPG streamer pewnie zadziała, pytanie ile da się klatek z czegoś takiego wycisnąć i jakie jest opóźnienie. No i czy uda się taki obraz przepchnąć przez bluetooth?
  10. Po pierwsze propsy za profesjonalne debugowanie 🙂 Przykładowy przebieg sygnałów z dokumentacji: Twój kod ustala linię CS na początku programu i już jej nie zmienia. W zasadzie nie wiem czy to wymagane przy tym układzie, ale chyba najczęściej robi się tak, że przed rozpoczęciem transmisji ustawiasz CS na low, a po wysłaniu komendy ustawiasz na high. Mam nadzieję, że pomoże.
  11. Niestety w C nie można tak sobie dodawać inta do stringa (a dlaczego to w zasadzie każdym tutorialu do C, w części o przetwarzaniu stringów powinno być napisane). Typowo w Arduino po prostu możesz zrobić tak: Serial.print("leway "); Serial.print(lewa); Serial.println(" cos");
  12. W opcji z mostkiem chodziło mi prawie dokładnie o to, co napisałeś, tylko zamiast odbiornika i nadajnika RF myślałem po prostu o jakimś transceiverze (transmitter/receiver), czyli module, który potrafi nadawać i odbierać na zmianę, czyli na przykład nRF24L01+. Widzę, że plany masz ambitne, więc jako odrobinę starszy student, który ledwo co skończył magisterkę, postaram się trochę ostudzić Twój zapał. Po pierwsze semestr wbrew pozorom jest całkiem krótki, a oprócz samego programu i robota, musisz jeszcze zrobić przegląd literatury, napisać pracę i ją poprawić zgodnie z wizją promotora. To jest całkiem czasochłonne, a co gorsza męczące. Kod pisze się fajnie, ale tekst już nie bardzo. Obraz fajny bajer, ale to w zasadzie osobną inżynierkę mógłbyś z tego zrobić. Zamiast tego możesz po prostu w swojej aplikacji na Androidzie zasymulować jakieś wejście (chociażby odtwarzać film). Na swoją magisterkę dopiero co robiłem sieć mesh opartą o Arduino i nRF24L01+ (za dwa tygodnie mam obronę😉), także doświadczenie z tym radiem pewne mam. Zaletą jest to, że jest cholernie tanie i ma w sumie sporą przepustowość w porównaniu z innymi dostępnymi powszechnie transceiverami. Dodatkowo jest przyzwoity sterownik dla Arduino (chociaż warto najpierw dokładnie przeczytać dokumentację samego modułu). Wady są i to całkiem istotne, mianowicie to radio czasem nie działa, jakby się spodziewało i zazwyczaj są to problemy bardzo subtelne, typu: wysyłam wiadomość, 3 radia odbierają ją poprawnie, a 4. już nie. Wiele moich problemów okazało się związanych z zasilaniem, bo korzystałem ze stabilizatora z Arduino. Z drugiej strony myślę, że w przypadku alternatyw problemów będzie tyle samo albo i więcej. Dodatkowo, jak zależy Ci na zasięgu, to chyba to: http://electropark.pl/moduly-komunikacji/5569-modul-nrf24l01palna-wraz-z-antena-2-4ghz.html może Ci dać największy z zasięg ze wszystkiego, co jesteś w stanie kupić w miarę szybko i tanio.
  13. Generalnie WiFi i Bluetooth średnio nadają się do takich zastosowań. Czas połączenia Bluetooth jest dosyć długi, co jest szczególnie uciążliwe przy utracie zasięgu (a ten jest mały). Przy WiFi dodatkowym problemem jest latencja, czyli czas od wysłania danych do ich otrzymania. W przypadku słabego sygnału ten parametr potrafi się znacznie zmieniać, co jest problemem, jeśli chciałbyś tym robotem sterować. Generalnie to widzę kilka opcji: 1. Wziąć jakiś lepszy (i droższy) moduł Bluetooth, najlepiej z zewnętrzną anteną, może to jakoś pomoże, ale cudów nie będzie. 2. Wykorzystać moduły RF o niższej częstotliwości, poniżej 1GHz (Bluetooth i WiFi działają na 2,4GHz, a ogólna zasada jest taka, że im wyższa częstotliwość tym krótszy zasięg, ale szybszy transfer). Żeby korzystać przy tym z Androida, musiałbyś zrobić sobie dodatkowe urządzenie (bridge), które odbierało by dane z Bluetooth i wysyłało przez moduł radiowy i w drugą stronę: Telefon (BT) <-> (BT) Bridge (RF) <-> (RF) Robot 3. Zmienić założenia: semestr się jeszcze nie zaczął, zawsze możesz zmienić swój pomysł. Na przykład nie komunikować się z Androidem, tylko zrobić to jakoś inaczej. Albo sterować robotem zdalnie przez jakiś zwykły moduł RF, zbierać w tym czasie dane z czujników, a gdy uda się połączyć Bluetooth to przesłać te dane do telefonu. Co nie wybierzesz: powodzenia!
  14. To mały bug, który pewnie trochę irytuje użytkowników nie-Windowsów. Otóż blok z kodem wygląda tak: Problemem jest to, że kod nie jest wyświetlony fontem o stałej szerokości znaków, przez co nie widać jego pierwotnego formatowania. Dla selektora "dl.codebox code" w /forum/templates/subSilver/sub.css przypisane jest "font-family: Consolas, mono;". Consolas to font dostępny tylko na Windowsie. Zamiast "mono" powinno być po prostu "monospace" i wtedy wszystko będzie jak trzeba 🙂
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.