Skocz do zawartości

Cała aktywność

Strumień aktualizowany automatycznie     

  1. Dzisiaj
  2. Dzień dobry Zdecydowałem się jednak na rozwiązanie z głośnikami i mikrofonami MEMS, które mógłbym umieścić wokół robota, co dałoby możliwość określenia kierunku źródła dźwięku. Zamawiałem nieco części potrzebnych do podwozia gąsienicowego, a przy okazji z Chin wziąłem dwa 3-watowe głośniczki, jakieś wzmacniacze audio i przetestowałem: Jakość dźwięku nie jest najgorsza, jest dostatecznie głośno i wyraźnie słychać mowę, może i nawet jakaś melodyjka by uszła Docelowo robot będzie "niezależny dźwiękowo", czyli będzie miał na pokładzie wszystko co potrzebne, aby z nim porozmawiać. Lub kazać mu coś zrobić. Zatem reasearch w tym kierunku prowadzi mnie do takiego zestawu. Jakość audio to już - zakładam - kwestia technologii i środków Jeśli tutaj chodziło Ci o część software'ową, to ostatnio również badam temat, jednak w perspektywie miesiąca czeka mnie przeprowadzka, więc postęp nad wszelkimi pracami w projekcie zwolnił. Po wstępnym rozpoznaniu rozważam skorzystanie z usług AWS lub hybrydy z innym rozwiązaniem, ale ostatecznej decyzji jeszcze nie podjąłem.
  3. to ja również zadam pytanie jak sterujesz pompką , przekaźnik mostek H ?
  4. Programowanie klona nano (overriding boud rate 57600) w arduino-cli: arduino-cli -b arduino:avr:nano:cpu=atmega328old -p COMx plik wybierając sam płytkę arduino:avr:nano (domyślny overridign baud rate jest ustawiony na 115200)
  5. @Wendzio najlepiej wklej Output z arduino IDE (kompilacja i upload).
  6. #include <LiquidCrystal.h> #define TRIGGER 23 // Trigger Pin #define ECHO A7 // Echo Pin const int RS = 34, EN = 35, D4 = 30, D5 = 31, D6 = 32, D7 = 33; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); //---------------------------------------------- struktura menu -------------------------------------------------------// typedef struct { String label; // Nazwa pozycji w menu, submenu int option; // Typ menu: 1 - action, 2 - Submenu int subMenuHandle; // Wskaznik do submenu void (*handler)(); // Wskaznik do funkcji } MENU; MENU menu[1]; int menuPosition = 0; // Aktualnie wybrana pozycja w menu int menuSize; // Rozmiar menu boolean menuLowerLevel = false; // Informuje czy menu glowne typedef struct { String label; // Nazwa pozycji w submenu int option; // Typ podmenu int handle; // Wskaznik void (*handler)(); // Wskaznik do funkcji } SUBMENU; SUBMENU subMenu[0]; // Ilosc pozycji w menu int subMenuPosition = 0; // Aktualnie wybrana pozycja w sub menu int subMenuSize; // Rozmiar sub menu boolean subMenuLowerLevel = false; // Informuje czy sub menu glowne boolean subMenuEnter = false; int dystans; void setup() { Serial.begin(9600); lcd.begin(16, 2); menu[0] = {"Robot", 1, 0, Odleglosc}; menuSize = sizeof(menu) / sizeof(MENU); subMenuSize = sizeof(subMenu) / sizeof(SUBMENU); } void loop() { int odczyt_key = analogRead(0); static int isPressedSince = 0; static unsigned long lastRead = 0; if(odczyt_key > 1000 && lastRead > 0) { isPressedSince = 0; return; } isPressedSince++; lastRead = millis(); lcd.home(); lcd.clear(); if(menuLowerLevel == false) { lcd.print("Menu glowne: "); lcd.setCursor(0,1); if(menu[menuPosition].option != 1) { lcd.print("> "); } lcd.print(menu[menuPosition].label); } if(menuLowerLevel == true) { lcd.print(menu[menuPosition].label); lcd.setCursor(0,1); if(menu[menuPosition].option == 2) { if(menu[menuPosition].subMenuHandle == subMenu[subMenuPosition].handle) { lcd.home(); lcd.clear(); lcd.print(menu[menuPosition].label+": "); lcd.setCursor(0,1); lcd.print(subMenu[subMenuPosition].label); } } } // DOWN if(odczyt_key > 250 && odczyt_key < 450) { if(menuLowerLevel == true) { if(subMenuPosition < subMenuSize) { subMenuPosition = subMenuPosition + 1; } if(subMenuPosition == subMenuSize) { subMenuPosition = 0; } } if(menuLowerLevel == false) { if(menuPosition < menuSize) { menuPosition = menuPosition + 1; } if(menuPosition == menuSize) { menuPosition = 0; } } } // UP if(odczyt_key > 50 && odczyt_key < 250) { if(menuLowerLevel == true) { if(subMenuPosition > 0) { subMenuPosition = subMenuPosition - 1; } if(subMenuPosition == 0) { subMenuPosition = 0; } } if(menuLowerLevel == false) { if(menuPosition > 0) { menuPosition = menuPosition - 1; } if(menuPosition == 0) { menuPosition = 0; } } } // RIGHT if(odczyt_key < 50) { if(menu[menuPosition].option == 1) { menuLowerLevel = false; } if(menu[menuPosition].option == 2) { if(menu[menuPosition].subMenuHandle == subMenu[subMenuPosition].handle) { menuLowerLevel = true; } } } // LEFT if(odczyt_key > 450 && odczyt_key < 700) { if(menuLowerLevel == true) { menuLowerLevel = false; } if(menuLowerLevel == false) { menuLowerLevel = false; } } // SELECT if(odczyt_key > 700 && odczyt_key < 850) { lcd.home(); lcd.clear(); if(menuLowerLevel == true) { lcd.print(subMenu[subMenuPosition].label+": "); lcd.setCursor(0,1); } if(menuLowerLevel == false) { lcd.print(menu[menuPosition].label+": "); lcd.setCursor(0,1); if(menu[menuPosition].handler != NULL && menu[menuPosition].option == 1) { return(*(menu[menuPosition].handler))(); } } } // NULL if(odczyt_key < 1000) { } } void Odleglosc() { digitalWrite(TRIGGER, HIGH); digitalWrite(TRIGGER, LOW); int czas = pulseIn(ECHO, HIGH); dystans = czas / 58; }
  7. @Wendzio Poza tym, możesz nie mieć odpowiednich sterowników, ponieważ oryginalne Arduino mają kontroler USB ATmega16u2, a te tańsze klony chip CH340, może masz niezainstalowany sterownik? Sprawdź w menedżerze urządzeń. Jeśli to nie to, to masz uszkodzone Arduino. Spróbuj odinstalować windowsowy automatyczny sterownik, i zainstaluj ten z pliku poniżej: P.S. Nie ma wirusów, nie bój się CH34x_Install_Windows_v3_4.zip
  8. @Gibcio2020 Przede wszystkim podaj ten kod za pomocą odpowiedniego narzędzia wstawiania kodu na forum, bez tego raczej nikt Ci nie pomoże
  9. Witam ! Do stworzenia menu posłużyła mi strona: https://starter-kit.nettigo.pl/2017/04/menu-wyswietlaczu-16x2/, dorobiłem funkcję żeby pokazywała mi odległość mierzoną z czujnika odległościowego, odległość się pokazuje lecz się nie zmienia, w tym całym kodzie menu znajduje się fragment który sprawia że menu na lcd nie odświerza się na bierząco i to to jest przyczyną. Jak zakomentuję ten fragment kodu to z lcd nie da się nic zczytać, bo szybko mruga, jakby się zamazywał, może ktoś coś poradzić? Z góry dziękuje
  10. Nie jestem pewien co to za model silników, ale są one na zasilanie 5V. Używam baterii prosto z paczki. Są tej samej chwili. Od czasu gdy pisałem o problemie udało mi się pójść z tym do przodu. Otóż gdy ustawię prędkość silników (według biblioteki python) powyżej prędkości o wartości 252 wywala błąd. Co może to powodować?
  11. Dziękuję za Wasze odpowiedzi, Jeśli chodzi o roboty do mycia szyb - kiedyś szukałem tego i nie widziałem innych niż 'ssących'. Nawet kupiłem takiego jednego 'ssącego' Hobota, ale on w łazience nie sprawdza się. Rolki które ma zaczynają się ślizgać gdy jest zbyt dużo wody. No i wymiary... Ten mechanizm z magnesami bardzo by mnie interesował. o, ciekawe Byłbyś w stanie podesłać jakiś przykład ? Nigdy nie widzałem takich konstrukcji? Zmieniając troche temat, jakie najmniejsze kółka/gąsienice widzieliście? Takie o średnicy max 1cm są możliwe do kupienia?
  12. Cześć, Musisz używać portu, który jest przypisany dla Arduino, nie dowolnego. Otwórz menedżer urządzeń i sprawdź. Kod programu to najzwyklejszy blink. Dla pewności, że nie zrobiłeś nic źle, otwórz plik Blink z przykładów w Arduino IDE i wgraj go. Jeśli się okaże, że dalej nic, to Arduino masz walnięte.
  13. Jak zawsze polecam zawsze Solomona, dorzucisz kilka zł do swojego budżetu i będziesz mieć lutownicę na lata. Ja swoją kupiłem z 10 lat temu i cały czas używam, groty są niezniszczalne - kupiłem zapas i zużyłem 1.
  14. @Wendzio witam na naszym forum @tadeusz0608 witaj Tadeuszu na naszym forum cieszymy się, że tu trafiłeś! Fajnie że cały czas masz ochotę się rozwijać, powodzenia w nauce – Arduino to bardzo rozbudowany i w praktyce przydatny temat, także życzę wielu udanych projektów!
  15. Wczoraj
  16. Panie Kredek, jestem pod wrażeniem! Twój projekt udowadnia, że dla chcącego nic trudnego... Brawo. Najbardziej podoba mi się zdjęcie z połączeniem termoglutem i jego wydrukowanym zastępcą :) To musi być mocno motwujące kiedy za każdym wydrukiem jakość produkowanych części staje się widocznie lepsza. Co do gwintów w alu: da się i zazwyczaj nie ma problemów. Zrobiłem całą masę różnych gwintów w alu i rzadko mi się je udaje zepsuć (częściej już kiedy za mocno się przyłożę do dokręcania śrubek, a sam profil albo blacha alu jest cieniutka). Pamiętaj tylko o 3 sprawach: 1. Odpowiedniej wielkości otwór (w wyszukiwarce wpisz frazę 'otwory pod gwinty', znajdź tabelkę i tego się trzymaj) 2. Gwintowniki idą po 3 w zestawie. Wstępny, właściwy i końcowy. Najlepiej rozpoznać po nacięciach na gwintowniku, zaraz przy jego szczycie. Ten wstępny ma dużą część czubka jakby płaską, bez nacięć. To pozwala łagodnie i sprawnie zacząć gwintowanie. Po przegwintowaniu wstępniakiem lecisz głównym no i na końcu wygładzającym Ja czasem w alu od razu po wtępnym przechodzę do ostatniego. W przypadku ekstremalnym (1 gwintownik w zestawie) próbuj gwintować z dużą ilością smarowania (patrz punkt 3), a potem z wyczuciem (i smarowaniem) wkręcaj śrubkę. 3. Smarowanie! Jakaś oliwa/olej, coś łatwo płynącego. Dozuj regularnie i często podczas gwintowania. Dzięki temu gwint się nie zerwie podczas robienia. Jak już gwint 'złapie', to jakieś 0.5 obrotu, cofnij, dodaj smarowania, znowu 0.5 obrotu, poluzuj znowu itepe. Z czasem zdobędziesz wyczucie. Ja już gwinty w większości przypadków robię wkrętarką. Jak już zostało wspomniane, daruj sobie ESP. Trzymaj się malinki, Octoprint jest dobrym wyjściem. No i nie poddawaj się, dobrze Ci idzie!
  17. Witam, zlece wykonanie prostego urządzenia które chce zaadoptować do sterowania maszyną i oświetleniem. Chce aby urządzenie było sterowane podczerwienią także wymagany nadajnik IR i odbiornik oraz przesyłanie logów na komputer lub smartfon najprostszym sposobem. Chętnych zapraszam po wiecej informacji na email: artikaogrody@wp.pl
  18. Witam serdecznie miłośników i pasjonatów elektroniki, nazywam się Tadeusz, mam 68 lat, z wykształcenia jestem inżynierem mechanikiem, obecnie na emeryturze (aktywnej), pozostawiam sobie niewiele wolnego czasu pracując jeszcze na 1/4 etatu w mojej specjalności, a dodatkowo projektuję systemy nawadniania (zraszania) trawników. Zakup zestawu startowego Arduino podpowiedział mi syn, a chęć rozwiązania niektórych problemów ze sterowaniem zaworami zrobiła resztę. Jestem przekonany, że po ukończeniu kursów Arduino uda mi zrealizować te pomysły które mam. Pozdrawiam Tadeusz
  19. Hej. Może jeszcze zobacz w innych sklepach. Mam 937D od firmy Yihua i bardzo podoba mi się wyświetlacz, dzięki któremu mogę precyzyjnie ustawić temperaturę. W dodatku kupiłem ją za około 95 zł.
  20. Witam mam problem z arduino uno r3 klon Podczas wgrywania szkicu do arduino zaczynają mi migać diody to znaczy (L, TX, RX) Szkic jest poprawny A dotyczył on migania diodą od pinu 13 co 1000 ms Był on robiony wedóg kursu na youtube Wersja IDE to 1.8.12 Tak jak już wspomniałem jest to klon z zestawu kupiony na AliExpress Podłączone jest do COM6(próbowałem już na każdym porcie)
  21. 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ć
  22. @Treker Chyba się skuszę na 936AH, ponieważ jako jedyna z tych dwóch jest w magazynie. Dzięki wielkie za pomoc. Nie wiem też jaki Forbot ma stopień kontaktu z Botlandem, ale zauważyłem, że na stronie Waszego zestawu 936AH jest oznaczona jako 75W, jednak gdy kliknie się w link wychodzi na to, że jednak jest to 80W, więc pomyśłałem, że podzielę się spostrzeżeniem. Jeszcze raz, dzięki za pomoc
  23. A jeżeli podłącze hdd dysk zewnętrzny pod usb 3.0 i sformatuje na fat, będę mógł wybrać wybrać przez terminal ścieżkę, żeby tam zapisywały się zdjęcia?
  24. @Yoshua-chan zerknij na dwie stacje, które rekomendujemy do naszego niezbędnika warsztatowego (w akcesoriach do tego zestawu): https://botland.com.pl/pl/zestawy-i-kursy-forbot/10849-forbot-niezbednik-warsztatowy-konfigurator-5903351240383.html Wiele osób korzysta z tych dwóch modeli i raczej nikt nie narzeka
  1. Załaduj więcej aktywności
×
×
  • Utwórz nowe...