Elektroda.pl
Elektroda.pl
X
TermoPasty.pl
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arm taki mały, a zadań tak wiele...

blackdoom 06 Maj 2008 11:13 2007 13
  • #1 06 Maj 2008 11:13
    blackdoom
    Poziom 9  

    Witam, od jakiegoś czasu męczy mnie jedna rzecz.
    Jestem w trakcie projektowania płytki pod mózg robota.
    Ma to być bardziej terminal bo dane będą analizowane na PC.
    Komunikacja miała by się odbywac na BTM - 222 bo to dość
    przystępny sposób. Płytka ta będzie zaprojektowana z myślą
    o bezproblemowym dołączeniu w przyszłości kamerki PO3030K
    z MARITEX-u. I tu się zaczynają schody bo nie wiem, który Arm poradzi sobie z wysyłaniem danych z Kamerki(320x240, ew 240x160),Mic, Dalmierza IR, GPS oraz otrzymywaniem i wykonywaniem poleceń
    z PC. Czy jest szansa że LPC2106 + SRAM poradzi sobie z tym?
    Zależy mi żeby uC nie miał dużej ilości pinów bo mam zwykłą stację
    lutowniczą i smd to pare razy zaledwie lutowałem, no chyba że nie ma innego wyjścia. Nie jestem też pewny czy przy 1562500 baudach zmieści
    się to wszystko bo te 20 klatek/s fajnie by było wysyłać.
    Pozdrawiam!

    0 13
  • TermoPasty.pl
  • #2 06 Maj 2008 11:17
    Father
    Poziom 26  

    Proponuję ARM-y z najnowszym rdzeniem Cortex, póki co dostępne są układy od ST i Luminary Micro, wkrótce również od NXP....

    0
  • TermoPasty.pl
  • #3 06 Maj 2008 12:34
    blackdoom
    Poziom 9  

    Dzięki za szybką odp. Orientujesz się czy będzie potrzebny zewnętrzny ram czy wewnętrzny starczy?
    Można wykorzystać USB z tego uC do komunikacji z BTM - 222?

    0
  • #4 06 Maj 2008 12:38
    kamyczek
    Poziom 34  

    Do btm-222 to raczej użyj uarta bo jest to chyba najwygodniejszy sposób jako drugi moduł przy komputerze możesz użyć następnego BTM-222 z ftdi-232R i masz sprawę załatwioną. Nie wiem tylko czy dasz radę popędzić tak szybko transmisję przez uarta z tego co czytałem max to 460,8 Kbps

    0
  • #5 06 Maj 2008 13:38
    blackdoom
    Poziom 9  

    W dokumentacji BTM jest napisane że wyciąga na uart pełną prędkość a to chyba oznacza 2mb?
    STM przy 72mhz spokojnie wyciąga 2250000 bauda.
    A do kompa to w sumie mam pod usb klasy pierwszej moduł :P a tak przy okazji do btm podłącza się antene zewnętrzną?

    0
  • Pomocny post
    #6 06 Maj 2008 14:14
    kamyczek
    Poziom 34  

    Co do tego że jest napisane to owszem ,ale w liście komend AT jest napisane L7=460,8 Kbps L8 i L9 nie występuje i wartości prędkości dla tych wartości nie sa określone w dokumentacji. Nie mam pojęcia jakie są wartości dla tych ustawień i czy jakieś są. Taka komenda może nam moduł wysterować definitywnie ;)...

    0
  • #7 06 Maj 2008 17:13
    blackdoom
    Poziom 9  

    Jak myślisz da radę upchnąć w 460kb/s taką ilość danych? Czy może zastosować jakąś prostą kompresję albo inny moduł do komunikacji?

    0
  • Pomocny post
    #8 06 Maj 2008 19:13
    Father
    Poziom 26  

    Oprócz rdzenia, który jest wykorzystywany głównie do obliczeń, układy te wyposażono także w DMA, więc nie obciążają rdzenia w trakcie transmisji... wykorzystanie USB do komunikacji z BTM - 222 raczej nie będzie możliwe...

    0
  • #9 07 Maj 2008 16:16
    blackdoom
    Poziom 9  

    Arm taki mały, a zadań tak wiele...

    Pora trochę wyklarować to co wiem i czego nie wiem. :D
    Na załączonym schemacie ideowym chciałem przedstawić
    podział zadań na uC i główne elementy.

    -= uC nr 1 =-
    Wydaje mi się, że tu sprawa jest dość prosta, układ ten ma
    za zadanie sterować serwami odpowiedzialnymi za mobilność
    bota oraz sterowanie "głową". Każda kończyna ma składać się
    z 3 serw + czujnik dotyku(najpewniej zwykły switch sprytnie gdzieś
    upchnięty :P). Do tego dochodzi akcelerometr.
    Posługiwanie się modułem(bo chce to zawrzeć na oddzielnym pcb)
    ma być dość proste i abstrakcyjne tzn. podajemy tylko kierunek,
    odległość, a uC sam się niech martwi :D W szczególnych przypadkach
    będzie możliwość przejęcia pełnej kontroli nad kończynami.
    Akcelerometr ma posłużyć do reagowania na nagłe dziwne zjawiska
    jak na przykład popychanie bota czy przechył płaszczyzny na, której
    stoi. Myślę że któryś z Armów LPC210x sobie poradzi (proszę o sugestię)
    Sam program chciałbym stworzyć możliwie nie skomplikowany
    i myślę że nie będzie z tym wielkich problemów kwestia paru tygodni
    i soft powinien być.

    -= uC nr 2 =-
    Nasz mały mózg...
    nudzić się nie będzie..., ma prowadzić komunikację z PC, odbierać obraz
    z kamery, i zarządzać modułami. Chociaż z drugiej strony czy ja wiem
    czy to aż tak dla niego trudne... kamerka jest męcząca no ale po za tym
    moduły będą raczej obsługiwane za pomoca prostych komend więc nie
    będzie to uciążliwe. Martwi mnie że jak wywnioskowaliśmy razem transfer do dyspozycji
    to tylko 460kb :/ to nie za dużo bo marzyłem o obrazie qvga
    i prznajmniej 15 klatkach na sek. Może można by zastosować jakąś prostą kompresję? Działanie tego mózgu można by opisać w ten sposób:
    ------------------
    ->Kontrola stanu połączenia jeżeli połączenie ok to wykonuj dalej, a jeżeli
    nie to wykonuj jakieś specyficzne dla tej sytuacji polecenia.

    -> Odbierz polecenia od PC

    -> Wykonaj Polecenia

    ----->(w międzyczasie DMA zapisuje pojedyńcze piksele z kamerki do ramu (wew czy zew?, czy w ogóle można dma w ten sposób użyć?))

    ->sprawdź czy zebrała się sensowna ilość pikseli i jeżeli tak to
    rozpocznij kompresję(jeżeli da radę)

    ->wyślij pakiet pikseli

    ->wyślij dane z dalmierza ir

    ->wyślij dane z mod. audio (in)
    -------------------
    Cała sztuczna inteligencja ma siedzieć w PC bu uważam, że nie ma
    sensu w domowych warunkach się porywać z motyką na słońce, a
    dzisiejsze pc są niezłe :) do tego mam w sumie 3 kompy w domu :D
    zawsze można grida zrobić. Oceńcie czy założenia są możliwe do
    wykonania na tym sprzęcie, czy może jakiś inny układ albo inny
    rodzaj transmisji.
    -= uC nr 3 =-
    Moduł Audio
    Ma za zadanie cały czas poszukiwać w danych z mikrofonu poleceń
    (bądź jeśli mi się kiedyś uda rozszyfrowywać słowa na literki xD)
    Lista poleceń była by zapisana na sd/mmc.
    To podejście pozwala zaoszczędzić bezcenny transfer, gdyby było go więcej
    to komp by sobie z tym radził, a tak trzeba uprościć.
    Na rządanie PC układ ten mógł by z sampli(które są na mmc) syntezować
    mowę. Zrobiłem proste doświadczenie i okazało się to dość proste, chociaż
    uzyskana jakość mowy nie jest powalająca to jednak jest ona zrozumiała.

    0
  • Pomocny post
    #10 07 Maj 2008 16:32
    Freddie Chopin
    Specjalista - Mikrokontrolery

    do sterowania serwami na podstawie sygnalu z akcelerometrow mozna uzyc procesora 10x mniejszego, a ty na TYLKO (nie 'aż' a 'tylko') to zaplanowales ARMa. wszystko co wymyliles mozna zrobic JEDNYM ARMem i to nawet nie musi byc Cortex, bo taki kosmicznie bardziej wydajny od zwyklych ARMow to on nie jest.

    0x41 0x56 0x45!!

    0
  • #11 07 Maj 2008 16:39
    blackdoom
    Poziom 9  

    To bardzo pocieszające co mówisz :)
    Może mógł byś podsunąć mi takiego "jednego"
    który by sobie ze wszystkim poradził?
    I czy kompresja wideo wchodzi w rachubę?

    0
  • #12 07 Maj 2008 17:07
    Freddie Chopin
    Specjalista - Mikrokontrolery

    a co tu podsuwac? wez pierwszego jaki ci sie nawinie. LPC23xx sa tanie i szybkie (do 72MIPS), choc nie sa male (100 / 144 piny) albo STM32 to bedziesz mial jeszcze wiecej mocy

    0x41 0x56 0x45!!

    0
  • #13 07 Maj 2008 17:48
    Fyszo
    Spec od GSM

    Chyba najlepiej jako jednostkę główną użyć coś naprawdę większego (PDA/MDA/PALM itp.) Przy okazji możliwość korzystania z GSM/GPRS/UMTS (videofonia?), wbudowane Wi-Fi/bluetooth, czasem GPS, procesor solidniejszy i gotowy system. Sterowanie to aplikacja w javie albo pod windows, a krytyczne czasowo sygnały i tak są generowane przez otaczające kontrolery.

    0
  • #14 11 Maj 2008 15:59
    blackdoom
    Poziom 9  

    chciał bym tego uniknąć bo bot ma z założenia być "terminalem" i to dobrze by było gdybym zrobił to samodzielnie, chociaż wi fi było by nie ocenione

    W sumie mam większe doświadczenie w programowaniu na pc gdzie wydajność
    w niketórych aplikacjach w ogóle nie jest brana
    pod uwagę ale, czy rzeczwiście z 72 mipsów można wyciągnąć odbieranie obrazu z kamery i być może jego kompresja, obsługa serw, generowanie syntezowanej mowy oraz w czasie rzeczywistym nasłuchiwanie poleceń głosowych?

    0