poniedziałek, 2 grudnia 2019

PIC32MM i moduł Ethernetowy Wiznet W5500 - serwer TCP/IP, zajęcia praktyczne cz.2

W części pierwszej zajęć praktycznych pokazałem działanie mini-serwera UDP. W tym wpisie zajmiemy  się kolejną dostępną opcją w module W5500 firmy Wiznet .Rozbudujemy nasz program z części 1 o funkcjonalność mini-serwera TCP. Nasz mini-serwer będzie na każde wysłane do niego zapytanie klienta z sieci lokalnej reagował wysłaniem kodu HTML. Do czego to może się przydać ? Mnie do głowy przychodzi pomysł np. realizacja ustawienia/konfiguracji jakiegoś urządzenia za pomocą przeglądarki www. Nie musimy wtedy angażować do tego celu wyświetlacza i interakcji z użytkownikiem do niego. W artykule pokażę jak zrealizować funkcję mini-serwera TCP przy pomocy modułu W5500 firmy Wiznet.

środa, 27 listopada 2019

Microchip rozbudowuje swoje portfolio w zakresie pamięci EERAM.

Zarąbisty produkt Microchipa - pamięć EERAM, który skradł moje serce od pierwszej sekundy użycia tego rodzaju pamięci. Z radością donoszę, że oferta tych pamięci została powiększona o nowe modele z interfejsem SPI i rozmiarze aż 1 Mbit . Każdy z nas zna wady klasycznej pamięci EEPROM, wolne toto , trzeba się pieprzyć ze stronicowaniem takich pamięci i w ogóle blee.. I tu wkracza Super Hero - Microchip ze swoją pamięcią EERAM w której brak stronicowania, szybkość zapisu na poziomie pamięci SRAM, po zaniku zasilania dane przepisane do pamięci statycznej a po powrocie zasilania przepisane  z powrotem do pamięci SRAM. Jeśli ktoś nie czuje mocy tego wynalazku to ja cie przepraszam :)

niedziela, 24 listopada 2019

PIC32MM i moduł Ethernetowy Wiznet W5500 - serwer UDP, zajęcia praktyczne cz.1

Moduł W5500 sprawił mi dużo satysfakcji podczas jego poznawania. Zagadnienia z jakimi przyszło mi się zmierzyć po drodze były mi obce, dlatego podwójna satysfakcja, że udało się zgłębić "tajemną" sieciową wiedzę. Dziękuję ci zatem module W5500 za poszerzenie moich horyzontów wiedzy :).Przetarłem szlak ,zatem zapraszam do wspaniałej przygody z modułem Ethernetowym W5500 firmy Wiznet. W artykule pokażę jak prosto ogarnąć moduł W5500 za pomocą PIC32MM . W zajęciach praktycznych nawiążemy komunikację za pomocą protokołu  UDP pomiędzy naszym modułem W5500 a lokalnym PC . Po drodze skorzystamy z narzędzi sieciowych takich jak WIRESHARK aby podsłuchać sieć. Ponadto pokażę w jak prosty sposób możemy wysyłać pakiety UDP z poziomu systemu LINUX. Artykuł będzie wstępem przed kontynuacją tematu , którego zwieńczeniem będzie pełna realizacja komunikacji z wybraną Chmurą. Mam nadzieję , że mi się uda to zrealizować. Taki wytyczam sobie cel mojego spotkania z modułem W5500 . Howgh.

sobota, 16 listopada 2019

PIC32MM i printf() - prosty wyrzut strumienia danych po UART.

Często zdarza się , że potrzebujemy monitorować pracę programu i wyświetlać komunikaty lub mieć podgląd na jakieś dane , szczególnie na etapie testowania funkcjonalności programu. Jednym z mediów do wyświetlania danych/komunikatów jest wyświetlacz , ale co w przypadku kiedy chcemy na przykład wyświetlić więcej komunikatów niż pomieści nam wyświetlacz ?. Wtedy przychodzi nam z pomocą UART i funkcja printf() ze standardowej biblioteki języka C. Ta para powoduje , że możemy w bardzo prosty sposób zobrazować komunikaty/dane w oknie monitora PC, nie pisząc nawet ani kawałka kodu konfiguracyjnego. W artykule pokażę jak skorzystać z funkcji printf() w programie , przekierować do niej strumień danych z UART i  wyświetlić to na monitorze.


środa, 13 listopada 2019

WIZnet W5500, moduł ethernetowy ze sprzętowym stosem TCP/IP.

Podczas zabaw z chmurą dotarło do mnie, że fajnie byłoby mieć własny Gateway dostępowy oparty na mikrokontrolerze i zbudowany własnymi rękoma. Wiele projektów w tym zakresie opartych jest na RPi ale często jest to przerost treści nad formą. Po co angażować mikroprocesor i system operacyjny dla w sumie niezbyt skomplikowanego zadania. Dlatego moje poszukiwania skierowałem poza ekosystem RPi. Znalazłem młody projekt ZERYNTH , który w bajecznie prosty sposób umożliwia zbudowanie Gateway'a dostępowego do chmury w oparciu o wspierane płytki developerskie.  Mam jednak takie podejście , że jak coś jest zbyt proste to szybko się nudzę, normalnie jak dziecko :) . Dlatego postanowiłem zrobić coś co wymagałoby większego zaangażowania "mózgownicy" czyli np. dostęp MCU do chmury za pomocą modułu Ethernetowego. Układ , który sobie upatrzyłem do realizacji tego zadania to W5500 firmy WIZnet. Do testów kupiłem  moduł  ETH WIZ click Serbskiej firmy Mikroelektronika , który dostaniemy również na naszym rynku.

poniedziałek, 11 listopada 2019

PIC18FxxQ84 - 8 bitowiec firmy Microchip z CAN FD na pokładzie.


Firma Microchip prowadzi szeroko zakrojoną ekspansję mikrokontrolerów 8-bitowych m.in w swojej flagowej serii PIC. Zjawisko jest o tyle ciekawe, że po wykupieniu firmy ATMEL wydawać by się mogło , że Microchip oprze swoje nowe konstrukcje PIC o rdzeń firmy Atmel. Nic z tych rzeczy. Pomimo , że core Microchipa jest mniej wydajne od Atmel to jednak jest dziedzina w której core Microchipa bije na głowę wyroby Atmel-a w ekosystemie 8-bitowym a jest to odporność na zakłócenia. Seria PIC jest dzięki tej właściwości bardzo chętnie stosowana w przemyśle ,gdzie odporność na zakłócenia jest kluczowym aspektem dla MCU. Kolejnym ciekawym modelem , który wejdzie niedługo do sprzedaży jest PIC18FxxQ84. Microchip jest znany z ciekawych peryferiów , którymi obudowuje swoje wyroby. Tym razem mamy do czynienia, zdaje się z  pierwszym  na świecie MCU 8-bitowym wyposażonym w CAN FD przy czym kompatybilność wsteczna z CAN 2.0 jest zachowana.

wtorek, 29 października 2019

ZERYNTH - sterowanie stanem pinu za pomocą chmury WolkAbout.

Temat związany z chmurami cokolwiek mnie zafascynował. Dotychczas  patrzyłem na ten temat od strony sprzętu przez pryzmat wyłącznie Rasbety PI . Okazuje się jednak , że łączność z chmurą możemy z powodzeniem zrealizować na dowolnym MCU . Co jest do tego potrzebne oprócz MCU ? Moduł WiFi lub ciekawiej np  Wiznet W5500 ze sprzętowym stosem TCP/IP . Z chmurą możemy rozmawiać na dwa sposoby , za pomocą API REST i MQTT. W przypadku MQTT chmura robi za Brokera. Oprogramowanie MCU do komunikacji z chmurą wydaje się być zadaniem cokolwiek ambitnym w szczególności kiedy spotykamy się z nowymi dla nas zagadnieniami . Dlatego dobrym sposobem dla obycia się z klimatem chmur jest zastosowanie  technologii np. ZERYTH, który został stworzony do prostej implementacji komunikacji z chmurą. Bazując na przykładach z dokumentacji ZERYTH możemy w ciągu kilku minut załapać jak posługiwać się językiem Python i jak zrealizować łączność z chmurą. W tym artykule pokażę w jaki sposób możemy sterować stanem pinu na płytce wspieranej przez ZERYNTH z wykorzystaniem chmury WolkAbout .

piątek, 18 października 2019

ZERYNTH + WolkAbout = prosty przepis na rozmowę z Chmurą.

Jestem pod dużym wrażeniem prostoty z jaką udało mi się "zagadać" z webową Chmurą. Dotychczas był to dla mnie temat trochę z pogranicza czarnej magii.  Ale dzięki ZERYNTH-owi i wspieranej przez ten projekt czeskiej chmurze WolkAbout ,udało mi się zaprzyjaźnić z tym tematem całkowicie bezboleśnie. Jest wiele obecnie na rynku rozwiązań w postaci płytek różnych producentów , które mają zaimplementowany wsad do realizacji połączenia z chmurą. Wadą tych rozwiązań jest w/g mnie ograniczenie do jednej wybranej chmury. W przypadku projektu ZERYNTH mamy do wyboru wiele chmur . Mnie w oko wpadła czeska chmurka WolkAbout i z tą chmurką udało mi się w prosty sposób porozmawiać. A co mnie kręci w projekcie ZERYNTH ? przede wszystkim możliwość prostej implementacji Gateway'a przy pomocy języka Python. Dopóki nie poznałem projektu ZERYNTH ,przymierzałem się do RasberyPI w roli bramy ale teraz widzę, że nie ma takiej potrzeby. Za ułamek kwoty RasberyPI mogę osiągnąć tą samą funkcjonalność w prostszy sposób na płytce z MCU 32 bit wspieranej przez ZERYNTH. A baza płytek ciągle się powiększa. W 2020 r zobaczymy wsparcie m.in dla PIC32.

wtorek, 8 października 2019

PIC32MM - biblioteka do obsługi kart SD od Microchipa. Wyświetlanie bitmapy na LCD.

Wszystkim dobrze znana biblioteka FatFs została bardzo ładnie i zgrabnie zaimplementowana dla serii PIC32MM . Kawał dobrej roboty zrobił Microchip ,dzięki czemu nie trzeba się trudzić aby bibliotekę FatFs przysposobić do współpracy z naszym miłym MCU. Co więcej biblioteka jest fajnie konfigurowalna i automatycznie dołączana z poziomu MCC w MPLAB-X IDE. Użytkownik praktycznie zwolniony jest z wszelkiej ingerencji w soft i może skupić się wyłącznie na używaniu biblioteki. W artykule pokażę jak dodać bibliotekę do projektu i jak tego użyć . Naszym celem będzie wyświetlenie obrazka z nagłówka artykułu na LCD i pobranie jego danych z karty SD . Mały Fiat na "małym" wyświetlaczu LCD powinień współgrać idelanie :)

piątek, 4 października 2019

ZERYNTH - Hello World

ZERYNTH to platforma implementująca język PYTHON we wspieranych przez projekt MCU. Umożliwia m.in proste podłączenie MCU do chmury i proste oprogramowanie tego w języku PYTHON. Na projekt ten wpadłem kompletnie przypadkiem ale zainteresował mnie i postanowiłem chwilę się jemu przypatrzeć. W szczególności , że projekt wspiera MCU firmy Microchip obecnie na razie tylko ATSAM-y ale jak mi powiedział twórca projektu na początku 2020 r wspierana będzie seria PIC32. Projekt jest cały czas rozwijany i dodawane są nowe MCU. Moim zdaniem rzecz jest ciekawa i warta zapoznania się z nią. A zaskakujące w tym wszystkim jest to, że to naprawdę działa :) . Spróbujmy na początek zasterować wybranym pinem MCU przy pomocy języka PYTHON.

niedziela, 29 września 2019

ILI9341 - kolorowy wyświetlacz w rozmiarze 2.8"

W moich zbiorach pojawił się wyświetlacz ILI9341 w rozmiarze 2.8 ". Przygodę z kolorowym LCD zaczynałam od wymiaru 1.8 ". Człowiekowi zawsze mało i w imię tej zasady wspinam się z rozmiarem powoli w górę pomimo, że kompleksów żadnych nie mam :) . Kolejnym  wyświetlaczem jaki będę poznawał będzie zapewne w wymiarze 3.5 ". W zasadzie bibliotekę dla PIC32MM i ATSAM już poczyniłem dla mniejszego brata 2.2 ". Biblioteka powinna działać zatem i na 2.8 " bez żadnych zmian. Dodatkowo wyświetlacz 2.8" obsługuje dotyk ale to temat na oddzielny artykuł. W tym artykule chciałbym pokazać podstawy sterowania wyświetlaczem LCD czyli jak w ogóle zacząć cokolwiek wyświetlać na LCD z rodziny ILIxxxx.


niedziela, 22 września 2019

Jak napisać w języku C wygodny dostęp do warstwy sprzętowej . Praktyczny przykład na bazie modułu radiowego SI4463.

W artykule pokażę jedną z metod poruszania się po warstwie sprzętowej  w języku C . Swoje rozważanie oprę na module radiowym SI4463. Ale tak naprawdę sprzęt jest tylko tłem dla pokazania samej metodologi i podejścia do zagadnienia. W wielu przypadkach bazujemy na bibliotekach sprzętowych napisanych przez innych adeptów języka C ,no bo w sumie po co odkrywać koło na nowo. Jeśli mamy szczęście to z takich bibliotek można się czegoś nauczyć bo metodologia jest zrozumiała i w sposób przejrzysty zakodowana. Ale to rzadkość. W większości przypadków do bibliotek czujemy awersję bo styl nam nie leży i ostatecznie trudno zrozumieć co poeta miał na myśli etc. Działa bo działa ale analiza kodu przysparza nas o ból głowy, więc odpuszczamy. Ekspertem od języka C nie jestem i wymądrzać się tutaj nie mam zamiaru. Ale ja wiele nauczyłem się na podstawie plików nagłówkowych napisanych dla MCU 32 bitowych. Gdzie królują Struktury , Unie, Wskaźniki . Moim zdaniem to olbrzymia kopalnia wiedzy o programowaniu warstwy sprzętowej w języku C, ponieważ te pliki piszą zawodowi informatycy, dlatego mamy pewność, że zastosowane rozwiązania programistyczne są optymalne.

środa, 18 września 2019

SI4463 - transciver RF firmy Silicon Labs - STANDBY mode (50nA)

Mój ulubiony moduł radiowy SI4463 jest mistrzem w trybach Power Saving. Dlatego jest doskonałym wyborem  dla aplikacji bateryjnych. W najniższym dostępnym trybie Shutdown uzyskamy pobór prądu na poziomie 30 nA !!!. Czyli można by rzec, że ilość śladowa. W artykule podejmę się krótkiej retrospektywy trybów Power Saving dostępnych w module. Ze szczególnym uwzględnieniem trybu STANDBY, który wydaje się być idealnym trybem z punktu widzenia poboru prądu i czasu pobudki.

wtorek, 10 września 2019

SAM L10/L11 External Interrupt Controller (EIC)

Artykuł jest potrzebą chwili i powstał pod wpływem pisania biblioteki dla modułu radiowego SI4463. Podczas pisania biblioteki zaszła potrzeba użycia przerwania sprzętowego na pinie PA03 , który współpracuje z pinem IRQ modułu radiiowego RF. Niby sprawa trywialna ot wyczarujmy sobie przerwanie no ale kiedy poznajemy jakiś MCU i pierwszy raz stykamy się z jego modułem peryferyjnym  opierając się tylko na dokumentacji to takie zadanie może stać się wyzwaniem :) . W artykule pokażę  jak wyglądała moja droga do rozpoznania i w efekcie konfiguracji przerwania sprzętowego z wykorzystaniem modułu peryferyjnego EIC (External Interrupt Controller)

sobota, 7 września 2019

ATSAML10/11 - nowa wersja (ver 3.3) płytki developerskiej

Nowa wersja płytki dla ATSAML10 jest już dostępna. Przyczynkiem aktualizacji była praca nad biblioteką dla modułu radiowego SI4463. W boju wyszło mi, że  przydałoby się więcej dostępnych GPIO dla gniazda pod moduł RF. Przy okazji wykryłem błąd związany z przełącznikami SW1 i SW2. Do płytki dodałem dwie  diody LED , domyślnie do wykorzystania jako sygnalizacja dla modułu radiowego , tryb TX i RX. Nowa płytka jest dostępna na GitHub . Płytka sprawdza się w boju jest ładna , seksowna i funkcjonalna. Szczególne pięknie prezentuje się z obsadzonym wyświetlaczem i modułem radiowym RF a wszystko to spasowane kolorystycznie , można oprawić w ramki wieszać na ścianie , podziwiać i cieszyć się widokiem :)