Skocz do zawartości

Tablica liderów


Popularna zawartość

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

  1. 7 punktów
    Czasem patrzymy na dostępne na rynku płytki z mikrokontrolerami i myślimy sobie "ja bym to zrobił lepiej". Zazwyczaj nie mamy pretekstu żeby rzeczywiście tak zrobić, ale czasem tak się życie ułoży, że mamy okazję spróbować. Tak właśnie miałem z płytką firmy Feather M0 Basic firmy Adafruit i wydaje mi się, że wychodząc z oryginalnego projektu udało mi się dokonać kilku ulepszeń (ale także przyszło mi pogodzić się z paroma kompromisami). A zaczęło się od tego, że często używam w moich projektach mikrokontrolera SAMD21 w jego najmniejszej obudowie QFN32 i nieraz przydałaby się możliwość przetestowania układu zanim zamówi się płytkę. Niestety, płytki które posiadam nie wyprowadzają wszystkich pinów, więc testowanie za ich pomocą nie zawsze jest możliwe. Postanowiłem zatem zrobić swoją płytkę, ale dać jej standardowy układ pinów — padło na standard Adafruit Feather. Najbardziej rzucającą się w oczy polskiemu użytkownikowi wadą płytki Adafruita jest niewątpliwie cena. Niestety, produkcja w USA, koszty wysyłki, a także konieczność pokrycia wypłat dla armii ludzi piszących dokumentację i rozwijających oprogramowanie powoduje, że nie jest ona tania. Zatem pierwszym celem, który sobie postawiłem, jest takie zaprojektowanie nowej płytki, żeby można było ją wykonać jak najtaniej. Oczywiście od razu pojawiła się konieczność kompromisów — postanowiłem usunąć część układu odpowiedzialną za obsługę i ładowanie baterii — nie ma zatem gniazdka do baterii, a nóżka do której byśmy ją podłączali jest niepodłączona. Usunąłem też wszystkie komponenty, które nie są absolutnie niezbędne — nie ma zatem kwarcu, zamiast tego używany jest wewnętrzny oscylator, wyleciał przycisk reset, zastąpiony zworką bezpośrednio na płytce (trzeba tylko dotknąć czymś metalowym), poleciały też diody świecące — choć potem jedna wróciła. Oryginalna płytka używa mikrokontrolera w opakowaniu QFN48, ale ja potrzebowałem QFN32 — tańsze, ale też ma mniej nóżek. Na szczęście odrobina gimnastyki pozwoliła mi brakujące nóżki zastąpić takimi, które były niepodłączone w oryginalnej płytce. Ba, dodałem nawet trzy dodatkowe nóżki dostępne dla użytkownika: dwie analogowe i jedna zwykła. Została mi jedna nóżka, którą postanowiłem podłączyć do diody świecącej, aby mając gołą płytkę można było sobie chociaż pomrugać. Oczywiście i tu nie obyło się bez kompromisu — aby obsłużyć SPI musiałem poświęcić nóżki normalnie używane do debugowania — zatem albo debugujemy, albo używamy SPI. W pierwszej wersji płytki zostało mi dużo wolnego miejsca, a że koszty wysyłki płytek zależą od ich wagi, postanowiłem zmniejszyć tę wagę dodając parę losowej wielkości dziur. Kiedy przyszło do wybierania koloru płytki, podobieństwo do sera skłoniło mnie do wybrania koloru żółtego. A właśnie, wprowadziłem jeszcze jedno ulepszenie: dziurki na piny są ułożone w zygzak w taki sposób, że da się w nie wetknąć nóżki goldpinów bez konieczności lutowania. Ostatnią częścią, którą postanowiłem usunąć jest gniazdko USB. Nie ma się co dziwić, bo tylko są z nim same kłopoty — ludzie narzekają, że jest w złym miejscu, że się urywa jak pociągną za kabel, do tego jest to jedyna część wymagająca dziur w płytce — i podrażająca tym montaż.Tylko jak bez gniazdka USB będziemy naszą płytkę zasilać, o wgrywaniu do niej programów i obserwowaniu ich wyników już nie wspominając? Okazuje się, że da się zrobić "gniazdko" USB z samej płytki, po prostu wycinając ją we właściwy kształt i umieszczając w odpowiednich miejscach styki. Płytka musi wówczas też mieć odpowiednią grubość, ale na szczęście nie ma dzisiaj wielkich problemów z zamówieniem takich płytek (i wychodzą nawet taniej niż standardowe, z powodu mniejszej wagi). Zatem zaprojektowałem nową wersję, z gniazdkiem USB-C (jak szaleć to szaleć). W tej wersji dziury są tylko w miedzi, zamiast przez całą płytkę, bo wykoncypowałem sobie, że taką cienka i płaską płytkę mogę używać jako wizytówki, a do tego potrzebowałem po drugiej stronie miejsce na zamieszczenie wizytówkowych informacji. Niestety, kiedy płytki wreszcie przybyły (dzięki zawirowaniom czasoprzestrzennym po 4 tygodniach, odwiedziwszy po drodze Niemcy i Wielką Brytanię) okazało się, że co prawda mechanicznie gniazdko działa doskonale, ale prąd płytka dostaje tylko jeśli podłączę ją kablem USB 2.0, podłączona do portu USB-C kablem USB-C nie jest wykrywana przez komputer i w związku z tym nie dostaje zasilania. Czas zatem na poczytanie co tam w standardzie piszą — okazuje się, że wzmianka o rezystorach ściągających na nóżkach CC, którą zignorowałem, bo wydawała się dotyczyć tylko trybu OTG, jest jednak istotna. Rozczarowało mnie to trochę, bo nie tylko musiałem zaprojektować nową płytkę, ale jeszcze nie oszczędzam na liczbie komponentów — jedno gniazdko USB zastąpić będę musiał dwoma rezystorami. No ale rezystory przynajmniej są tanie i montowane powierzchniowo, zatem wziąłem się do pracy. Zrezygnowałem ostatecznie z pomysłu wizytówki, puste miejsce wypełniłem obszarem prototypowym, w którym można sobie wlutować własne elementy, a dziury są teraz już tylko narysowane. Poza tym dodałem dwie nóżki CC do gniazdka USB i podłączyłem do dwóch rezystorów 5.1kΩ. Przez chwilę jeszcze rozważałem użycie tylko jednego rezystora, bo większość kabli i tak używa tylko jednego pinu CC, ale okazuje się, że to właśnie jest błąd, który popełnili projektanci Raspberry Pi 4, a który spowodował problemy z bardziej zaawansowanymi kablami. Postanowiłem błędu nie powtarzać. Ostateczna wersja projektu wygląda tak: Na razie używam płytki do własnych eksperymentów i sprawuje się dobrze, ale zastanawiam się nad zamówieniem większej liczby już zmontowanych i zaprogramowanych płytek — mogą się przydać do prowadzenia warsztatów z CircuitPythona gdy epidemia się skończy.
  2. 4 punkty
    Użytkownik Reddita (DIY_Maxwell) miał drukarkę 3D, Raspberry Pi i dużo wolnego czasu - a oto efekt Źródło » https://www.reddit.com/r/raspberry_pi/comments/hm4s83/a_stopmotion_animation_i_made_using_raspberry_pi/
  3. 3 punkty
    Witam! Aktualizacja projektu: 1. Przyszły płytki pod enkodery, więc teraz pozycja układów w stosunku do osi silnika jest idealna 2. Zaimplementowałem wiele poprawek w oprogramowaniu układowym. 3. Pamięć EEPROM podłączona, więc teraz mam możliwość zapisu i odczytu danych kalibracyjnych dla danego układu silnik / enkoder 4. MPU6050 podłączony i mam już dostęp do danych z żyro i akcelerometru Plan na rozwój oprogramowania: 1. Dalsza optymalizacja oprogramowania (np użycie DMA do odczytu enkoderów oraz MPU). 2. Początkowo planuję użyć filtr komplementarny do ustalenia kąta wychylenia robota względem płaszczyzny pionowej. Później poeksperymentuję z filtrem Kalmana. 3. Zacznę od pojedynczego kontrolera PID który będzie miał za zadanie utrzymać zadany kąt wychylenia robota. Na wyjściu będzie długość wektora do sterowania FOC oraz kierunek obrotów (znak). 4. Gdy powyższy PID będzie działał prawidłowo, wtedy dodam kolejny PID który będzie utrzymywał zadaną prędkość robota, a na wyjściu będzie wymagany kąt wychylenia robota. Ta wartość będzie podawana jak referencyjna dla pierwszego kontrolera. 4. Kolejny PID do korygowania prędkości obrotowej lewego i prawego silnika. Będzie miał za zadanie utrzymanie robota na prostym kursie, lub skręcanie w zadanym kierunku Ponieważ czeka mnie kolejny wyjazd (obowiązki zawodowe) więc jestem zmuszony wstrzymać prototypownie do października. W między czasie w wolnej chwili dopracuję to co mogę nie mając dostępu do sprzętu, czyli schemat i projekt płytki drukowanej. Zacznę też projektować robota od strony mechanicznej (pewnie założę oddzielny wątek DIY gdy już będę miał co zaprezentować). Poniżej jedna z płytek enkodera: Obowiązkowe są tylko elementy IC1 i C1, reszta jest opcjonalna zależnie od tego jak chcemy wykorzystać sam układ i w jaki sposób podłączyć enkoder. Pozdrawiam i do następnego razu.
  4. 2 punkty
    Osobiście już od dawna składam sobie bramki i elementy cyfrowe z elementów dyskretnych. Zaprojektowałem taki sumator w kilku technologiach, jednak czasu mi zabrakło na złożenie tak owego. O ile mi się wydaję sumator z artykułu jest w technologii RTL, dość prosta, jednak potrzeba dużą ilość elementów, według moich projektów technologia NMOS jest najlepsza, potrzeba najmniej elementów (3x mniej niż w TTL), jednak tranzystory z kanałem typu N są 3 razy droższe niż NPN, plusem jest mniejsza ilość elementów czyli łatwiejszy montaż i projekt płytki.
  5. 2 punkty
    "Takie tam" urządzenie do gry w Backgammona na zakończenie kursu - jako owoc kilkunastu świetnie spędzonych wieczorów. Zastępuje wiecznie spadające ze stołu "analogowe" kostki. Bardzo dziękuję za ten kurs (oraz inne kursy). Naprawdę, kawał dobrej roboty no i wartość edukacyjna jest nie do przecenienia. Szacun!
  6. 2 punkty
    @Ruby witam na forum Miło słyszeć, że zdecydowałeś się na naukę z naszego kursu! O miernik możesz być spokojny - nie będziesz miał z tego tytułu żadnych problemów. Wykonasz wszystkie pomiary tak samo jak na tym innym mierniku. Jeśli zamawiane towary są na stanie to zamówienia opłacone do godziny 12 są wysyłane tego samego dnia. Czyli jeśli złożyłeś zamówienie w piątek to (zależnie od godziny) paczka powinna być u Ciebie w poniedziałek lub wtorek. Na pewno dostaniesz maila informującego o wysyłce.
  7. 2 punkty
    Moja wersja stacji pogodowej z wyświetlaniem wyników na lcd: #include <OneWire.h> #include <DallasTemperature.h> //Biblioteka termometru cyfrowego OneWire oneWire(A5); //podłącznie termometru do A5 DallasTemperature sensors(&oneWire); //przekazanie informacji do biblioteki #include "DHT.h" DHT dht; //biblioteka czujnika wilgoci #include <LiquidCrystal.h> //biblioteka lcd LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //inf. o wyswietlaczu void setup() { // put your setup code here, to run once: Serial.begin(9600); dht.setup(2); //czujnik wilgoci pin 2 sensors.begin(); //inicjalizacja termometru lcd.begin(16, 2); //inicjalizacja lcd lcd.clear(); } void loop() { // put your main code here, to run repeatedly: sensors.requestTemperatures(); //zapytanie o odczyt termometru float temperatura = sensors.getTempCByIndex(0); //zapisanie odczytu jako stałej int wilgotnosc = dht.getHumidity(); //zapisanie odczytu jako stałej int odczyt = analogRead(A0); int zachmurzenie = map(odczyt, 0, 1024, 1, 5); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(temperatura); lcd.setCursor(4, 1); lcd.print((char)223); lcd.setCursor(5, 1); lcd.print("C"); //wyświetlenie temperatury powietrza delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgotnosc"); lcd.setCursor(0, 1); lcd.print(wilgotnosc); lcd.setCursor(3, 1); lcd.print("%RH"); //wyswietlenie wilgotnosci powietrza delay(2000); lcd.clear(); switch(zachmurzenie) { //wyswietlenie inf. o zachmurzeniu case 1: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Calkowite"); break; case 2: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Duze"); break; case 3: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Umiarkowane"); break; case 4: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Male"); break; lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Bezchmurnie"); break; } delay(2000); lcd.clear(); }
  8. 2 punkty
    Dziękuję wam za odpowiedzi! Jakie to było irytujące! Już działa... Obecnie używam poczty wp z serwerem smtp.wp.pl i portem 465 (https://pomoc.wp.pl/jak-skonfigurowac-program-pocztowy) i mogę spamować na moje skrzynki mailowe. Ważne, żeby włączyć w opcjach poczty wp dostęp rzez IMAP oraz POP. Swoją drogą, jakimś cudem kilka testowych wiadomości doszło do mojej starej poczty wp - dokładnie dwie - a później już im się odechciało, mimo że skrzynki gmail odbierały bezproblemowo każdą wiadomość. Ja już nawet nie próbuję tego zrozumieć.... ;D Działa wystarczająco dobrze! Zmiana ustawień w koncie google niestety mi nie pomogła, ale będę mieć to na uwadze w przyszłości. Dzięki za podpowiedzi!
  9. 2 punkty
    To już jest bardziej pytanie dla informatyka, a tam poza odpowiedzią "U mnie działa" jest też inna odpowiedź "Nie wiadomo" Ale możliwe, że masz zabezpieczoną pocztę - w gmailu coś się zmieniło, że aplikacje mają osobne wygenerowane hasło aplikacji, musisz poszukać w panelu myaccount.
  10. 2 punkty
    W kontekście tego układu ciężko analizować napięcia, jeżeli opór R jest duży to styki mogą mieć wpływ ale napięcie powinno zmieniać się raczej proporcjonalnie. Układ z kursu ma inny cel - tranzystory MOS są tu traktowane trochę lżej, bo są trudniejsze i układ ten służy do tego, żeby raz podłączyć R do zasilania i raz do masy i zaobserwować np. pojemność bramki. Ale żeby sprawdzić jak działa, przejść przez punkty pracy to trzeba już regulowane napięcie na bramce. Układ do testów wyglądałby tak:
  11. 2 punkty
    Witam. Dzięki serdeczne za podpowiedzi. Ja dopiero zaczynam przygodę z elektroniką i ciężko jest na początku połapać się, a na blogu jest tyle wszystkiego, że nie wiadomo od czego zacząć. Twoje wskazówki są bardzo cenne. Pozdrawiam serdecznie. Andrzej.
  12. 2 punkty
    Witam serdecznie, nazywam się Adrian i pochodzę z pięknego Gdańska. Na karku 23 lata i sprowadza mnie tutaj chęć rozwijania się w różnych dziedzinach informatyki. Jako, że moja praca inżynierska będzie zawierała w sobie Rpi to zdecydowałem się na zakup pełnego zestawu edukacyjnego, który jak mam nadzieję pozwoli mi przejśc przez ciekawę strefę nieznanych mi jeszcze zagadnień. IoT oraz Smart House to według mnie przyszłość więc czas wziąć to w swoje ręcę! Pozdrawiam, Lazur
  13. 2 punkty
    Powiem inaczej: skracanie kodu nie polega na usuwaniu spacji (bo to tak, jakbyś z książki chciał usunąć myślniki i znaki nowej linii, co byłoby pewnie szczególnie przydatne przy dialogach), ale na zastępowaniu jakichś długaśnych konstrukcji prostszymi, krótszymi i bardziej czytelnymi. Oto przykład: Bez usuwania znaków nowej linii i wiodących spacji byłoby to: if (odleglosc < (i * mnoznik)) digitalWrite(i, HIGH); // to wyjasnione ponizej poniewaz komentarz bylby zbyt dlugi :D else digitalWrite(i, LOW); Trochę czytelniejsze, prawda? Zapoznaj się z programami typu indent czy clang-format, one potrafią skrócić zapis nie tracąc czytelności. Ale rozumiem, że chcesz to koniecznie i bezwarunkowo skrócić. Proszę bardzo: digitalWrite(i, odległość < i * mnożnik); Wypadł jeden if, z dwóch instrukcji zrobiła się jedna, a czytelność nawet większa[1]. To jest skracanie kodu. To, co pokazałeś, to nie jest skracanie kodu (bo kod przecież się nie zmienia, zmienia się tylko jego zapis z czytelnego na nieczytelny). Aha, sensowności takiego czegoś nie komentuję. Nie ma o czym mówić. --- [1] pod warunkiem że wie się o C/C++ trochę więcej niż po przeczytaniu pierwszego rozdziału podręcznika
  14. 2 punkty
    @Tobitobiasz44 to była ostatnia część tego kursu, jak będzie coś nowego na pewno to ogłosimy
  15. 1 punkt
    @Ruby pod każdym odcinkiem kursu na blogu są komentarze - to najlepsze miejsce do dyskusji na ten temat. Komentarze to w praktyce odpowiednie tematy na forum, więc najlepiej tam pisać o wszystkim co jest związane z daną częścią kursu
  16. 1 punkt
    Oj tak! planów jest dużo i są wielkie :D Jestem aktywnym fotografem, więc można spodziewać się także mojej nadaktywności wokół projektów okołofotograficznych ;)
  17. 1 punkt
    Tak zgadza się, ale dziękujemy za czujność Programowo generowany sygnał można zakłócić większym obciążeniem systemu, jeżeli jest generowany w innym wątku to też może coś się stać co wpłynie na jakiś moment w sygnale. Ze sprzętowym jest inaczej bo raz ustawiony może być niezależny od programu. Gdyby np. sterować serwem to w programowym PWM jest szansa, że jakaś ścinka wydłuży sygnał i serwo się poruszy.
  18. 1 punkt
    @wn2001 dziękuję. SAMD21 używam głównie dlatego, że wymaga bardzo niewielu dodatkowych komponentów (dwa kondensatory) i działa na nim CircuitPython, a do tego jest tani (poniżej $3 od sztuki). Na razie nie planuję sprzedawać tej płytki — plaga bardzo zepsuła wysyłkę międzynarodową, a różnica w cenie wcale nie jest taka duża jeśli bym nie produkował kilkuset płytek od razu — pewnie mógłbym sprzedawać je za jakieś $10 od sztuki, nie licząc przesyłki. Na razie mam te kilka zmontowanych ręcznie do rozdawania jako wizytówki, a jak ktoś potrzebuje więcej, to sobie może sam u Chińczyków zamówić — wszystkie pliki są udostępnione na hackaday.io. Podejrzewam, że mogłyby się dobrze nadawać na reklamę hackerspace-a albo nawet firmy sprzedającej zestawy — wystarczy tylko zmienić napis i ewentualnie kolor. Teraz pracuję nad jeszcze jedną wersją, lepiej nadającą się do warsztatów, bo nie wymagającą kabla USB-C — ten sam trik, ale z gniazdkiem micro-USB:
  19. 1 punkt
    Bardzo ciekawy pomysł. Wykonanie projektu musiało wymagać poświęcenia dużej ilości czasu. Gratuluję wytrwałości.
  20. 1 punkt
    Czołem! Ja oczywiście obkupiłem się kursami jak głupi i zaczynam swoją przygodę. Przy formularzu rejestracji wyskoczył komunikat w stylu "Whoa, chyba nie chcesz robić tylu rzeczy na raz??" Niestety, chcę W tej chwili chcę się nauczyć lutować, potem elektronika I i II, technika cyfrowa i malinki. Równolegle nauka Data Science i ML. Już umiem w Pythona i to mój start. Punkt docelowy? Z pewnością będzie się przesuwał, bo nie nam ograniczeń Jeśli za kilka lat zamiast domu inteligentnego zaatakuje was SkyNet to wiedzcie, że nie chciałem, ale było warto
  21. 1 punkt
    Cześć, jestem Ola, studiuję mechanikę i budowę maszyn II st. w Gdańsku. Muszę przyznać, że nigdy nie byłam dobra z elektroniki ale przyszła pora na zmiany. Obecnie pracuję nad polewaczką do balkonowego ogródka z pomocą Arduino i kursów na Forbocie
  22. 1 punkt
    W powyższym akapicie jest chyba błąd? A nie powinno być "...że PWM programowy faktycznie działa..."? Co do PWM to czym się różni w realizacji sprzętowy od programowego? W jaki sposób inne biblioteki wykorzystują PWM sprzętowy do wspomagania programowego i co to oznacza, że jest w ten sposób stabilniejszy? EDIT: ok, kolega wyżej już napisał spostrzeżenie
  23. 1 punkt
    No to już dużo wiemy Moja rada (może ktoś inny zaproponować coś innego) - zrobić tak jak Ichmościowie Informatykierzy sugerowali (czyli VPN). Co do zabezpieczeń: jeśli serwer VPN będzie odpowiednio zabezpieczony to powinno wystarczyć. Co do samego RPI - poczytaj coś o firewallach, iptables, ustawieniach sshd i tym podobnych dyrdymałach.
  24. 1 punkt
    Witajcie! Jest to mój drugi post na tym forum. Jestem świeżo po zakupie zestawu do elektroniki 1 i była mowa o dokupieniu Miernika. Jako że jestem zupełnie zielony w tych sprawach a chciałbym się podszkolić to zdecydowałem się właśnie na takie zakupy ale przechodząc do nurtującego mnie pytania. Prawdopodobnie przez późną godzinę wybrałem inny miernik niż był polecany w kursie. Cenowo różni się około złotówką, ale bardziej mnie zastanawia czy będzie kompatybilny z poradnikiem do elektroniki. Mianowicie kupiłem Miernik uniwersalny DPM DT830D a w kursie polecany był Miernik uniwersalny DT830B. Ten droższy, który kupiłem posiada enigmatyczną dla mnie na razie funkcję "badanie ciągłości przewodów oraz generator sygnału prostokątnego", tyle zdołałem zauważyć z różnic. Pytania to tak jak wspominałem wcześniej czy zakupiony przeze mnie miernik jest kompatybilny z kursem? W jaki sposób dodatkowe funkcje mogą pomóc podczas pracy lub ją utrudniać (w kontekście kursu)? Dodatkowe pytanie odnośnie samych zamówień z botland - jak długo może iść przesyłka bo nie znalazłem informacji o przewidywanej dacie dostarczenia mojego zamówienia? P.S. wybaczcie za takie prawdopodobnie trywialne pytania ale jestem zupełnie początkujący w tych sprawach i wcześniej nie miałem styczności z elektroniką w takiej postaci. Z góry dziękuję za pomoc Ruby
  25. 1 punkt
    Witam! Właśnie zakupiłem zestaw do elektroniki 1, bardzo spodobał mi się FORBOT z racji interesujących artykułów i poradników do Raspberry Pi. Według zaleceń postanowiłem najpierw poduczyć się elektroniki ponieważ jestem początkującym w tym temacie z zerową wiedzą ale jak tylko przyjdzie paczka to pewnie się to zmieni!
  26. 1 punkt
  27. 1 punkt
    @Nano_Developer tak jest, Tomek dostał się do programu
  28. 1 punkt
    Dzień dobry, mam na imię Jagoda, jestem tu nowa. Jestem początkująca w zabawach z arduino. pozdrawiam
  29. 1 punkt
    Witam wszystkich, mam na imię Rafał, zainteresowałem się tematem elektroniki a dokładniej Arduino przez studia. Niestety zajęcia były dość krótkie i z wiedzą na ten temat jest u mnie słabo, ale mam nadzieję, że uda mi się to wszystko dzięki kursom nadrobić
  30. 1 punkt
  31. 1 punkt
    Mega fajnie wyszedł Ci ten projekt, gratulacje! Czekam na kolejny ciekawy projekt twojego autorstwa!
  32. 1 punkt
    Cześć, zerknij na to https://support.google.com/accounts/answer/6010255?hl=pl miałem podobny problem z generowaniem maili bezpośrednio skryptem Pythona.
  33. 1 punkt
    @MaciejZyskowski dla formalności dopytam - a nie wpadają Ci te wiadomości do jakiegoś folderu (SPAM lub coś innego). Gmail lubi kategoryzować samodzielnie niektóre wiadomości i "ukrywa" je w zakładkach. Jak się ma poprawnie Gmaila skonfigurowanego to jest to wygodne, ale wiele osób pomija te automatyczne foldery i później brakuje im jakiś wiadomości
  34. 1 punkt
    A jaką masz wersję PyCharma? W community chyba nie ma zdalnego interpretera.
  35. 1 punkt
    @Tobitobiasz44 wygląda dobrze, a czy mógłbyś wysłać kod programu?
  36. 1 punkt
    @szakal11 troszkę się rozpisałeś Zgadza się, ładunek zebrany na okładce bramki taki ma efekt. Stosunkowo niedawno testowałem kilka tranzystorów o różnych napięciach progowych - potrzebowałem wysterować silnik zasilany 6V z 3,3V. I tam spotkałem się z dziwnym zjawiskiem, gdzie podawałem napięcie na bazę zgodnie z notą katalogową a tam niespodzianka, nie działa... niestety, płytka stykowa jest świetna ale tylko do testów gdzie nie ma dużego znaczenia spadek napięcia na stykach - w moim przypadku zlutowany układ działał zupełnie inaczej. Pisze to bo widzę, że wchodzisz już głębiej w temat i jakość połączeń nabiera tu znaczenia i może trzeba coś docisnąć na stykach bo cienka nóżka rezystora jedynie lekko się opiera o blaszkę. Druga sprawa to masz źle zmontowany układ do testów. Napięcie na bramce jest ważne, czyli żeby sprawdzić różne warianty musisz dać tam potencjometr. W ten sposób regulując będzie podawał różne napięcia, które sterują prądem ale uwaga przy danym napięciu na drenie. W ten sposób możesz wpiąć w dren amperomierz, ewentualnie z rezystorem (ale on wniesie ograniczenie, a chcesz np. zaobserwować jak tranzystor sam ograniczy prąd). Kręcisz potencjometrem i patrzysz na prąd. Bo to co teraz zrobiłeś to też ma sens, gdyż jeżeli dasz rezystor o dużo większym oporze to będzie się wolniej ładowała bramka, ale to nie do tego eksperymentu. Co do pomiarów to w tej konfigureacji zmierz sobie Udren-source(gnd) i Ugate-source(gnd) i porównaj to z dokumentacją. Będzie cię interesować na pewno ta część, sprawdźczy napięice progowe się zgadza: I też ten wykres: Każda z krzywych to inne napięcie na bramce, możesz sprawdzić jak zachowa się Idren i Udren-source Udanej zabawy, naprawdę fajny eksperyment
  37. 1 punkt
    @Lazur cześć Adrian, witam na forum i życzę udanych eksperymentów z IoT - powodzenia!
  38. 1 punkt
    UZUPEŁNIENIE lub jak kto woli SUPLEMENT Moja frezarka w której zastosowałem do sterowania moduł CNC shield V4.0 ma się dobrze i podczas pracy, szczególnie z bardzo twardymi materiałami, nieźle hałasuje. Jednakże po ostatnich nowelizacjach Windows 10 niektóre elementy controller grbl 361 przestały prawidłowo działać. Jeszcze controller grbl 361 prawidłowo wysyła rozkazy do maszyny ale widać koniec tej wersji programu co powoduje, że trzeba zainstalować coś innego. Mój wybór padł na UGSplatform, który jest zalecany przez producenta nowej wersji GRBL czyli grbl 1.1g.Po ściągnięciu grbl 1.1g ze strony GitHub instalacja w Arduino przebiega w sposób następujący :jeśli mamy już zainstalowany grbl wchodzimy do: Dokumenty -> Arduino -> librares odnajdujemy grbl i usuwamy a w to miejsce instalujemy wcześniej przygotowaną nową wersję grbl w wersji grbl 1.1 a następnie postępujemy tak a jak to opisałem w artykule w części dotyczącej zmiany przyporządkowania do pinów sygnałów DIR i STEP i LIMIT Z czyli po zmianie wyglądać będzie to tak: // Define step pulse output pins. NOTE: All step bit pins must be on the same port. #define STEP_DDR DDRD #define STEP_PORT PORTD #define X_STEP_BIT 5 // Uno Digital Pin 2, dla Nano D5 #define Y_STEP_BIT 6 // Uno Digital Pin 3, dla Nano D6 #define Z_STEP_BIT 7 // Uno Digital Pin 4, dla Nano D7 #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits // Define step direction output pins. NOTE: All direction pins must be on the same port. #define DIRECTION_DDR DDRD #define DIRECTION_PORT PORTD #define X_DIRECTION_BIT 2 // Uno Digital Pin 5 dla Nano D2 #define Y_DIRECTION_BIT 3 // Uno Digital Pin 6, dla Nano D3 #define Z_DIRECTION_BIT 4 // Uno Digital Pin 7, dla Nano D4 #ifdef VARIABLE_SPINDLE // Z Limit pin and spindle enabled swapped to access hardware PWM on Pin 11. #define Z_LIMIT_BIT 3 // Uno Digital Pin 11 ,w oryginale 4 #else #define Z_LIMIT_BIT 4 // Uno Digital Pin 12,w oryginale 3 Jeśli nie masz zainstalowanego grbl w Arduino IDE(najnowsza wersja Arduino IDE nie ma grbl w bibliotece) to w celu zainstalowania grbl musisz postąpić w sposób następujący: otwieramy Arduino IDE klikamy w zakładkę szkic -> dołącz bibliotekę -> Dodaj bibliotekę .ZIP… a następnie zmieniamy na dole w files of type z ZIP na All Files i odnajdujemy ściągnięty folder grbl a w nim odnajdujemy w nim bibliotekę grbl.h a następnie klikamy open . Następnym krokiem jest zmiana przyporządkowania do pinów sygnałów DIR i STEP oraz LIMIT Z opisana powyżej lub w artykule głównym. Warto zauważyć ,że grbi1.1g jest dobrze rozwiązana kwestia sterowania mocą lasera. Sterowanie mocą lasera jest przypisane do pinu D11. Należy zauważyć, że D11 jest pinem wielofunkcyjnym i należy być bardzo ostrożnym przy korzystaniu z tego bolca. Dla lasera D11 to wyjście w związku z tym nie może być podpięta krańcówka osi Z !. Autorzy oprogramowania sugerują by wszystkie krańcówki były podpięte do jednego pinu odpowiedzialnego za krańcówki osi x lub osi y.By włączyć funkcję sterowania mocą lasera należy, przed zaprogramowaniem Arduino Nano,Uno programem grbl , wejść w folderze grbl do pliku config.h i odkomentować dwie linie. // #define SPINDLE_PWM_MIN_VALUE 5 // Default disabled. Uncomment to enable. Must be greater than zero. Integer (1-255). // #define USE_SPINDLE_DIR_AS_ENABLE_PIN // Default disabled. Uncomment to enable. Czyli po odkomentowaniu te linie będą wyglądały tak: #define SPINDLE_PWM_MIN_VALUE 5 // Default disabled. Uncomment to enable. Must be greater than zero. Integer (1-255). #define USE_SPINDLE_DIR_AS_ENABLE_PIN // Default disabled. Uncomment to enable. Teraz możemy już wgrać do kontrolera Nano grbl postępując tak jak to opisałem w artykule głównym. Po wgraniu grbl(cały czas jesteśmy w Arduino IDE) przechodzimy do zakładki narzędzia i klikamy monitor portu szeregowego a w nim ustawiamy prędkość transmisji na 115200baud .Powinien pokazać się komunikat Grbl1,1g.Kolejnym krokiem jest wpisanie $$ i klikamy wyślij. Powinniśmy zobaczyć listę funkcji przygotowawczych G. Jak się przyjrzymy to zobaczymy, że pojawiły się trzy dodatkowe funkcje $30,$31,$32. $30 max. obroty wrzeciona,$31 min. obroty wrzeciona,$32 tryb lasera wyłączony jeśli $32=0, jeśli $32=1 włączony. Następnym krokiem jest zainstalowanie UGSplatform. Ściągamy ze strony GitHub i instalujemy. UGSplatform ma szereg zalet. Pierwszą z nich jest to, że jeśli klikniemy stop to rzeczywiście maszyna zatrzymuje się. Drugą zaletą jest to, że obiekt,który ma być wycięty można oglądać w dowolnym rzucie. Trzecią zaletą jest to, że jest szybszy od controller 361. Uwaga:Warto zapoznać się z plikiem config.h w folderze grbl w którym wszystko jest opisane. By obsłużyć laser ściągamy Program grbllaser i instalujemy a następnie konfigurujemy. Sterowanie mocą lasera :klikamy połączenie następnie klikamy zakładkę grbl a następnie odblokowanie ,następnie konfiguracja grbl, ustawiamy $32=1, $30 zmieniamy z wartości domyślnej 1000 na 255.Klikamy zapisz a następnie zamknij. Kolejnym krokiem jest wejście(nadal jesteśmy w grbllaser) grbl ->ustawienia->import rastrowy i zaznaczamy wsparcie PWM po czym klikamy zapisz.Po wprowadzeniu jakiegoś obiektu do wypalania laserem klikamy start i na pinie D11 można zobaczyć co się dzieje.Załączam krótki filmik.Przerobienie frezarki cnc na wycinarkę laserową jest bajecznie proste.Wystarczy zdemontować moduł wrzeciona a w to miejsce przykręcić laser.W zależności od typu lasera albo trzeba będzie poprowadzić dwa dodatkowe przewody sterujące do lasera a jeśli laser nie jest wyposażony w sterowanie mocą(np.TTL) to należy takie sterowanie wykonać we własnym zakresie.Układ będzie się składał z płytki PCB, dwóch kołków na wejściu,dwóch kołków wyjściowych, tranzystora MOSFET i rezystora 100-200Ω podłączonego pomiędzy D11 i nóżką G tranzystora MOSFET. Podczas pracy z laserem należy zachować szczególną ostrożność. Obowiązkowo należy założyć okulary ochronne! Oczy macie tylko jedne na całe życie! IMG_0523.zip
  39. 1 punkt
    @Maxmoku witam na forum i masz zamienioną bazę z emiterem. W kursie jest też schemat gdzie widać, że "potencjometr" jest podłączony do bazy czyli środkowej nóżki.
  40. 1 punkt
    Nie wiem czy da się instalwaćto na RPi to dopytam, gdzie to instalujesz? Czy chcesz pracować na RPi zdalnie? Bo możesz skonfigurować PyCharma do wykonywania skryptów zdalnie - tu akurat nie próbowałem tego zrobić profesjonalnie lecz tak na skróty: WinSCP i PyCharm, a uruchamianie skryptów z Putty.
  41. 1 punkt
    Prawdopodobnie musisz wybrać odpowiednie virtual environment/interpreter. Osobiście używam Pycharma i Jupytera.
  42. 1 punkt
    Hey, mam na imię Tomek i po długiej przerwie znowu zainteresowałem się elektroniką w kontekście smartnego domu. Rpi będzie kolejnym mostkiem w moim , otoczeniu, ale zanim to nastąpi, chciałbym na kursie poznać jego możliwości. Pozdrawiam wszystkich serdecznie !!
  43. 1 punkt
    Zrobiłem coś podobnego do twojego: import RPi.GPIO as GPIO from time import * tryb = 1 #tryb pracy swiatel GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(21, GPIO.OUT) #czerwona dioda GPIO.setup(18, GPIO.OUT) #zolta dioda GPIO.setup(12, GPIO.OUT) #zielona dioda GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) #przycisk def button_callback(channel): print("Tryb Awaryjny") tryb = -tryb GPIO.add_event_detect(17,GPIO.FALLING,callback=button_callback) while True: if tryb == 1: GPIO.output(18, 0) GPIO.output(21, 1) sleep(1) GPIO.output(18, 1) sleep(1) GPIO.output(21, 0) GPIO.output(18, 0) GPIO.output(12, 1) sleep(1) GPIO.output(12,0) GPIO.output(18,1) sleep(1) else: GPIO.output(18,0) sleep(1) GPIO.output(18,1) sleep(1) Niestety wyrzuca mi taki błąd. Po mimo, że program "chodzi". To tylko żółta dioda świeci światłem ciągłym bez migania. EDIT: Rozumiem, ze nie podoba mu się zmienna "tryb". Czemu traktuje ją jako lokalną skoro zdefiniowałem ją jako globalną? EDIT2: Dobra, nie zdefiniowałem w funkcji "tryb" jako "global tryb. Co do żółtej diody to zapomniałem, że mam ją podłączoną do IO 19 a nie IO 18 Dzięki za pomoc. Temat można zamknąć.
  44. 1 punkt
    Można jakos wyłączyć ten alternatywny tryb pracy PWM? Czy trzeba jedną z diod podłaczyć do IO 19? EDIT: #!/bin/sh gpio -g mode 20 out #buzzer gpio -g mode 19 pwm #zolte gpio -g mode 21 out #czerwone gpio -g mode 12 pwm #zielone while true do gpio -g pwm 12 1024 gpio -g write 21 0 gpio -g write 20 1 gpio -g pwm 19 0 sleep 1 gpio -g pwm 12 0 gpio -g pwm 19 1024 gpio -g write 20 1 sleep 1 gpio -g pwm 19 0 gpio -g write 21 1 gpio -g write 20 0 sleep 1 done I już działa dobrze, dzięki za pomoc
  45. 1 punkt
    Stacja pogodowa z wysyłką danych na stronę WWW Od paru tygodni testuję stację pogodową którą udało mi się zmontować w ostatnim czasie. Stacja oparta o sterownik Lan Kontroler V2.5 firmy Tiny Control. Jest to kompaktowe rozwiązanie zawierające: 5 wejść analogowych: pomiar temperatury, napięcia i prądu, oraz innych wielkości fizycznych, wejście cyfrowe w standardzie 1wire, wejście cyfrowe do obsługi czujnika temperatury i wilgotności DHT22, 4 wejścia logiczne: jako czujnik stanu do monitoringu, jako licznik impulsów z licznika energii, 1 przekaźnik (NZ, NO, C), 1 wyjście tranzystorowe, 4 wyjścia do załączania przekaźników oraz pomiar temperatury i napięcia zasilania na płytce. Do sterownika podłączyłem następujące czujniki: temperatury/wilgotności/ciśnienia - wszystko w jednym: CZUJNIK BME280/SPLITER 1WIRE/ RJ12 Grove - czujnik opadów / wody DFRobot Gravity - analogowy czujnik wilgotności gleby - odporny na korozję DFRobot Gravity - czujnik światła ultrafioletowego UV analogowy Miernik prędkości wiatru (chiński, zamówiony na aliexpress) Podłączenie Urządzenie Lan Controler wymaga podłączenia czujników do odpowiednich wejść analogowych/cyfrowych. Czujnik BME280 podłączany jest do złącza wire1. Po zmontowaniu całość prezentuje się następująco: Oprogramowanie Sterownik Lan Controler posiada wbudowany serwer www i panel zarządzania parametrami sterownika oraz wejściami: dodatkowo posiada możliwość wysyłki danych do serwerów protokołem HTTP, taką opcję zbierania danych umożliwia np. serwer Thing Speak (https://thingspeak.com/) ThingSpeak to aplikacja i interfejs API dla urządzeń IoT (opensourcowe) do przechowywania i pobierania danych z urządzeń elektronicznych za pomocą protokołu HTTP i MQTT. tak wyglądają dane z mojej stacji pogodowej na platformie Thinspeak: dzięki opcji zagnieżdżania poszczególnych widgetów z ThingSpeak na innych stronach, zrobiłem własną zawierającą kluczowe parametry pogodowe: Rozwój: w planie dodatkowy czujnik - przepływu wody, mierzący ilość opadów, planuję oprzeć to o czujnik przepływu YF-S402, natomiast przed zimą czujnik zanieczyszczenia powietrza. Oczywiście wszystkie dane będą publikowane na stronie WWW automatycznie.
  46. 1 punkt
    Witam Od około półtora roku interesuję się sztuczną inteligencją, zwłaszcza zastosowaną w robotyce. Jest to dla mnie niezwykle ciekawy temat Kilka miesięcy temu zacząłem pracować nad moim prywatnym projektem, który cały czas jest w fazie rozwoju. Pewne elementy, takie jak uczenie się poprzez rozmowę z człowiekiem są gotowe, więc postanowiłem nagrać poniższe filmy: AgeBot podłączony jest do internetu. Platforma to gotowa konstrukcja - AlphaBot-PI. Użyłem jej, aby szybciej skupić się na oprogramowaniu. W ostatnim czasie domykałem widoczne na filmach możliwości robota i w międzyczasie zacząłem pracę nad wykorzystaniem kamery (aktualny stan to ~30%). W bliskiej przyszłości platformę mam zamiar wymienić na coś bardziej zaawansowanego lub zbudować swoją, ponieważ ta zaczyna mnie powoli ograniczać (pod względem hardware'u). Jej specyfikacja dostępna jest w internecie (np. na stronie firmy Waveshare), więc nie będę kopiował Jak już zauważyliście - używam Raspberry PI. Oprogramowanie na malinkę napisałem w C++, pozostała część to C++ oraz Python. Systemem jest Raspbian. Do zautomatyzowania instalacji niektórych zależności w systemie (akurat w przypadku samej malinki) używam narzędzia Ansible, a o te krytyczne dla działania aplikacji dba manager pakietów (apt, buduję paczki .deb). Do przetwarzania tekstu użyłem biblioteki Tensorflow, natomiast w procesie uczenia się, robotowi asystuje wnioskowanie. Kamera i przetwarzanie obrazu otworzy wiele nowych drzwi, ułatwi również pracę przy kolejnej domenie - planowaniu zadań. Sam robot jest stosunkowo małą częścią projektu, ale o tym... w przyszłości Każdy feedback mile widziany Pozdrawiam PS: W ciągu kilku dni napiszę posta z trochę bardziej szczegółowymi informacjami odnośnie przetwarzania tekstu - czatowania z robotem
  47. 1 punkt
    Prosta zabawka, a ile radości Źródło » https://www.reddit.com/r/aww/comments/fbweiq/probably_dosent_belong_here_but_this_robot/
  48. 1 punkt
    Inspiracja dla osób szukających zajęcia podczas kwarantanny Źródło » https://www.reddit.com/r/Damnthatsinteresting/comments/fhnsr2/screw_wasps/
  49. 1 punkt
    Oto co widzi autopilot FSD (Fully Self-Driving) w Test: Źródło: https://www.reddit.com/r/Damnthatsinteresting/comments/ewx4ma/what_teslas_unreleased_fsd_fully_selfdriving/
  50. 1 punkt
    We wszystkich niemal konstrukcjach robotów mamy do czynienia z przekładniami. Wyjątkami są tu roboty budowane na silnikach krokowych, które mogą działać bez przekładni innym przypadkiem są lekkie roboty amatorskie, których silniki mają na tyle duży moment obrotowy by się można było obejść bez przekładni. Jednak prawdziwy konstruktor nie powinien liczyć na fart, powinien natomiast stosować przekładnie w swoich konstrukcjach. Niniejszy artykuł zapozna więc czytelnika z podstawowymi obliczeniami przeprowadzanymi przy budowie lub wykorzystywaniu przekładni dodatkowo zostaną zwięźle przedstawione podstawowe rodzaje przekładni. Jak sam tytuł sugeruje artykuł dotyczy przekładni mechanicznych nie zostały tu zamieszczone informacje na temat np. przekładni hydraulicznych gdyż w warunkach amatorski używa się głównie przekładni mechanicznych. [blog]https://forbot.pl/blog/przekladnie-mechaniczne-w-robotyce-id810[/blog]
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...