Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 31.03.2020 we wszystkich miejscach

  1. 4 punkty
    Jak chodzi o CE mam głównie doświadczenie z dyrektywą medyczną, czyli 93/42/EWG i moje podejście może się wydawać niektórym zbyt rygorystyczne, ale pozwólcie że włączę się do dyskusji. Zacznijmy od samego początku, czyli dyrektyw oraz norm. Dyrektywy są prawem europejskim i nie tylko obowiązują jak każde inne prawo, ale są również nadrzędne nad prawem państw członkowskich. Same dyrektywy jako akty prawne są dostępne publicznie i są darmowe. Natomiast ich zapisy są bardzo ogólnikowe i to sprawia, że dla osób technicznych mogą wydawać się dziwne, albo nielogiczne - takie "lanie wody". Natomiast prawnicy rozumieją te zapisy aż za dobrze. W dyrektywach znajdziemy właśnie cytowane wcześniej fragmenty, czyli co ma zapewnić producent, albo dokładniej - podmiot wprowadzający na rynek. Te zapisy są mocno życzeniowe, urządzenia mają być bezpieczne, poprawnie skonstruowane, udokumentowane itd. Natomiast dyrektywy zawierają niewiele informacji, albo wcale o tym jak takie piękne idee wcielić w życie. Po prostu producent, albo podmiot który wprowadza na rynek UE wyroby innego producenta (np. spoza unii), ma wykazać, że wykonał niezbędne kroki, aby wymogi dyrektywy spełnić. I tutaj pojawia się problem. Bo jak zapewnić np. bezpieczeństwo urządzenia? Można latami prowadzić badania, wykonać ogromną pracę naukową aby udowodnić, że nasz produkt nie stwarza żadnych zagrożeń - i jest tutaj o wiele trudniej niż nam się wydaje. Bo np. co będzie jeśli dziecko weźmie nasz amatorski kalkulator, który ma przyciski drukowane na drukarce 3D, połknie przycisk i się zadławi? Kto będzie odpowiadał za takie zdarzenie? Czy umieściliśmy w instrukcji informację że kalkulator nie może być używany przez dzieci do lat 3? Jeszcze do niedawna taki rozważania pewnie uznalibyśmy za idiotyczne. Niestety moda na procesy o odszkodowanie zapoczątkowana w USA dotarła już do starej europy, więc moglibyśmy być bardzo zaskoczeni o jakie kwoty przyjdzie nam się sądzić... Wracając do CE. Ktoś wpadł na genialny w prostocie pomysł, jak zarabiać na darmowym teoretycznie prawie. Mamy dyrektywę, każdym może ją pobrać z sieci i za darmo czytać. Ale jak wiemy, ciężko jest z nią cokolwiek praktycznego zrobić. I tutaj pojawiają się tzw. normy zharmonizowane, na które potocznie mówimy po prostu normy. W prawie unii jest przyjęte, że jeśli wyrób spełnia wymagania norm zharmonizowanych, to spełnia też wymagania dyrektywy. Jest w tym tylko jeden kruczek - normy są już płatne, a np. wykonywanie badań na zgodność z normami jest płatne nawet bardziej. Mamy więc taką sytuację. Dyrektywy unijne są prawem i działają jak każde inne prawo - można je łamać i narażać się na konsekwencje. Ale aby go przestrzegać właściwie musimy spełniać wymogi norm zharmonizowanych, inaczej zawsze ryzykujemy, że ktoś oskarży nas o niedopełnienie obowiązków wynikających z dyrektywy i zażąda odpowiedniego odszkodowania. No i tutaj dochodzimy do sedna sprawy. Spełniając normy, posiadając odpowiednie wyniki badań - niezależnie czy wykonanych samemu, czy w zewnętrznej firmie, możemy nadać oznaczenie CE oraz podpisać się pod deklaracją zgodności, ale co najważniejsze spać spokojnie. Natomiast jeśli nie wykonamy tych kroków, to albo bezpośrednio łamiemy prawo, albo narażamy się na pozew o odszkodowanie, za to że nie spełniliśmy odpowiednich wymagań. To wszystko brzmi może nieco abstrakcyjnie, bo przecież "nikomu nic się nie stanie", ale jak wspominałem już o sądach i prawnikach - nawet pozornie prosty kalkulator może narazić nas na ogromne problemy. Jeśli nie wierzycie to poczytajcie np. o pozwach składanych przez rodziców za to że dziecko w supermarkecie otworzyło butelkę żrącego płynu i wypiło. Mamy teraz takie czasy, że nie jest to wina rodziców, ani dziecka, ale producenta że nie zrobił lepszego zamknięcia no i sklepu... W każdym razie oznaczenie CE to poważniejsza sprawa niż się wydaje.
  2. 4 punkty
    @Smitty, @Karor111, @satanistik, @hotdeejay - gratuluję wyróżnień, świetnie czytało się Wasze artykuły! @SquareShox - gratuluję nagrody publiczności! @Xevaquor, @Sandra, @ethanak, @Karrol, @Leoneq, @Elvis - gratuluję wygranej, świetna robota! Będę się z Wami kontaktował w celu przekazania upominków oraz nagród
  3. 3 punkty
    StealthMamut to nasz drugi robot minisumo. Robot startował na zawodach ze zmiennym szczęściem. Ale miał swoje chwile chwały Największe sukcesy to 2 miejsce w Rzeszowie oraz 1 miejsce na RA w 2014 roku. Od konceptu do realizacji U początku całej koncepcji znalazł się pomysł, żeby zbudować robota, który będzie słabo wykrywalny przez czujniki przeciwnika, czyli technologia znana jako Stealth Pierwsze testy polegały na sprawdzeniu sposobu reakcji czujników Sharp (najpopularniejsze) gdy skierujemy je pod kątem ok. 45 stopni na lustro. Zgodnie z przewidywaniem promienie były odbijane przez lustro i czujnik lustra nie wykrywał. Zrozumieliśmy, więc że robot z obudową w kształcie piramidy z luster ustawionych pod kątem będzie odbijał promienie czujników i będzie teoretycznie w 100% niewidoczny. Pierwszy projekt powstał w sketchupie na wiosnę 2013 i był to 4 kołowy robot, z 4 silnikami, 3 czujnikami Sharp GP2Y0D340K. Bryła robota byłą w kształcie ściętego ostrosłupa o podstawie ośmiokąta. Projekt ten był ciekawy, natomiast bardzo trudny w realizacji. Dlatego zawiesiliśmy prace i pomysł musiał dojrzeć. Pod koniec 2013 roku koncepcja zaczęła się krystalizować. Pierwszym krokiem było uproszczenie projektu o następujące założenia: Robot 2 kołowy z dwoma silnikami – dzięki temu było dużo więcej miejsca oraz odpadał problem docisku noża pojawiający się przy 2 osiach Tylko 1 czujnik przeciwnika Powstał kolejny projekt w Sketchupie, oraz film animowany prezentujący koncepcje: Aby projekt można było urzeczywistnić, kluczową sprawą było znalezienie dostawcy odpowiednich luster. Stanęło na lustrach z plexi z firmy Audioplex. Były one w miarę łatwe w obróbce i wytrzymalsze niż lustra szklane. Zakupiliśmy arkusz luster i okazał się on odpowiedni do naszych potrzeb. Gdy mieliśmy już materiał wykonany prototyp obudowy z zakupionych „luster”, tak aby sprawdzić skuteczność koncepcji Stealth. Okazało się, że koncepcja stealtch działa Oczywiście w praktyce prototyp nie był w 100% niewidzialny – szczególnie na krawędziach. Natomiast był na tyle niewidzialny że technologię uznaliśmy za wartą przeniesienia na prawdziwego robota. Robot został stworzony w rekordowo krótkim czasie kilku tygodni. Bardzo pomogły doświadczenia z poprzednimi robotami. W pierwszych kilku zawodach robot borykał się z chorobami wieku dziecięcego (zarówno mechanicznie jak i program), ale po kolei wszystko zostało dopracowane i mógł stanąć w szranki z najlepszymi. Projekt 3D Robot był od początku do końca szczegółowo zaprojektowany w 3D w programie SketchUp.. Względem projektu z końca 2013 dodaliśmy dodatkowy czujnik (w sumie 2 czujniki) oraz został wybrany akumulator (Dualsky). Zostało też zaprojektowane całe wnętrze tak aby sprawdzić czy wszystkie części na pewno się mieszczą. Po dopracowaniu projektu ogólnego, dolna stalowa podstawa została zaprojektowana w programie Inventor. Elektronika Podstawowe elementy wykorzystane w układzie to: Procesor Atmega 16 - sterowanie całym robotem 2 czujniki 40 cm Sharp GP2Y0D340K - czujniki przeciwnika ustawione na wprost. 2 czujniki linii – CNY70 - do wykrywania linii oczywiście. TB6612– dwa mostki dla silników głównych, sterowany sygnałami PWM z procesora Stabilizator napięcia LM1117 dla zapewnienia 5V zasilania dla układów. Ze względu na kształt robota, podzieliliśmy elektronikę na 3 płytki. Dla oszczędzenie miejsca zastosowaliśmy w większości elementy typu SMD. Płytka główna wypełnia przestrzeń w obudowie i jest bazą dla procesora oraz zapewnia złącza dla czujników linii. Diody na tej płytce wykorzystywane były tylko do celów testowych. W pierwotnej koncepcji zasilanie czujników miało być wyłączane w pewnych fazach walki tak aby czujniki nie emitowały wiązki i tym samym zdradzały pozycji. Okazało się jednak, że przy obecnym tempie walk dużo ważniejsza jest świadomość sytuacyjna niż jakikolwiek niewielki efekt wyłączenia czujników. Schemat głównej płytki poniżej: Środkowa płytka jest bazą dla mostków dla silników oraz stabilizatora. Schemat poniżej: W końcu górna płytka jest tylko bazą dla złącza programatora, przycisków, diod oraz głośnika. Ciekawa jest geneza wykorzystania głośnika. Ze względu na górną obudowę, która jest także z lustra nie widać na zewnątrz żadnych diod. Tak wiec aby wybrać program startowy używamy przycisku po naciśnięciu którego liczba piknięć głośnika mówi jaki program został wybrany. Oczywiście obecnie większość robotów ma tak nisko czujniki że nie omiata wiązką górnej powierzchni, ale 1 lub dwa takie się zdarzały. Dodatkowo użycie u góry lustra poprawia estetykę całego robota. Schemat górnej płytki poniżej: Generalnie elektronika spełnia dobrze swoje zadania, chodź można było na pewno jeszcze bardziej upchać elementy oraz zastosować lepsze taśmy to łączenia sygnałów pomiędzy poszczególnymi płytkami. Płytki PCB Płytki zostały wykonane w Eaglu. Ich wykonanie zostało zlecone do firmy, która wykonuje PCB, a lutowanie było już po naszej stronie. Najtrudniejszym elementem było przylutowanie procesora oraz mostków, ale udało się to zrobić. Łączenie pomiędzy płytkami zostało wykonane na taśmach z goldpinami i jest to chyba najgorzej wykonany element robota. Płytki zostały osadzone na 2 długich śrubach przytwierdzonych do podłoża. Zasilanie Zdecydowaliśmy się na zasilanie 11,1 V z 3 celowego pakietu Dualsky 400 mAh. Odpowiednie napięcie dla układów elektronicznych (5V) zapewnia stabilizator liniowy. Jeśli chodzi o silniki to PWM tak dobiera napięcie średnie aby ich nie spalić (max 9V). Mechanika Podstawa robota wykonana jest z stalowej blachy i stanowi oparcie dla ścian obudowy z luster. Niestety ze względu na problemy technologiczne elementy podpierające lustra prościej nam było zrobić z balsy, przez co podstawa jest trochę za lekka i trzeba było próbować dociążyć robota dodatkowymi odważnikami z ołowiu. Niestety udało się to tylko połowicznie ponieważ nie było tyle miejsca. Cięższy materiał do dociążenia (np. iryd czy osm, czyli metale o większej gęstości) jest niestety cenowo poza zasięgiem. Silniki główne to Pololu 30:1. Są one bardzo dobre dla tego robota, ponieważ jest on przez to szybki i może wykonywać zwody i manewry okalające szczególnie w pierwszej części walki. Niestety w zwarciu przegrywają z silnikami 50:1. Koła sami odlewamy koła z silikonu co bardzo dobrze wpływa na przyczepność robota. Niestety sama wymiana kół jest trudna dlatego nie zawsze są czas i chęci na zrobienie tego przed zawodami co skutkuje gorszymi parametrami podczas walk. Obudowa typu Stealth W praktyce obudowa typu stealth nie jest tak idealna, jak w założeniach. Można jednak powiedzieć, żę w miarę dobrze spełnia swoją rolę. Niestety są elementy, które ułatwiają lokalizacje robota: Otwory na czujniki Metalowa podstawa (kilka mm od podłogi) 2 śruby po bokach przytrzymujące obudowę Dodatkowo w trakcie walk w kilku miejscach lustra zostały porysowane przez noże innych robotów. Naprawienie tego wymagało by wymiany obudowy, ale jest to bardzo czasochłonne wiec nie zostało to nigdy zrealizowane. Program Program bazuje na programie z moich poprzednich robotów – FlyingMamut oraz MicroMamut. Został stworzony jest w oparciu o konkretne reguły odpowiadające staną czujników oraz stanowi logiki. Na podstawie stanu czujników i stanu obecnego ustalany jest stan następny. Program został napisany w języku C. Używałem WinAVR. Programuję przez USBAsp. Do debugowania programu używam złącza RS-232, którego moduł z układem MAX232 podpisany jest dodatkowo do robota. W toku prac i testów program został rozwinięty o specjalne manewry używane przy starcie robota do walki, tak aby korzystając z „niewidzialności” mógł zajść przeciwnika od tyłu. Niestety część robotów używa najprawdopodobniej algorytmów „na ślepo” atakujących w najbardziej prawdopodobne miejsce gdzie będzie nasz robot, a na małej planszy 77cm nie ma dużego pola manewru. Z powyższego powodu dobrze szło naszemu robotowi na planszy 144 cm na zawodach Robotic Arena we Wrocławiu. Dodatkowym mankamentem jest to, że gdy nasz robot ustawia się przodem to jest bardziej widoczny dla przeciwnika. Podsumowanie Jesteśmy bardzo zadowoleni z tego robota szczególnie, dlatego że udało się wprowadzić do zawodów kolejnego po FlyingMamucie robota, który nie bazuje tylko i wyłącznie na czystej sile i mocnym, ostrym klinie. Oprócz dobrej zdolności do walki, nasz robot jest też jednym z robotów o najczystszej formie i najlepszym designie (zewnętrznym). Dużym komplementem dla nas było to, gdy jeden z sędziów na pierwszych zawodach tego robota w Wałbrzychu powiedział „Nie myślałem jeszcze jakiś robot zaskoczy mnie w zawodach Minisumo”. Sukcesy tego robot sprawiły, że cały czas myślimy nad kolejnym nietypowym robotem, który mógłby walczyć o zwycięstwo
  4. 3 punkty
    STM32MP157 nie posiada pamięci flash, to nie jest mikrokontroler jak typowe STM32. Program dla rdzenia Cortex-M musi być załadowany do pamięci RAM i z niej wykonywany. Podczas debugowania można załadować program używając JTAG-a, natomiast w "produkcyjnej" wersji kod jest wczytywany z karty SD lub innej pamięci przez skrypt systemu Linux, albo bootloader.
  5. 3 punkty
    Wielkie gratulacje dla zwycięzców, A także podziękowania dla wszystkich którym się chciało. Wspaniały wysyp przeciekawych tekstów, na czasem nie oczywiste tematy. Dziękuję. No i wielka prośba do adminów by zbyt długo nie czekali z następnym pomysłem na rozruszanie bloga:)
  6. 2 punkty
    Witam forbotowiczów! Mam do pokazania projekt małego, prostego zegarka lampowego. Chcę pokazać, że mimo obecnego stanu rzeczy, można robić ciekawe rzeczy z tego co się ma w domu. Dlatego większość elementów tutaj jest z recyklingu. Przechodząc do rzeczy: tak wygląda działanie zegarka: Fajerwerków nie ma, ale jako zegarek spełnia swoją funkcję. Tak wygląda jego wnętrze: Do wyświetlania godziny została użyta lampa VFD z kalkulatora Citizen. Działanie takiej lampy nie jest skomplikowane: przez cały ekran są rozciągnięte cienkie druty, czyli filamenty. Na te filamenty podajemy napięcie 2.7V DC (AC byłoby lepsze, ale nie ma sensu w tak małej lampie). Filamenty zaczynają wydzielać elektrony - które potem są przyciągane przez siatki do ekranu z luminoforem. Sterując tymi siatkami, możemy wyświetlić co tylko zechcemy - wyświetlacze VFD jednak mają tylko jeden zestaw pinów pod segmenty, i jeden zestaw pinów pod siatki. Dlatego trzeba je multipleksować. Jeżeli rozebrałeś (aś) jakieś radio samochodowe, wieżę stereo, i chcesz lampy użyć pod zegar, musisz zidentyfikować który pin steruje czym. Pin z maksymalnie lewej i prawej strony to zasilanie filamentu (zwykle). Podajemy na nie napięcie od 2.5v do 3v - jeżeli podamy więcej, filament zacznie się żarzyć, czego nie chcemy. Resztę pinów, dosłownie wszystkie, podłączamy do +12V. Wszystkie segmenty powinny się zaświecić; jeżeli świecą się słabo, możemy napięcie zwiększyć z 12 do nawet 36v (DC). Jeżeli wiemy że lampa działa, możemy odłączyć wszystkie piny siatek i sprawdzać pary pinów. Jeden pin powinien odpowiadać za siatkę, drugi za segment. Najlepiej to sobie rozpisać na spokojnie - jak już to mamy, trzeba rozważyć sterowanie. Za serce urządzenia robi ESP01. Tak jak mówiłem w kursie ESP, ESP01 ma tylko 8 pinów... ale można je rozszerzyć! Te dwa układy scalone to rejestry przesuwne 74HC595. Wymagają tylko 3 pinów do sterowania, a dzięki ich łączeniu możemy podłączyć ich ile chcemy. Jedyny minus: moje rejestry przesuwne nie są pod napięcie 12v. Dlatego do każdego pinu który chciałem obsłużyć, wykorzystałem dosłownie wszystkie tranzystory NPN z odzysku. Starczyło na 4 cyfry, 7 segmentów i kropkę. Domyślnie, wszystkie segmenty są podłączone do zasilania. Tranzystory je łączą przez rezystor do masy, przez co prąd przestaje płynąć przez segmenty - tak udało mi się obsłużyć 12 wyprowadzeń. Za zasilanie logiki i filamentu odpowiadają dwa układy LM317, które dość poważnie się grzeją. Stąd te radiatory - bo pomimo małego poboru prądu, muszą całkiem dużo napięcia zbić. Dodatkowo mały kondensatorek filtruje napięcie wejściowe. Na koniec wydrukowałem obudowę na swojej drukarce. Zaawansowana strasznie nie jest, płytkę po prostu się wsuwa, a gniazdko zasilania przykręca się do klapki, którą się montuje na wcisk. Tak jak zegary Nixie, zegary VFD najlepiej wyglądają w nocy. Bardzo zachęcam do samodzielnej budowy takiego zegara. Nie ma niebezpiecznych napięć, a efekty są bardzo satysfakcjonujące.
  7. 2 punkty
    Kurcze... dlaczego ja w 1979 wywaliłem do śmieci zepsuty kalkulator... dzisiaj byłby jak znalazł
  8. 2 punkty
  9. 2 punkty
    Na Arduino nadal masz założoną tą przezroczystą nakładkę. Jak ją ściągniesz to wszystko powinno pasować (tylko pamiętaj by nie wkładać w to za dużo siły by nie uszkodzić Arduino).
  10. 2 punkty
    Witam Was wszystkich, podczas przerabiania kursu naszła mnie myśl, żeby nieco zmodyfikować doświadczenie z diodą i potencjometrem tak, aby każdy, a w szczególności nowi adpeci elektroniki mogli lepiej zrozumieć działanie potencjometru. Oprócz materiałów z doświadczenia z kursu potrzebujemy wyłącznie dodatkowej diody czerwonej. Najlepiej ustawić potencjometr w rownowadze (tak, jan na zdjęciu). Po podłączeniu układu do zasilania, manipulowanie pokrętłem powoduje zmiany w jasności obu diod, co wskazuje na to, w jaki sposób potencjometr dzieli prąd elektryczny. W załącznikach schemat oraz zdjęcie do podglądu, nie wiem czy coś takiego juz tutaj było, ale wolę podzielić się pomysłem, tym bardziej ze może nadałby się do kursu
  11. 2 punkty
    Cześć, jestem początkującym amatorem. Zaczynam naukę programowania i z pomocą tego forum, chciałbym połączyć to z ćwiczeniami przy konstrukcji podstawowych programów. Pozdrawiam wszystkich w tych ciężkich czasach.
  12. 2 punkty
    Witam! Zrobiłem zadania z kursu Arduino na temat wyświetlaczy LCD. Tworzenie tego układu sprawiło mi wiele frajdy, bo musiałem powtarzać łaczenie chyba z 5 razy ponieważ zawsze kabelka brakowało. Przysyłam zdjęcie mojego układu
  13. 2 punkty
    Witam serdecznie Mam na imię Marcin mam 31 lat, swoją przygodę zaczynam od podstaw. Pudełko z niezbędnymi elementami do rozpoczęcia kursu właśnie dzisiaj do mnie dotrało. Mam nadzieje że zostanę tu na dłużej i kiedyś też się pochwalę swoim projektem
  14. 2 punkty
    Witamy. Wybacz, ale wygląda to jak przypadek który coraz częściej się tu pojawia: nic nie mam, nic nie wiem ale chcę zrobić coś jak na obrazku. Marzenia to nic złego, ale jakiś kontakt z rzeczywistością by się przydał, nie sądzisz? Dorosły człowiek swój rozwój umie zaplanować a i sam proces kosztuje: zarówno czas jak i pieniądze. Rozumiem, że nie chcesz uczyć się na własnych błędach - i słusznie, tylko dlaczego uważasz, że znajdziesz ludzi gotowych poprowadzić Cię za rączkę od zera do bohatera? Ten projekt będzie wymagał od Ciebie przyswojenia mnóstwa wiedzy, bo Forum jest od dawania porad i ew. wyznaczania/korygowania kierunków a nie robienia projektu równolegle z Autorem. Zatem jeśli jesteś gotów na całe tygodnie (a raczej miesiące) nauki, to do dzieła. Po pierwsze w tego typu opisach używaj wypunktowania, ew. numeracji. To wszystko jest dostępne w panelu edytora a bardzo ułatwia odpowiadanie i precyzuje dyskusję. Pozwoliłem sobie na edycję Twojego tekstu: czerwone - przełączniki ON/OFF, które po przełączeniu pozostają w danej pozycji zielone - przełączniki 3-pozycyjne, które pozostają w zadanej pozycji ciemno niebiesko - przełączniki ON/OFF/ON, ustawione są w pozycji środkowej, po przełączeniu w którąkolwiek stronę wracają na środek żółte - przełączniki obrotowe wielopozycyjne (dwa 7-pozycyjne i cztery 4-pozycyjne), jasny niebieski - potencjometry obrotowe pomarańczowe - potencjometry wieloobrotowe różowy - przełączniki gdzie górna i środkowa pozycja działa jak ON/OFF jednak dolna odbija po puszczeniu na środek Wygląda lepiej, prawda? No to po kolei. Przełączniki 2- i 3-pozycyjne w zasadzie w dowolnych konfigurtacjach stabilności-niestabilności są do kupienia. Typowe potencjometry mają ok. 270° obrotu a wieloobrotowe, 10 obrotów. Czy to jest OK? Punkt ostatni - w razie kłopotów możesz zrealizować umieszczając dodatkową sprężynę powrotną na jednej z pozycji skrajnych. Przełączniki obrotowe:możesz kupić większe (w sensie liczby pozycji) a potem tak zaprojektować ich montaż (np. poprzeczka umieszczona za tablicą i przełożona przez średnicę osi opierająca się o ograniczniki mechniczne) by uzyskać mniejszy zakres ruchu. W ten sposób bierzesz np. popularne 8-pozycyjne (kilka takich samych jest tańsze w zakupie) i robisz z nich cokolwiek mniejszego. Najgorzej będzie z tymi elementami które muszą same coś robić samodzielnie. Przełącznik przechylany możesz popchnąć jakimś serwomechniazmem (juz czytaj jak się je podłącza i obsługuje) na żądaną pozycję (choć sprzęgło umożliwiające jednoczesną pracę ręczną też nie będzie trywialne), ale żeby obrotowy ustawił się sam w którejś (skrajnej) pozycji to będzie wyższa szkoła mechaniki. Masz jakieś warsztat, rysujesz w CADzie, projektujesz tego typu mechanizmy? To m.in. miałem na myśli mówiąc o nauce. Bo jak rozumiem pozyskanie oryginalnych manipulatorów z 737 nie wchodzi w grę? A teraz elektryka. Ze swojej strony propoponowałbym wybór mikrokontrolera (a zatem całej płyteczki) takiego w którym USB jest obsługiwane przez niezależny układ, niechby i konwerter UART/USB (FT? CH-cośtam?) bo w małych i prymitywnych prockach obsługa endpointa USB może wiązać się ze sporym narzutem czasowym i nieuniknionymi przerwami w dostępnie do CPU. Tak więc już lepszym rozwiązaniem z punktu widzenia komfortu pracy programu będzie poczciwe UNO. Z drugiej strony jeśli układzik ma się przedstawiać jako klawiatura czy coś-tam-innego HID to własne USB będzie konieczne, chyba że dostępne są jakieś programy podpinające np. wirtualny port szeregowy do Twojego symulatora latania a on sam umożliwia dowolne skonfigurowanie przychodzących kodów do funkcji w kokpicie. Kolejna sprawa to sposób podłączenia tego wszystkiego do Arduino(?). Każda rzecz z osobna jest podpinana do mikrokontrolera w sposób trywialny, ale gdy masz tego tyle, zaczyna istnieć problem ograniczonej liczby pinów i konfiguracji układów pośredniczących. Jestem pewien, że dostaniesz tyle diametralnie różnych porad ilu będzie chętnych do dyskusji. Począwszy od użycia Arduino serii mega i wiąchy kabli (jeden pin to jeden zestyk przełącznika), poprzez rejestry przesuwające, a skończywszy na multiplekserach (analogowych i/lub cyfrowych) czy nawet kilku małych Arduino Mini połączonych ze sobą przez I2C czy Bóg wie jak. Acha, są jeszcze dedykowane scalaki do obsługi klawiatur - zapomniałem. Każde z tych rozwiązań ma swoje zady i walety a nikt za Ciebie ich nie rozważy więc to kolejny punkt w Twoim planie prac. A kiedy już coś postanowisz, przyjdzie czas na rysowanie schematu (programy do tego to osobny czas na naukę a pierwszy projekt robisz zwykle dla wroga), jego uzgodnienie i weryfikację przez Forum (bo sam nie jesteś w stanie ocenić jego sensowności) i zakupy - cała masa sklepów i ciągłe wybory tego zamiast tamtego. Czy masz jakiś zestaw narzędzi, mierników, lutownic, oporników, kabelków, złącz, innych drobnych elementów itp? Bo jeśli nie, to to także trzeba pozyskać a spróbuj zapytać (dla eksperymentu) jaką lutownicę/stację kupić.. Do tego (być może) jakieś płytki uniwersalne do montażu dodatkowych elementów pośredniczących, sam montaż (niektóre elementy - także przełączniki - sa naprawdę delikatne i warto mieć trochę doświadczenia aby ich nie popsuć), samo mozolne uruchamianie by upewnić się krok po kroku, że wszystko polutowane jest a) zgodnie ze sztuką, b) zgodnie ze schematem i wreszcie pisanie programu. Do tego czasu powinieneś już umieć pisać programy obsługujące przyciski, przetwornik ADC i komunikację. Wypadałoby więc od razu klupić jakies tanie Arduino (wcale niekonicznie docelowe) i zacząć trenować: począwszy od instalacji IDE, poprzez gotowe wprawki dostarczane "na gotowo" i ich modyfikacje do coraz bardziej samodzielnych programów - to są miesiące dłubania i rozkminiania nowych dla początkującego koncepcji.. Nie napisałeś nic o wyświetlaczach, LEDach itp. Jak rozumiem, to wszystko będziesz miał na ekranie a panel ma być tylko "wejściem", bez żadnych sygnalizacji stanu, czy tak? Podsumowując: i tak nie zrobisz tego z marszu więc cała sprawa rozmyje się na spory kawał czasu sprowadzając się do normalnego toku przechodzenia przez kolejne kursy "Lutowanie dla opornych" czy "Elektronika dla przedszkolaków" (dostępne na Forbocie na pasku tytułowym powyżej, może pod trochę innymi nazwami) więc dlaczego planowo nie zacząć właśnie od tego (plus zakup Zestawu, bo bez własnych eksperymentów zniechęcisz się po jednym dniu czytania) mając wciąż z tyłu głowy odległy cel? W tym sensie mówiłem o planowaniu własnego rozwoju - do tego etapu raczej nie potrzebujesz pomocy Forum a gdy przyjdzie czas na pierwszy samodzielny projekt -jesteśmy do dyspozycji. To jeszcze nie ta chwila, wierz mi.
  15. 2 punkty
    Może to Ci się przyda. Jest tu kilka sposobów poradzenia sobie z tym problemem. Np możesz w bliku boot/config.txt ustawić: hdmi_force_unplug=1 config_hdmi_boost=4 hdmi_safe=1
  16. 2 punkty
    Nie sprawdzałem jak jest w najnowszych wersjach, ale dawniej takiej opcji nie było - i nie był to błąd, ale raczej założenie projektowe (it's not bug, it's a feature). Problemem w przypadku tak skomplikowanych układów jak STM32MP1 jest konieczność współdzielenia peryferiów między równolegle działające rdzenie i systemy. GPIO są dobrym przykładem - projektant musi zadecydować, które piny przydzielić dla Linux-a, a którymi ma sterować rdzeń M4. Ponieważ w wersji "produkcyjnej" najpierw startuje Linux i to on jest głównym systemem, za konfigurację GPIO odpowiada ten system. Dlatego CubeMX nie generuje kodu inicjalizującego GPIO dla M4 - po prostu ma to zrobić A7. CubeMX generuje za to plik konfiguracyjny, czyli device-tree, który należy dodać do jądra linuxa - dzięki czemu piny zostaną skonfigurowane poprawnie jeszcze zanim kod na M4 zacznie działać. Niestety takie podejście nie sprawdza się w przypadku trybu inżynierskiego i w nim trzeba konfigurację GPIO napisać samemu. Ale to chyba nie jest zbyt skomplikowane zadanie
  17. 2 punkty
    No to po kolei (szkoda, że nie numerowałes pytań, byłoby łatwiej do nich się odnosić): Sterowanie ręczne jest oczywiście w ten sposób możliwe. Jeśli tylko źródło prądu bazy ma wspólną masę ze źródłem zasilania przekaźników tj. oba prądy (Ib i Ic) spływają do tej samej szyny GND na której stoi emiter, to jest OK. W szczególności może to być jedno źródło 12V albo tak jak tutaj 12V i 5V. Moim zdaniem prościej byłoby wstawić sterowanie ręczne poprzez zwykłe zwieranie kolektora na krótko do masy (oszczędzając diody i opornik) co tranzystorowi w niczym nie przeszkadza ale tak, na diodoej bramce OR też można. Tak, układ wokół cewki przekaźnika (sygnalizacja i zabezpieczenie) ma sens i jest poprawny. Diody są w porządku, choć nie muszą być diodami Schottky. Istnieją diody podwójne np. BAV99, BAV70 czy BAW56 w małych obudowach, które są idealne do tego typu małosygnałowych/logicznych zastosowań. Oczywiście istnieją też wersje Schottky w SOT23 (BAT54A, BAT54C, BAT54S). Nie wiem z jakich wyliczeń a raczej z jakich do nich założeń korzystasz więc trudno ocenić wyniki. Skoro potrzebujesz ok. 25mA w kolektorze to spokojnie możesz założyć 1-2mA w bazie. To przy sterowaniu z 5V wymaga (5V-0.2V-0.7V)/2mA=2k, a przy 12V: (12-0.2-0.7)/2mA=5.6k. Wygląda, że założenia co do tranzystorów mamy podobne Wszystko w okolicach tych rezystancji zadziała. Jedyna uwaga: nie masz żadnego elementu który wymuszałby wyłączenie tranzystora, bo gdy Arduino poda stan niski a switch będzie wyłączony, to baza zaczyna wisieć w powietrzu (nie, diody nie zwierają do masy w tę stronę) a tego bardzo nie lubimy. Pojawia się wtedy niesterowany węzeł o sporej impedancji, który chętnie łapie wszelkie zakłócenia a tych w środowisku maszynowo-samochodowym nie brakuje. Dlatego opornik bezpośrednio od bazy do masy (np. 10k) jest konieczny. Ponieważ przy 0.6V..0.7V na bazie pochłonie on trochę prądu (dla 10k to tylko 60uA ale nie wiemy ile wstawisz), trzeba przeliczyć oba oporniki sterowania tak jakby prądu Ib było potrzeba odrobinę więcej.
  18. 2 punkty
    @Kapixar witam na forum Tak, możesz uszkodzić Arduino, najczęściej jednak napotkasz problemy z działaniem programu. Silniki "sieją" na liniach zasilania, może się tak zdarzyć, że podczas ruchów serwa cały program będzie się resetował lub będą działy się różne dziwne rzeczy. Oczywiście można ryzykować i podłączać, co więcej - wiele osób tak robi, ale to jest zdecydowanie zła praktyka, której nie należy pochwalać. Jest to ekstremalnie "niezgodne" ze sztuką. Serwomechanizmy (szczególnie podczas ruszania) mogą pobierać piki dużego prądu, Arduino nie jest na to gotowe.
  19. 2 punkty
    Osobiście bardzo nie lubię długich artykułów. Moim pomysłem dotyczącym tego było zainteresowanie i zachęcenie czytelnika do dalszego studiowania tego tematu. Jednak rzeczywiście, mogę przyznać rację, że artykuł jest, lekko mówiąc, lakoniczny. Im więcej razy go czytam tym więcej widzę rzeczy wartych do dodania, czy nieświadomie pominiętych. Przy moich kolejnych tekstach na forum postaram się, aby było lepiej.
  20. 2 punkty
    Kochani! Moja wariacja na temat (koszt <0,5PLN/sztuka, czas operacyjny 100s/szt): wszelkie uwagi mile widziane...
  21. 1 punkt
    Witam forbotowiczów. Chciałem sobie zrobić mini projekcik na ESP01. Do tego celu chciałem wziąć stare, dobre ESP01 z wymienioną kostką na 4MB z ESP12 - które wcześniej normalnie działało. Niestety, ostatniego dnia po wgraniu, esp nic nie robi. Po podejrzeniu co wypluwa na serialu, widzę to: ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x4010f000, len 1392, room 16 tail 0 chksum 0xef csum 0xef csum err ets_main.c Uznałem że to może wina ESP. Zmieniłem je na nowiusieńkie ESP-01S, i to samo się dzieje... pytanie, czy problem leży po stronie hardware (w co wątpię), czy w sofcie - i jak go rozwiązać. Używam VS Code z najnowszym Platformio, do programowania używam modułu z oryginalnym czipem FTDI. Z góry dziękuję za pomoc. EDIT: NodeMCU działa. Po reinstalacji platformio, i samej platformy 8266, dalej to samo na esp01. EDIT v2: Działa. Nie wiem czemu, ale nagle zachciało się mojemu esp żeby tryb wgrywania był "dout". Ważne że działa xd
  22. 1 punkt
    Cześć, a czy udało się kiedykolwiek wgrać projekt, który działał poprawnie. Ten projekt, który dołączyłes do postu nie powinien uszkodzić płytki Elbert. Jeśli jednak wgrałeś jakiś projekt, który miał złą definicję pinu zegara (np. nazwa pinu zegara w pliku ucf inna niż w głównym entity projektu), to może on uszkodzić zestaw FPGA Elbert. Zobacz te dwa posty: Jeśli to nie ten przypadek i nigdy nie udało Ci się poprawnie uruchomić żadnego projektu to pozostaje reklamacja płytki. Pozdrawiam
  23. 1 punkt
    A gdzie masz wyczyszczenie flagi od przerwania? Zwykle obsługa przerwania polega w pierwszej fazie na sprawdzenie czy flaga od przerwania jest ustawiona, a następnie jej wyzerowanie.
  24. 1 punkt
    Fajnie że udało się czasem łatwiej jest przeinstalować system niż dochodzić co się stało.
  25. 1 punkt
    Pytanie wydzieliłem do odpowiedniego działu.
  26. 1 punkt
    Zinstalowałem system od nowa poprawiem to : #hdmi_force_hotplug=1 na to : hdmi_force_unplug=1 i działa . Dzięki za pomoc.
  27. 1 punkt
    Działa display.clearDisplay(); char bufor[16]; sprintf(bufor,"%6.2f", termometr[0] / 100.0); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Temperatura w salonie"); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(10,12); display.print(bufor); display.println(" C"); display.display(); display.clearDisplay(); Na razie tylko salon, dopasuje jeszcze zewnętrzną, aby się wyświetlała naprzemiennie ale docelowo muszę pomyśleć o większym wyświetlaczu (może nawet dotykowym jesli to mozliwe). Na chwilę obecną ten wystarczy. Mam nadzieję, że to tak miało w zamierzeniu wyglądać. A soją drogą to jeden DS18b20 mam chyba uszkodzony, mierzy temperatury tylko co 0,5 C 1950 2000 2050 2100 itd.
  28. 1 punkt
    kolejne jaskółeczki https://www.nonplanar.xyz/
  29. 1 punkt
    U znajomej dentystki zamontowali takie coś z 3 tygodnie temu do sterylizacji całego gabinetu i podobno sprawdzało się. Teraz po zaostrzeniach to z pracą tam różnie. Do sterylizacji jednej maseczki powinno się sprawdzić.
  30. 1 punkt
    Wejdź Narzędzia->procesor "ATmega 328P"->kliknij w ATmega328P(old Bootlouder) a następnie kompiluj i wgraj Wgrałem do swojego arduino nano oto zrzut z ekranu Ten program musi się wgrać.Nie zapominj po zmianie bootoadera wybrać portu!
  31. 1 punkt
    Skompilowałem ten Twój program.Pierwsza kompilacja zakończyła się niepowodzeniem i komunikatem o braku biblioteki RF24.h Po zainstalowaniu biblioteki i ponownym skompilowaniu wszystko poszło jak należy.poniżej załączam zdjęcie Zastosuj old Bootloader
  32. 1 punkt
    Cześć Wszystkim, Jestem Mateusz, mam 27 lat. Z elektroniką miałem trochę do czynienia na studiach, ale z taką bardziej "praktyczną" ruszam dopiero teraz dzięki Waszej pomocy. Moje zainteresowanie tą dziedziną przyszło stosunkowo niedawno, gdy zajmowałem się drobnymi przeróbkami elektryki (tak wiem, że "elektryka" nie równa się "elektronika") w mieszkaniu i wtedy stwierdziłem, że mnie to zaciekawiło i postanowiłem zaprzyjaźnić się bardziej z prądem Poszukując materiałów do nauki w internecie, trafiłem na Wasz kurs i postanowiłem rozpocząć praktycznie od początku, od podstaw elektroniki, w celu uzupełnienia i rozwinięcia swojej wiedzy, tej bardziej praktycznej, ale też teoretycznej. Traktuję to raczej jako hobby, poszerzenie swoich horyzontów, ale może kiedyś uda się to wykorzystać do czegoś pożytecznego Moje plany: podstawy elektroniki I i II, później Arduino. Zobaczymy co dalej, mam nadzieję, że Wasze kursy mnie będą motywowały do tego żeby nie porzucić nowego zainteresowania Pozdrawiam i do zobaczenia w innych wątkach forum.
  33. 1 punkt
    Wartości oporników nie muszą być tak małe. Zauważ, że jeden taki dzielnik będzie pobierał ok. 3.5mA przy 12V. Jeśli zrobisz tego kilka (nie wiemy ile sygnałów z instalacji chcesz wpuścić do sterownika) to łatwo zrobi się kompletnie zmarnowane 10mA albo więcej. Nawet jeśli zasilanie głównej przetwornicy będziesz odcinał kluczykiem/zapłonem (czy tak?), to sprawdź czy sygnały sterujące 12V także wtedy znikają (bo np. niektóre lampy mogą byż włączane zwieraniem od strony masy). Szkoda prądu. W każdym razie kilkukrotne zwiększenie rezystancji w dzielniku - przy zachowaniu stosunku - niczego nie popsuje a pozwoli zaoszczędzić trochę prądu. W wojsku mówiło się o "elementach" takich jak proponowana przetwornica "Odporny na naukę i trudny do zajeb..nia" co oznaczało gości idealnie pasujących do warunków życia na kompanii. Maks. napięcie wejściowe tej płyteczki (30V) dobrze pasuje do zastosowań automotive, choć niestety układ ma jedną podstawową wadę: potencjometry. Te elementy zupełnie nie sprawdzają się w środowisku narażonym na drgania, wilgotność, spore zmiany temperatur i ich zakres. Dlatego poszukałbym czegoś nieregulowanego 5V, gdzie nic nie może łatwo tego napięcia zmienić. W przeciwnym razie możesz pewnego razu ze zdziwieniem stwierdzić, że nic nie działa bo albo masz 3V zamiast 5V albo wręcz przeciwnie, wszystko jest spalone bo i diody i procesor dostały nagle 8V z powodu głupiego niekontaktu na ścieżce oporowej potencjometru. Pewnym wyjściem jest zakup tej płytki i wymiana wszystkich potencjometrów na oporniki stałe, ale to już wymaga trochę roboty i posiadania bazy elementów. A wejście układu zasilania koniecznie powinieneś ochronić a) przed zakłóceniami impulsowymi z alternatora, b) przed odwróceniem polaryzacji baterii, c) przed syfem RF generowanym w instalacji (zapłon), d) przed śmieciami produkowanymi przez Twoją własną przetwornicę wysyłanymi do szyny zasilania. Warto też wspomnieć, że dobrze byłoby sprawdzić jak zachowuje się konkretny zasilacz w warunkach samochodowych, np. czy szybki/impulsowy spadek zasilania z 13 do 7V (np. w chwili załączenia rozrusznika) albo ciąg szybkich impulsów 11V/15V (start alternatora) nie skutkuje dziwnymi zamianami napięcia na wyjściu. No, trudny temat sobie wybrałeś.. Do tego typu zastosowań istnieją specjalne elementy, np. https://www.tme.eu/pl/katalog/?search=rbo08 (lub jakaś inna, ale raczej potężna 1.5kW dioda transil 20-24V) plus do tego jakiś filtr EMI bo na pewno nie chcesz, by po użyciu chińskiej przetwornicy niespełniającej żadnych norm RF Twój motocykl stał się jeżdżącą zakłócarką wszystkiego co radiowe: https://www.tme.eu/pl/details/emi222t-rc/filtry-przeciwzakloceniowe-tht/bourns/ plus kilka (100nF/50V + 1uF/50V) kondensatorów ceramicznych uzupełniających ten filtr (po obu jego stronach) i jeden dobry elektrolit min 220uF/50V. Wszystko to rzecz jasna za diodą (diodami) zabezpieczającą.
  34. 1 punkt
    Teoretycznie wystarczy, ale zakres napięć może być sporo szerszy. Przecież podczas odpalania po zimnej nocy napięcie może chwilowo spaść podczas pracy rozrusznika nawet poniżej 8V a wtedy dzielnik powoli przestaje dawać radę i sterownik zgłupieje. Lepszym pomysłem jest policzenie dzielnika tak, by dawał np. 4.5..5V dla 8V a następnie wstawienie diody Zenera (np. 4.3V) równolegle do dolnego opornika. To znacznie rozszerza zakres napięć dla których procesor dostanie poprawne napięcie w stanie wysokim. Dla pewności możesz tam jeszcze dorzucić (równolegle do diody) kondensator (100nF?) bo instalacja pojazdu pełna jest strasznych rzeczy. Tak samo dobrze musisz zabezpieczyć wejście ew. przetwornicy/stabilizatora zasilającego całość, bo ciągi impulsów 20-30V na linii 12V to normalka.
  35. 1 punkt
    Ja podłączałem nawet 2 i działało . Ale bezpieczniej podłączyć do vin.
  36. 1 punkt
    Witam wszystkich, jestem Kuba lat mam na karku zaledwie 19. Kończę technikum informatyczne i wraz z wami pragnę rozwinąć się w kierunku robotyki. :)
  37. 1 punkt
    No to PS HI (polistyren wysokoudarowy). Z obu tych tworzyw produkuje się w końcu obudowy.
  38. 1 punkt
    Raczej po prostu zrobiłeś to źle. Jeśli chcesz mieć tekst na ekranie stały przez całe działanie programu to robisz sobie bufor - tablice char, o ilości znaków na cały ekran +1 i tylko na niej "piszesz", a raz na sekundę (poczytaj tu w kursie o millis(), zobacz przykład w Arduino blinkwithoutdelay) wysyłasz taką tablicę na drugą linię LCD, to nadpisuje całą linię LCD, ale tylko tą drugą, napis na pierwszej pozostaje bez zmian. Jeśli w którymkolwiek momencie użyjesz lcd.clear(); to cały ekran znika i musisz wszystko odrysować od nowa. Oczywiście możesz sobie ekran podzielić na 4 części, ale nie można po prostu wrzucać tam zmiennej, bo ta raz może być 133, raz -2 i zostawałby "duchy" poprzednich wartości, np. z tych dwóch by zostało -23. Tak można zrobić to w miarę szybko, operacje na tablicy są znacznie szybsze niż wysłanie na ekran 16 spacji by wyczyścić linię, a potem tekst właściwy, a najwolniejsze jest .clear(). Możesz zrobić tak, że natychmiast po wysłaniu ekranu tablicę zapełniasz spacjami, a potem uzupełniasz danymi w odpowiednie miejsca, wysyłasz i powtarzasz. Kolejnym krokiem jest mieć w pamięci kilka takich całych ekranów (każda linia to 16B+1 na zero kończące napis) i je sobie zmieniać w zależności od sytuacji, np. migające menu nastaw na zmianę z ekranem głównym.
  39. 1 punkt
    A czy w telefonie do udostępniania internetu masz ustawione hasło? Bo jeśli nie, to to może być trop. Sprawdź czy w pliku konfiguracyjnym wpa_supplicant.conf nie masz błędu w haśle. Sprawdź też czy przypadkiem nie masz w routerze ustawionego WEP`a (choć ciężko w to uwierzyć). Napisz jaki to router i jaki ma typ szyfrowania. Skoro po kablu masz w Malinie internet, to i IP musi być widoczne. Tylko wtedy sprawdzasz nie na wifi0, wifi1, itd, tylko na eth0, eth1, itd. Podłącz malinę po kablu tak, żebyś miał internet i napisz co masz w konsoli po poleceniu ifconfig
  40. 1 punkt
    Witajcie Mam 43 lata a elektronika to moje hobby. Zaczynałem w wieku 15 lat, kiedy to wychodziły zestawy Młody Elektronik Potem miałem długą przerwę i zainteresowałem się AVR`ami. Sporo projektów na nich wykonałem. Znam #C w kontekście mikrokontrolerów AVR na poziomie prostych zastosowań. Obecnie zakupiłem RPi w wersji 4B 4GB i zaczynam uczyć się Pythona. Mogę pomóc w szeroko pojętej elektronice (analogowej i AVR) a będę zawracać głowę w kontekście Pythona w zastosowaniach RPi
  41. 1 punkt
    Pora na ogłoszenie wyników konkursu, którego celem było wyłonienie autorów najciekawszych artykułów o elektronice i programowaniu. Na zwycięzców czekało 7 kart podarunkowych Allegro o łącznej wartości 2300 zł. Do konkursu zgłoszono 40 tekstów, które poruszały skrajnie różną tematykę. [blog]https://forbot.pl/blog/wyniki-konkursu-znamy-najlepsze-artykuly-o-elektronice-id38878[/blog]
  42. 1 punkt
    Bo to trochę terminologicznie zagmatwane... Termin "string" (z małej litery) oznacza po prostu ciąg (łańcuch) znaków. Z reguły reprezentowany w postaci fragmentu pamięci (np. tablicy) zawierającego owe znaki i zakończonego bajtem zero. Termin "String" (z wielkiej litery) to klasa (lub - w zależności od kontekstu - obiekt tej klasy) która może przechowywać napisy (łańcuchy) dowolnej (no, powiedzmy) długości, a także oferuje różne ciekawe możliwości łączenia, konwersji, podstawiania i w ogóle cudów i wianków na napisach. Niestety - z uwagi na niewielkie ilości pamięci w mikrokontrolerach nieuważne/nieumiejętne stosowanie tej klasy może (nie musi) prowadzić do nieoczekiwanych "zacięć" programu. Szczególnie odczuwalne jest to w programach działających non stop, gdzie wystąpienie błędu pt. "aplikacja zawiesza mi się po dwóch miesiącach działania i odebraniu konkretnego ciągu znaków" może być raczej frustrujące. Dlatego nie pochwalam używania String (klasy) w tego typu programach do przechowywania stringów (czyli ciągów literek). Teraz dalej: co nie wychodzi w przytoczonym fragmencie? Nie odbiera komunikatów? Nie wypisuje co odebrał? Jeśli nie odbiera, to czy ktoś taki komunikat wysłał i jak? A co do wieku... tu już parę osób kwękało że są starzy i zgrzybiali a potem się okazywało, że mogą tym starszym po piwo biegać To co, próbujesz dalej czy się poddajesz?
  43. 1 punkt
    @wn2001 odbiorcy - cała dzielna Służba Zdrowia... a konkretnie wczoraj odwiedziłem Ratowników... po wstępnych przymiarkach byli kontenci... Co do technikaliów - sprawa wygląda prosto: folia + dystans + gumka = przyłbica Folia Użyłem tzw. folii do bindowania o grubości 200 mikronów (ostatecznie 150 też może być...). To jest bodaj najlepszy, najekonomiczniejszy wybór zapewniający wysoką funkcjonalność. Dostajemy 100 przyciętych, gotowych do użycia kawałków przezroczystej folii – owszem, trzeba przyciąć rogi… ale to sama przyjemność! Dystans Dobrze żeby wynosił min. 25 mm. Może być też 30 mm. Czyli poszukujemy gąbki o takiej grubości. Początkowo eksperymentowałem z gąbką/pianką tapicerską, docinałem też gąbki do mycia naczyń… Ostatecznie wykorzystałem pięknie przycięte kawałki sprezentowane mi przez wspaniałą firmę Pureko, producenta materaców. Użycie trzech klocków zamiast jednego długiego odcinka, jest ekonomiczniejsze i umożliwia lepszą wentylację, cyrkulację wilgotnego powietrza… Typowa gąbka, o otwartych porach zapewnia dobrą ergonomię, dopasowanie i przeciwdziała odparzeniom, zranieniom podczas noszenia (to jest szalenie istotna kwestia!). Niestety, gdyby nawet pory były zamknięte czy częściowo zamknięte należy taki element konstrukcji uważać za nie nadający się do pełnej sterylizacji. Z tego względu takie przyłbice są raczej jednorazowe… Gumka Można wykorzystywać różne rodzaje, wedle możliwości zaopatrzeniowych. Taśmy elastyczne vel gumki od majtek też wydają się dobrym rozwiązaniem (min. 10 mm szerokości) jednak są znacznie droższą opcją. W tym przypadku również miałem szczęście bo zostałem obdarowany całym workiem pięknych, długich gumek przez miejscową księgarnię... Montaż powyższych podzespołów idzie gładko dzięki klejeniu na gorąco… Owszem, gumki są niesforne, stwarzają pewne problemy ale można poprosić kogoś do pomocy lub używać ciężkich kawałków metalu aby tymczasowo je przytrzymać podczas klejenia. Warto też zrobić wzornik aby pewnie trafiać z gąbką w środek folii – wystarczą trzy kreski na stole/blacie/płycie lub narysowane kontury gąbek… Różne kleje mają różne tempo wiązania/stygnięcia – w celu przyspieszenia tego procesu można miejsca pod folią wykleić kawałkami taśmy aluminiowej dla szybszego odprowadzenia ciepła… Gorący klej nakładamy na gąbkę, potem warto też dać większą kroplę kleju bezpośrednio na końcu gumki, która już leży na foli w odpowiednim miejscu. Gdy już mamy przytwierdzony jeden koniec gumki, wypada miękkim ołówkiem zaznaczyć sobie na niej w miarę równo przeciwległy środek, do drugiego klejenia. Ma to na celu równomierne napinanie oby odcinków gumki na głowie. Oczywiście o to się nie martwimy jeśli używamy krótszych gumek i spinać je będziemy po dwie, trzy sztuki… Hotglucenie wymaga wprawy, bo ciągną się dłuuugie nitki, które momentalnie łapią się do folii... Najłatwiej odrywać je delikatną pensetą. Folia bardzo mocno się elektryzuje, dlatego gotowe maski trzeba odkładać do w miarę czystych miejsc i pracować w rękawiczkach - również ze względów higienicznych. W szpitalu przyłbice są ozonowane przed użyciem.
  44. 1 punkt
    Ostatnio zrobiłem swoją wariację z fragmentu obudowy drukarki HP pociętych i powyginanych opalarką. Szybka z butelki coca coli
  45. 1 punkt
    Witam! Jestem Mateusz, trafiłem tutaj ponieważ planuję samodzielnie zrobić kierownice do komputera
  46. 1 punkt
    Kolejna część kursu zakończona. Podobnie jak kolega @leepa79 również wykorzystałem krańcówki oraz czujnik HC-SR04. Z tym, że u mnie krańcówki wykrywają przeszkody przed robotem, a HC-SR04 pomaga nie wjechał w przeszkody tyłem. Tutaj kod: #define R_LIGHT_SENSOR A0 #define L_LIGHT_SENSOR A1 #define L_SIDE_SENSOR A2 #define R_SIDE_SENSOR 12 #define L_PWM 5 #define L_DIR 4 #define R_PWM 6 #define R_DIR 9 #define PWM_MAX 165 #define BUZZER 10 #define DIODA 13 #define ROZNICA_MIN -400 #define ROZNICA_MAX 400 #define trigPin 8 #define echoPin 7 bool START = false; //zmienna dla procedury startu void setup() { //konfiguracja pinów mostka H pinMode(L_DIR, OUTPUT); pinMode(R_DIR, OUTPUT); pinMode(L_PWM, OUTPUT); pinMode(R_PWM, OUTPUT); pinMode(DIODA, OUTPUT); pinMode(L_SIDE_SENSOR, INPUT_PULLUP); //koniguracja pinu jak przyckiski pinMode(R_SIDE_SENSOR, INPUT_PULLUP); randomSeed(analogRead(5)); //inicjalizacja generatora liczb losowych //konfigutacja pozostałych elementów pinMode(BUZZER, OUTPUT); digitalWrite(BUZZER, 0); //wyłączenie buzzera digitalWrite(DIODA, LOW); //wylaczenie diody pinMode(trigPin, OUTPUT); //Deklaracja pinów dla czujnika zbliżeniowego pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { int odczytLewy = analogRead(L_LIGHT_SENSOR); //odczytanie wartości z lewego czujnika int odczytPrawy = analogRead(R_LIGHT_SENSOR); //odczytanie wartości z prawego czujnika int roznica = odczytLewy - odczytPrawy; int los = random(5, 40) * 10; //wylosowanie liczby dla czasu obrotu int randomSpeed = random(2, 6) * 10; //wylosowanie predkosci jazdy do przodu if (roznica < ROZNICA_MIN) { //ewentualna korekcja skrajnych warotści róznic roznica = ROZNICA_MIN; } else if (roznica > ROZNICA_MAX) { roznica = ROZNICA_MAX; } int zmianaPredkosci = map(roznica, ROZNICA_MIN, ROZNICA_MAX, -40, 40); //zmienna pozawalająca przeliczenie odczytów z czuników na zmianę prędkości silnikó if (START == true) { //sprawdzenie warunku dla procedury staru leftMotor(30+zmianaPredkosci); //korekty prędkości zależnie od natężenia światła rightMotor(30-zmianaPredkosci); if (digitalRead(L_SIDE_SENSOR) == LOW) { //jeśli przeszkoda zostanie wykryta po lewej stronie int odleglosc = zmierzOdlegosc(); //zmienna odczytująca dystans z czujnika US if (odleglosc > 30) //jeśli odległość jest większa niż 30 cm to robot zdąży wykonać pełny zadany ruch { leftMotor(-40); rightMotor(-40); digitalWrite(BUZZER, 1); delay(1000); } else { while (odleglosc > 8) //jeśli odległość mniejsza niż 30 cm sprawdzanie kolejnych odległości do momentu osiągnięcia wartości 8 cm { leftMotor(-40); rightMotor(-40); digitalWrite(BUZZER, 1); odleglosc = zmierzOdlegosc(); //zamiana wartości odległości delay(50); } } //obrót w miejscu w prawo leftMotor(randomSpeed); rightMotor(-randomSpeed); digitalWrite(BUZZER, 0); delay(150 + los); //koniec warunku, wracamy do jazdy prosto } if (digitalRead(R_SIDE_SENSOR) == LOW) { //jeśli przeszkoda zostanie wykryta po prawej stronie //jedź wstecz i wydawaj dźwięk int odleglosc = zmierzOdlegosc(); //powtarzamy co w poprzednim warunku if (odleglosc > 30) { leftMotor(-40); rightMotor(-40); digitalWrite(BUZZER, 1); delay(1000); } else { while (odleglosc > 8) { leftMotor(-40); rightMotor(-40); digitalWrite(BUZZER, 1); odleglosc = zmierzOdlegosc(); delay(50); } } //obrót w miejscu w lewo leftMotor(-randomSpeed); rightMotor(randomSpeed); digitalWrite(BUZZER, 0); delay(150 + los); //koniec warunku, wracamy do jazdy prosto } } else if (odczytPrawy < 50) { //procedura startu po mocnym naświetleniu prawego czujnika START = !START; sygnalizacjaUruchomienia(); //wywołanie funkcji sygnalizującej uruchomienie BUZZEREM } else { //miganie diody sygnalizującej gotowość do startu MiganieNaGotowosc(); //wywołanie funkcji migającej diodą gotowości } } void leftMotor(int V) { //funkcja odpowiedzialna za sterowanie lewym silnikiem if (V > 0) { //jeśli wartość prędkości więszka od 0 V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(L_DIR, 0); //do przodu analogWrite(L_PWM, V); //zadanie prędkości } else { V = abs(V); //wyciągnięcie wartości bezwzględnej V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(L_DIR, 1); //do tyłu analogWrite(L_PWM, V); //zadanie prędkości } } void rightMotor(int V) { //to samo co wyżej tylko dla prawego if (V > 0) { V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(R_DIR, 0); analogWrite(R_PWM, V); } else { V = abs(V); V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(R_DIR, 1); analogWrite(R_PWM, V); } } void StopMotors() { //zatrzymanie silników analogWrite(L_PWM, 0); analogWrite(R_PWM, 0); } int zmierzOdlegosc() //funkcja dla mierzenia odległości przez czujnik SC { long czas, dystans; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); czas = pulseIn(echoPin, HIGH); dystans = czas / 58; return dystans; } void sygnalizacjaUruchomienia() { //sygnalizacja dźwiękowa startu int i = 0; for (i; i < 3; i++) { digitalWrite(BUZZER, HIGH); delay(200); digitalWrite(BUZZER, LOW); delay(200); } } void MiganieNaGotowosc() { //funkcja odpowiedzialna za miganie diodą gotowości digitalWrite(DIODA, HIGH); delay(100); digitalWrite(DIODA, LOW); delay(100); } A tutaj film:
  47. 1 punkt
    Fajny robot . Oryginalny pomysł na "pancerz", nigdy nie widziałem takiego rozwiązania.
  48. 1 punkt
    Artykuł dość ciekawy choć prawdę mówiąc spodziewałem się trochę lepszych opisów poszczególnych składowych. Tak naprawdę z artykułu w ogóle nie wynika czym są dane na wykresach w jaki sposób zostały zebrane itp. Mnie zaciekawił mechanizm anti-windup, ale nie dowiedziałem się w ogóle czym jest i jak został zrealizowany. Ciekawie natomiast zrealizowałeś filmik z pokazaniem poszczególnych składowych, ale tak jak napisałem wcześniej zbyt mało szczegółów i podstawowych informacji co z czego wynikało jak np. początkowe nastawy wynikające z symulacji. W jaki sposób została przeprowadzona symulacja, w jakim środowisku, na podstawie jakich danych. Myślę, że te informacje w znacznym stopniu wzbogaciłyby ten artykuł.
  49. 1 punkt
    Jakiś czas temu na forum zaprezentowałem projekt procesora zrealizowanego na układzie FPGA. Był to układ zrealizowany na dwóch płytkach Elbert v2. Aby go uruchomić należało wykonać dość sporo pracy. Dzisiaj prezentuję pierwszą wersję układu DCE Q816, czyli bezpośredniej kontynuacji poprzedniego projektu. Można powiedzieć, że pierwsza wersja Q818 to tak naprawdę Q816 zrealizowany tylko na jednej płytce Elbert v2. Układ jest w pełni kompatybilny z poprzednim projektem oraz posiada identyczną listę rozkazów. Na ten moment nie będę skupiał się na budowie procesora, ponieważ jest ona praktycznie identyczna jak w układzie Q816. Jedyną różnicą jest to, że pamięć ROM oraz procesor zaimplementowane została na tym samym układzie FPGA. W związku z tym każdy, kto posiada płytkę Elbert v2 może pobrać projekt, który dostępny jest tutaj, a następnie uruchomić procesor Q818 w swoim domu. Po implementacji projektu na płytce FPGA powinniśmy zobaczyć następujący efekt świetlny. Należy również wspomnieć, że porty procesora skonfigurowane zostały w następujący sposób. przełączniki DIP Switch - wejście IN procesora (logika odwrotna) przycisk SW1 - RESET port P1 - wyjście OUT1 procesora diody LED - wyjście OUT2 procesora Programowanie procesora odbywa się poprzez zmianę zawartości pamięci ROM procesora. Aby tego dokonać musimy otworzyć plik ROM.vhd i następnie wpisać binarną zawartość kolejnych komórek pamięci. Najmłodsze 5-bitów to rozkaz dla procesora. Kolejne 8 to tzw. dana bezpośrednia, którą możemy przesłać do innych rejestrów. Poniżej umieszczam spis dostępnych rozkazów procesora oraz instrukcje dla ALU zapisywane w rejestrze C. Na ten moment jest to pierwsza wersja układu Q816 w przyszłości postaram się o uporządkowanie samego kodu, jak i dodanie kolejnych funkcji. O zmianach i kolejnych wersjach postaram się informować w komentarzach do tego posta.
  50. 1 punkt
    Ogólnie dobrze myślisz, dobrze liczysz oporniki, prądy itd, ale zapomniałeś o mocach traconych na ciepło. O tym zwykle się zapomina robiąc pierwsze w życiu podejścia do projektowania i będąc zapatrzonym w prądy i (osobno) napięcia. Wybrane przez Ciebie tranzystory rzeczywiście potrafią przepuścić 1A przez kolektor i to jest pułapka w którą wpadłeś mając klapki na oczach. To małe, plastikowe pypcie, które nie są przeznaczone do grzania się. Ich rezystancja termiczna 200°C/W (typowa dla tego typu obudów) oznacza, że każdy Wat mocy wydzielony w strukturze krzemowej spowoduje jej podgrzanie o 200°C. No, to jakby zamknąć się w termosie i rozpalić ognisko. Ponieważ na pewno nie chcesz by tranzystorek miał w środku więcej jak 80°C (przy temperaturze w pokoju załóżmy 20°C) to prosty wniosek, że nie możesz dopuścić do strat większych niż jakieś 0.3W. Dla przypomnienia: moc ta bierze się z sumy iloczynów wszystkich porądów i napięć na tranzystorze. A teraz wróć do wykresów i zacznij od początku. Wzmocnienie dla prądu 800mA firma gwarantuje ok. 30. Są tam co prawda trzy linie i jedna obiecująco szybuje na wysokości ok. 80, ale jeśli dobrze rozumiem dotyczy ona tranzystorów z najwyższej grupy (przyrostek "-16") a o takich nie piszesz. Co gorsza, cały wykres został zrobiony dla Vce=2V a to oznacza, że tranzystor jest w zasadzie jeszcze w obszarze pracy liniowej. Proste obliczenie i 2V*800mA=1.6W co powoduje szybkie stopienie struktury i nieodwracalne uszkodzenie elementu. Ponieważ bardzo tego nie chcesz, musisz go przesterować znacznie bardziej co wiąże się ze znacznym wzrostem prądu bazy względem przypadku pracy jako wzmacniacz liniowy. Wykresy pokazujące napięcie nasycenia (czyli to czego tygrysy potrzebują najbardziej gdy robią klucze tranzystorowe) bazują już na wzmocnieniu.. 10. Wtedy masz Uce(sat) rzędu 250mV, co dla przy prądzie 800mA daje rokujące 0.2W. Niestety, prąd bazy też nie jest "niewidzialny". Przy wzmocnieniu 10 musisz do bazy wepchnąć 80mA podnoszące Ube na pewno powyżej 1V, co daje nam dodatkowe 0.08A*1V=80mW dodające się do ogólnej mocy strat. Jesteś już zatem na poziomie niebezpiecznie bliskim (0.28W) wyznaczonego limitu 0.3W i Twoje biedne BC639 będą parzyć w palce nawet przy założeniu, że będziesz umiał je dobrze wysterować. A niestety, prądu 80mA nie uzyskasz z pinów Arduino, zatem - kolejny stopień, tym razem na jakimś mniejszym pnp? Zabawa powoli traci sens.. Nauka z tego jest taka, że biorąc pod uwagę osobno parametry wyczytane z karty katalogowej czasem sprawy wyglądają dobrze, ale gdy zauważysz, że to wszystko skupia się w danym elemencie jednocześnie, to zwykle wychodzisz gdzieś poza krótką kołderkę (poczytaj o tzw. SOA - Safe Operating Area tranzystorów, nie jest ograniczone jedynie maksymalnym napięciem i prądem, ale bardzo poważnie mocą). Ogólny wniosek jest prosty: elementy dobierasz z bardzo dużymi marginesami. Jeżeli potrzebujesz tranzystora pracującego z 800mA prądu stałego, to bierzesz taki umiejący 3-5A. Obudowa jego będzie już przystosowana do oddawania ciepła i masz pewność, że nie będziesz zbliżał się do jego katalogowych ograniczeń, gdzie zwykle większość parametrów leci na łeb. Po drugie sprawdzasz warunki pracy i wymagane sterowanie w tych warunkach. Ze swojej strony proponuję jakieś MOSFETy. Nawet te zupełnie małe nie potrzebują w takiej aplikacji żadnego prądu z pinu więc problem dodatkowego drivera bazy znika. 5V otrzymywane z typowego Arduino wystarcza także do dobrego otwarcia w miarę nowego MOSFETa więc nawet z napięciem sterującym nie musisz podjeżdżać do góry. Wybierz coś ze sklepu i pokaż swój typ, w miarę możliwości skrytykujemy dokumentnie Albo znajdź jakieś bipolarne (jeżeli jesteś do nich naprawdę przywiązany), dla których te 0.8A to będzie kaszka z mleczkiem (20-30% tego co mogą?) i gdzie umieją zachować jeszcze jakieś sensowne wzmocnienie (100?). Wtedy policz prądy baz i jeśli wyjdzie 10mA lub mniej, procek będzie bezpieczny i możesz zaczynać budowę. --------------------------------------------------- EDIT: Schemat, mimo że urąga wszelkim regułom rysowania tego typu dokumentacji, jest topologicznie poprawny. Następnym razem postaraj się przynajmniej zrobić to tak, by sygnały płynęły z lewej na prawą, masa zasilania była na dole a plus na górze. Fotorezystor ma swój symbol (i nie jest to kółko), Arduino, taśmę LED i odbiornik podczerwieni powinieneś narysować w formie prostokątów z sygnałami po lewej i/lub prawej stronie i zasilaniami ew. na górze (plus) i na dole (masa). Obecny twór wygląda jakbyś próbował mówić do nas po czesku - da się zrozumieć, ale zabawy (a co gorsza nieporozumień) przy tym sporo..
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...