Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'głosem'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 1 wynik

  1. Na wstępie muszę wyjaśnić co kryje się za imieniem Demostenes. Demostenes to największy grecki mówca. W młodości posiadający wadę wymowy. Ćwiczył on dykcję chodząc po plaży i mówiąc z kamieniami w ustach. Co Demostenes ma wspólnego z elektroniką? Oczywiście mowę, a opis ten dotyczy rozpoznawania ludzkiej mowy za pomocą urządzeń elektronicznych. Dlatego swój projekt postanowiłem nazwać imieniem tego słynnego greckiego oratora i jego podobiznę umieścić na warstwie opisowej płytki drukowanej. Z zagadnieniem sterowania ludzkim głosem zetknąłem się na początku lat osiemdziesiątych ubiegłego wieku. Wówczas to w Młodym Techniku zostało opisane tego rodzaju sterowanie. Dziś patrząc z perspektywy czasu urządzenie zbudowane na dwóch układach scalonych audio i kilku tranzystorach nie miało prawa działać. Przynajmniej nie tak jak sobie to wyobrażamy. Działanie tego sterownika można porównać do działania iluminofonii. O ile w ogóle opisane urządzenie działało. Moduł SpeakUpTM Dziewięć lat temu przeglądając ofertę firmy TME znalazłem interesujący moduł do rozpoznawania mowy o oznaczeniu MIKROE-1534. Jego cena dziewięć lat temu wynosiła około 200 zł i nie trzeba było robić zakupów za granicą oraz ponosić kosztów celno skarbowych. Moduł MIKROE-1534 to produkt firmy MikroElektronika rozpowszechniany pod nazwą SpeakUpTM. Moduł ten to niewielka płytka drukowana o wymiarach 57x25 mm, którą możemy na poniższych fotografiach. Schemat elektryczny płytki umieszczony jest na ulotce dostarczonej wraz z tym modułem, jak również na stronie jego producenta w pliku PDF „user manual”. Moduł ten zbudowany jest w oparciu o 32 bitowy mikrokontroler z rdzeniem ARM Cortex-M4 STM32F415RG. Na płytce drukowanej modułu zostało wyprowadzone dwanaście programowalnych linii wejścia – wyjścia (I/O). Mogą być one wykorzystane do sterowania przekaźnikami. Do budowy tego modułu użyty został popularny kodek audio stereo VS1053 i mikrofon elektretowy o dobrych parametrach. Uzupełnieniem modułu są trzy diody LED sygnalizujące stan pracy oraz dwa mikroprzyciski. Dostępne jest też miniaturowe gniazdo USB typu B pozwalające na połączenie modułu z komputerem. Na płytce znajduje się również gniazdo mikrofonu typu Jack 3,5 mm pozwalające na podłączenie zewnętrznego mikrofonu. Umieszczone są również złącza JTAG, mikrobus oraz UART. Moduł ten można łatwo konfigurować za pomocą darmowego oprogramowania dostępnego na stronie producenta płytki. Płytka SpeakUpTM potrafi rozpoznać dwieście komend o czasie trwania do pięciu sekund, niezależnie od języka mowy w jakim są one wydawane. Cechuje się ona też dużą szybkością przetwarzania i może pracować on jako samodzielne urządzenie lub część większego systemu. O prostocie stosowania modułu SpeakUpTM stanowi zawarte w mikrokontrolerze oprogramowanie. Mianowicie rozpoznawanie komend głosowych zostało zrealizowane w oparciu o algorytm Dynamic Time Warping (DTW). Sygnał akustyczny po odebraniu przez mikrofon i przekształceniu na sygnał elektryczny jest wstępnie przekształcany przez kodek VS1053. Następnie sygnał ten jest interpretowany przez algorytm DTW zawarty w mikrokontrolerze. Po tym procesie mikrokontroler w zależności od wybranego trybu pracy może zmienić stan jednego w dwunastu wyjść. Jest to praca samodzielna modułu. Możliwe jest również przesłanie po poprawnym rozpoznaniu komendy słownej sygnału dalej za pomocą interfejsu USB lub UART. Aplikacja SpeakUpTM Do korzystania z modułu MIKROE-1534 potrzebna jest aplikacja SpeakUp widoczna na zrzucie ekranu poniżej. Aplikację tą możemy pobrać z tego linku w postaci archiwum 5,5 MB. Instalacja tej aplikacji nie odbiega od instalacji programów dla systemu Windows. Pomimo niepozornego wyglądu ma ona duże możliwości i pozwala ustalić zachowanie modułu SpeakUpTM po poprawnym rozpoznaniu wydanej komendy. Aplikacja ta jest w zasadzie niezbędna do konfiguracji modułu SpeakUpTM. Po jego podłączeniu do komputera system Windows 7 (projekt powstał dziewięć lat temu stąd Windows 7) bez problemu wykrył i zainstalował niezbędne sterowniki. Na tym etapie nie jest też wymagane zewnętrze zasilanie modułu SpeakUpTM. Po uruchomieniu aplikacji SpeakUpTM tworzymy nowy projekt ikonką pokazaną poniżej. Podobnie jak w aplikacjach systemu Windows podajemy nazwę i lokalizację naszego projektu i zatwierdzamy je przyciskiem Create. W następnej kolejności klikamy ikonkę START HERE widoczną na kolejnym zrzucie ekranu. Otworzy się okno nagrywania dźwięku widoczne na poniżej. Po kliknięciu przycisku RECORD rozpocznie się rejestrowanie za pośrednictwem mikrofonu wzorca polecenia. Pod przyciskiem RECORD pojawi się licznik upływającego czasu liczący od pięciu sekund do zera. Zarejestrowane polecenie zostanie od razu odtworzone za pośrednictwem karty muzycznej i głośników komputera. Odsłuch zarejestrowanego polecenia możliwy jest też przyciskiem PLAY. Jeśli zarejestrowane polecenie jest poprawne w polu Enter voice command name podajemy nazwę zarejestrowanego polecenia i zapisujemy je przyciskiem Save & Close. Analogicznie rejestrujemy kolejne polecenia. Po zarejestrowaniu potrzebnych nam poleceń pojawią się one w górnej części okna aplikacji SpeakUpTM w formie zakładek widocznych na poniższym rysunku. Klikając na zakładce z tymi poleceniami mamy możliwość przełączania się między nimi. Na końcu listy zakładek z prawej strony aplikacji SpeakUpTM znajduje się mały przycisk z trójkątem oferujący bezpośredni dostęp do zarejestrowanych poleceń. Pod zakładką z poleceniami dostępne są przyciski odtwarzania, edycji i usuwania zarejestrowanych poleceń. Poniżej tych przycisków znajduje się pole w którym mamy możliwość wprowadzenia opisu dla poszczególnych poleceń. Pod tym polem mamy listę dwunastu wyjść modułu SpeakUpTM. Na tej liście mamy możliwość przypisania wybranego polecenia do określonego wyjścia modułu SpeakUpTM. Oprócz przypisania zarejestrowanych poleceń do poszczególnych wyjść modułu SpeakUpTM, mamy także możliwość ustalenia zachowania się tych wyjść. Dostępne ustawienia widoczne są na powyższym i są to: 1. NONE – bez zmian na wyjściu 2. ON – wyjście załączone (wysoki poziom logiczny H) 3. OFF – wyłączenie wyjścia (niski poziom logiczny L) 4. TOGGLE – przełączenie stanu na wyjściu (z niskiego na wysoki lub odwrotnie) 5. PULSE – wygenerowany zostanie na wyjściu impuls lub ciąg impulsów o określonych parametrach Możliwe jest przypisanie jednemu poleceniu głosowemu zmiany stanu więcej niż jednego wyjścia modułu SpeakUpTM. W przypadku wybrania na wyjściu jako sygnału wyjściowego „pulse” pojawi się ikonka edycji parametrów generowanego impulsu lub ciągu impulsów widoczna na z lewej strony. Prawy rysunek to okno ustawień parametrów generowanego impulsu lub ciągu impulsów. W oknie tym można ustawić czas trwania impulsu – parametr T, współczynnik wypełnienia – parametr D i ilość powtórzeń wygenerowanego impulsu – parametr N. Jeśli ilość powtórzeń impulsów na wyjściu będzie miała wartość zero to impulsy będą generowane w sposób ciągły. Po kliknięciu na ikonce ustawień aplikacji SpeakUpTM (przycisk z kołem zębatym) mamy możliwość wybrania dodatkowych ustawień modułu SpeakUpTM. Ustawienia te możemy zobaczyć na rysunku poniżej i tak: 1. Acceptance threshold – to krótko pisząc poziom akceptacji błędów. Parametr ten decyduje o tym jak precyzyjnie moduł SpeakUpTM będzie rozpoznawał wydawane polecenia. Zbyt niski poziom akceptacji błędów może utrudnić poprawne rozpoznawanie wydawanych poleceń głosowych. 2. Recording timeout – maksymalny czas (ramy czasowe) w jakim rejestrowane są rejestrowane polecenia. Można wybrać czas o długości 5, 10 i 15 sekund. 3. Word Length – maksymalna długość zarejestrowanego polecenia. Dostępne są następujące długości czasu rejestrowanych poleceń, 1, 1.5, 2, 2.5 i 3 sekundy według dokumentacji. U mnie jak widać na rysunku 8 parametr ten jest nieaktywny. 4. Noise level - poziom hałasu. Niski poziom dźwięku może spowodować przypadkowe zadziałanie modułu. Niższe wartości wymagają też cichszego wydawania poleceń, co powoduje wzrost podatności na zakłócenia hałasem i wyższym poziomem szumów. Wyższy poziom dźwięku wymaga głośniejszego wydawania poleceń, dzięki czemu moduł jest mniej wrażliwy na zakłócenia hałasem i poziom szumów sygnału. 5. Notify master – wybór interfejsu (UART lub USB) do komunikacji z nadrzędnym systemem. 6. Data rate – szybkość transmisji danych do nadrzędnego systemu Sekcja Initial Pin States widoczna na powyższym zrzucie ekranu pozwala na ustawienie stanu spoczynkowego wyjść modułu MIKROE-1534. Może być to stan wysoki H lub niski L. Do zmiany stanu służą wirtualne przełączniki przypisane każdemu wyjściu. Natomiast przycisk podwójnej strzałki wskazany na tym rysunku pozwala na zdefiniowanie własnych nazw poszczególnych wyjść modułu SpeakUpTM - Pin Aliases. Widoczne jest to na poniżej. Po zakończeniu nagrywania i konfigurowania poleceń utworzony projekt zapisujemy na dysku komputera, a następnie przesyłamy do modułu SpekUp przyciskiem Upload project co możemy zobaczyć poniżej. Pora na omówienie zastosowania przycisków Push-button 1 i 2 na płytce oraz diod LED, które możemy zobaczyć na fotografiach modułu MIKROE-1534. Przycisk Push-button 1 służy do nagrywania poleceń głosowych. Po naciśnięciu i przytrzymaniu przycisku należy wypowiedzieć żądane polecenie do zarejestrowania. Domyślny czas polecenia to jedna sekunda. Można nagrywać więcej poleceń trzymając wciśnięty przyciski Push-button 1. Przy tej rejestracji poleceń głosowych należy się upewnić, że pomiędzy wypowiadanymi poszczególnymi poleceniami do zarejestrowania wystąpi błysk czerwonej diody LED. Jednoczesne wciśnięcie obydwóch przycisków na dłużej niż dwie sekundy zresetuje moduł SpeakUpTM. Rejestracja i zarządzanie poleceniami głosowymi za pomocą przycisków na płytce nie jest najwygodniejsze. Zielona dioda LED sygnalizuje zasilanie modułu SpeakUpTM. Świecenie bursztynowej diody LD1 sygnalizuje gotowość modułu SpeakUpTM do nagrywania i rozpoznawania poleceń głosowych. Czerwona dioda LD2 sygnalizuje iż moduł SpeakUpTM jest zajęty rozpoznawaniem lub rejestrowaniem poleceń głosowych. Poprawne rozpoznanie polecenia głosowego sygnalizowane jest zaświeceniem obydwóch diod LD1 i LD2 na pół sekundy. Do przycisków Push-button 1 i 2 i diod LD1, LD2 i PWR mogły zostać doprowadzone złącza goldpin umożliwiające umieszczenie ich na obudowie urządzenia, co w niektórych przypadkach mogło by być dużym ułatwieniem w korzystaniu z modułu SpeakUpTM z użyciem tych przycisków. Uwagi praktyczne 1. Aby uzyskać najlepsze wyniki nagrywania poleceń głosowych konieczne jest zapewnienie warunków nagrywania przy niskim poziome hałasu otoczenia. Mikrofon nie może być zbyt blisko głośników komputera z uwagi na możliwość powstania szkodliwych sprzężeń. Mikrofon powinien znajdować się w odległości około 10 – 20 cm od ust osoby nagrywającej komendy – wydającej polecenia. 2. Jeśli występują problemy z rozpoznaniem określonego polecenia głosowego, należy zapisać je kilka razy z uwzględnieniem różnorodności w wymowie. 3. Obowiązkowo należy odtworzyć zarejestrowane polecenie głosowe, aby usłyszeć czy oprócz polecenia nie został zarejestrowany hałas otoczenia lub przypadkowy dźwięk. 4. Z tego powodu zaleca się umieszczenie modułu SpeakUpTM na powierzchni, która nie przenosi drgań mechanicznych, ewentualnie korzystanie z zewnętrznego mikrofonu. 5. Jeśli jest więcej użytkowników, każdy z nich powinien nagrać polecenia głosowe oddzielnie z uwagi na różnorodność wymowy. 6. Liczba poleceń głosowych, które można zapisać zależy od ich długości. Zazwyczaj jest to ponad dwieście poleceń głosowych o długości od jednej sekundy. 7. Nagrywane polecenia głosowe są rejestrowane za pomocą mikrofonu znajdującego na płytce modułu SpeakUpTM, więc nie ma potrzeby podłączania zewnętrznego mikrofonu do komputera. Praktyczne zastosowanie SpeakUpTM Po zapoznaniu się z możliwościami modułu SpeakUpTM pora na jego praktyczne i efektowne zastosowanie. Spośród wielu pomysłów jakie przyszły mi do głowy zdecydowałem się na użycie modułu SpeakUpTM do sterowania ramieniem robota KSR10 dostępnym w sklepie Botlandu, które możemy zobaczyć na fotografii tytułowej. Po poprawnym złożeniu tego ramienia zgodnie z załączoną instrukcją, można przystąpić do połączenia ramienia robota i modułu SpeakUpTM. Oczywiście nie jest możliwe to bezpośrednio. Słaby sygnał z wyjść modułu SpeakUpTM trzeba wzmocnić, aby mógł on sterować silnikami ramienia robota. Zanim do tego przystąpimy spójrzmy na schemat elektryczny ramienia robota widoczny poniżej. Oczywiście przełączniki SW1-SW5 w stanie spoczynku muszą być rozwarte. Jak widzimy schemat elektryczny tego ramienia jest bardzo prosty. Do napędu ramienia wykorzystanych jest pięć silniczków, które zasilane są napięciem 2 x 3V symetrycznym względem masy. Tego rodzaju rozwiązanie ma na celu uproszenie schematu elektrycznego ramienia robota. Nie trzeba stosować podwójnych dwubiegunowych przełączników. Minusem tego rozwiązania jest konieczność stosowania dwóch zestawów baterii zasilających. Dodatkowo w chwytaku ramienia robota zastosowana jest dioda LED oświetlająca pole robocze ramienia. Całość podzielona jest na dwie części elektryczne. Pierwsza część to zespół pięciu silniczków elektrycznych, dioda LED, płytka połączeniowa oraz zespół baterii zasilających typu R20, które są umieszczone w podstawie robota. Druga część to zespół pięciu pojedynczych przełączników dwubiegunowych i przełącznik włączający diodę LED. Całość połączona jest za pomocą wielożyłowego przewodu i ośmiostykowego złącza. Przełączniki SW1 – SW5 można łatwo zastąpić przekaźnikami. Do sterowania ramieniem robota można wykorzystać przekaźniki załączane za pośrednictwem układów ULN2803. Wadą tego rozwiązania jest to iż oryginalne przełączniki pulpitu sterującego muszą zostać zastąpione dwoma przekaźnikami, aby w stanie spoczynku ramię robota nie pracowało. Czyli potrzebujemy dziesięć przekaźników. Dioda LED może być włączona bezpośrednio z układu ULN2803. Jednak zdecydowałem się na zastosowanie dwunastu przekaźników co pozwala na wykorzystanie wszystkich dwunastu wyjść modułu SpeakUpTM. Dzięki temu łatwo możemy wykorzystać całość do sterowania innym urządzeniem lub mechanizmem niż ramię robota. Wybierając to rozwiązanie nie trzeba też ingerować w obwody elektryczne ramienia KSR10. Gotowy moduł sterujący można po prostu podłączyć do złącza sterującego robota, zamiast oryginalnego pulpitu sterującego. Schemat elektroniczny całego sterownika ramienia robota możemy zobaczyć poniżej. Nie jest to skomplikowane urządzenie elektroniczne. W zasadzie jest to karta przekaźników z zasilaczem i możliwością podłączenia płytki SpeakUpTM. Sygnały pojawiające się na wyjściach IO1- IO12 modułu SpeakUpTM wzmacniane są w układach ULN2803, które włączają poszczególne przekaźniki. Diody LED dołączone do przekaźników pełnią rolę sygnalizacyjną, który przekaźnik jest w danej chwili załączony. Zasilacz to tradycyjne rozwiązanie oparte na stabilizatorach LM7805 i LM33CV. Zastosowana została nieco większa ilość kondensatorów filtrujących. Ich zadaniem jest nie tylko filtracja napięcia zasilającego, ale również ograniczenie i filtracja przepięć powstających w cewkach przekaźników. Mogło by to spowodować niekontrolowane działanie całego urządzenia. Montaż i uruchomienie Płytka sterownika zaprojektowana jest z użyciem elementów SMD i przewlekanych. Elementy te są montowane po obu stronach płytki drukowanej. Schemat montażowy płytki sterownika, jej widok 3D oraz fotografie możemy zobaczyć poniżej. Montaż płytki sterownika przeprowadzamy w tradycyjny sposób zaczynając od elementów najmniejszych czyli SMD, na końcu montujemy duże elementy czyli przekaźniki i kondensatory elektrolityczne. Jako złącze pod moduł SpeakUpTM można zastosować goldpiny typu żeńskiego 1x8 pinów. Jeżeli napięcie wyjściowe transformatora zasilającego sterownik nie będzie zbyt wysokie to stabilizatory napięcia nie wymagają radiatora, ale warto go zastosować. Pobór prądu w stanie spoczynku to około 72 mA i 142mA przy włączonym jednym przekaźniku. Pobór prądu wzrasta o około 70 mA przy każdym kolejnym włączonym jednocześnie przekaźniku. Uwzględniając najbardziej niekorzystny przypadek włączenia wszystkich przekaźników i zasilanie części elektronicznej, pobór prądu może przekroczyć 910 mA. Wówczas radiator będzie potrzebny. Silniki serwomechanizmów są zasilane z osobnego źródła zasilania jakim są baterie R20. Przed zamontowaniem na płytce sterownika kosztownego modułu SpeakUpTM należy sprawdzić poprawność montażu płytki i jej działanie. Sprawdzamy napięcia 5V i 3,3V oraz działanie przekaźników podając na piny IO1-IO12 złącz płytki MIKROE-1534 napięcie 3,3V co powinno spowodować załączenie kolejnych przekaźników. Wymagana jest ostrożność i staranność montażu zarówno płytki sterownika jak i płytki SpeakUpTM, aby nie uszkodzić kosztownej płytki SpeakUpTM. Uwaga! Na płytce drukowanej sterownika nie ma gotowych połączeń styków przekaźników do sterowania ramieniem robota. Wykonanie tych połączeń na płytce ograniczyło by jej zastosowanie tylko do sterowania ramieniem KSR10. Odpowiednie połączenia należy wykonać przewodami na podstawie rysunku przedstawiającego połączenia manipulatora robota. Do wykonanych przewodami połączeń należy dołączyć za pośrednictwem taśmy przewodów ośmiostykowe żeńskie złącze typu 402. Do połączenia z płytą drukowaną Demostenesa użyłem żeńskich dwupinowych złącz z przewodami z odzysku z obudów komputerowych. Taśmę ze złączem typu 402 i przewody ze złączami do płytki drukowanej połączyłem razem na małej uniwersalnej płytce drukowanej. Rozwiązanie to jest widoczne na poniżej. Może to nie jest elegancie rozwiązanie, ale taka jest natura połączeń kablowych. Wspomniałem wcześniej, że ramię robota KSR10 zasilane jest z czterech baterii typu R20. Ze zrozumiałych względów baterie te powinny być dobrej jakości. Przy intensywnym korzystaniu z ramienia warto rozważyć zastąpienie ich odpowiednimi akumulatorkami. Jeszcze jedna możliwość to zbudowanie zasilacza do zasilania zarówno ramienia robota jak i sterującej nim części elektronicznej. Odpowiedni do tego rozwiązania jest transformator o oznaczeniu TS25/9, którego napięcia wyjściowe są niemal idealne do wykorzystania i wynoszą 10,5V – 1,2A, 2x 2V – 1,2A oraz 3V – 1,2A – niewykorzystane. Według starszego katalogu transformator ten miał inne napięcia, co należy uwzględnić przy ewentualnym jego zakupie. Zasilanie części elektronicznej z tego transformatora nie wymaga modyfikacji poza ewentualnym zastosowaniem radiatora dla stabilizatorów napięcia. Natomiast do zasilania ramienia robota należy wówczas wykonać prosty zasilacz według poniższego schematu. Napięcia na kondensatorach filtrujących napięcia wyniosą 2V (AC) * 1,41 = 2,82V (DC). Zastosowanie zasilacza zamiast baterii wiąże z niewielkimi przeróbkami ramienia robota i każdy musi sam zdecydować jakie rozwiązanie wybierze. Należy też pamiętać, że duże i ciężkie baterie R20 umieszczone w podstawie ramienia robota stanowią jego obciążenie i zapewniają jego stabilność. Bez baterii w podstawie ramię robota może być podane na przewrócenie. Programowanie modułu SpeakUpTM Korzystając z aplikacji SpeakUp i wcześniejszego opisu należy zaprogramować odpowiednie komendy sterujące ramieniem robota. Zaprogramowanie potrzebnych komend może wymagać trochę treningu, zarówno w czasie programowania komend jak i późniejszego wydawania poleceń, tak aby ramię robota pewnie reagowało na nasze polecenia. Do programowania możemy wykorzystać mikrofon znajdujący się na płytce SpeakUpTM, jak również możemy dołączyć mikrofon zewnętrzny. Podczas programowania komend należy uwzględnić wcześniej podane uwagi praktyczne. Ramię KSR10 ma pięć stopni swobody czyli możliwych do wykonania kierunków ruchu. Na każdy z tych stopni składa się dwa przeciwstawne ruchy. Dla każdego z nich trzeba wybrać i zaprogramować odpowiednie komendy. Najprościej będzie te stopnie swobody opisać za pomocą poniższej fotografii. Literka „M” wraz z cyfrą oznacza dany silniczek serwomechanizmu. Oznaczenia te są zgodne z rysunkiem z punktu 8 na stronie 41 oryginalnej dokumentacji montażowej ramienia KSR10. 1. M1 – sterowanie szczękami chwytaka 2. M2 – pochylanie chwytaka góra – dół 3. M3 – pochylanie połowy ramienia góra – dół 4. M4 – pochylanie całego ramienia góra - dół 5. M5 – obrót ramienia prawo – lewo 6. Włączanie światła Poniżej znajduje się zastosowany przeze mnie wykaz komend sterujących ruchem ramienia. Komendy te powinny być w miarę możliwości krótkie i proste w wymowie. 1. M1 – chwyć – zwolnij – chwytanie i puszczanie przedmiotu szczęką chwytaka 2. M2 – pochyl – unieś – podnoszenie i opuszczanie chwytaka 3. M3 – góra – dół – podnoszenie i opuszczanie połowy ramienia 4. M4 – podnieś – opuść – podnoszenie i opuszczanie całego ramienia 5. M5 – prawo – lewo – ruch ramienia w prawo i lewo 6. Lampa – włącza światło 7. Stop – wyłącza wszystkie komendy Podczas programowania modułu SpeakUpTM odpowiednie jego wyjścia musimy przypisać do odpowiednich przekaźników sterujących poszczególnymi silnikami ramienia. Uwaga! Programując na przykład wyjście IO9 jako komendę „prawo” pozostałe wyjścia dla tej komendy należy ustawić jako OFF czyli wyłączone. Jeśli tego nie zrobimy to wydanie przeciwstawnej komendy „lewo” spowoduje aktywację wyjścia IO10 bez wyłączenia drugiego przekaźnika z wyjścia IO9 i zwarcie elektryczne! Natomiast wydanie innej komendy np. „unieś” spowoduje, że będą wykonywane dwa ruchy ramienia jednocześnie. Drugi przypadek nie jest szkodliwy, ale przez nieuwagę może być jak to wyżej opisałem powodem zwarcia, jak również trudności w kontrolowaniu kilku ruchów ramienia jednocześnie. Dla komendy „stop” przypisujemy wszystkim wyjściom parametr OFF. Przy prawidłowym zaprogramowaniu komend wydanie jednej komendy ma spowodować wyłączenie komendy uprzednio wydanej. Nie dotyczy to jedynie komendy włączania lampki oświetlającej chwytak, która po włączeniu powinna świecić ciągle oświetlając pole robocze chwytaka. Komendzie „stop” możemy przypisać generowanie impulsów na wyjściu, co może sygnalizować zatrzymanie ramienia poprzez klikanie przekaźnika i błyskanie diody LED. Może być to na przykład trzy impulsy o czasie trwania 1s. Ewentualne błędy w przypisaniu serwomechanizmom komend możemy wygodnie skorygować poprzez przeprogramowanie wyjść IO modułu, lub mniej wygodnie poprzez zmianę okablowania w obrębie przekaźników sterujących ramieniem. W tym miejscu należy wspomnieć, że serwomechanizmy ramienia posiadają proste sprzęgła przeciążeniowe i kiedy dany segment ramienia osiągnie skrajne położenie to sprzęgło to zapobiega uszkodzeniu serwomechanizmu. Dłuższe trzymanie włączonego silnika ramienia w skrajnym jego położeniu może spowodować trwałe uszkodzenie lub przedwczesne zużycie tego sprzęgła. Z tego też powodu kiedy element ramienia osiągnie skrajne wychylenie i zadziała sprzęgło, co objawi się głośniejszą pracą serwomechanizmu, należy bezwzględnie wyłączyć silnik komendą „stop”. Lub wyłączyć zasilanie ponieważ hałas generowany przez serwomechanizmy zakłóca wydawane komendy! W przypadku sterownia modułem SpeakUpTM mamy możliwość ustawienia czasu na jaki będą włączane silniki serwomechanizmu. Ustalenie odpowiedniej wartości czasu włączenia danego silnika pozwoli na osiągnięcie jego skrajnego położenia i jednocześnie jego wyłączenie bez konieczności wypowiadania komendy „stop”. Może być to pewien rodzaj wyłącznika bezpieczeństwa i warto rozważyć skorzystanie z niego, aby nie uszkodzić serwomechanizmów kosztownego ramienia KSR10. Teoretycznie możliwe jest wcześniejsze wyłączenie silnika serwomechanizmu komendą „stop”. Jednak hałas serwomechanizmów nakłada się na wydawane komendy i moduł MIKROE-1534 nie reaguje na wydawane polecenia. Po zaprogramowaniu modułu SpeakUpTM i podłączeniu do ramienia robota można zacząć próby sterowania nim za pomocą głosu. Wbrew pozorom nie jest to na początku tak proste jak się wydaje i wymaga prób zarówno wydawania poleceń i rejestracji komend, tak aby były one poprawnie rozpoznawane. Może być konieczna zmiana poziomu akceptowalnych błędów jak i poziomu hałasu. Również treningu wymaga wydawanie poleceń, tak aby ramię reagowało na nasze polecenia zgodnie z naszymi oczekiwaniami. Czyli aby segmenty ramienia KSR10 ustawiały się i zatrzymywały w położeniach, których wymagamy. Nie jest to łatwe, ponieważ ramię cechuje się pewną bezwładnością i po wyłączeniu serwomechanizmu jeszcze się przemieszcza przez krótki czasu. Serwomechanizmy ramienia KSR-10 nie mają sprzężenia zwrotnego co utrudnia kontrolowanie jego ruchów za pomocą głosu. Wrażenia z testów Podczas korzystania z modułu SpeakUpTM komendy i polecenia należy wymawiać głośno, zdecydowanie i wyraźnie szeroko otwierając usta. Nie można niewyraźnie „mruczeć” pod nosem. Zalecane jest nagranie wszystkich komend za jednym razem i przesłanie ich do modułu. Kiedy modyfikujemy ustawienia i ponownie je przesyłamy do modułu SpeakUpTM to odniosłem wrażenie, że z niektóre z modyfikowanych komend są jakby „gubione” podczas ich aktualizacji. Przed wgraniem nowego zestawu komend można zresetować moduł SpeakUpTM wciskając jego przyciski na co najmniej 2 sekundy. Także zdarza się, że moduł SpeakUpTM pomimo poprawnego zaprogramowania komend i przypisania im poszczególnych wyjść myli się i po rozpoznaniu komendy przypisuje jej inne wyjście niż zaprogramowane. Sporadycznie zdarza się, że komendy są błędnie rozpoznawane, na co może wpływać wiele czynników począwszy od niedoskonałości algorytmu zapisanego w mikrokontrolerze, inne akcentowanie poleceń oraz wypowiadanie komend poprzez hałas i dźwięki postronne, a skończywszy na zmianie akustyki pomieszczenia. Zdarzyło się, że moduł przypadkowo zareagował na głos innej osoby, trzaśnięcie drzwiami, dmuchnięcie w mikrofon, a także włączył dwa serwomechanizmy jednocześnie. To były jednak pojedyncze przypadki. Głównym powodem błędnego rozpoznawania komend i błędnego włączania innych wyjść modułu SpeakUpTM, w mojej ocenie jest szybkie wydawanie komend w odstępach kilku – kilkunastu sekundowych. Tak jak w przypadku sterowania ramieniem KSR10. Wówczas moduł SpeakUpTM czasami działa niezgodnie z ustawieniami. W takim przypadku pomaga ponowne jego uruchomienie. Największy problem podczas testów sprawiło ramię KSR10. Odgłos pracy jego serwomechanizmów zakłócał rozpoznawanie komend przez moduł SpeakUpTM. O ile rozpoznanie wydanej komendy nie stanowiło problemu, to jej zmiana lub zatrzymanie ramienia KSR10 po jego uruchomieniu było w zasadzie niemożliwe. Odgłos pracy serwomechanizmu skutecznie utrudniał rozpoznanie wydawanych komend. Sporadycznie udawało się zatrzymać ramię komendą „stop”. W zdecydowanej większości przypadków do zatrzymania ramienia trzeba było wyłączyć zasilanie układu elektronicznego. To z kolei wymagało odczekania kilkunastu sekund na ponowne uruchomienie modułu SpeakUpTM co sygnalizowane jest przez jego diody LED. Nie pomogło nawet oddalenie zewnętrznego mikrofonu od ramienia KRS10 na odległość około trzech metrów. Również zmiana czułości jak i poziomu akceptowalnych błędów przez moduł SpeakUpTM nie przyniosła poprawy. Zadowalające rezultaty osiągnąłem dopiero umieszczając ramię KSR10 na balkonie za zamkniętymi drzwiami. Sterownik Demostenesa w tym czasie znajdował się po drugiej stronie drzwi w salonie. Przechodzący przez drzwi cichy odgłos pracy serwomechanizmów nie zakłócał już wydawanych komend i były one rozpoznawane poprawnie. Jeszcze innym rozwiązaniem, aczkolwiek niewygodnym może być zastosowanie mikrofonu mocowanego jak w hełmofonie czołgisty na krtani operatora. W związku z zakłóceniami dźwięku generowanymi przez serwomechanizmy ramienia KSR10 zaprogramowałem moduł SpeakUpTM, tak aby po rozpoznaniu komendy nie włączał silniczków serwomechanizmów na stałe. Generowany jest jeden impuls o czasie trwania dwóch sekund. Wówczas po załączeniu silniczka jest on automatycznie wyłączany po zaprogramowanym czasie bez konieczności wypowiadania komendy „stop”. W takich warunkach powstał krótki film obrazujący działanie samego układu elektronicznego jak i w połączeniu z ramieniem KSR10. Wybierając ramię KSR10 do sterowania głosem liczyłem się z zakłóceniami. Nie przypuszczałem jednak, że hałas generowany przez jego serwomechanizmy w zasadzie uniemożliwi rozpoznawanie wydawanych komend. Przykładowy film z działania ramienia KSR10 sterowanego głosem możemy zobaczyć w poniższym linku: Film składa się on z trzech części. Test samego modułu elektronicznego. Sterowanie poprzez szybę w drzwiach oraz sterowanie z zatrzymaniem silniczków po upływie dwóch sekund. Poniżej fotografia zmontowanego Demostenesa podczas testów z wykorzystaniem zewnętrznego mikrofonu. Na tym kończę ten obszerny opis. Załączniki: 1. Demostens KiCad9.zip - pliki z programu KiCad 9 ze schematem i rysunkiem płytki drukowanej. Pliki pochodzą z systemu Linux w związku z tym w systemie Windows niektóre ścieżki do bibliotek trzeba skorygować. Docztyczy to w szczególności bibliotek modeli 3D. 2. Demostenes wsad.zip - plik z nagranymi komendami i ustawieniami aplikacji SpeakUp. Plik ten raczej nie zadziała z innym głosem niż mój. Jednak po otwarciu w aplikacji SpeakUp można zobaczyć jak płytka MIKROE-1534 została skonfigurowana dla robota. 3. Mikroe-1534_3D.zip - zmodyfikowany model płytki MIKROE-1534 w programie FreeCAD do wykorzystania w programie KiCad. 4. W tym linku ze strony producenta płytki MIKROE-1534 pobierzmy dokumentację płytki w PDF, aplikację SpeakUP oraz nie modyfikowany model 3D tej płytki. Demostenes KiCad9.zip Demostenes wsad.zip Mikroe-1534_3D.zip
×
×
  • Utwórz nowe...