Page 22 of 23

Daj się poznać 2017

Dziś rusza konkurs Daj się poznać 2017, w którym będę brał udział. Jest to konkurs dla bloggerów piszących o programowaniu. Chodzi o to, żeby rozwijać projekt open source na GitHubie i blogować. W okresie od 1 marca do 31 maja przez 10 tygodni należy pisać po 2 posty tygodniowo. Co najmniej jeden z nich musi dotyczyć projektu, a drugi może być o dowolnej tematyce związanej z IT.

Jako swój projekt wybrałem robota Micromouse. Z tej okazji organizator konkursu przygotował nawet stosowne logo widoczne powyżej 😀 Udział w konkursie planowałem od jakiegoś czasu i dlatego ostatnio nie umieszczałem wpisów dotyczących robota, żeby zostawić sobie tematy na konkurs. Jeżeli ktoś przeglądał mojego GitHuba, pewnie natknął się na pusty projekt Micromouse. To będzie moje repozytorium konkursowe. Robota nazwałem Legend na część pewnego legendarnego Protossa. Jest to druga wersja robota, stąd v2 w nazwie repozytorium.

Continue reading

C++ na STM32

Najczęściej wybieranym językiem do programowania mikrokontrolerów jest C. Popularna jest opinia, że C++ do tego zadania się nie nadaje. Najczęściej podawane argumenty to wolniejsze wykonywanie się kodu, większe zużycie pamięci programu i RAMu oraz częste wykorzystywanie dynamicznej alokacji pamięci. Ostatnio znalazłem na YouTube prezentację dotyczącą wykorzystania C++ przy programowaniu systemów embedded.

Autor udowadnia w niej, że argumenty dotyczące szybkości wykonania oraz zużycia pamięci nie są prawdziwe. Skłoniło mnie to do wykonania własnych eksperymentów z C++ na STM32, a przy okazji także do poznania C++, ponieważ wcześniej nie miałem z nim za dużo do czynienia.

Continue reading

STM32 na Eclipse Neon

Ostatnio pisałem, jak uruchomić projekt na STM32 na Eclipse. Polecałem wtedy używać starszej wersji – Eclipse Mars, ponieważ na Eclipse Neon nie działają poprawnie używane przeze mnie pluginy. Ostatnio udało mi się uruchomić STM32 na nowej wersji Eclipse i w tym artykule opiszę swoje uwagi.

Do uruchomienia projektu na STM32 będziemy potrzebowali pluginów z pakietu GNU ARM Eclipse:

  • OpenOCD – plugin współpracujący z OpenOCD nieco inaczej niż za pomocą External Tools Configuration.
  • Packs – plugin zarządzający konfiguracją dla różnych procesorów. Ten plugin umożliwia podgląd rejestrów peryferiów procesora.
  • QEMU – plugin emulatora. Umożliwia uruchamianie programów bez podłączonego sprzętu. Ten plugin jest opcjonalny.

Continue reading

Granie melodii na silnikach DC

Ostatnio opisywałem szablon projektu na STM32 i konfigurację środowiska, więc teraz pora na jakiś praktyczny projekt. Będzie nim program grający melodie na silnikach. Kiedyś napisałem taki programik, żeby sprawdzić czy działa sterowanie silnikami w moim robocie. W tym czasie na Forbot.pl był konkurs na robota z akcentem świątecznym i Wśród nocnej ciszy w wykonaniu mojego robota wygrało.

Pojawiła się propozycja, żeby z okazji zwycięstwa zagrać na silnikach We are the champions, ale poległem na tym zadaniu. Problemem było to, że za słabo znam się na muzyce i bazowałem tylko na nutach znalezionych w necie i jak coś było nie tak, nie umiałem tego poprawić. Ostatnio wróciłem do tematu i postanowiłem opublikować i trochę opisać kod na STM32F4 Discovery.

Continue reading

Relacja z PGS Software Talks

Wczoraj byłem na PGS Software Talks w Gdańsku. Był to pierwszy tego typu event programistyczny, w jakim brałem udział. Miałem zamiar wybrać się już na poprzednią edycję, która odbywała się we wrześniu. Prelegentami byli wtedy jeden z użytkowników forum netwars.pl – Paweł Zajączkowski, który mówił o tym jak pisać czysty kod, oraz Piotr Konieczny z niebezpiecznik.pl. Wtedy niestety mi się nie udało. Tym razem tematyka spotkania dotyczyła Test Driven Development, co mnie bardzo interesowało. Przykłady były w języku C#, co już było dla mnie mniej interesujące. Niestety moje C Embedded nie posiada tak prężnie działającej społeczności i po prostu jest dużo mniej popularne. Poza tym można powiedzieć, że ta gałąź bardzo wolno podąża za najnowszymi trendami. Z tych powodów na tego typu wydarzenia stricte z mojej dziedziny raczej nie mam co liczyć.

Continue reading

Mocowania do silników z drukarki 3D

Ostatnio po ciężkiej przeprawie dotarły do mnie dwie przesyłki. Pierwsza z nich zawierała obejmy do silników i felgi zrobione na drukarce 3D, a druga śrubki do montażu tych części. Obie przesyłki zostały nadane na początku grudnia, a dotarły do mnie na początku lutego. Poczta Polska jak zwykle się spisała. No ale skoro części w końcu przyszły, mogłem zająć się składaniem mocowań silników i kół do nowego Micromouse.

Continue reading

Szablon projektu STM32

Dzisiaj opiszę używany przeze mnie szablon projektu STM32.  Szablon poza kompilacją głównego projektu umożliwia również dodawanie unit testów i testów na docelowym sprzęcie. W artykule omawiam strukturę folderów i konfigurację za pomocą Makefile, które sprawdzają się na moje potrzeby. Kod źródłowy szablonu udostępniłem na GitHubie.

Projekt generowany w IDE kontra własny szablon

Jeśli korzystamy z jakiegoś środowiska dedykowanego do pisania kodu na STM32 np. OpenSTM32, albo CooCox, gdy utworzymy nowy projekt i wyklikamy opcje w kreatorze, magicznie utworzy nam się konfiguracja zawierająca pliki inicjalizacyje, skrypt linkera, czy reguły kompilacji. Dodatkowo dołączone zostaną biblioteki z definicjami rejestrów i obsługą peryferiów. Jest to idealna sytuacja dla początkujących, którzy nie muszą dzięki temu poznawać skomplikowanych zagadnień związanych z inicjalizacją procesora do pracy i kompilacją projektu. Po prostu dostają działający projekt i mogą uczyć się podstaw. Jednak jeśli zdobędziemy już trochę doświadczenia i chcemy zrobić jakieś bardziej zaawansowane operacje, okazuje się, że IDE mają swoje ograniczenia. Częste problemy to na przykład dodawanie projektu do repozytorium kodu tak, żeby przenieść je na inną maszynę, czy wprowadzanie zmian w kodzie przez kilka osób na raz.

Continue reading

Micromouse – podejście drugie

W poprzednim wpisie opisałem swoje zmagania z robotem Micromouse z zamierzchłych czasów. Dzisiaj opiszę drugą próbę, którą podjąłem w zeszłym roku. Od poprzednio opisywanego projektu minęły 3 lata. Przez ten czas nabrałem świadomości swoich słabości, z których za największą uznałem posługiwanie się lutownicą. Poza tym z dystansem podchodziłem do swoich umiejętności w dziedzinach elektroniki i mechaniki. W przeciwieństwie do poprzedniego podejścia, tym razem fundusze nie były takim problemem. Na projekt jednak mogłem przeznaczyć dużo mniej czasu niż poprzednio. Dodatkowo miała to być okazja na sprawdzenie w praktyce dobrych praktyk i narzędzi do prowadzenia projektu. Dlatego miałem projekt założony na GitLabie z gitem, issue trackerem, wiki i milestonami. Poza tym do kodu miałem pisać unit testy, a nawet próbowałem okiełznać gitlabowe continuous integration. Ktoś może powiedzieć, że to przerost formy nad treścią, ale te umiejętności już niedługo miały mi się przydać w pracy, a ten projekt był dobrym poligonem doświadczalnym.

Continue reading

Micromouse – podejście pierwsze

Dawno temu postanowiłem sobie, że zrobię robota micromouse z prawdziwego zdarzenia. Nie interesowało mnie samo wykonanie konstrukcji, która jest w stanie przejechać labirynt. Chociaż realizacja tego zadania jest sama w sobie osiągnięciem. Mój robot miał być szybki i wykorzystywać złożone algorytmy np. filtr Kalmana do pozycjonowania. Do tej pory wszystkie próby kończyły się porażkami. Mam już w głowie koncepcję na kolejne podejście. Pomyślałem jednak, że zanim opiszę tu nowe założenia projektu i kroki jakie już poczyniłem, najpierw napiszę coś o poprzednich próbach. Dlatego dzisiejszy wpis będzie o moim pierwszym podejściu do stworzenia robota micromouse.

Było to na studiach, zaraz po zrobieniu inżynierki. Miałem wtedy ułańską fantazję i nieograniczoną wiarę w swoje możliwości. W skutek czego postanowiłem między innymi, że użyję modułu żyroskopu i akcelerometru LSM320DL w obudowie LGA, którego samodzielnie polutuję lutownicą grzałkową. Footprint żyroskopu sam zrobię w Eaglu i specjalnie zrobię dłuższe pady, żeby je podgrzać i stopić cynę umieszczoną wcześniej na pinach układu. Oczywiście wcześniej miałem niewielkie doświadczenie z lutowaniem, głównie układów przewlekanych i nawet nie zrobiłem wcześniej żadnej przymiarki, żeby zobaczyć, czy to jest w ogóle wykonalne.

Continue reading