fbpx

Właśnie skończyłem produkować wszystkie zaplanowane materiały do mojego Kursu STM32 dla Początkujacych. Jest to idealny czas na to, aby podsumować to, co do tej pory wykonałem. Również sporo się nauczyłem tworząc ten kurs. Oto moje małe podsumowanie.

W lutym rusza druga edycja kursu. Zapisz się na KURSSTM32.PL, aby nie przegapić startu!

Pomysł na kurs

Na pomysł stworzenia kursu wpadłem wiosną 2019 roku. Kurs ruszył w październiku 2020, więc od pomysłu, do realizacji minęło sporo czasu. Teraz – w styczniu 2021 – ukończyłem podstawowy zakres kursu, który miałem w planach. Można powiedzieć więc, że nad kursem pracowałem przez około dwa lata.

Tematykę do kursu dobrałem bazując na moim doświadczeniu, oraz rozmawiając z zainteresowanymi. Odbyłem mnóstwo prywatnych rozmów. Podsyłałem kilka ankiet z pytaniami czego tak naprawdę potrzebują zainteresowani.

Tworząc kurs, przyświecała mi myśl o tym, że tworzę kurs dla Ciebie, a nie dla siebie. Ja już programować potrafię 🙂

Tematyka kursu

W całym programie przechodzimy przez podstawowe interfejsy mikrokontrolera STM32F411RE. Oczywiście użyliśmy do tego celu płytki NUCLEO-F411RE. Evale od ST niesamowicie ułatwiają naukę.

W kursie zajęliśmy się tylko podstawowymi interfejsami. Są to:

  • GPIO
  • UART
  • ADC
  • I2C
  • SPI
  • USB
  • SDIO

Niektóre w połączeniu z DMA jak np. ADC, który według mnie jest stworzony do takiej pracy.

Poznaliśmy również tryby Low Power, które pozwalają nam budować urządzenia bateryjne.

Blokowanie się kodu

Największą bolączką osób początkujących jest blokowanie kodu. Na ogół dzieje się to poprzez nadmierne używanie Delayów w naszych programach.

W kursie pokazałem dwie proste metody na to, aby się nie blokować.

Jest to timer software’owy oraz maszyna stanów.

Napisaliśmy prosty “scheduler” oparty na timerach programowych, który uruchamiał odpowiednio wymagane akcje. Był to na przykład pomiar na BMP280, czy odświeżenie OLED.

Do obsługi przycisków użyłem maszyny stanów. Dzięki niej eliminacja drgania styków jest niezauważalna zarówno dla nas, jak i mikrokontrolera.

UART + DMA = <3

Fora internetowe wręcz pękają od pytań jak to zrobić! Już jakiś czas temu napisałem o tym dwa artykuły:

W kursie za to dokładniej wytłumaczyłem jak to ogarnąć. Razem z dekodowaniem wiadomości, które przychodzą na UART.

Pozostałe peryferia

Przy okazji pozostałych peryferiów pokazuję inne ważne aspekty programowania embedded.

Jak pisać bibliotekę od zera na podstawie dokumentacji?

Jak portować gotową bibliotekę z Arduino?

Czy potrzebuję konwertera napięć przy I2C?

Dlaczego wyświetlanie na TFT jest takie powolne? Jak je przyśpieszyć?

Używanie karty SD w swoim projekcie.

Komunikacja USB: VCOM, pamięć masowa, HID

…oraz wiele innych.

FreeRTOS

Wiele razy zainteresowane osoby pytały się mnie o omówienie FreeRTOS w kursie. Postanowiłem to zrobić. Wbrew niektórym opiniom, pisanie pod kontrolą RTOSów nie jest łatwe, co zresztą pokazałem w kursie.

Moduł poświęcony na FreeRTOS okazał się najdłuższym modułem i w tej chwili zawiera on 8 godzin materiałów.

Nie tylko pokazałem jak działają poszczególne komponenty FreeRTOS. Zbudowaliśmy projekt, który to wykorzystuje. Wiele kursów pokazuje FreeRTOS z perspektywy migania diodami i printowania na UART…

Przeciez nasze projekty zawsze robią coś więcej! Okazuje się, że dołożenie dwóch urządzeń na jednym I2C, oraz pomiaru na ADC strasznie komplikuje nam – jako początkującym – użycie FreeRTOSa. Pokazałem w kursie jak sobie poradzić z tymi problemami.

Co z kursu wyniosłem ja, jako twórca?

Mimo że w kursie to ja uczę programowania STM32, to również wiele z niego wyniosłem.

  • Nauczył mnie porządkować myśli. Zorganizowanie tak ogromnego projektu wymagało wielu godzin planowania i porządkowania zagadnień. Moje przyszłe materiały na blogu lub w innych nowych miejscach w Internecie z pewnością będą lepiej uporządkowane.
  • Praca z kamerą. Moi kursanci mogą naocznie zobaczyć jak doświadczenie wpływa na rezultaty przed kamerą. Z każdym modułem moja praca przed obiektywem jest coraz lepsza. Wysławiam się coraz bardziej swobodnie. Jestem również już całkiem luźny mówiąc do obiektywu. Praca z kamerą była dla mnie ważnym punktem do nauki.
  • Zawsze możesz kogoś, czegoś nauczyć. Osoby, które boją się zacząć udzielać publicznie zawsze mają te same myśli… “a co jeśli wiem za mało” albo “ktoś bardziej doświadczony zje mnie swoją wiedzą”.Miałem takie myśli startując bloga. Miałem takie myśli startując sklep. Miałem takie myśli wpadając na pomysł stworzenia kursu! Będę miał takie myśli przed każdym kolejnym projektem. Prawda jest jedna.Jeżeli wiesz, choć 1% więcej niż inni w jakimś temacie, możesz ich uczyć właśnie tego 1%. Ta blokada siedzi tylko w Twojej głowie. Jeśli jest ktoś, kto wie więcej – po prostu nie będzie Cię czytał/oglądał. Za to masa innych osób skorzysta z Twojej wiedzy!
  • Plany, a wykonanie to dwie różne kwestie. Znamy to, chociażby z wszelkich naszych własnych projektów lub z pracy. Przecież zawsze dział handlowy, czy marketing obieca coś na “za dwa tygodnie”, kiedy dział inżynierski doskonale wie, że będzie to trwało miesiąc. To jest odwieczna walka :)Pamiętam, że planowałem wydać kurs w pół roku. Wyszło 2 lata. Miał on się zmieścić w maksymalnie 20 godzinach. Wyszło 40. Miał trwać, a w zasadzie ja go miałem wypuszczać przez 12 tygodni. Ostatecznie materiałów było tak dużo, że wypuszczałem go przez 16 tygodni.Chyba większość osób ma właśnie tendencje do niedoszacowywania. Mam tak samo 🙂
  • Sprzęt to Twój wróg. Programuję sprzęt i lubię sprzęt. Jednak kiedy masz z niego korzystać, pojawiają się problemy. Zarówno te sprzętowe jak i użytkownika. Kilka takich moich wpadek:A to zapomnisz naładować wszystkich baterii do aparatu. A to nie przewidziałeś, że nagrywając telefonem – ten się zacznie po godzinie przegrzewać.A to mikrofon podłączony do laptopa inaczej nagrywa niż podłączony do PCta. A to czasem nie włączysz nagrywania na kamerze lub na mikrofonie i gadasz tak pół godziny “na marne”, lub próbujesz przefiltrować nagrany dźwięk z aparatu, aby nie stracić kilku godzin materiałów (Czy kursanci potrafią powiedzieć, w którym module mi się to zdarzyło? 😛 ).A to laptop zacznie Ci gubić próbki dźwięku i masz  kawałki ciszy w nagraniu.A to w ostatnim możliwym dniu tygodnia do nagrania zbijasz dwie żarówki do oświetlenia :)A to nie włączyłeś nagrywania swojego mikrofonu na LIVE Callu. A to kolejnym razem nagrałeś tylko siebie, ale już pozostałych uczestników nie ;)Jest tego całkiem sporo i wraz z powiększaniem mojego warsztatu kursowego, ta lista wpadek niestety rośnie. Pomagają checklisty, czy procedury, lecz niestety nie na wszystko.
  • Poznałem masę świetnych osób! W ramach kursu mamy zamkniętą grupę dyskusyjną. Organizujemy również cykliczne LIVE Calle, na których rozmawiamy nie tylko o podstawach programowania STM32.Wśród moich kursantów znajdują się niesamowite osoby z wiedzą z różnych dziedzin. Przecież nie tylko programiści embedded chcą się uczyć STM32! Poznałem osoby, które są obeznane w różnych tematach jak: projektowanie elektroniki, programowanie webowe, IoT. Są również osoby wszechstronne, które na każde pytanie mogą odpowiedzieć tytułem odpowiedniej książki, która to wyjaśnia :)To jest bezcenny “Bonus” kursu i jestem z niego bardzo dumny!

Podsumowanie

Uważam, że kurs się udał! To była dopiero pierwsza edycja, więc jest jeszcze ogromne pole do działania.

W pierwszej edycji do samego końca wzięło udział łącznie AŻ 205 osób! Mówię “do końca” bo u mnie zawsze możesz liczyć na pełen zwrot kosztów jeśli kurs Ci się nie spodoba (w ciągu pierwszych 30 dni).

Planuję jeszcze bonusowe nagrania nowych rzeczy. Niektóre lekcje chcę nagrać ponownie, rozszerzając nieco tematykę.

W lutym ruszam z drugą edycją! Będziesz miał okazję do dołączenia do nas. Nie przegap zapisów i dołącz do listy oczekujących.

Dołączyć możesz tutaj: KURSSTM32.PL

Kurs rozpocznie się dokładnie 15 lutego, a zaczniemy darmowym webinarem pod tytułem “Jak zacząć z STM32 w 2021 roku?” Przyjdź i zobacz co dla Ciebie przygotowałem!

Podobne artykuły

.

0 komentarzy

Dodaj komentarz

Avatar placeholder

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *