Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 30.03.2020 w Posty

  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
    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
  3. 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
  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
  7. 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).
  8. 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
  9. 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.
  10. 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
  11. 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
  12. 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.
  13. 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
  14. 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
  15. 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.
  16. 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.
  17. 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.
  18. 2 punkty
    Kochani! Moja wariacja na temat (koszt <0,5PLN/sztuka, czas operacyjny 100s/szt): wszelkie uwagi mile widziane...
  19. 2 punkty
    Zajrzyj do działu Projekty - DIY - może coś ciekawego dla siebie znajdziesz.
  20. 2 punkty
    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:
  21. 2 punkty
    Kochani! Walczymy... https://covidchallenge.pl/ życzę dobrych pomysłów i skutecznych realizacji!
  22. 2 punkty
    Warto wiedzieć co się lutuje i jak to działa . Niektóre zagadnienia z kursu lutowania są na poziomie kursu elektroniki 2 . Dlatego moim zdaniem najpierw lepiej zrobić kurs elektroniki 2.
  23. 2 punkty
    Dobra po paru dniach walki udało się uruchomić. Płytka pinguje, serwer http i klient MQTT działa. Wnioski: nie można ufać w to co generuje Stm32CubeMX. Złe piny Brak ustawienia stałego IP mimo że w konfiguratorze ustawiłem. Gdyby ktoś miał podobne problemy służę pomocą.
  24. 1 punkt
    Do tego używa się od zawsze (w modelarstwie, szybownictwie, lotnictwie) barometrów. Precyzja dzisiejszych MEMSów wystarcza do określania wysokości z rozdzielczością 10cm. Oczywiście trzeba zachować higienę pracy takiego czujnika: odpowiedni montaż, separacja od przepływów powietrza i ciśnień dynamicznych, ale daje się. Zacznij od poczytania o tzw. krzywej barometrycznej: https://en.wikipedia.org/wiki/Barometric_formula Już dawno temu przyjęto pewien wykładniczy model atmosfery i z tego wyszły dość piętrowe wzory do liczenia wysokości: https://keisan.casio.com/exec/system/1224585971 Każdy w miarę nowy czujnik tego typu (np. BMP180 czy 280) ma wbudowane filtry i tryby pracy w których oddaje pojedyncze Paskale ciśnienia, a na 1 metr wysokości zmienia sie ono mniej więcj ok. 12Pa więc jest nieźle. To oczyiwście nie oznacza, że dokładność jest taka (bo zmiany temperatury, bo zmiany zasilania, bo szumy, bo ciśnienia dynamiczne na platformie latającej), ale i tak jest moim zdaniem dobrze. Nie od czapy płytki służące do określania położenia w przestrzeni tego typu platform mają na pokładzie, oprócz obowiązkowych akcelerometrów i żyroskopów, także barometry: https://botland.com.pl/pl/czujniki-9dof-imu/8298-waveshare-imu-10dof-mpu9255-bmp280-3-osiowy-akcelerometr-zyroskop-i-magnetometr-oraz-barometr.html https://botland.com.pl/pl/czujniki-9dof-imu/5728-pololu-altimu-10-v5-zyroskop-akcelerometr-kompas-i-wysokosciomierz-i2c-3-5v.html Do poprawnego, zgodnego ze sztuką policzenia wysokości potrzebujesz ciśnienia na poziomie morza (to ono jest podawane w mapach/prognozach meteo nawet dla miejsc sporo oddalonych od poziomu 0m npm, np. dla Wawy czy Krakowa) i temperatury. Wtedy odczyt aktualnego ciśnienia z czujnika daje po przeliczeniu wysokość, ale jeśli Ty potrzebujesz do zabawy dronem wysokości względem punktu startu (tzw. AGL - Above Ground Level, w odróżnieniu od AMSL - Above Mean Sea Level) to wystarczy, że będziesz zerował się na trawie a potem przeliczał wg jakiegoś bardzo prostego, nawet liniowego współczynnika. Przecież i tak nie potrzebujesz więcej jak 100-200m powyżej poziomu lotniska a wtedy zaginania wykładniczej krzywej barometrycznej nawet nie widać. Loty są zwykle krótkie, kilkunastominutowe więc i naturalnych zmian ciśnienia za bardzo nie doświadczysz ani ze względu na zmianę warunków meteo ani ze względu na zmianę położenia na Ziemi. Niektórzy próbowali kiedyś sonarów ultradźwiękowych skierowanych w dół - to pomaga przy wysokościach poniżej powiedzmy 5-10m np. przy lądowaniu, gdy różnica 1m może dzielić katastrofę od miękkiego lądowania, ale to raczej słabo działa - trawa i ziemia źle odbija sygnał, szum śmigieł i turbulencje w strumieniach zaśmigłowych dodają śmieci do echa a pochylenia platformy konieczne przy manewrowaniu wprowadzają dodatkowe błędy pomiaru odległości. Można poeksperymentować, ale barometr to podstawa. Trzeba tylko pamiętać, że MEMSy w swoich najczulszych trybach są wolne. Żeby dostać 1Pa na LSB trzeba zwyczajnie kolejny na wynik poczekać np. sekundę i na pewno nie zadziała to przy szybkich manewrach, jakichś akrobacjach czy wyścigach itp.
  25. 1 punkt
    Fajnie że udało się czasem łatwiej jest przeinstalować system niż dochodzić co się stało.
  26. 1 punkt
    @gwidon witam serdecznie na forum i pozostaje mi życzyć powodzenia w nauce @dobson212 również serdecznie witam na forum fajnie, że dobrze wykorzystujesz czas.Choć atmosfera jest faktycznie nieprzyjemna to dobrze nie zamartwiać się i zająć czymś pożytecznym. Hobby połączone z nauką na pewno do pożytecznych można zaliczyć. @UnlimitedPL cześć Michale! Cieszę się, że trafiłeś tu na forum, zwłaszcza że masz spore doświadczenie. Powodzenia w realizacji planów i zachęcam Cię do aktywności na forum
  27. 1 punkt
    Witam wszystkich, Mam na imię Michał. Z zawodu jestem programistą i mam w tym prawie już 10 letnie doświadczenie. Od jakiegoś czasu zainteresowała mnie elektronika (jak ten cały hardware jest zbudowany i jak to w ogóle działa). Postanowiłem kupić Arduino i zacząć przygodę z elektroniką i mikrokontrolerami. Niestety nie mam zbyt dużej wiedzy z zakresu elektroniki więc czas nadrobić zaległości W programowaniu odniosłem duże sukcesy, chciałbym to powtórzyć w elektronice. Postanowiłem zbudować UAS'a i z tego też powodu znalazłem się na tym forum - zapewne będę potrzebował paru informacji, które po rozpisaniu planu działania z projektem wyszły na jaw. Oczywiście chętnie pomogę innym w zakresie programowania Pozdrawiam wszystkich, miłego popołudnia
  28. 1 punkt
    MG 996R ...właśnie okazało się że miałem to samo. Na szczęście miałem drugi serwomechanizm, który potwierdził wadę pierwszego. Dzięki za info!
  29. 1 punkt
    Czołem wszystkim chciałbym zrozumieć podstawy elektryki/ elektroniki, mam 33 lata i zero doświadczeń w tym względzie, traktuję to jak wyzwanie i doświadczenie za razem, cieszę się, że trafiłem na taki kurs, życzę powodzenia wszystkim użytkownikom i proszę o wyrozumiałość jak będę zadawał pytania na poziomie podstawówki
  30. 1 punkt
    witam wszystkich. Mam na imię Paweł. na co dzień pracuję jako elektryk w firmie która przerabia busy na autobusy. jednak w wolnych chwilach robię różne rzeczy związane z elektoniką. mam nadzieję, że znajdę na forum mnóstwo przydatnych materiałów oraz porady fachowców. POZDRAWIAM
  31. 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!
  32. 1 punkt
    Witam wszystkich! Mam na imię Katarzyna i mam 26 lat. Studiuję dziennie na kierunku biocybernetyka i inżynieria biomedyczna. Do czasu rozpoczęcia studiów nie miałam tak naprawdę żadnego pojęcia o elektronice. Niedawno zaczęłam przedmiot, na którym pracujemy na Arduino. Bardzo przeszkadzały mi moje braki w fundamentalnej wiedzy dot. elektroniki, więc szukałam w internecie kursu czy open source'owego podręcznika o elektronice - znalazłam kurs podstaw elektroniki Forbot, który mam nadzieję będzie tylko początkiem mojej "przygody" z elektroniką ;) Pozdrawiam serdecznie.
  33. 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
  34. 1 punkt
    Czyli jest możliwość. o właśnie: w niektórych sytuacjach, a tutaj akurat z taką niektórą sytuacją nie mamy do czynienia. A właśnie w ESP8266 funkcja loop() powinna się skończyć jak najszybciej, aby zostawić czas na komunikację WiFi i inne ważne sprawy którymi się ESP w międzyczasie zajmuje. Mamy natomiast do czynienia z zewnętrzną aplikacją (termik4temp konkretnie), która wysyła pakiet udp i oczekuje odpowiedzi - i jest to przy okazji odpowiedź na Twoje uwagi: Ano dlatego, że tak to sobie autor owej aplikacji wymyślił i tak to działa... Gdybyś zadał sobie trudu i sprawdził zobaczyłbyś, że ten kod jest po prostu żywcem przepisany z zamieszczonego przez autora termika kodu na arduinopolska. Owszem - kod jest fatalny, ale skąd kolega wątkotwórca (który się na tym niespecjalnie zna) miałby o tym wiedzieć? Tak że następnym razem, kolego @Jarewa sprawdź o czym się tu mówi a potem zabieraj głos w obronie delajów i zależności wysyłania pakietów od ich otrzymania. Bo na pewno delay(5000) nie wpłynie pozytywnie na responsywność.
  35. 1 punkt
    Cześć wszystkim, Jestem Bartek i studiuje informatykę na Politechnice Poznańskiej. Swoją przygodę z elektroniką zacząłem od arduino. Chcę tutaj zdobywać coraz to nową wiedzę
  36. 1 punkt
    Ja podłączałem nawet 2 i działało . Ale bezpieczniej podłączyć do vin.
  37. 1 punkt
    @BarteQxQ taki był plan Mam nadzieję, że dzięki tym materiałom rodzice i nauczyciele też chętniej sięgną po micro:bita. Na pewno część osób, które uczyło się z naszych kursów elektroniki lub Arduino ma już swoje dzieci, z którymi mogłoby wykonać ćwiczenia z tego kursu. Gorąco zachęcam
  38. 1 punkt
    No to trochę nie bardzo... ten termometr nie pracuje z dokładnością jednego miejsca po przecinku - masz do wyboru albo 1/8 stopnia, albo 1/16 stopnia. Pomijając ten drobiazg... mnożysz w nadajniku temperaturę przez 10 i masz wymaganą dokładność (pod warunkiem ustawienia termometru na 1/16 stopnia). Cały czas operujesz takim "decystopniem", a dopiero przy wyświetlaniu zamieniasz to na stopnie. Ponieważ wyświetlaniem zajmiesz się później (kiedy będzie co wyświetlać), na razie się nim nie przejmuj.
  39. 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.
  40. 1 punkt
    Witam wszystkich, jestem Dyziek - trafiłem tu ponieważ postanowiłem zapoznać się i zacząć przygodę z Arduino
  41. 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
  42. 1 punkt
    @SOYER cieszę się, że konkurs się spodobał! Mam w planach inne akcje tego typu - zobaczymy jak sprawdzą się też konkursy innego typu, wszystko w swoim czasie. Teraz mogę zapowiedzieć, że w następnym tygodniu ruszymy z kolejną edycją sprawdzonej już akcji, w której rozdajemy rabaty do Botlandu za opis każdego DIY
  43. 1 punkt
    @MKJB, nie napisałeś wprawdzie o odbiorach Twoich maseczek, mógłbyś napisać dla kogo będą przeznaczona? Czy robisz to prywatnie, dla siebie? Ja mam pytanie, co to za materiał, który wykorzystałeś? Plexi 0,5mm? Pozdrawiam
  44. 1 punkt
    No i..? Jakieś wnioski z tego co napisałem wcześniej? Podsumowałeś prądy na linii +5V? Starczy wydajności stabilizatora pokładowego? Czekamy na odpowiedź. A teraz sprawa głównego źródła zasilania: masz 5 silników z których każdy bierze w czasie pracy "w powietrzu" ok 1W a przy obciążeniu (tym słabo zaprojektowanym mechnicznie i ciężkim ramieniem) pewnie z 3-4W i planujesz zasilać całość z USB dającego wszystkiego razem 2.5W? Masz już jakieś doświadczenia w zakresie takich projektów "na oparach"? Próbowałeś swoich sił np. w przejeździe samochodem z Wawy do Gdańska na 1 litrze paliwa albo przejechaniu etapu Tour de France na 1 batoniku i szklance wody? Wtedy można by uznać, że w trudne rzeczy pakujesz się świadomie ale jeśli nie (a na to stawiam), to wygląda na mocne niedoszacowanie potrzeb, nie uważasz? Od razu radzę kupić mocny zasilacz min. 6..7.5V/4..5A i przestać sie cackać, bo inaczej cały czas włożony w projekt, jego planowanie, montaż i oprogramowanie zmarnujesz już na etapie nierealnych założeń. https://www.tme.eu/pl/details/rps-30-7.5/zasilacze-otwarte/mean-well/ Pamiętaj, że te silniki mają sensowną moc przy napięciu 5-6V a na tanich mostkach jakie wybrałeś spada z 1.5V grzejąc je przy okazji niemiłosiernie. Także nawet jeśli przy nich zostaniesz, zacznij myśleć o płytce drukowanej z dużymi polami miedzi lub blaszkach na radiatory. Niestety, jeśli zaoszczędzisz w jednym miejscu to w drugim przepłacisz. Na Twoim miejscu zmieniłbym niewygodne scalaki (których jedyną zaletą jest dziś cena) wymagające wlutowania w dobrze zaprojektowaną termicznie płytkę (bo chyba nie sądziesz, że zrobisz układ mocy na płytce stykowej?) na gotowe moduły nowoczesnych driverów, np. takie: https://botland.com.pl/pl/sterowniki-silnikow-dc/546-pololu-drv8833-dwukanalowy-sterownik-silnika-108v-12a.html Acha i jeszcze sprawa PWM: będziesz potrzebował mnóstwa sygnałów do sterowania silnikami. Jak chcesz rozwiązać płynne sterowanie prędkością przy 5 mostkach i 10 PWMach za pomocą tego małego Arduino? Nie skupiaj się jedynie na połączeniach elektrycznych ale także myśl o tym, jak ma to działać gdy już to zmontujesz hardware i przyjdzie do pisania programu.
  45. 1 punkt
    Cześć, jestem początkująca w temacie elektroniki. Będę za niedługo kończyć Kurs Elektroniki I i zastanawiam się co dalej po nim zrobić. Czy myślicie, żeby chwycić się za kurs lutowania czy najpierw zrobić Kurs Elektroniki II i dopiero po tym kurs lutowania? Będę wdzięczna za wszelką pomoc, pozdrawiam :)
  46. 1 punkt
    Witam wszystkich Jestem Patryk, mam 29 lat, zaczynam programować w Pythone oraz bawię się elektroniką. Mam nadzieję, że dowiem się na tym forum wielu ciekawych rzeczy. Pozdrawiam
  47. 1 punkt
    @ElectricBird witam na forum Na pewno wskazane byłoby przejść najpierw przez drugi poziom kursu elektroniki, a później zabierać się za lutowanie, ale nie jest to jedyna droga. Dasz też sobie rade z lutowaniem bezpośrednio po pierwszym poziomie. Możesz też rozważyć jeszcze inną opcję tj. rób oba kursy równolegle (elektronika 2 i lutowanie). Jeśli nie będziesz czegoś rozumiał w kursie lutowania to szybko nadrobisz materiał w elektronice 2
  48. 1 punkt
    No tak... i chyba wszystko jasne. Przeczytaj najpierw to: https://arduino.stackexchange.com/questions/682/is-using-malloc-and-free-a-really-bad-idea-on-arduino Jeśli uświadomisz sobie, że wszystkie operacje na obiektach klasy String sprowadzają się do malloc/realloc/free powinieneś już wiedzieć o co chodzi. Nigdy nie używaj w tego typu programach żadnych dynamicznych przydziałów pamięci poza stosem. Czyli odpadają wszelkie String, różne fajne vectory i tak dalej. Nie stosujesz String tylko bufory (mogą być statyczne, mogą być alokowane na stosie). Nie używasz readString tylko readBytes (to się tyczy również readStringUntil i wszelkich operacji alokujących sobie radośnie pamięć). Nie używasz wektorów tylko tablic. To o czym piszesz to typowy objaw braku pamięci. Kiedyś nie było bo program balansował na granicy dostępnego ramu - teraz jest bo granicę przekroczyłeś. Pomyśl o przejściu na coś większego niż atmega (i nie mówię tu o 2560). Może jakiś większy STM? Może ESP32? ESP8266 ma chyba za mało pinów do tego co robisz... ESP32 możesz śmiało programować w Arduino IDE, STM-y podobno też (nie sprawdzałem). Ale to też nie znaczy, że możesz sobie szafować RAM-em jak na pececie - bo nawet ESP z jego półmegową pamięcią możesz łatwo wysadzić w powietrze jakimiś wyciekami. Mam nadzieję że pomogłem...
  49. 1 punkt
    Ki-Cad to program, a właściwie zbiór programów służących do tworzenia schematów elektrycznych i obwodów drukowanych. Cechuje się dużą możliwością personalizacji interfejsu i posiada kompleksowy zestaw narzędzi pozwalający na przeniesienie pomysłu na gotowy projekt układu. Pełny program można pobrać ze strony producenta: https://kicad-pcb.org/. Pobieramy program, instalujemy go i otwieramy. Ten wpis brał udział konkursie na najlepszy artykuł o elektronice lub programowaniu. Sprawdź wyniki oraz listę wszystkich prac » Partnerem tej edycji konkursu (marzec 2020) był popularny producent obwodów drukowanych, firma PCBWay. Tworzenie projektu Po otwarciu programu ukaże się nam takie oto okno: Tworzymy nowy projekt klikając ikonę z niebieskim folderem i nadajemy mu nazwę. W naszym przypadku będzie to “poradnik-forbot”. Gdy stworzymy nasz projekt razem z nim utworzą się dwa pliki. Pierwszy z rozszerzeniem “.kicad_pcb” służy do projektowania fizycznej wersji układu(tj. rysowania ścieżek na obwodzie drukowanym, stawiania footprintów itp.). Drugi plik z rozszerzeniem “.sch” służy do tworzenia schematu ideowego naszego układu(tj. tworzenie logicznych połączeń, dodawanie logicznym reprezentacji układów itp.). Najprostszym sposobem na stworzenie projektu jest rozpoczęcie go od schematu ideowego, gdyż gdy stworzymy schemat ideowy na schemacie fizycznym automatycznie pojawią się połączenia między footprintami, które ułatwią nam rysowanie ścieżek. Schemat ideowy i dodawanie elementów Schemat ideowy stworzymy za pomocą edytora schematów “Eeschema”. Po otwarciu ukaże się nam taki widok: Po zapoznaniu się z interfejsem możemy wejść w “Ustawienia strony”, aby zmienić jej wymiary, autora, datę itp. W tym projekcie spróbujemy zrobić prostego, okrojonego klona Arduino Pro Mini. Projektowanie warto rozpocząć od postawienia portów zasilania , wykonujemy to poprzez otwarcie interfejsu oznaczonego jako “D”. W “Dodawanie portów zasilania” znajdziemy możliwe do dodania porty zasilania. W moim naszym przypadku użyjemy portu 5V i GND. (widok po otwarciu okna “Dodawanie portów zasilania”) Dodanie portów zasilania w taki sposób jest istotne, aby program mógł poprawnie zinterpretować nasz układ. Gdy już mamy porty zasilania czas dodać elementy elektryczne, klikamy na przycisk “Dodaj Symbol”, ukaże się nam takie oto okno: Analogiczny do interfejsu “Dodawanie portów zasilania”, jednak z większą ilością zakładek. Najpierw dodamy ATmega 328p do naszego schematu. Jest to mikrokontroler używany w Arduino Pro Mini. Szukamy zakładki MCU microchip ATmega, rozwijamy ją i szukamy “ATmega328p-AU”. Skrót AU oznacza, że ten mikrokontroler jest w obudowie TQFP-32, taka sama jak w Arduino Pro Mini. Zaznaczamy i klikamy “ok”, aby dodać element do schematu. Taki element możemy podczas przesuwania obracać klawiszem R ,a także najeżdżając kursorem na element bądź napis kliknąć M ,aby poruszać elementem. Jest to wygodniejsze niż zaznaczanie gdyż zaznaczając możemy przez przypadek oznaczyć także inny element lub połączenie. Następnie, tak samo jak mikrokontroler dodajemy potrzebne rezystory , kondensatory oscylatory itd. Łączymy za pomocą narzędzia “Dodawanie połączeń”. Dodawanie Etykiet Podczas procesu łączenia elementów warto pomyśleć o dodaniu Etykiet. Etykiety pozwalają na połączenie wszystkich pinów do których mają być przyłączone. W ten sposób tworzy się sieć połączeń. Ma to dwie główne zalety w porównaniu do tradycyjnych połączeń. Po pierwsze schemat staje się bardziej czytelny, gdyż przy dużej ilości połączeń może wyjść nieczytelne spaghetti połączeń. Po drugie nadaje to nazwę naszej sieci połączeń, przyda się nam to szczególnie w trakcie projektowania samej PCB. Aby utworzyć Etykietę naciskamy przycisk “dodaj Etykietę globalną”. Nazywamy ją w polu “Etykieta” i umieszczamy na schemacie. Utworzyliśmy tym samym typ etykiety np.”VCC”. Aby dodać kolejną etykietę robimy to samo, tylko nie wpisujemy nazwy w pole etykieta, ale je rozwijamy. Wewnątrz powinna się znajdować nasza etykieta “VCC” wybieramy ją i klikamy “ok”. Tym sposobem dodaliśmy naszą etykietę do schematu. Podobnie jak elementy, etykiety można obracać klawiszem “R”. Teraz, gdy przyłączymy te etykiety do określonych pinów, program połączy je w sieć o nazwie “VCC”. Właściwości elementów i znacznik "niepołączone" Zaznaczając element i klikając przycisk “E” możemy wejść w właściwości danego elementu. Możemy tutaj edytować różne parametry, takie jak ułożenie, wyśrodkowanie napisów itp. A także wpisać wartość naszego elementu( tak jak na rysunku poniżej, oscylator o wartości 16 MHz). Zwróćcie uwagę na znak zapytania obok oznaczenia, oznacza on jeszcze nie nadaną numerację tego elementu. Ważne jest by każdy element był oznaczony, możemy to zrobić za pomocą pewnego narzędzia, które przedstawię wam później. Może się tak zdarzyć że niektóre piny np. w mikrokontrolerze nie będą przez nas używane i do niczego ich nie podłączymy. Należy wtedy użyć narzędzia "znacznik niepołączone" i oznaczyć nim nasze nieużywane piny. (Wtedy program nie będzie wskazywał błędów) (Wygląd gotowego schematu z ATmega328p) Gdy nasz układ jest już połączony zostały nam tylko trzy kroki. Są nimi: numeracja elementów, przypisywanie footprintów do elementów i generowanie listy sieci. Numeracja elementów: Klikamy przycisk “Numerowanie symboli na schemacie”, ukaże nam się taki widok: Klikamy “Numeruj”, narzędzie automatycznie ponumeruje nam elementy na schemacie. Przypisywanie footprintów do elementów: Elementy na schemacie są tylko ideowe, więc trzeba przypisać do nich footprinty, czyli fizyczne miejsca dla elementów na obwodzie drukowanym. Robimy to za pomocą przycisku “Przypisywanie footprintów do symboli”. Następnie ukazuje się nam takie oto okno: W pierwszej kolumnie mamy listę folderów zawierających footprinty, w drugiej symbole z naszego schematu, a w trzeciej rozwinięty, aktualnie otwarty, folder z lewej kolumny. ATmega328p-AU ma już przypisany swój footprint, z uwagi na dostępny tylko ten konkretny model obudowy. Możemy to zmienić, lecz ta obudowa jest w pełni kompatybilna. Do reszty elementów musimy konkretne footprinty przypisać sami. Wyszukujemy w pierwszej kolumnie odpowiedni folder, zaznaczamy go i w trzeciej kolumnie wyszukujemy footprint, który jest nam potrzebny. Klikamy dwa razy lewy przycisk myszy, aby przypisać footprint do naszego symbolu. Jeśli potrzebujemy mieć wgląd w dokładny wygląd footprintu, możemy go zaznaczyć prawym przyciskiem myszy i wyświetlić jego fizyczne przedstawienie na płytce. (Wygląd okna z przypisanymi footprintami) Generowanie listy sieci Gdy już to skończymy musimy jeszcze wyeksportować listę sieci z naszego schematu do pliku , które program Pcbnew (Ten w którym robimy już fizyczny obwód) mógł odczytać nasz schemat. Klikamy więc po zamknięciu przypisywanie footprintów klikamy przycisk “Generowanie listy sieci”. Zaznaczmy zakładkę Pcbnew i klikamy “generowanie listy sieci” . Plik ten zostanie utworzony w folderze naszego projektu. Pcbnew i właściwe tworzenie układu drukowanego Następnie otwieramy program Pcbnew , aby rozpocząć właściwe tworzenie obwodu drukowanego. Po otwarciu programu ukaże się nam taki oto widok: Interfejs jest bardzo podobny do programu Eeshema. Domyślnie program obsługuje dwie warstwy miedzi (warstwa F i warstwa B). Możemy to zmienić wchodząc w “Ustawienia projektowe płytki”. Kiedy zapoznamy się z interfejsem “Pcbnew” możemy przystąpić do załadowania listy sieci, którą zrobiliśmy przed chwilą. Klikamy “Załaduj listę sieci”, ukaże się nam taki widok: Klikamy na ikonkę folderu w prawym górnym rogu i wybieramy naszą wcześniej utworzoną listę sieci. Następnie klikamy przycisk “Uaktualnij PCB”. Dzięki temu wszystkie footprinty, które dodaliśmy do schematu zostaną dodane do naszego obwodu drukowanego. Powinno to wyglądać mniej więcej tak: Jak widać wszystkie footprinty zostały dodane. Dodatkowo zostały utworzone linie pomocnicze, które mówią nam co powinno być sobą połączone na podstawie schematu. Jest to bardzo pomocne, jeśli chcielibyśmy coś dodać do naszego układu, ale nie usuwać istniejących footprintów i połączeń. Możemy jeszcze raz załadować listę sieci. Wtedy zostaną zaaplikowane poprawki, które wykonaliśmy na schemacie. Pamiętajmy także o opcji “Odbuduj połączenia wspomagające”, aby zostały one uaktualnione. Ustawienia obwodu drukowanego Zanim zaczniemy rysować ścieżki warto jeszcze dostosować ich parametry . Robimy to wchodząc w “Ustawienia obwodu drukowanego”. Możemy tam dostosować różne parametry naszego obwodu drukowanego, np.szerokość ścieżek, odległość między ścieżkami itp. oraz przypisać te właściwości do konkretnych sieci w naszym układzie. W naszym przypadku dodamy tylko dwie klasy sieci domyślną oraz zasilania(trochę grubszą z uwagi na większe możliwe prądy przepływające przez te ścieżki). Przypiszemy też klasę zasilania do sieci GND i 5V. Klikamy “ok” i od teraz program automatycznie przełączy nam właściwą szerokość ścieżki w zależności od sieci którą będziemy rysować. Skróty klawiszowe Pcbnew Przejdźmy do właściwego układania footprintów i rysowania ścieżek. Skróty klawiszowe są podobne jak w programie “Eeschema”, też klawisz “M” używamy aby przemieścić obiekt, “R” aby obracać obiekt. Ważny skrót klawiszowy to “V”, gdyż nim przełączmy między warstwami miedzi. Można też, gdy trzymamy obiekt tym klawiszem, przełożyć go na drugą stronę płytki oraz podczas rysowania ścieżki możemy utworzyć przelotkę. Jest to mała metalizowana dziura która pozwala na przejście wertykalne przez płytkę i np. połączyć elementy na dwóch różnych warstwach, stworzyć przejście pod ścieżką która nas blokuje na innej warstwie itp. Istnieje możliwość przełączania się tym klawiszem między warstwami, gdy nie jest zaznaczony żaden element. Strefy Warto pomyśleć o dodaniu warstw miedzi jako masę na całej dolnej warstwie naszej płytki. Nie tylko ułatwi to nam dołączanie elementów do uziemienia ale także zapewni proste ekranowanie układu. Robimy to za pomocą narzędzia “Dodaj strefy”. Naszym oczom ukaże się takie oto okno: Zaznaczamy warstwę “B.Cu” oraz wybieramy sieć “GND”, resztę ustawień pozostawiamy domyślne. Następnie klikamy “OK”. Potem fizycznie musimy narysować obrys strefy na naszym układzie. Strefa następnie zostanie dodana na całym obrysowanym przez nas obszarze. Musimy też pamiętać że podczas rysowania w obszarze strefy nie aktualizuje się on w czasie rzeczywistym i musimy po dokonaniu jakiś zmian nacisnąć klawisz “B”, aby na nowo wypełnić strefę (np. strefa usuwa się z utworzonych przez nas ścieżek, elementów oraz wypełniła puste miejsca na płytce) Po tym możemy już spokojnie połączyć wszystkie elementy układu. Oto efekt: (Gotowy układ z uruchomioną kontrolą DRC. Wszystko jest dobrze , nie ma błedów) Warto po zakończonej pracy sprawdzić układ kontrolą DRC, aby upewnić się że wszystko jest odpowiednio połączone, itp. Należy też pamiętać że : Ścieżki powinny zginać się pod kątem 45 stopni nie 90 stopni Napisy warstwy opisowej (np. C1 , R2 itp. zaznaczone kolorem zielonym) nie powinny się znajdować na padach lutowniczych naszych footprintów) (Przegląd 3D naszego układu) Po kliknięciu przycisku ALT+3 możemy włączyć widok 3D naszej płytki , aby zobaczyć jak wygląda i czy napisy są umieszczone czytelnie. Eksportowanie projektu Na końcu, aby wyeksportować naszą płytkę tak, aby fabryka PCB mogła ją zrobić należy wejść w “Rysuj”. Ukaże się nam takie okno. Zależnie od fabryki, w której będziemy chcieli wyprodukować płytkę, możemy użyć różnych formatów projektu. Zazwyczaj potrzeba plików w formacie GERBER. Zaznaczamy, więc warstwy jakie chcemy wyeksportować, wybieramy format wyjściowy i folder wyjściowy(jeśli tutaj nic nie wybierzemy program utworzy nam pliki w folderze projektu). Następnie klikamy “Rysuj”, a potem “Generuj pliki wierceń”, aby stworzyć pliki wierceń (wyświetli nam się podobne okienko w którym możemy wybrać format wyjściowy itp.). I takim sposobem stworzyliśmy swoją pierwszą płytę w KiCadzie. Dziękuję za uwagę! Aleksander Flont
  50. 1 punkt
    Dziękuje wszystkim za chęć Pomocy. Ostatecznie, okazało się, że serwo miało wadę fabryczną.
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...