< BLOG >

Ograniczenia Arduino: 7 sygnałów, że wyrastasz z Arduino i czas na profesjonalną migrację

15.01.2025Blues Brackets Team
Ograniczenia Arduino i migracja

Kiedy projekt na Arduino dochodzi do ściany

Arduino jest świetne do prototypowania. W kilka godzin możesz złożyć działający układ, szybko przetestować pomysł i iterować bez dużego narzutu. Tyle że projekty rosną. To, co zaczęło się jako prosty logger z czujnikiem, nagle ma robić kilka rzeczy naraz, działać miesiącami na baterii albo przetwarzać dane w czasie rzeczywistym.

W pewnym momencie wiele osób ma wrażenie, że Arduino zaczyna ograniczać projekt. Kod się kompiluje, ale działa ociężale. Funkcje wypadają, bo brakuje pamięci. Urządzenie pada po kilku dniach, choć powinno działać miesiącami. To nie znaczy, że robisz coś źle — po prostu wyrastasz z Arduino.

Poniżej masz 7 konkretnych sygnałów, że warto planować migrację na mocniejszą platformę. Przy każdym punkcie opisuję, jak to wygląda w praktyce, skąd się bierze problem i jakie masz opcje. Jeśli widzisz u siebie dwa lub więcej z tych sygnałów, zwykle sensownie jest przygotować plan przejścia.

Sygnał #1: pamięć — brakuje RAM-u i pamięci Flash

Dodajesz kolejną bibliotekę do czujnika i nagle kompilator krzyczy „Sketch too big”. Albo gorzej: urządzenie zaczyna losowo się zawieszać, a Ty widzisz, że wykorzystujesz 95% RAM-u. Operacje na String kończą się przepełnieniami stosu. Musisz wybierać: logowanie danych albo nowe funkcje.

Co się dzieje: ATmega328P z Arduino Uno ma 32 KB pamięci Flash (z czego ok. 0,5 KB zjada bootloader) i tylko 2 KB RAM-u. Jak na dzisiejsze potrzeby to naprawdę mało. Nawet Arduino Mega z 8 KB RAM-u i 256 KB Flash potrafi się „zatkać” w bardziej rozbudowanych projektach.

Jeśli buforujesz próbki z czujników, trzymasz tablice LUT, obrabiasz obraz/dźwięk albo odpalasz bardziej złożone algorytmy, Uno szybko zacznie się dławić. W pewnym momencie optymalizujesz kod nie dlatego, że jest nieefektywny, tylko dlatego, że nie mieści się w pamięci.

Jak to boli w praktyce: nie dodasz logowania, które jest Ci potrzebne. Tniesz obsługę błędów, bo brakuje miejsca. Urządzenie wywala się na większych zestawach danych. Ciągle żonglujesz tym, co jeszcze „wejdzie”.

Kierunek migracji: przejście na 32‑bitowy mikrokontroler z większą pamięcią. STM32F103 ma 128 KB Flash i 20 KB RAM-u — to mniej więcej 10× Uno w obu kategoriach. ESP32 ma ok. 520 KB RAM-u i potrafi użyć zewnętrznej pamięci Flash do 4 MB. Nawet taki „umiarkowany” skok jak STM32F103 daje dużo oddechu.

Dobra wiadomość jest taka, że większość popularnych bibliotek Arduino ma porty na STM32 i ESP32, więc logika programu często zostaje podobna. Trzeba dopasować piny i przetestować całość, ale zwykle nie zaczynasz od zera.

Sygnał #2: moc obliczeniowa — wszystko jest za wolne

Projekt niby działa, ale jest ociężały. Odczyty z czujników się spóźniają, odświeżanie wyświetlacza „rwie”. Nie jesteś w stanie robić kilku rzeczy naraz: próbkowanie, LCD i komunikacja po UART zaczynają się wzajemnie blokować. Próbujesz DSP, bardziej złożonej matematyki albo szyfrowania — i Arduino po prostu nie daje rady.

Co się dzieje: Uno pracuje z zegarem 16 MHz i wykonuje ok. 16 MIPS. To 8‑bit bez FPU i bez instrukcji DSP. Dla porównania, ESP32 pracuje do 240 MHz, ma dwa rdzenie i potrafi osiągać setki DMIPS. STM32F4 przy 168 MHz i z FPU liczy rzeczy, które na AVR potrafią „zabić” pętlę główną.

Jeśli robisz sterowanie silnikami z pętlą sprzężenia zwrotnego, obróbkę audio w czasie rzeczywistym albo po prostu potrzebujesz responsywności, AVR zaczyna być wąskim gardłem. Różnicę widać nawet w benchmarkach: Arduino wypada wielokrotnie słabiej niż ESP32 (różnice potrafią iść w dziesiątki razy).

Jak to boli w praktyce: pętla sterowania nie wyrabia i układ jest niestabilny. Obliczenia trwają tak długo, że blokują resztę zadań. Nie dołożysz funkcji, bo CPU już jest „na czerwonym”.

Kierunek migracji: STM32 lub ESP32. Jeśli potrzebujesz łączności, ESP32 jest wygodne — możesz odseparować logikę aplikacji od sieci (drugi rdzeń, FreeRTOS). Jeśli kluczowa jest kontrola czasu rzeczywistego, precyzja i peryferia (timery, DMA), STM32 często wygrywa.

Sygnał #3: czas rzeczywisty — spóźnienia i jitter (rozrzut czasowy)

Potrzebujesz precyzyjnego timingu, ale Arduino go nie trzyma. Widzisz gubione przerwania, „pływające” czasy cykli albo jitter na wyjściach. Pętla sterowania ma chodzić równo 100 Hz, a w praktyce raz idzie szybciej, raz wolniej — bo np. Serial.print() wszystko rozjeżdża. Chcesz próbować szybko i jednocześnie wysyłać dane — i nie da się utrzymać obu rzeczy.

Co się dzieje: typowy szkic Arduino to jedna pętla loop() plus przerwania. To model kooperacyjny: jak coś blokuje, reszta czeka. Brak preempcji, ograniczona liczba timerów, brak RTOS „z pudełka”.

Do precyzyjnego timingu potrzebujesz albo dużo szybszego CPU (żeby wszystko zdążyć), albo RTOS i peryferiów, które robią robotę w tle. STM32 często pracuje z FreeRTOS i ma 32‑bitowe timery, szybkie PWM i DMA. ESP32 w praktyce i tak jedzie na FreeRTOS, a dwa rdzenie pozwalają rozdzielić zadania.

Jak to boli w praktyce: sterowanie silnikiem robi się niestabilne. Próbkowanie czujników gubi dane. Nie da się utrzymać stałego kroku pętli. Jitter powoduje problemy po stronie urządzeń, które sterujesz.

Kierunek migracji: jeśli timing jest Twoim głównym problemem, przejście na STM32 (z timerami + DMA + RTOS) zwykle rozwiązuje temat. ESP32 też bywa OK, ale gdy w tle działa Wi‑Fi, trzeba uważać na priorytety zadań. Czasem już sam skok wydajności pomaga, ale jeśli potrzebujesz deterministycznego zachowania — RTOS i lepsze peryferia są nieuniknione.

Sygnał #4: pobór mocy — bateria „nie ma prawa tyle wytrzymać”

Urządzenie na baterii pada za szybko. Próbowałeś trybów uśpienia, ale nadal nie osiągasz żywotności, która ma sens. Chcesz tygodni/miesięcy, a wychodzą dni. Albo docelowo ma to działać na małej baterii, a standardowe Arduino nawet po optymalizacjach jest daleko od celu.

Co się dzieje: płytki rozwojowe mają sporo „dodatków”, które pobierają prąd. Sam ATmega328P da się uśpić do mikroamperów, ale Uno jako całość potrafi brać dziesiątki mA, bo masz stabilizatory, LED-y i układ USB–UART.

ESP32 jest prądożerne w pracy aktywnej (zwłaszcza z Wi‑Fi), ale ma sensowny tryb deep sleep i mechanizmy wybudzania. STM32 (szczególnie rodziny STM32L) ma tryby uśpienia w mikroamperach i jest projektowane z myślą o zasilaniu bateryjnym.

Jak to boli w praktyce: nie dowieziesz miesięcy pracy. Układ grzeje się przez nieefektywne zasilanie. Kończysz w pętli: „zmieniam baterię” albo „przerabiam zasilanie” zamiast rozwijać produkt.

Kierunek migracji: do IoT często wybiera się ESP32 (łączność w jednym układzie) albo nRF52 (BLE), a do ultra‑low‑power — STM32L. Jeśli naprawdę już wycisnąłeś z Arduino wszystko (zegar, uśpienia, wywalone LED-y) i nadal nie ma szans na budżet energetyczny, to znak, że potrzebujesz innej platformy.

Sygnał #5: łączność — Wi‑Fi/BLE i „zaawansowane protokoły” robią bałagan

Potrzebujesz łączności, a Arduino zaczyna się komplikować. Dokładasz shieldy (nakładki) lub moduły Wi‑Fi/BLE, integracja jest toporna, pojawiają się problemy ze stabilnością. Arduino staje się wąskim gardłem do obsługi komunikacji. Chcesz kilku kanałów naraz — i już wiesz, że Uno tego nie ogarnie.

Co się dzieje: Uno ma jeden UART sprzętowy, brak wbudowanej łączności i małą przepustowość. Możesz dokładać moduły, ale potem CPU i pamięć idą na „obsługę modułów”, a nie na logikę produktu.

ESP32 ma Wi‑Fi i Bluetooth na pokładzie, pełny stos sieciowy i jest pod to zaprojektowane. STM32 zazwyczaj nie ma radia, ale ma więcej UART/SPI/I²C, bywa CAN, USB, czasem Ethernet — czyli świetnie się sprawdza, gdy wchodzisz w protokoły przemysłowe.

Jak to boli w praktyce: więcej kabli i punktów awarii. Większy pobór prądu. Problemy ze stabilnością połączeń. Brak zasobów na sensowną obsługę błędów i ponawianie prób (retry), bo CPU i pamięć są już „zjedzone”.

Kierunek migracji: do sieci najczęściej ESP32. Dla CAN/RS‑485 i świata „industrial” — STM32. Jeśli Twoje rozwiązanie zaczyna przypominać „wieżę nakładek”, to zwykle jest właściwy moment na konsolidację w jednej platformie.

Sygnał #6: skalowanie — koszt i złożoność w produkcji seryjnej

Przechodzisz z prototypu do większego wdrożenia i ekonomia przestaje się spinać. Koszt BOM-u z Arduino jest zbyt wysoki. Rozmiar i okablowanie robią się problemem. Chcesz powielić projekt wiele razy i kupowanie Arduino do każdej sztuki przestaje mieć sens.

Co się dzieje: Arduino Uno kosztuje w detalu ok. 20 USD, a mikrokontroler w środku ok. 1 USD w większych ilościach. Płacisz za „wygodę prototypu” (USB, stabilizatory, złącza), której w produkcie zwykle nie potrzebujesz.

Jeśli łączysz kilka Arduino w sieć, żeby „dobić się” do liczby pinów czy mocy obliczeniowej, to robi się awaryjne i trudne w produkcji. Lutowanie Nano na płytkach uniwersalnych działa przy kilku sztukach, ale nie jest rozsądną drogą dla większej serii.

Jak to boli w praktyce: nie zejdziesz z ceną i nie wygrasz konkurencyjnością. Produkcja zaczyna „bolać” czasowo i jakościowo. Serwis jest kłopotliwy (wymiana całej płytki, słaba powtarzalność).

Kierunek migracji: własna elektronika albo przynajmniej konsolidacja na bardziej zintegrowanej platformie. Jeśli używałeś Arduino Mega tylko dla I/O, czasem jedna mocniejsza płytka (np. Teensy 4.1) upraszcza układ. W serii i tak najczęściej kończy się na własnym PCB.

W kontekście kosztu: STM32F411 (100 MHz, 512 KB Flash) kosztuje w hurcie rzędu kilku dolarów, podobnie moduł ESP32. Za podobne pieniądze dostajesz znacznie więcej możliwości niż na Nano — i robisz to w formie, która jest produkcyjna.

Sygnał #7: wymagania „poważne” — system, precyzja, zgodność, normy

Wchodzisz w obszary, których Arduino zwyczajnie nie dowozi: potrzebujesz systemu operacyjnego albo cięższych algorytmów (Linux), bardzo dokładnych pomiarów analogowych lub szybkiego ADC, albo wchodzą normy i certyfikacje (bezpieczeństwo, EMC, branżowe standardy).

Co się dzieje: Uno ma 10‑bitowy ADC rzędu ~10 kSPS — jeśli potrzebujesz 16 bitów przy 1 MSPS, to inna liga. Jeśli wchodzisz w funkcjonalne bezpieczeństwo (np. ISO 26262) czy medykę, „płytka Arduino” zwykle nie spełnia wymagań. Potrzebujesz platformy i hardware'u zaprojektowanego pod normy, często z dodatkowymi mechanizmami (watchdog, ECC, lepsze diagnostyki).

Jak to boli w praktyce: nie przejdziesz wymogów formalnych. Dokładasz kolejne „łatki” (zewnętrzny watchdog, przetwornik referencyjny), zamiast iść platformą, która te rzeczy ma lub ułatwia.

Kierunek migracji: czasem wystarczy przemysłowy wariant Arduino (Portenta/Opta) z odpowiednimi cechami, ale często potrzebujesz innego mikrokontrolera i własnego PCB ułożonego pod EMC. A jeśli w ogóle wchodzisz w system i przetwarzanie „ciężkie” (np. wideo), to być może jesteś już po stronie SBC typu Raspberry Pi.

Opcje migracji: STM32, ESP32 albo własne rozwiązanie

Gdy pojawiają się powyższe sygnały, najczęściej wracają dwie rodziny: STM32 (ARM Cortex‑M) i ESP32 (MCU z radiem).

Arduino vs STM32: STM32 dobrze wypada w sterowaniu czasu rzeczywistego, projektach przemysłowych i tam, gdzie potrzebujesz wielu peryferiów, timerów, DMA, CAN itd. Do tego jest skalowalne: od małych układów do naprawdę mocnych serii.

Arduino vs ESP32: ESP32 wygrywa w łączności (Wi‑Fi + Bluetooth w jednym) i w „IoT w pudełku”. Jest mocne i wspiera wielozadaniowość (FreeRTOS). Minusy: Wi‑Fi kosztuje prąd i potrafi wpływać na zachowanie czasu rzeczywistego, jeśli nie zaplanujesz tego dobrze.

Łatwość przejścia: w praktyce często da się zachować duży kawałek kodu i logiki, bo Arduino IDE wspiera STM32/ESP32, a biblioteki mają porty. Proste szkice przenosi się szybko, złożone projekty wymagają więcej porządków (np. rozdzielenia zadań w RTOS).

Jak zdecydować, kiedy migrować

Jeśli dwa lub więcej sygnałów pasuje do Twojego projektu — zwykle warto planować migrację. Ustal priorytety: wydajność, pamięć, łączność, energia. Nie musisz przenosić wszystkiego naraz: zacznij od prototypu na nowej platformie, przenoś modułami i testuj.

Podejście praktyczne: najpierw zmierz, co naprawdę jest wąskim gardłem (CPU, RAM, prąd). Potem dobierz płytkę deweloperską (STM32 Nucleo, ESP32 DevKit itd.) i przenieś funkcje krok po kroku. Na końcu wykorzystaj możliwości nowej platformy (DMA, lepsze timery, drugi rdzeń, RTOS), zamiast tylko „uruchomić to samo”.

Podsumowanie

Wyrastanie z Arduino to naturalny etap rozwoju projektu, a nie porażka. Arduino świetnie robi swoją robotę: pozwala szybko dojść do działającego prototypu. Kiedy jednak rosną wymagania (pamięć, czas rzeczywisty, energia, łączność, skala), zwykle potrzebujesz innego podejścia.

Jeśli jesteś w tym miejscu, sensownie jest zaplanować migrację i zrobić ją metodycznie. A jeśli brakuje Ci czasu lub doświadczenia, warto włączyć zespół, który robił to już wielokrotnie — bo w takich przejściach najdroższe bywają błędy „na początku”.

Porozmawiajmy
Jeśli uderzasz w ograniczenia Arduino, odezwij się — pomożemy ocenić, czy lepiej migrować na STM32/ESP32, czy zaprojektować własną płytkę i dopracować firmware pod produkcję.

W Blues Brackets zajmujemy się rozwiązywaniem prawdziwych problemów za pomocą najnowszych technologii.

Porozmawiajmy

<mail>hello@bluesbrackets.com
<phone>+48 535 462 678

Spotkajmy się

Kraków, PolandWrocław, PolandWarszawa, Poland

Kontakt

Blues Brackets sp. z o. o.NIP 8842824071REGON 527681035

Agile Software Development PolskaUsługi tworzenia oprogramowania metodą AgileUsługi Tworzenia Chatbotów AIAnimowane Strony Internetowe | Profesjonalne UsługiEksperci w Embedded Android i BluetoothAplikacje webowe vs desktopowe | bluesBracketsAplikacje webowe czy mobilne? Fullstack & UX/UIEkspercka firma tworząca aplikacje iOS w PolsceTworzenie oprogramowania medycznegoAplikacje mobilne dla biznesu | bluesBracketsPolski Software House | UI/UX, Fullstack, Mobile, IoTAutomatyczne testy regresji i kompleksowy developmentDedykowane oprogramowanie na zamówienieBody leasing React Native i embeddedRozwój aplikacji cross-platform (wieloplatformowych)Nowoczesny software house: Dyrektor IT jako usługa (CTO as a Service), DevOps, UX/UIDevOps jako Usługa | Doradztwo AWS CloudPolski Software House: Agile & UI/UXTworzenie oprogramowania zgodnego z EAAEdge Computer Vision i Embedded | bluesBracketsSkalowalne aplikacje desktopowe i embedded – bluesBracketsFirma konsultingowa DevOps | bluesBracketsRozwiązania AI szyte na miarę dla biznesuMigracje Data Center i IT – Bezpieczne UsługiKonsulting migracji do chmury – bluesBracketsTworzenie aplikacji Flutter | bluesBracketsUsługi Rozwoju Aplikacji FlutterOutsourcing IT i AI dla branży medycznejUsługi tworzenia aplikacji hybrydowychIntegracje systemów i wdrożenia ChatGPTBezpieczne testy systemowe i integracjaUsługi integracji systemów ITOprogramowanie IoT i Smart City | bluesBracketsUsługi inżynierii oprogramowania embedded | bluesBracketsTworzenie oprogramowania IoT dla przemysłuIoT MQTT Dashboardy i rozwiązania embeddedIIoT i Przemysł 4.0 – oprogramowanie na miaręPolski Software House | Rozwiązania IoT i EmbeddedTworzenie produktów IoT | Embedded & Fullstack Software HouseRozwój IoT i Wearable | bluesBracketsOprogramowanie IoT dla handlu, wearables, nieruchomościPlatforma zarządzania IoT i dedykowane rozwiązaniaUsługi backend i JavaScript | bluesBracketsKonsultacje Machine Learning i Rozwój Oprogramowania | UI/UX, Fullstack, Mobile, EmbeddedKoszty wdrożenia i rozwoju sklepu onlineEksperckie rozwiązania embedded i mikrokontrolerówEkspercka migracja oprogramowania | bluesBracketsMikroserwisy czy Monolit: Ekspercka ArchitekturaModernizacja aplikacji legacy dla firmUsługi rozwoju MVP | Firma tworząca MVP dla startupówDedykowane MVP i oprogramowanie szyte na miaręTworzenie MVP oprogramowania | Wdrażanie MVP i POCEksperci IoT i Embedded | bluesBracketsNB-IoT, systemy wbudowane i zwinne ITIT Nearshoring i rozwój oprogramowania PolskaUsługi Next.js i WordPressDedykowane CMS i oprogramowanie na miaręTworzenie dedykowanych aplikacji webowych | bluesBracketsAplikacje webowe & AI szyte na miaręSystemy Zarządzania i Oprogramowanie AINode.js, React i Next.js Polska – bluesBracketsFirma Node.js – zaufane usługi i rozwójRozliczenie ryczałtowe czy T&M – co wybrać?Business Intelligence dla firm | bluesBracketsTworzenie oprogramowania dla branży turystycznejTworzenie oprogramowania dla nieruchomościProfesjonalne prototypowanie oprogramowaniaDedykowane rozwiązania IT dla firm i startupówOutsourcing inżynierii oprogramowania PolskaOutsourcing Python – Polska firma offshoreFirma outsourcingowa IT — PolskaPolska firma outsourcingu ITEksperci embedded i bare metal | bluesBracketsZaufana firma offshore software development w PolsceEkspercka firma projektowa sprzętu | Własna elektronikaUsługi Proof of Concept i Proof of PrincipleProof of Concept a Prototyp – Agile SoftwareTworzenie aplikacji webowych ReactJSRozszerzanie zespołów IT dla startupów i firmKompleksowe rozwiązania IT | Software House PolskaJęzyki i usługi tworzenia aplikacji mobilnychTworzenie aplikacji mobilnych na Androida i iOSUsługi Rozwoju Aplikacji ReactRozwój produktów IoT i dedykowane oprogramowanieOprogramowanie Embedded i IoT | bluesBracketsAgencja wdrożeń LLM | bluesBracketsTworzenie progresywnych aplikacji webowych | bluesBrackets PolskaEksperckie usługi hardware | bluesBracketsUsługi rozwoju systemów wbudowanychRozwiązania embedded z RTOSRozwój oprogramowania SaaS: chmura zgodna z RODOSkalowanie aplikacji dla startupów — rozwiązania skalowalneOprogramowanie SLA & usługi zarządzane PolskaFirmy programistyczne | Rozwiązania na miaręSoftware House Polska | Tworzenie Aplikacji i Systemów WbudowanychExpert Software Migration Services | bluesBracketsSpecjalistyczne usługi inżynierii oprogramowaniaRozwój aplikacji dla sportu i ochrony zdrowiaStaff Augmentation | Rozszerzenie zespołu ITModernizacja systemów IT i dedykowane oprogramowanieRozwiązania IT dla magazynowania energii i IoTUsługi testowania jakości | bluesBracketsTesty i integracja systemów IT end-to-endTworzenie aplikacji PWA | iOS i AndroidTworzenie PWA na iOS – Aplikacje mobilneUczenie maszynowe w analizie predykcyjnejRozwiązania ML dla łańcucha dostawDedykowane usługi IT i outsourcing w PolsceRozwiązania AI Chatbot dla FirmUsługi inżynierii danych i wizualizacjiDedykowane usługi IT na żądanie | bluesBracketsRozwój aplikacji chmurowych | Polska firma ITUsługi rozwoju IoT | Internet rzeczy IoTUsługi rozwoju oprogramowania | bluesBracketsUsługi tworzenia oprogramowania na zamówienie — bluesBracketsZdalne wsparcie IT i utrzymanie aplikacjiUtrzymanie oprogramowania i modernizacja | bluesBracketsProfesjonalne usługi UX/UI designStaff augmentation czy usługi zarządzane?Warsztaty Product Discovery dla startupów i firmUsługi chmury i transformacji cyfrowejUsługi tworzenia aplikacji webowych od bluesBracketsEksperci white label dla aplikacji i IoTDedykowane systemy do zarządzania projektamiLiderzy Java w Polsce – zatrudnij ekspertówZatrudnij dedykowany zespół IT w PolsceZatrudnij dedykowany zespół IT w PolsceDedykowane zespoły programistyczne w Europie