MaixCAM nie jest najpotężniejszą platformą rozwojową AI z kamerą, pod względem parametrów jest daleko za płytkami Jetson Orin Nano, ale to nie zmienia faktu, iż jest w stanie realizować typowe zadania rozpoznawania twarzy i obiektów oraz ich śledzenia. Co więcej, moduł kosztuje jedną siódmą ceny zestawu od Nvidii, co jest definitywnie ceną atrakcyjną, biorąc pod uwagę, iż w zestawie dostajemy kamerę i ekran.
Specyfikacja, zakup i zawartość zestawu
Zestaw został zakupiony w oficjalnym sklepie Sipeed na portalu AliExpress [1]. Dostępne są dwa warianty zestawu: standardowy i lite.
Zestaw lite jest przeznaczony do gotowych projektów embedded i nie zawiera ekranu. Wersja standardowa ma ekran oraz obudowę z plastiku. Różnica w cenie wynosi około 56 złotych. Zestawy mogą zawierać dodatkową kartę microSD z zainstalowanym systemem operacyjnym, ale można też ją dokupić oddzielnie. Do testów został zakupiony zestaw standardowy bez karty, w chwili pisania kosztuje 229,99 PLN + koszty wysyłki. Jest to przynajmniej siedem razy taniej niż cena zestawu Nvidia Jetson Orin Nano, ale wraz z różnicą w cenie mamy do czynienia z przepaścią pod względem specyfikacji. Zestaw przychodzi w prostym, plastikowym pudełku i zawiera poza samym modułem z kamerą tylko kabel USB-C sprawiający wrażenie solidnego oraz dodatkową płytkę z wtykiem i gniazdem USB-C oraz szeregiem dodatkowych pinów pozwalających na dołączenie zewnętrznego interfejsu UART oraz zasilania. Dzięki temu można zaobserwować proces bootowania modułu, a także kontrolować go za pomocą innego mikrokontrolera (po napisaniu stosownego kodu dla modułu).
MaixCAM oparty jest na układzie SOPHGO SG2002, który może poszczycić się posiadaniem trzech procesorów: główny układ to taktowany zegarem 1 GHz rdzeń RISC-V C906, na którym pracuje system Linux. Drugi rdzeń taktowany jest zegarem 700 MHz, również RISC-V, i jego zadaniem jest obsługa systemu RTOS, który wydaje się być odpowiedzialny za obsługę I/O. Trzecim rdzeniem jest sporo prostszy układ oparty na architekturze 8051 i taktowany zegarem 25…300 MHz, jest to rdzeń low power przeznaczony do monitorowania modułu, gdy główne rdzenie są nieaktywne. Moduł ma też 256 MB pamięci RAM DDR3. Może się wydawać, iż to za mało na model AI i jeszcze system operacyjny, ale w rzeczywistości to wystarczy. Ostatnim i najważniejszym elementem MaixCAM jest akcelerator NPU o wydajności 1 TOPS @ INT8, czyli jeden bilion operacji na zmiennych ośmiobitowych. Rdzeń ten wspiera format danych BF16 (Brain Float 16-bitowy) opracowany dla sieci neuronowych i nauczania maszynowego w celu przyspieszenia pracy. Model Mobilenet v2 osiąga prędkość przetwarzania obrazu 130 FPS, a model YOLOv5 100 FPS. Tak przynajmniej twierdzi Sipeed na stronie oferty.
Zestaw standardowy zawiera ekran dotykowy o przekątnej 2,3 cala i rozdzielczości 552×368 px, według Sipeed jest to matryca IPS. Oczywiście ekran jest dotykowy i to jest główna metoda interakcji z systemem. W zestawie zamontowana jest kamera oparta na sensorze GC4653, o rozdzielczości czterech megapikseli, co pozwala na pracę z obrazem 2K przy trzydziestu klatkach na sekundę, dostępne są jednak moduły innych kamer, w tym moduł termowizyjny z czujnikiem głębi/LIDAR-em. Komunikacja między kamerą a płytką odbywa się przez interfejs MIPI CSI z czterema liniami i złączem 22-pinowym oraz możliwością rozdzielenia na dwa moduły kamer. Kamera w zestawie wymaga ręcznej regulacji ostrości dzięki wkręcanemu obiektywowi na gwincie M12, ogniskowa wynosi 3,05 mm, a stała przesłona to f/2,5. Do prototypowania i testowania to wystarczy, ale w docelowym produkcie można by się pokusić o lepszy obiektyw w standardzie C-mount. Warto dodać, iż obudowa modułu wykonana jest z plastiku, a Sipeed zapewnia dostęp do modeli 3D elementów obudowy, które można w razie potrzeby wydrukować samodzielnie. Tu jednak napotkana została pewna trudność – modele dostępne są na portalu dla drukarek 3D Bambu Lab, i choć teoretycznie można je pobrać bez rejestracji, Autorowi to się nie udało z powodu „wyczerpania limitu”, cokolwiek to znaczy (nigdy wcześniej Autor nie korzystał z tego portalu i nie zamierza korzystać w przyszłości).
MaixCAM wspiera łączność Wi-Fi, a także posiada szereg interfejsów, w tym USB 2.0. Inne to I²C, SPI i UART, czyli standard w świecie systemów wbudowanych. Po podłączeniu do komputera przez kabel USB-C (dołączony do zestawu) moduł pojawia się w systemie jako wirtualny interfejs sieciowy, co pozwala na zdalny dostęp do systemu Linux przez SSH. Jest to szczególnie przydatne dla modułów Lite, które z racji nieposiadania własnego ekranu wymagają zdalnej kontroli. Jeśli moduł MaixCAM ma skonfigurowany dostęp do Wi-Fi, można się z nim połączyć przez SSH również tą drogą. Warto nadmienić, iż po przygotowaniu własnej karty microSD i jej zamontowaniu w module przykładowe modele nie będą działać – potrzebny jest dodatkowy krok ręcznej instalacji bibliotek runtime, co można wykonać albo przez SSH, albo przez dostępną opcję na ekranie modułu. Nie wszystkie funkcje będą też działać, gdyż na przykład do pozycjonowania potrzebny jest dodatkowy moduł IMU. Moduł ten dostępny jest tylko w MaixCAM Pro (droższa wersja kamery) i w najnowszym modelu MaixCAM 2. Teoretycznie można dołączyć do MaixCAM układ IMU, na przykład używany w wersji Pro QMI8658 firmy QST. Oczywiście inne układy też będą działać po napisaniu stosownego sterownika. Sipeed w dokumentacji podkreśla fakt, iż sterownik jest oddzielnym elementem od kodu odpowiedzialnego za określanie orientacji modułu.