Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Arduino Pro – niekonwencjonalna, łatwa droga do sukcesu aplikacji Io

 

  • Arduino – dlaczego sprawdzi się nie tylko u amatorów?
  • Arduino Pro – dlaczego warto postawić na to rozwiązanie?
  • Arduino Pro – do kogo jest adresowane?
  • Platforma sprzętowa Arduino Pro
    • Arduino Portenta
    • Arduino MKR i Arduino Pro
    • Arduino Nano 33
  • Moduły rozszerzeń dla Arduino Portenta H7
  • Oprogramowanie – Arduino IoT Cloud, Arduino IoT API, Arduino IDE Pro, Arduino CLI
    • Arduino IoT Cloud
    • Arduino IoT API
    • Arduino IDE Pro
    • Arduino IDE CLI

Arduino – dlaczego sprawdzi się nie tylko u amatorów?

Platforma Arduino zyskała w świecie ogromną popularność. Z początku była kojarzona głównie z zastosowaniami amatorskimi, hobbystycznymi, jednak z czasem zyskała uznanie także profesjonalistów. Najważniejszą zaletą rozwiązań oferowanych przez Arduino jest łatwość pokonania drogi od pomysłu do aplikacji i dlatego doczekało się ono wielu milionów użytkowników na całym świecie. Za ich pomocą są budowane nie tylko prototypy, ale również gotowe wyroby. Bazując na swojej popularności, platforma Arduino wkracza w świat urządzeń IoT i proponuje łatwy w użyciu sprzęt oraz oprogramowanie. Pozwalają one na budowanie aplikacji Internetu Rzeczy przy wykorzystaniu gotowych rozwiązań, bez konieczności opracowywania idei od podstaw i w wielu wypadkach również bez potrzeby angażowania zewnętrznych ekspertów.

Wykorzystanie Arduino w aplikacjach embedded

Potwierdzeniem tego są liczne przypadki aplikacji embedded prezentowane w Internecie. Powstają bez wykorzystania kompilatora języka C czy C++ , jedynie w oparciu o platformę Arduino i dostępne dla niej gotowe moduły, takie jak nieskomplikowane sterowniki reklam świetlnych, czy bardziej złożone – przeznaczone dla maszyn CNC i aplikacji komunikujących się bezprzewodowo.

Rozwojowi platformy sprzyjało udostępnienie jej pełnej dokumentacji, a także licznych przykładów wykorzystania, co spowodowało wysyp innowacyjnych rozwiązań. Jeśli bowiem twórcy platformy sami nie wpadli na jakieś wykorzystanie, wykonał je ktoś inny i zaprezentował je na własnym blogu lub stronie internetowej. W ten sposób doprowadzono do powstania niezliczonej liczby modułów rozszerzenia, tak zwanych shields (lub po polsku – nakładek), zawierających różne użyteczne opcje. Jest takie chińskie przysłowie – „ten świat jest taki wielki, że nie ma nic takiego, czego by nie było”. Sprawdza się ono także w odniesieniu do ekosystemeu Arduino. W oparciu o dostępne w jego ramach moduły sprzętowe, biblioteki i oprogramowanie powstały niezliczone projekty, które dają możliwość nie tylko podglądania rozwiązań, ale również czerpania z bazy pomysłów.

Użytkownicy, którzy wchodzili w świat elektroniki wykorzystując platformę Arduino, chętnie sięgają po te same rozwiązania opracowując profesjonalne, bardziej złożone projekty. Sprzyja temu charakter open source Arduino, który został zachowany nawet pomimo rosnącej profesjonalizacji platformy. Dzięki temu ponad 30 milionów aktywnych użytkowników wprowadza dalsze innowacje, rozwijając środowisko, odpowiadając na potrzeby rynku, a także testując rozwiązania w różnych warunkach i miejscach na świecie. Dla użytkowników istotną kwestią jest też brak opłat za licencję na udostępnienie i możliwość wykorzystania protokołu komunikacyjnego.

Pomimo otwartych, ogólnie dostępnych źródeł programów, jeśli trzeba „uszczelnić” dostęp do sieci komunikujących czy czujników, można użyć kryptografii oraz mechanizmów autentykacji, aby uwierzytelniać urządzenia i szyfrować transmisję danych. Co istotne, jeśli będziemy mieli taką potrzebę, z całą pewnością znajdziemy gotowe rozwiązania w obszernej bibliotece aplikacji i modułów Arduino.

Arduino Pro – dlaczego warto postawić na to rozwiązanie?

Coraz powszechniej mówi się o dwóch rewolucyjnych technologiach, które powodują sporo zamieszania na rynku komponentów elektronicznych oraz oprogramowania do analizy danych. Mowa tu o Internecie Rzeczy (IoT) oraz Przemyśle 4.0 (Industry 4.0). Pierwsza będzie miała ogromny wpływ na całe nasze życie, natomiast z drugą spotkamy się głównie w przedsiębiorstwach przemysłowych. Obie wymagają danych pozyskiwanych z sieci czujników rozmieszczonych w punktach ważnych dla aplikacji oraz rozbudowanych algorytmów, a coraz częściej także angażujących technologię sztucznej inteligencji (AI) do obróbki, syntezy, analizowania i wyciągania wniosków na podstawie informacji z czujników i innych źródeł. Na przykład, za pomocą technologii IoT dałoby się wykonać i połączyć w sieć czujniki monitorujące na bieżąco poziom wody w rzece i warunki pogodowe wzdłuż całego, interesującego nas biegu, nawet w ramach terytorium kraju lub ponad jego granicami. W ten sposób, korzystając dodatkowo z AI, dałoby się nie tylko monitorować poziom wody w tej rzece, ale również ogłaszać odpowiednie alarmy powodziowe, przygotowywać miasta na stan suszy lub powodzi. Podobnie z siecią energetyczną – tu dane z czujników pozwoliłyby na łatwe pozyskiwanie informacji na temat obciążenia sieci, jej awarii, planowanie prac serwisowych itd.

Zestaw uruchomieniowy Arduino Pro: ABX00011

Co istotne, dotychczas takie aplikacje mogły być realizowane jedynie przez koncerny dysponujące ogromnymi zasobami finansowymi, a także mającymi dostęp do często poufnych technologii. Dzięki platformom takim, jak Arduino Pro dano możliwość realizacji zbliżonych rozwiązań również osobom lub przedsiębiorstwom dysponującym znacznie skromniejszymi zasobami finansowymi, a dodatkowo, dzięki open source dano im dostęp do ogromnej bazy wiedzy i rozwiązań tworzonych przez użytkowników na całym świecie. Slogan reklamowy Arduino mówi – nie ma znaczenia, jak wielka lub mała jest twoja firma, Arduino Pro jest gotowe do wspólnej pracy dla jej przekształcenia i rozwoju.


Arduino Pro – do kogo jest adresowane?

Mimo iż w sloganie reklamowym Arduino Pro mówi się o przedsiębiorstwie, dzięki dostępności komponentów, oprogramowania i dokumentacji oraz łatwości ich użycia, Arduino Pro może być wykorzystane przez każdego, kto ma pomysł lub potrzebę wykonania aplikacji na bazie sieci połączonych czujników. Do analizy danych nie trzeba od razu zaprzęgać algorytmów AI – w wielu sytuacjach wystarczy, że zostaną one w odpowiedni sposób pokazane operatorowi lub użytkownikowi. Jednak największy potencjał do wykorzystania Arduino Pro będą miały:

  • Przedsiębiorstwa dokonujące transformacji sieci dystrybucji produktów lub usług z tradycyjnej postaci bazującej na zakontraktowanych ilościach do wspomaganej przez IoT dostawy na zamówienie, zależnie od potrzeb kontrahenta.
  • Zakłady produkcyjne poszukujące możliwości poprawy efektywności produkcji poprzez monitorowanie, kontrolę oraz analizowanie stanów zapasów, linii produkcyjnych, maszyn i urządzeń, linii dostaw itp.
  • Startupy poszukujące możliwości dodania transmisji danych do już istniejących rozwiązań.
  • Użytkownicy rozwiązań proponowanych przez Arduino, którzy chcą przeprowadzić próby terenowe opracowywanych przez siebie aplikacji lub wykonać krótkie serie produktów.

Arduino Pro opracowano przede wszystkim po to, aby wspierać profesjonalistów będących motorem zmian w przedsiębiorstwach i otaczającym nas świecie. Platforma obejmuje wszystkie niezbędne aspekty, których mogą oni potrzebować: chmurę do akwizycji i przechowywania danych, sprzęt, środowisko programistyczne przeznaczone do tworzenia programów dla platform sprzętowych, rozwiązania łączności oraz wyznaczania pozycji na bazie danych systemów geolokalizacji, interfejs użytkownika, wizualizacje danych, algorytmy oraz ich połączenie z już istniejącym systemem zarządzania przedsiębiorstwem. Co ważne, w wielu sytuacjach uda się to bez konieczności wykonywania kosztownych ekspertyz oraz angażowania drogich konsultantów, a to dzięki polityce open source w oparciu o którą stworzono Arduino Pro i możliwości wykorzystania już wypróbowanych rozwiązań.

Platforma sprzętowa Arduino Pro

Arduino Portenta

Zestaw uruchomieniowy Arduino Pro: ABX00042

Jako baza dla bardziej zaawansowanych rozwiązań w ramach platformy Arduino Pro proponowana jest płytka mikrokomputera Arduino Portenta H7, wyposażona w 2-rdzeniowy procesor STM32H747 zawierający jednostki: Cortex M7 taktowaną częstotliwością 480 MHz oraz Cortex M4 taktowaną 240 MHz. Użytkownikom przyzwyczajonym do płytek z procesorami AVR duża moc obliczeniowa może wydać się niepotrzebna, ale w niektórych zastosowaniach może ona mieć swoje uzasadnienie w średnim poborze mocy z zasilania.

Wyobraźmy sobie wspomnianą wcześniej sieć czujników poziomu wody i warunków środowiskowych rozmieszczoną wzdłuż rzeki. Nie w każdym miejscu będziemy mieli dostępne zasilanie sieciowe, stacjonarne. Nie zawsze też uda się spełnić wymagania techniczne, aby je pozyskać. W praktyce więc zasilanie stacjonarne jest doprowadzane do węzłów/bramek sieci czujników, które planuje się w miejscach, gdzie jest ono dostępne. Same czujniki są natomiast zasilane energią pozyskiwaną z baterii, akumulatorów lub źródeł energii odnawialnej. Z punktu widzenia użytkownika czujników, im rzadziej baterie lub akumulatory będą wymagały wymiany, tym lepiej. Częstotliwość wymiany baterii jest ściśle związana z trwałością tych źródeł oraz poborem energii przez zasilane urządzenie. Z tego powodu procesor w aplikacji czujnika IoT zwykle pracuje w trybie uśpienia, w którym jest pobierana znikoma energia ze źródła zasilania. Następnie jest okresowo wyprowadzany z trybu oszczędzania energii i wykonuje pracę związaną z akwizycją danych oraz ich kodowaniem w pakiety zrozumiałe dla odbiorcy. Co oczywiste, takie zadanie zajmie znacznie mniej czasu szybkiej jednostce procesorowej. A więc, pomimo ogromnej mocy obliczeniowej (a przede wszystkim dzięki niej), średni pobór energii z zasilania przez szybki procesor jest znacznie mniejszy, niż przez powolny, taktowany częstotliwością rzędu kilku MHz, chociaż intuicyjnie wydawać by się mogło, że jest inaczej.

Oczywiście, nic nie stoi też na przeszkodzie, aby wykorzystać potencjał drzemiący w Arduino Portenta H7 również w aplikacjach, w których procesor jest zasilany ze stacjonarnego źródła zasilania i zajmuje się np. algorytmem przetwarzania i oceny obrazu, kondycjonowaniem sygnałów i innymi.

Oba rdzenie procesora mikrokomputera Arduino Portenta H7 współdzielą moduły peryferyjne, za pomocą których komunikują się z otoczeniem oraz pomiędzy sobą. Mikrokomputer może wykonywać programy:

  • Napisane za pomocą Arduino Sketch – skryptów realizowanych pod kontrolą systemu operacyjnego Mbed OS.
  • Natywne aplikacje dla Mbed OS.
  • Przeznaczone dla wbudowanego interpretera Micro Python/Java Script.
  • Realizowane w oparciu o platformę TensorFlow Lite.

Wbudowany moduł do komunikacji bezprzewodowej umożliwia jednoczesną łączność poprzez Wi-Fi oraz Bluetooth. Interfejs Wi-Fi dla platformy Arduino Pro może funkcjonować jako punkt dostępowy, stacja lub w trybie podwójnym (punkt dostępowy /stacja) i umożliwia transmisję danych z prędkością do 65 Mb/s. Interfejs Bluetooth pracuje w trybach Bluetooth 2.0 i BLE. Płytka mikrokomputera Arduino Portenta H7 jest zgodna z formatem Arduino MKR, ale wyposażono ją w 80-pinowe złącze o dużej gęstości.

Arduino MKR i Arduino Pro

Czujniki i moduły komunikacyjne mogą być wykonywane z użyciem produktów z rodziny Arduino MKR. Są wśród nich płytki wyposażone w procesory z rdzeniem Cortex-M0+ oraz rozmaite interfejsy komunikacyjne, dzięki którym wykonane aplikacje mogą być łatwo skalowalne. Warto wspomnieć, że te moduły są dobrze znane i wykorzystywane również przez konstruktorów oraz producentów innych urządzeń, niezwiązanych z IoT.

Zestaw uruchomieniowy Arduino Pro: ABX00011

Producent opisując swoje moduły z rodziny Arduino MKR sugeruje również jakby poziom rozwiązania, na którym mogą one być stosowane. Wydaje się, że ta sugestia jest związana z mocą obliczeniową oraz z wyposażeniem w układy rozszerzające funkcjonalność procesora. Na przykład, proponowane na poziomie Beginner (początkujący) moduły MKR WIFI 1010 są wyposażone w interfejsy Wi-Fi i Bluetooth LE, które mają raczej niewielki zasięg – zgodnie z materiałami producenta pozwalają one na wykonanie aplikacji automatyki budynkowej pracującej wewnątrz pomieszczeń. Płytka bazuje na procesorze ATSAMD21 z rdzeniem Cortex-M0+ oraz module komunikacyjnym Wi-Fi/BLE firmy u-blox NINA-W102. Moduły MKR proponowane na poziomie Intermediate (średniozaawansowany) pozwalają już na budowanie sieci o zasięgu wielu kilometrów (Sigfox, LoRa, Narrowband IoT) lub nawet globalnym (GSM). Są one proponowane do aplikacji obejmujących rolnictwo, transport, przemysł, monitorowanie środowiska, inteligentne miasta, technologię wearables i inne.

 

Zestaw uruchomieniowy Arduino Pro: ABX00022

Proponowana na poziomie Advanced (zaawansowanym) płytka MKR Vidor 4000 oprócz procesora ATSAMD21 ma również zamontowany układ FPGA typu 10LC016 z rodziny Cyclone. Z racji tego, że Arduino proponuje tę płytkę do aplikacji wymagających przetwarzania obrazu i/lub dźwięku, to wyposażono ją w interfejsy Wi-Fi/BLE pozwalające na komunikację przede wszystkim z lokalnym komputerem PC, tabletem lub smartfonem, które zapewne będą pełniły funkcję interfejsu użytkownika.

 

Arduino Nano 33

Do aplikacji profesjonalnych są proponowane dwie płytki bazowe: Arduino Nano 33 BLE oraz Arduino Nano 33 BLE Sense. Ich wyposażenie zostało przemyślane w taki sposób, aby nadawały się do zastosowania w urządzeniach typu wearables lub montażu na dronach czy w pojazdach autonomicznych. Miniaturowe wymiary płytek (jedynie 45 mm×18 mm) pozwalają na umieszczenie gotowego, bardzo mocnego mikrokomputera w niewielkiej przestrzeni i wykorzystanie jego mocy obliczeniowej oraz interfejsów umożliwiających komunikację z otoczeniem. Producent deklaruje, że są to jego najmniejsze produkty o mocy obliczeniowej na tyle dużej, że można dzięki nim korzystać z oprogramowania bazującego na AI.

 

Arduino Nano 33 BLE
Arduino Nano 33 BLE Sense

 

 

 

 

 

 

 

Obie płytki korzystają z mocy rdzenia ARM Cortex-M4 taktowanego częstotliwością 64 MHz, wbudowanego w układ radiowy nRF52840. Arduino Nano 33 BLE wyposażono w 9-osiowy sensor IMU, natomiast 33 BLE Sense dodatkowo ma też czujniki temperatury, wilgotności, ciśnienia, wbudowany mikrofon, czujnik gestów, zbliżeniowy oraz natężenia oświetlenia. Jest to imponujące wyposażenie jak na tak niewielką płytkę, które pozwala wykorzystać ją nie tylko do budowy urządzeń wearables, ale również sieci czujników stosowanych w budownictwie lub eksperymentach naukowych wymagających komunikacji o niedużym, lokalnym zasięgu.

Moduły rozszerzeń dla Arduino Portenta H7

Do najbardziej zaawansowanych, zgodnych z Arduino Portenta H7 modułów rozszerzenia należy nakładka Portenta Vision. Zamontowano na niej kamerę o rozdzielczości 324×324 pikseli i bardzo małym poborze mocy. Dzięki skromnemu zapotrzebowaniu na energię ten moduł może być użyty również w aplikacjach przetwarzania obrazu pracujących przy nieprzerwanym zasilaniu z baterii. Sensor obrazu typu CMOS ma bardzo dużą czułość i umożliwia rozpoznawanie gestów, pomiar światła otoczenia, ocenę odległości oraz identyfikację obiektów. Moduł wyposażono również w dwa mikrofony dookólne z interfejsem cyfrowym. Obraz wraz z dźwiękiem mogą być rejestrowane na karcie MicroSD. Dane z modułu mogą być przesyłane za pomocą interfejsu Ethernet lub LoRa. Wykonanie aplikacji dla modułu jest ułatwione dzięki dostępności biblioteki funkcji OpenMV, dostępnej dla języka Python.

Rodzina produktów MKR zawiera całkiem spory wybór modułów rozszerzających funkcjonalność płytki bazowej. Są wśród nich nie tylko płytki mające dodatkowe komponenty elektroniczne, ale również nieskomplikowane przejściówki pozwalające na doprowadzenie sygnałów z otoczenia za pomocą standardowych złączy przemysłowych. Wśród płytek rozszerzających funkcjonalność warto wymienić liczne płytki interfejsów (MKR 485 – RS485, MKR CAN – CAN Bus, MKR ETH – Ethernet), płytkę przekaźników, driver silników mający 4 wyjścia stałoprądowe oraz 4 wejścia dla czujników analogowych, płytkę z gniazdem pamięci MicroSD, na której to można lokalnie przechowywać ogromną ilość danych, płytkę z czujnikami parametrów środowiskowych, płytkę z matrycą diod RGB, płytkę czujników temperatury i z 9-osiowym żyroskopem/miernikiem przyśpieszenia.

Oprogramowanie – Arduino IoT Cloud, Arduino IoT API, Arduino IDE Pro, Arduino CLI

Nawet najbardziej zaawansowany komputer jest nieprzydatny, jeśli nie ma odpowiedniego oprogramowania. Twórcy Arduino Pro oferując sprzęt przeznaczony do tworzenia aplikacji IoT, wprowadzili również odpowiednie oprogramowanie służące nie tylko do tworzenia aplikacji, ale umożliwiające też bezpieczną akwizycję, przechowywanie i przetwarzanie danych.

Arduino IoT Cloud

Arduino IoT Cloud jest łatwym, bezpiecznym sposobem na dołączenie pracujących zdalnie czujników do aplikacji zarządzającej pracą przedsiębiorstwa lub interfejsu pozwalającego na korzystanie z danych milionom użytkowników na przykład, w formie mapy, wykresu lub innej reprezentacji graficznej. Ponadto, chmura Arduino IoT Cloud pozwala na zaadresowanie i dostęp z interfejsu użytkownika do konkretnej lokalizacji wymagającej z jakiegoś powodu inspekcji czy serwisu. Dostęp jest możliwy z dowolnego miejsca na świecie, w którym dysponujemy połączeniem do chmury czy to za pomocą komputera PC, czy też urządzenia mobilnego. Co ważne, zainteresowani rozwojem takich aplikacji mają dostęp do tysięcy linii kodu gotowego do użycia we własnym rozwiązaniu, demonstrującego obsługę różnego rodzaju sensorów i urządzeń wykonawczych.

Arduino IoT API

Jak wspomniano, dane z czujników mogą być prezentowane w czasie rzeczywistym w formie graficznej lub przesyłane do bazy danych. Dostępne są liczne przykłady ich wykorzystania za pomocą arkuszy Google, asystenta Amazon Alexa i innych producentów oprogramowania. Korzystając z Arduino IoT API można również opracowywać własne, unikatowe aplikacje. Oprogramowanie chmury można wypróbować za darmo – pełna funkcjonalność jest dostępna przy dołączeniu pojedynczej płytki MKR lub Portenta. W celu dołączenia większej liczby urządzeń trzeba wykupić abonament. Tu jedna ważna uwaga. Wariant darmowy współpracuje jedynie z produktami Arduino, natomiast wariant komercyjny daje możliwość dołączenia do chmury innych mikrokomputerów, takich jak Raspberry Pi, modułów z ESP8266 itp.

Cała komunikacja z chmurą jest szyfrowana za pomocą protokołu SSL. Płytki z rodzin Arduino Portenta i Arduino MKR mają wbudowane jednostki kryptograficzne, które wspierają komunikację za pomocą tego protokołu w czasie rzeczywistym. Oprócz tego, wyposażono je w mechanizm autentykacji wspomagany za pomocą dodatkowego układu zawierającego klucz zgodny z X.509.

Nowością w ofercie Arduino jest oferta kart SIM. Użycie tych kart umożliwia tworzenie sieci czujników komunikujących się z chmurą za pomocą stacji bazowych sieci telefonii komórkowej, wykorzystywanych w trybie roamingu na obszarach ponad 100 krajów.

Arduino IDE Pro

Oprogramowanie dla urządzeń brzegowych może być wykonane za pomocą Arduino IDE Pro. To środowisko programistyczne dziedziczy cechy dobrze znanego Arduino IDE, więc jego użytkownicy nie muszą zmieniać wielu nawyków i na nowo uczyć się obsługi. Najszybszą drogą do rozpoczęcia tworzenia oprogramowania dla sieci czujników jest użycie edytora Web. Jest to rozwiązanie stosowane współcześnie przez wielu producentów oprogramowania. Ma tę zaletę, że w pewnym stopniu uniezależnia kompilator od mocy obliczeniowej i rodzaju systemu operacyjnego sprzętu, na którym pracujemy. Jako użytkownicy mamy też na bieżąco wprowadzane aktualizacje i poprawki oraz dostęp do najnowszych samouczków i przykładów. Kod źródłowy jest przechowywany w wydzielonym dla nas obszarze na serwerze i na pewno jest lepiej zabezpieczony, niż na przenoszonym przez nas laptopie czy nawet stojącym w biurze komputerze stacjonarnym. Ma to jednak tę wadę, że wymaga stałego dostępu do Internetu, co nie zawsze jest możliwe. Dlatego kolejną propozycją dla użytkowników jest wersja IDE, przeznaczona do zainstalowania na komputerze stacjonarnym. Jest ona – jak przystało programowi open source – dostępna dla systemów Windows, Linux (64 bit) i Mac OS X.

Arduino CLI

Zaawansowanym użytkownikom jest proponowany interpreter komend Arduino CLI pracujący w trybie konsoli (linii komend). Zawiera on kompilator, pozwala na zarządzanie płytkami oraz bibliotekami funkcji, programowanie urządzeń, ich włączanie/wyłączanie i inne czynności. Arduino CLI może być używane na platformach zbudowanych w oparciu o procesory wytwarzane przez ARM lub Intel. Dzięki temu można go używać równie dobrze na komputerze PC, jak i na mikrokomputerze typu Raspberry Pi.

tekst opracowany przez tme.eu