Site icon Renzo Mischianti

Cosa ti serve? Un confronto delle prestazioni dei microcontrollori

Comparazione delle performance dei microcontrollori

Comparazione delle performance dei microcontrollori

Spread the love

Guest post created with ♥ by Josses 🙂|

A micro controller performance comparison

Chi inizia ad avventurarsi nel meraviglioso mondo della piccola elettronica avrà sicuramente letto delle schede Raspberry Pi o Arduino. È da qui che ho iniziato personalmente a chiedermi, qual è la scheda giusta per ogni progetto? 

Introduzione

Ho iniziato a collezionare le mie prime esperienze con questo hobby solo nel 2018. Sono andato in pensione e improvvisamente ho avuto un sacco di tempo. La mia prima azione è stata un libro di 400 pagine sul Raspberry Pi 2. Mi sono ricordato dell’equazione V=i*R a scuola; in Germania, questo è noto come U=R*I, stranamente.

Led strip digital clock

Per capire questa formula, dovrai entrare nell’argomento e sperimentare. Ma il mio obiettivo personale è il principio KISS, Keep It Simple (and) Stupid. Nel frattempo ho terminato progetti più complicati, come un orologio digitale simile al Düsseldorf Rheinturm (https://de.wikipedia.org/wiki/Lichtzeitpegel), il più grande orologio decimale del mondo (secondo la città di Düsseldorf Ho imparato molto leggendo la documentazione di HJBerndt (Homepage von H.-J. Berndt (hjberndt.de) in tedesco) La mia versione finale è un’unità desktop, che passa automaticamente dall’ora legale a quella invernale. 

Basato su un ESP8266, che non dispone di un RTC affidabile, recupero l’ora effettiva dal segnale orario NTP tramite WiFi. Questa pagina web è stata di grande aiuto nella definizione dell’ora legale e invernale:

Nel frattempo, ho costruito diverse unità per amici e parenti e possono selezionare la frequenza con cui viene addebitato il budget WiFi. Tipicamente ogni 5 o 10 minuti. L’aggiornamento è indicato da luci rosse in movimento seguite da luci blu. E ogni ora intera, c’è una cascata colorata di tutti i colori, che indica che è trascorsa un’ora. La base è stampata con la mia stampante Ender 3D pro, che si è aggiunta perfettamente al mio nuovo ambiente di ufficio.

Come selezionare una Scheda

Bene, torniamo all’inizio: qual è la tavola giusta? Non esiste una risposta semplice a questa domanda. Troppe opzioni influenzeranno la tua decisione:

Anche all’interno della gamma di prodotti, troverai varianti che risponderanno ad alcune o a tutte le tue esigenze. Sorprendentemente l’ESP-01 può fare un ottimo lavoro nel supportare un vecchio Raspberry Pi, a cui mancava la funzione Wifi.

WeMos D1 mini and esp01

Inoltre, è un ottimo “gate-keeper” per inoltrare messaggi tramite ESP-NOW. Una volta ho costruito un sistema per leggere la temperatura e la densità della luce davanti al garage. La distanza non mi permetteva di ricevere i dati direttamente alla mia scrivania, quindi ho costruito una catena di schede per risolvere questo problema:

Sì, ho ordinato un buon numero di schede diverse, sia a livello locale che dalla Cina. A volte avrai bisogno di una consegna veloce e affidabile (come per la mia stampante 3D), ma se il tempo non è il problema, puoi tranquillamente ordinare da Banggood o dagli altri. Non ho quasi mai perso una spedizione, ma non ho mai perso i miei soldi. Se ordini spazzatura, riceverai spazzatura. Se pensi di aver ordinato 10 cavi USB, ma ne hai ricevuto solo uno, dovresti incolpare te stesso per non aver letto esattamente ciò che hai ordinato prima di aver pagato il prezzo.

Torniamo all’inizio di questo articolo. La domanda è: cosa vuoi ottenere se inizi il tuo progetto. A volte è bene sapere che puoi anche eseguire l’upgrade o il downgrade. 

A volte puoi anche raggiungere risultati notevoli senza l’alimentazione dell’ESPxxxx o Raspberry Pi, come puoi vedere da un simpatico gadget lampeggiante che ho costruito sulla base di un NE555. 

ne555 blink genius at work
ne555 blink genius at work bottom battery

Avviamo il confronto delle prestazioni

Come riferimento, ho usato una tabella di confronto, che condividerò volentieri con voi. Naturalmente, può essere migliorato aggiungendo più argomenti, come prezzo, numeri Mhz, ecc. 

Schede esp8266 WeMos D1 mini - NodeMCU V2 V2.1 V3 - esp01 - esp01 programmer

Schede esp32 ESP32 Dev Kit v1 - TTGO T-Display 1.14 ESP32 - NodeMCU V3 V2 ESP8266 Lolin32 - NodeMCU ESP-32S - WeMos Lolin32 - WeMos Lolin32 mini - ESP32-CAM programmer - ESP32-CAM bundle - ESP32-WROOM-32 - ESP32-S

Schede Arduino AliExpress

Schede Pico Official Pi Pico - Official Pi Pico W - Waveshare rp2040-zero - WeAct Studio rp2040

Schede stm32 STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official

Ma, come ho detto prima, KISS. Questo grafico mostra non solo la differenza tra le varie varianti di ESP, Raspberry Pi Pico o anche la mia ultima scheda, STM34F401 Black Pill. Inoltre, indica l’affidabilità della CPU e la sorprendente differenza tra le impostazioni del driver del compilatore. 

STM32 STM32F401 STM32F401CCU6 pinout low resolution

Per ottenere risultati comparabili, il programma di test doveva essere breve, con una sola funzione: visualizzare il numero di iterazioni dopo 10 secondi:

#include "Arduino.h"

unsigned long timeNow, it = 0;
unsigned long timeLast = 0;
boolean running = true;

void setup() {
	Serial.begin(115200);
	timeNow = millis() / 1000;
	timeLast = timeNow;
}

void loop() {
	if (!running)
		return;
// Time Range of exact 10 seconds
	if (timeLast + 10 > timeNow) {
		it = it + 1;
	} else {
		Serial.print("Duration: ");
		Serial.print(timeNow);
		Serial.print(" seconds, iterations: ");
		Serial.println(it);
		running = false;
	}
	timeNow = millis() / 1000;
}
Raspberry Pi Pico W pinout

Ecco la tabella comparativa

VariantDriver1st2nd3rd4th5th
ESP8266ESP-011 LED764.978778.337778.324778.335778.407
2 LED778.310778.321778.388778.320778.351
ESP-12EGeneric ESP8266 Module779.078779.067779.185778.984779.149
NodeMCU 1.0 (ESP-12E Module)778.877778.816778.687778.857778.835
ESP8266 D1 MiniLolin D1 Mini777.557777.515777.511777.594777.405
Generic ESP8266 Module778.226778.222778.208778.205778.215
D1 Minin (Clone)777.323777.450777.475777.461777.248
ESP32WROOM-32ESP32 Dev Module7.253.3467.253.3087.253.3677.253.3677.253.372
DOIT ESP32 DEVKIT V17.252.2167.252.2187.252.2157.252.2147.252.220
D1 R32 BoardWEMOS D1 Mini ESP7.252.3257.252.3227.252.3237.252.3247.252.325
ESP32 Dev Module7.253.4167.253.4177.253.4167.253.4167.253.416
ESP32-SESP-CAMAI Thinker ESP32 CAM6.401.0796.401.0836.401.0836.401.0836.401.083
ESP32 Dev Module7.253.6127.253.6127.253.6147.253.6397.253.609
Arduino NanoArduino Nanoold Bootloader243.392243.392243.392243.392243.392
Arduino UnoGEEKCREIT cloneArduino Uno243.392243.392243.392243.392243.392
Arduino Mega 2560no-name cloneArduino Mega 2560233.021233.021233.021233.021233.021
Raspberry Pi RP2040originalRaspberry Pi Pico6.484.7636.484.7706.484.7736.484.7656.484.779
STM32Black Pill STM32F4BlackPill F401CC10.468.84710.468.84710.468.84310.468.81910.468.842

Come puoi vedere dal grafico, i prodotti Arduino originali (Nano, Uno e Mega2560) hanno tutti presentato risultati identici dopo 5 test, anche se alla velocità più bassa di tutte le schede testate. 

Comparison microcontroller performance: esp32, esp8266, stm32, Raspberry Pi Pico and Arduino

esp8266 risoluzione dei problemi

Ah sì, in effetti, dovresti considerare anche l’affidabilità. A volte la scheda ESP8266 si rifiuta di fare il suo lavoro. Durante le mie escursioni nel world wide web, ho trovato da qualche parte questo messaggio:

Infine, se sostituisco:

while(!displayAnimate());

con

while(!displayAnimate()) yield();

funziona e ora sembra migliore.

Yielding

Questa è una delle differenze più critiche tra l’ESP8266 e un microcontrollore Arduino più classico. L’ESP8266 esegue molte funzioni di utilità in background: mantenere il WiFi connesso, gestire lo stack TCP/IP ed eseguire altre attività. Il blocco dell’esecuzione di queste funzioni può causare l’arresto anomalo e il ripristino dell’ESP8266. Per evitare questi misteriosi ripristini, evita i loop lunghi e bloccanti nel tuo sketch.

Gli straordinari creatori delle librerie Arduino ESP8266 hanno anche implementato una funzione yield(), che richiama le funzioni in background per consentire loro di fare le loro cose.

Conclusione

Ora spetta al lettore decidere quale scheda può fare al caso suo. Successo! 


Spread the love
Exit mobile version