Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'micropython'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 2 wyniki

  1. Cześć Minęło już sporo czasu odkąd kolega deshipu opublikował bardzo ciekawy i inspirujący artykuł traktujący o Micropython. https://forbot.pl/forum/topic/8588-micropython-na-esp8266/?tab=comments#comment-88039 Przez ten czas spora część entuzjastów elektroniki, programowania, majsterkowiczów no i czytelników Forbota wszak, zaznajomiła się przynajmniej na przyzwoitym poziomie z możliwościami zastosowania mikroprocków AVR w swoich projektach. Powstawały przy tym mniej lub bardziej udane konstrukcje, które cieszyły, zaskakiwały i rozwijały twórczo, cokolwiek to oznacza. Jeśli w tym czasie miałem jakiś niedosyt, czy poczucie, że czegoś tu jeszcze brakuje, że można zrobić coś lepiej, coś zmienić lub rozbudować, to tylko z korzyścią dla siebie i dla nas samych, bo chyba nie piszę tu tylko o sobie, prawda? Podstawowy moduł Arduino R3, jakkolwiek bardzo przydatny i udany projekt z czasem zrobił się ciut niewystarczający. Brakowało komunikacji, ta szeregowa, I2C czy SPI to za mało. Apetyt rośnie w miarę jedzenia. Przydałby się Ethernet (powstawały nakładki z modułem Ethernet, samodzielne moduły np. Arduino Yun), przydałaby się sieć WiFi (np. WiDo moduł WiFi WG1300). Jeśli dysponujesz wolnym czasem i kwotą około 30 zł. do wykorzystania, to proponuję zakupić jeden z dostępnych modułów, opartych na ESP32 / ESP8266 i zacząć zabawę z alternatywnym IDE, jakim jest Thonny (z wbudowanym Pythonem), zamiast IDE z Arduino i gcc. Jest w internecie sporo gotowych poradników i rozwiązań opartych na programowaniu modułów ESP za pomocą IDE Arduino, natomiast stosunkowo niewiele można znaleźć o Micropythonie. Znam C i C++(przynajmniej z czasów kiedy wręcz obowiązkową pozycją była "Symfonia C++" Grębosza), poznanie i przyswojenie innych języków, C#, Javy czy shell-a Bash nie sprawia mi szczególnych trudności. Czas zatem zabrać się za Pythona i poznać dla niego konkretne zastosowania praktyczne. Język Python jest stosunkowo prosty i wręcz intuicyjny, sprawia, że można w miarę szybko opanować jego podstawy przynajmniej w zakresie zastosowań do programowania mikrokontrolerów. Mikropython z kolei jest własnie tym czego potrzebujemy. To minimalny, niezbędny podzbiór języka Python, gdzie umieszczono szereg narzędzi i modułów do sterowania i komunikacji z mikrokontrolerami. Przyznaje, że początkowo dość sceptycznie podchodziłem do Pythona, ze względu na wcześniejsze przyzwyczajenia co do deklaracji typów dla obiektów w C, zmiennych tablic i w ogólności składni, a tutaj jest dużo prościej i przejrzyściej, przynajmniej w tym zakresie jaki akurat jest mi potrzebny na tym etapie. Nie chciałbym przy tym rozpoczynać dyskusji na temat wyższości jednego języka nad drugim. Kieruje się tylko chęcią poznania nowego języka i alternatywnych narzędzi dla programowania mikrokontrolera. Micropython to minimalny podzbiór... tylko tyle ile jest niezbędne i tylko tyle aby zostawić dla nas jak najwięcej miejsca w pamięci takiego procka. Tak, micropython flashujemy (wgrywamy)na nasz procek i cały system wraz z szeregiem niezbędnych modułów i poleceń. Trochę to przypomina znaną już malinkę (raspberry pi), gdzie instaluje się jedną z dystrybucji linuxa i mamy tam pełnoprawny system operacyjny w dużym pudełku zapałek. Micropython i ESP32/8266 w dużym uproszczeniu przypomina nieco dystrybucję minilinux z wbudowanym micropythonem. (czy ten osioł przypomina nieco kurę? CK Dezerterzy) Jak zacząć? Sporo się zmieniło na plus przez te kilka lat istnienia micropythona. W necie można znaleźć kilka wartościowych poradników jak zainstalować (flashować) procesory... większość zaczyna od instalacji Pythona, potem niezbędnych narzędzi (pip, esptool, ampy, potem jakiegoś środowiska/edytora IDE dla Pythona), co w konsekwencji robi się nieco flustrujące. Dobra wiadomość jest taka, że nie musimy już tego wszystkiego robić. Wystarczy pobrać i zainstalować Thonny IDE dla Pythona. Thonny w wersji 3.2.7 pobierzemy stąd: https://www.downloaddrivers.info/download-thonny-3-2-7/ , przewijamy okno w dół i mamy niebieski odnośnik: Rozpakowujemy pobrane archiwum zip i instalujemy program. Przy instalacji warto ustawić skrót do aplikacji na pulpicie. Na chwilę obecną dysponuję modułem ESP-WROOM-32, dostępnym np. w https://botland.com.pl/pl/moduly-wifi/8893-esp32-wifi-bt-42-platforma-z-modulem-esp-wroom-32-zgodny-z-esp32-devkit.html?search_query=esp32&results=65 , ale nic nie stoi na przeszkodzie aby wykorzystać dowolny moduł oparty na ESP32/8266. Na tym etapie dobrze jest wybrać taki z wbudowanym gniazdem USB, bowiem będziemy mogli bezpośrednio wpinać go do naszego komputera i programować/komunikować się z modułem w locie. Podpinamy nasz moduł kablem USB (powinien wykryć nasz moduł i przypisać do niego nr portu COM). Odpalamy Thonny IDE, i z menu wybieramy Uruchom->Wybierz Interpreter: a tam MicroPython (ESP32) i wybieramy nasz rozpoznany port COM. Następnie musimy pobrać obraz naszego systemu, aby wgrać go do naszego ESP32. Wchodzimy na stronę http://micropython.org i pobieramy z zakładki Download najbardziej odpowiedni obraz dla naszego modułu. Dla nas jest to Generic ESP32 Module i poniżej z listy Firmware with ESP-IDF v3.x wybieramy najlepiej najnowszą stabilną wersję (ja wybrałem esp32-idf3-20200902-v1.13.bin, czyli tą stabilna, bez słowa unstable w nazwie). Po pobraniu pliku obrazu .bin klikamy w Thonny na opcję menu Uruchom->Wybierz Interpreter ... i tam w pole : Otwórz okno dialogowe instalacji lub aktualizacji MicroPython... następnie wybieramy port i ścieżkę z naszym pobranym właśnie plikiem .bin. Klikamy Install Po chwili powinna rozpocząć się procedura flashowania naszego modułu. Uwaga... jeśli program zgłosi niepowodzenie uruchom ponownie Install przytrzymując na chwilę przycisk Reset w naszym module. Po flashowaniu zamykamy aktywne okno. Resetujemy ponownie moduł, zaś w polu Powłoki mamy znak zachęty naszego micropythona: >>> To oznacza, że możemy zacząć zabawę z micropythonem. Okno Thonny składa się z 2 głównych okien - okno powłoki i okno edytora. W górnym oknie możemy tworzyć/edytować skrypty Pythona, a w dolnym - i tu niespodzianka mamy dostęp do powłoki shell naszego micropythona. Czym szczególnym wyróżnia się ta powłoka? Ano możemy bezpośrednio komunikować się z naszym modułem i wydawać mu polecenia do wykonania, niejako adhoc, czyli w locie!!! Nie trzeba tak jak w Arduino najpierw kompilować całego programu aby zobaczyć w monitorze portu szeregowego "Hello World".... tutaj po prostu po znaku zachęty >>> napisz: print('Hello World') ... i tyle - poniżej otrzymasz odpowiedź z ESP32 Dobra... nie masz pewności czy aby procek odpowiada (bo może to robić sam Thony), więc zrób to: wpisz po znaku zachęty po kolei te linie:(po każdej daj Enter) import machine led = machine.Pin(2, machine.Pin.OUT) led.on() led.off() Będziesz teraz zapalał i gasił wbudowaną diodę Led. Powłoka zapamiętuje wpisane wcześniej polecenia, więc możesz klawiszami strzałka góra/dół wracać do nich, bez konieczności ponownego wpisywania z palucha poleceń. Więcej o możliwościach Thonny doczytasz w Necie. Na chwilę obecną wystarczy zaznajomić się z możliwościami powłoki Micropythona. Planuję kolejny post w tematyce mikropythona, gdzie umieszczę swoje zmagania z tym nowym i dla mnie tematem. W szczególności ciekawy jest proces bootowania (uruchamiania) takiego ESP z wgranym micropythonem, do czego służą pliki boot.py i main.py , jak dodać i wgrać do procka własny skrypt/moduł .py do struktury katalogów i jak z niego korzystać. Kolejne tematy, z którymi ostatnio byłem za pan brat, (całość za pomocą micropythona - czyli alternatywa do tego co już można zrobić za pomocą Arduino IDE) : podpięcie do sieci WiFi, server i klient pobranie akt. czasu (RTC, time, utime) korzystanie z Telegram Bot przy pomocy micropythona i modułu urequests tryb głębokiego uśpienia (deep sleep mode) dla jednego (ext0) i wielu pinów (ext1) własny moduł/biblioteka użytecznych funkcji Pozdrawiam i zachęcam do zabawy z micropythonem, nie zaszkodzi Wielkie dzięki dla kol. deshipu !
  2. Dostępne na rynku oczyszczacze powietrza nie kosztują mało. Sam filtr, który wydaje się najważniejszym elementem kosztuje najczęściej nie więcej niż 1/3 oczyszczacza. Postanowiłem więc zbudować własny oczyszczacz. Oczywiście czas poświęcony na budowę też ma wartość, ale nie traktuje tego jako roboczogodziny a po prostu zabawę . W moim przypadku, koszt całości wyniósł około 300zł. Dla porównania, gotowy oczyszczacz Xiaomi to wydatek około 500zł, jesienią było to minimum ~650zł . Kupiłem filtr Xiaomi z wkładem węglowym, który jest nieco droższy niż zwykły, który montowany w fabrycznych oczyszczaczach. Użyty przeze mnie wentylator posiada według producenta wydajność 150m³/h co jest wartością 2x mniejszą niż fabryczny oczyszczacz. Jest to jednak w zupełności wystarczające. Mechanika Oczyszczacz składa się z filtra powietrza, wentylatora 200mm, łącznika filtra z wentylatorem i sterownika. Łącznik został wydrukowany na drukarce 3D. Wentylator to najtańszy wentylator 200mm jaki znalazłem w sklepie komputerowym. Elektronika Całość bazuje na płytce z ESP32. Na niej znajduje się shield prototypowy Arduino, a do niego są zamontowane kolejne elementy. Używałem głównie gotowych modułów. Starałem się w miarę możliwości nie lutować ich bezpośrednio do PCB tylko umieszczać na listwach kołkowych. Schematu niestety nie mam. Wszystko było lutowane na bieżąco w przypływach weny Planuje jeszcze wyprowadzić drugą szynę I2C i podłączyć do niej drugi barometr który będzie umieszczony w wewnętrznej części filtra. Będę mógł w ten sposób zbadać zależność różnicy ciśnień od obrotów wentylatora. Czujniki Jako czujnik pyłu zastosowałem GP2Y1010AU0F. Kluczem była niska cena. Niestety wymaga on dość dokładnego synchronizowania w czasie załączania diody LED i pomiaru napięcia wyjściowego. Z czym miałem duże problemy o czym napiszę niżej. Dodatkowo, jako że jest to czujnik analogowy, jego wyjście skaluje się względem napięcia zasilania. A tak się składa że o ile ESP32 jest zasilane ze stabilnych 3.3V, to czujnik jest zasilany z szyny 5V. Tutaj występuje wyraźny rozstrzał między zasilaniem z zasilacza (wtedy szyna 5V jest zasilana przez diodę która powoduje spadek napięcia) a zasilaniem przez USB. Staram się to kompensować dodatkowym pomiarem napięcia szyny 5V. Nie jest to idealnie, choć daje dużo. Prawdopodobnie czujnik nie skaluje swojego wyjścia idealnie liniowo z napięciem zasilania, stąd ten problem. Oprócz tego na płytce znajduje się czujnik wilgotności HDC1080 oraz ciśnienia BMP280. Oba mają wbudowane termometry, więc nie potrzeba dodatkowego. Teraz prawdopodobnie użyłbym BME280. Interfejs W sterowniku użyłem wyświetlacza OLED. Wyświetlane są na nim aktualne parametry, takie jak: temperatura, wilgotność, poziom zanieczyszczeń, moc wentylatora i inne. Wyświetlacz jest sterowany za pomocą interfejsu I2C. Obok wyświetlacz znajduje się enkoder. Użyłem gotowego modułu bo akurat nie miałem pod ręką tego typu enkodera z przyciskiem. Można nim regulować moc oczyszczacza oraz przełączać między trybami: "auto" i "manual". Oczywiście jak na 2019 rok przystało, oczyszczaczem można sterować też po WiFi :) Na ESP32 jest uruchomiony webserver. Panel webowy wygląda tak: W kodzie znajdują się funkcje które utrzymują stałą łączność WiFi z routerem. Dane dostępowe do znanych nam WiFi należy umieścić w pliku "wifi_credentials.json" i wgrać wraz z innymi plikami. Niestety hasła należy umieścić w formie tekstowej. Biblioteka micropythona do obsługi WiFi nie obsługuje haseł w wersji zahashowanej (PSK). W przyszłości może dopiszę bardziej ludzką formie wprowadzania haseł Sterowanie wentylatorem Z racji tego że użyłem najtańszego wentylatora o tej średnicy, posiada on tylko 3 pinową wtyczkę. Taki wentylator można sterować jedynie napięciowo. Wymyśliłem więc sposób na regulację PWMem napięcia wyjściowego przetwornicy impulsowej. Polega to na podkradaniu lub wprowadzaniu dodatkowego prądu do wyjściowego dzielnika napięcia. Schemat tego wygląda następująco: Zauważyłem że im mniejsza częstotliwość sygnału PWM, tym bardziej nieliniowa jest zależność Vout=f(PWM). Dlatego częstotliwość PWM została ustawiona na 312kHz. Aproksymacje tej funkcji stworzyłem robiąc pomiary Vout w zależności od danego wypełnienia PWM, a następnie w arkuszu kalkulacyjnym wyznaczyłem współczynniki funkcji liniowej. Współczynniki te są na sztywno zapisane w kodzie. Micropython Zdecydowałem się użyć micropythona ze względu na chęć nauki czegoś nowego. Niestety, jak okazało się w trakcie, posiada on wiele ograniczeń. Największą wadą jest używanie blokującego dostępu do interfejsów komunikacyjnych. Przez co np.: w trakcie odświeżania wyświetlacza nie można dokonywać pomiarów czujnika pyłu czy obsługiwać żądań serwera. Ne można też używać drugiego rdzenia ESP32. Przez co interfejs użytkownika chodzi wyraźnie wolno, i nie wygląda na uruchomiony na czymś tak mocnym Cały kod jest dostępny na GitHubie: https://github.com/Harnas/ESP32_Airpurifier
×
×
  • Utwórz nowe...