Open-Cube

Nový web open-cube.fel.cvut.cz (ve výstavbě)…

Alternativní otevřená řídicí kostka pro komponenty z LEGO setů NXT a EV3 (senzory a motory). Založená na Raspberry Pi Pico (ARM mikrokontrolér RP2040), programovatelná v jazyce MicroPython.

Vzhledem ke špatné dostupnosti řídicích jednotek LEGO NXT a EV3, které používáme ve výuce a také tomu, že nový “SPIKE” nás příliš neoslovil, rozhodli jsme se pokusit se vyvinout alternativní řídicí jednotku, která by byla kompatibilní se senzory a motory z obou setů – NXT a EV3. Jako základní stavební prvek jsme zvolili ARM mikrokontrolér RP2040 z aktuálně velmi populární a dobře dostupné platformy Raspberry Pi Pico. Jednotku by tedy mělo být možné programovat v jazyce MicroPython, což je výhodné, protože s Pythonem začínají naši prváci v prvním semestru programu Kybernetika a Robotika na FEL-ČVUT. Pro komunikaci s okolím – ideálně například běh PID regulátoru v reálném čase mimo kostku například v MATLABu – je v jednotce použit modul ESP-32, kdy lze použít Bluetooth nebo WiFi připojení. S Bluetooth jsme testovali obousměrný přenos rychlostí 200x za sekundu.

Aktuálně je dokončen vývoj a výroba první verze HW řídicí kostky (sestaveny zatím dva kusy…), probíhá testování funkčnosti HW. V rámci předmětu Práce v týmu v magisterské etapě programu KyR byly v letním semestru 2022 naprogramovány základní rutiny v MicroPythonu pro ovládání jednotlivých periférií. Aktuálně se Open-Cube věnují dva studenti v rámci svého bakalářského projektu. Cílem projektu je skloubit všechny doposud vytvořené prvky dohromady, otestovat HW a vytvořit demonstrační úlohu (například sledování čáry) s popisem HW, FW a vlastního programování “na vyšší úrovni” tak, aby bylo použití studenty prvního ročníku intuitivní a snadno pochopitelné.

Chcete se dozvědět více? Sledujte tuto stránku, kterou budeme postupně aktualizovat. V případě zájmu o spolupráci se můžete obrátit na Ing. Davida Novotného z Katedry měření, FEL, ČVUT, který výše uvedenou bakalářskou práci vede. Projekt je nazván Open-Cube, všechny materiály (schéma, FW….) jsou tedy dostupné (gitlab FEL, linky níže).

Aktuální info:
4/2023 – Firmware byl díky úsilí obou bakalářských studentů přepracován – nízkoúrovňové funkce jsou nyní v C, dají se zkompilovat do vlastního MicroPython balíku a tedy snadno uživatelsky používat. Probíhá update HW návrhu (odstranění chyb první verze, mírné vylepšení…), po jejímž ověření bude vyrobena cca 20ti kusová série pro testování a pilotní nasazení. Budou uvolněny i ve veškeré podklady (schémata, návrh DPS, výrobní podklady).

Řešení aktuálního zadání základoškolské robosoutěže s využitím Open-Cube. Do časového limitu 90s se to nevejde, ale zase jde vidět pěkná a spolehlivá navigace s využitím optického senzoru. Autor Jakub Vaněk, duben 2023

Video první jízdy velmi improvizovaného robota po čáře, včetně zobrazení interních veličin na PC:

Line follower s EV3 komponentami (video by Jakub Vaněk)
Open-Cube byla představena účastníkům Robosoutěže pro střední školy (https://robosoutez.fel.cvut.cz/ 22-25.11.2022)

Několik fotek aktuální verze hardware:

Porovnání s LEGO NXT kostkou
Vnitřnosti, jak už bývá u prvního prototypu zvykem, bylo potřeba nějaké to pilování…
Sestavené DPS
Spodní strana hlavní DPS. Pro správnou funkci tlačítka on/off byl potřeba drátek navíc…
Strana senzor portů. Nad OLED displejem ještě chybí ochranné plexi…
Strana motorových výstupů a USB pro komunikaci s RP2040
Horní strana – připojení miniUSB pro programování ESP-32 modulu (zřejmě použit pouze jako UART/Bluetooth převodník) a napájecí konektor (je vestavěna nabíječka pro dva 18650 Li-ion články)
U tlačítkového kříže chybí dva fixační šroubky, malá dírka nalevo od nich slouží jako skryté boot tlačítko pro RP2040

Dokumentace první verze je k dispozici na FEL gitlab serveru, jak elektrické zapojení tak firmware.
https://gitlab.fel.cvut.cz/open-cube/open-cube
https://gitlab.fel.cvut.cz/open-cube/schematics

Blokový diagram zapojení první verze Open-Cube
Open-Cube + NXT components line follower test, based on a new version of the framework (C-functions embedded in the micropython)
Open-Cube + NXT components self-balancing robot test, based on a new version of the framework (C-functions embedded in the micropython).
Three PID regulators (position, speed, angle), uses embedded 3-axial ACC+GYRO, position and turning can be controlled via Bluetooth link
Navigating the open-cube through our maze for LEGO robots (using EV3 optical and ultrasonic sensor and “onboard” gyroscopic sensor) video by Jakub Vaněk

Development of custom sensors for Open-Cube

Optical (color) reflective sensor

RGB sensor based on STM32G030 8-pin 32-bit microcontroller and some more electrical components

RGB sensor circuit design
Open-Cube RGB sensor (two variants with different photodiode field of view – to test what is better…)
Open-Cube RGB sensor – bottom side
Up and running in demo-mode during Robot-competition 2023 at CTU-FEE

LASER Distance sensor (in development) /ultrasonic sensor replacement – alternative?/

Circuit design
PCB design – 3D model
PCB design (test of tracks rounding plug-in for KiCAD…. just for fun…)
Two sensors assembled
DEVkit for firmware development with STM32G030K8 with more IO-pins, so one can easily connect to SWD via STLink3,, power comes through TTL232R-3V3 FTDI cable and HT7533 LDO, otherwise programming the 8-pin microcontroller is pain-in-the-ass…

Looking for a C programmer… to make it work (preferably in STM32CubeIDE)