Skocz do zawartości

Pawel_S

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

12 Dobra

O Pawel_S

  • Ranga
    1/10

Ostatnio na profilu byli

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

  1. Hej! W tym artykule postaram się pokazać krok po kroku jak przygotować lampkę sterowaną mową, wykorzystując aplikację Wroob na smartfonie oraz Arduino. Czym jest projekt Wroob pisałem tutaj: Wroob - Czyli jak zaprogramować swój telefon Projekt może wymagać podstawowej wiedzy z języka Python i minimalnej znajomości systemu Wroob. Zachęcam do wcześniejszego zapoznania się z poprzednim artykułem. Można też skorzystać z kursów na naszym kanale YouTube - tłumaczymy tam jak zrealizować inne ciekawe projekty. Własny moduł na Arduino Najpierw zacznijmy od sprzętu, ja podłączyłem swoją płytkę Arduino UNO z modułem przekaźników, a do tego oprawkę żarówki podłączoną do gniazda sieciowego. Sposób podłączenia widoczny jest na obrazku poniżej. Pamiętajcie, aby zachować szczególną ostrożność pracując z napięciem sieciowym. Podobny efekt można otrzymać podłączając diodę LED do Arduino, nie wymaga to przekaźnika i jest znacznie bezpieczniejsze. W dalszej części artykułu nie będzie miało znaczenia, z której opcji korzystacie. Następnie musimy zmienić nasze Arduino w moduł systemu Wroob. Wykorzystamy do tego celu bibliotekę dostępną pod adresem https://github.com/wroob-io/arduino-wroobimp. Można ją też pobrać za pomocą managera bibliotek w Arduino IDE Biblioteka arduino-wroobimp posiada przykładowy program z którego będziemy korzystać: WroobImpGpio.ino. Znajdziecie go w Arduino IDE -> File -> Examples -> WroobImp -> WroobImpGpio. W programie WroobImpGpio inicjalizujemy pin 13 jako wyjście, a 14 jako wyjście. Jak pamiętacie, naszą lampę mamy podłączoną do pinu 13. #define PIN_OUT 13 #define PIN_IN 14 // initialize used GPIOs pinMode(PIN_OUT, OUTPUT); pinMode(PIN_IN, INPUT); Następnie uruchamiany jest protokół systemu Wroob. We Wroob moduły rozmawiają za pomocą komend w formacie JSON. Reszta kodu związana jest przede wszystkim z obsługą protokołu komunikacyjnego. // initialize Wroob protocol wroob.begin(my_callback); Jeżeli ktoś jest zainteresowany jak przebiega komunikacja między modułami w systemie Wroob można użyć programu com_imp_sniffer.py aby “podsłuchać” komunikacje między modułami. Program można znaleźć w Panelu Użytkownika Wroob w katalogu examples\hardware_projects. Jak jesteście ciekawi, chętnie opiszę protokół w osobnym poście. Program WroobImpGpio realizuje dwie funkcje ustawia oraz odczytuje wartość pinów za pomocą komend “SetPin” oraz “GetPin”. Ustawia stan na pinie 13 gdy otrzyma komendę “SetPin” lub odczytuje stan z pinu 14 gdy otrzyma komendę “GetPin”. Na tym etapie możemy uruchomić aplikację w Wroob na telefonie i przejść do panelu użytkownika w którym będziemy wykonywać resztę pracy. Jeśli nie wiesz jak to zrobić obejrzyj film Szybki start z systemem Wroob. Po podłączeniu modułu do telefonu w zakładce “Moduły” Panelu Użytkownika Wroob pojawi się jego graficzny widget. Do dalszej pracy potrzebujemy nazwy modułu w systemie. Nazwa widoczna jest w górnej części widgetu, w moim przypadku to 'eam001'. Początkowa nazwa nadawana jest automatycznie, składa się z typu modułu oraz kolejnych liczb. Możecie również ustawić własną nazwę, nie powinna się ona jednak powtarzać w systemie. Obsługa modułu Arduino Na początku klasę utwórzmy naszego własnego modułu, pozwoli nam to z niego korzystać w wygodny sposób w naszych programach. Najprostszą klasę modułu możemy zdefiniować w sposób przedstawiony poniżej. Korzystamy tutaj z wcześniej przygotowanej uniwersalnej klasy Module i tworzymy jedną funkcję set_pin() do obsługi komendy “SetPin” from wroob.modules.module import Module class Eam(Module): def __init__(self, moduleName): super(Eam, self).__init__(moduleName) #set_pin wysyła komendę "set_pin" do naszego modułu def set_pin(self, value): params = {"value":value} self._send_cmd('SetPin', params) W przypadku programu WroobImpGpio wgranego na Arduino można też skorzystać z wcześniej przygotowanej klasy Eam. Znajdziecie ją w katalogu examples\hardware_projects\example_arduino_module. Program korzystający z naszej klasy wygląda następująco: from eam import Eam #import klasy Eam z pliku eam from time import sleep eam = Eam ("eam001") #stworzenie obiektu eam powiązanego z modułem o nazwie “eam001” while(True): sleep(1) eam.set_pin(1) #użycie metody set_pin() sleep(1) eam.set_pin(0) Do konstruktora klasy Eam przekazujemy nazwę naszego modułu 'eam001' tworząc jego obiekt. Dzięki temu w programie możemy korzystać w prosty sposób z funkcji naszego modułu przez odwołanie jego do obiektu. Program jest czytelny i łatwy do rozbudowania. Sterowanie mową Kolejny etap to już czysta przyjemność. Wykorzystamy moduł rozpoznawania mowy (SRM) aby sterować naszą lampą. Aby go uruchomić należy przejść do zakładki “Moduły” a następnie wybrać z listy “Moduły w Panelu Użytkownika”. Moduł SRM wymaga mikrofonu podłączonego do komputera. W kolejnym etapie możemy rozbudować program korzystający z naszego nowo utworzonego modułu na Arduino o funkcje modułu SRM from eam import Eam from wroob.modules.srm import Srm #import klasy modułu Srm from time import sleep eam = Eam("eam001") srm = Srm("srm001") def srm_callback(speech): #funkcja reagująca na rozpoznaną mowę print(speech) if "zapal światło" in speech: eam .set_pin(0) elif "zgaś światło" in speech: eam .set_pin(1) srm.start_speech_reporting(srm_callback) #rozpoczęcie rozpoznawania mowy while(True): sleep(60) Efekt prezentuje się następująco: Więcej na temat rozpoznawania mowy i możliwości modułu SRM można się dowiedzieć na naszym kursie video Chatbot. Jeżeli ktoś nie chce przechodzić całego procesu, gotowe programy można znaleźć w zaktualizowanej właśnie aplikacji w folderze examples\hardware_projects\example_arduino_module Bez wprowadzania zmian w kodzie Arduino wszystko od razu powinno działać
  2. Za pomocą funkcji print na przykład: print("Witaj świecie!") Pisząc programy w systemie Wroob, masz do dyspozycji wszystkie możliwości języka python :)
  3. Hej! Chciałem się z wami podzielić projektem, który od jakiegoś czasu rozwijam z grupą znajomych. Nazywa się on Wroob i jest to aplikacja pozwalająca zaprogramować swój telefon. Głównym celem projektu jest urozmaicenie procesu nauki programowania w Pythonie, głównie przez wprowadzenie elementów robotyki. Jest to też system, który umożliwia wykorzystanie możliwości współczesnego smartphona we własnych projektach. Jeżeli chcemy na przykład śledzić twarz manipulatorem, nie potrzebujemy do tego celu RPi z kamerą, możemy użyć własnego telefonu z aplikacją Wroob. Ponieważ projekt jest już dość złożony. W tym tekście postaram się wyjaśnić na dość ogólnym poziomie czym jest system Wroob i co można z nim zrobić. Jeżeli będziecie zainteresowani to w kolejnych częściach omówię szczegółowo jak zostały zrealizowane poszczególne elementy systemu lub przygotuje poradniki jak stworzyć coś własnego używając aplikacji Wroob. Czym jest system Wroob? System Wroob składa się z trzech głównych elementów: 1. Aplikacja Wroob Jest to serce całego systemu. To na niej uruchamiane są wszystkie programy napisane przez użytkownika. Aplikacja umożliwia dostęp do Panelu Użytkownika Wroob i modułów (funkcjonalności) systemu. Słowem – zamienia telefon lub tablet w mózg robota. 2. Moduły System Wroob jest modularny, tzn. każda z funkcjonalności systemu jest dostarczana przez odpowiedni moduł. Na przykład telefon będzie odtwarzał dźwięki korzystając z modułu Audio Player Module, a dostęp do kamery czy rozpoznawanie twarzy realizowane będzie przez Video Processing Module. 3. Panel Użytkownika Wroob Otwiera się go w przeglądarce internetowej na komputerze lub innym urządzeniu. Panel umożliwia włączanie i wyłączanie modułów, graficzne widżety ułatwią zapoznanie się z ich funkcjami, a edytor kodu pozwala pisać programy w Pythonie. Panel Użytkownika Wroob to aplikacja webowa, której hostem jest telefon z aplikacją. Telefon udostępnia Panel Użytkownika w sieci lokalnej, więc możemy wejść z dowolnego urządzenia znajdującego się w tej samej sieci - najwygodniej pracuje się przy użyciu komputera Co można zrobić z aplikacją Wroob? Każdą funkcjonalność dostarczaną przez moduły można wykorzystać w dowolny sposób we własnych programach. Aktualnie dostępne moduły pozwalają między innymi na odtwarzanie dźwięków, rozpoznawanie twarzy, robienie zdjęć, syntezę i rozpoznawanie mowy czy podłączenie kontrolera do gier. Przygotowaliśmy kilka przykładów w formie kursów na YouTube/Wroob (znajdziecie tam też film jak rozpocząć pracę z systemem Wroob). Krótki filmik jak to działa: Gotowy kod programu alarmu wykorzystanego w filmie wygląda następująco: from wroob.modules.apm import Apm from wroob.modules.vpm import Vpm from time import sleep apm = Apm('apm001') vpm = Vpm('vpm001') THRESHOLD = 60 SENSITIVITY = 200 def alarm_callback(msg): if apm.state["status"] == "stopped": apm.play_sound("breach_alarm.wav") vpm.start_motion_detection_reporting(THRESHOLD, SENSITIVITY, alarm_callback) while(True): sleep(1) A tutaj prosty Chatbot: from wroob.modules.srm import Srm from wroob.modules.ssm import Ssm import time srm = Srm("srm001") ssm = Ssm("ssm002") slownik_zwrotow = { 'cześć' : 'Witaj, jak masz na imię?', 'tomek' : 'Miło cię poznać. Czym się zajmujesz?', 'programuje' : 'Doskonale. Widzę, że dobrze Ci idzie', 'na razie' : 'Miłego dnia!' } def odbior_mowy(data): print(data) if data in slownik_zwrotow: ssm.start_speech_synthesis(slownik_zwrotow[data]) else: ssm.start_speech_synthesis("Nie rozumiem, czy możesz powtórzyć?") srm.start_speech_reporting(odbior_mowy) while True: time.sleep(1) Hardware Oczywiście najciekawsza zabawa rozpoczyna się w momencie, gdy połączymy aplikację Wroob ze sprzętem. Na przykład w relatywnie prosty sposób możemy zaprogramować zdalnie sterowanego robota z podglądem z kamery na żywo czy robota sterowanego mową. We Wroob mamy własne moduły sprzętowe które pozwoliły nam na zbudowanie robota mobilnego (Wrooby). Aplikacja wspiera też komercyjne roboty firmy Makeblock, mBot-S i mBot-Ranger. Pojawiają się one w systemie jako moduły. Otwarty system System Wroob z założenia jest systemem otwartym. Oznacza to, że można go łączyć z własnymi autorskimi projektami stworzonymi na przykład na Arduino czy napisanymi w dowolnym języku programowania na komputerze i traktować je jako moduły w systemie Wroob. Posiadamy gotową bibliotekę na Arduino która pozwala na obsługę naszego wewnętrznego protokołu komunikacji. Znajdziecie ją na GitHub’ie https://github.com/wroob-io lub możecie pobrać bezpośrednio w Arduinio IDE. Jak podłączyć płytkę Arduino do systemu Wroob i stworzyć własny moduł z przyjemnością opiszę w kolejnym artykule. Jeżeli projekt Wam się podoba, z chęcią odpowiem na wszelkie pytania w komentarzach. Oprócz łączenia Arduino z Wroob i pisania własnego modułu, mam też kilka propozycji na kolejne posty: 1. Własny moduł w Pythonie 2. Opis architektury systemu Wroob 3. Opis funkcjonalności i implementacji wybranego modułu 4. Robot mobilny Wrooby Dajcie znać co was najbardziej interesuje. Zachęcam do testowania możliwości aplikacji Wroob na własną rękę - do końca czerwca jest całkowicie darmowa Do pobrania w Google Play Wroob - Robotyka dla każdego! – Aplikacje w Google Play
×
×
  • Utwórz nowe...