роботы робототехника микроконтроллеры
25.04.2021

ESP32 vs Raspberry Pi Pico. Какой микроконтроллер лучше?



Сравнение Raspberry Pi Pico и ESP32

На волне хайпа вокруг явления Raspberry Pi Pico народу и появления его в широкой продаже, самое время сравнить его с популярной микроконтроллерной платой ESP32.

Обе платы имеют на борту 32-битные двухъядерные процессоры: Xtensa LX6 у ESP32 и Arm Cortex-M0+ у Pico.

Объем оперативной памяти у Pico — 264 KB, у ESP32 — 520 KB. Объем флеш-памяти для хранения файлов у Pico — 2 MB, у ESP32 — 4 MB.

Обе платы имеют возможность работы с MicroPython. Попробуем сравнить их в рамках работы этого интерпретатора. Для примерной оценки производительности запустим обе платы на максимуме их возможностей.

Файл boot.py

Для обоих микроконтроллеров используем одинаковые файлы boot.py.
import uos, machine
import gc
gc.collect()
machine.freq(240000000)
Хотя максимальная заявленная скорость для Pico — 133 MHz, но при довольно бедной документации по MicroPython для Pico с помощью проб можно увидеть, что наибольшую скорость он развивает именно при установке machine.freq(240000000).

Скрипт на MicroPython для тестирования

Создадим матрицу 50 на 50, заполненную нулями. Прибавим к каждому элементу матрицы 5 и перезапишем ее. Умножим каждый элемент на номер строки и номер столбца и снова перезапишем матрицу. Повторим всё 50 раз.
for n in range(50):
    a = [[0] * 50 for i in range(50)]
    a = [[a[i][j] + 5 for j in range(50)] for i in range(50)]
    a = [[a[i][j] * i * j for j in range(50)] for i in range(50)]

Скрипт на Python для запуска и замера времени

Напишем на Питоне вспомогательный скрипт, воспользовавшись модулем pySerial. С помощью него будем подключаться к микроконтроллерам через USB-порты и засекать время выполнения тестового скрипта.
import serial
from time import time

port = serial.Serial(port='COM12', baudrate=115200, timeout=0)
if not port.isOpen():
    port.open()
print(port.name + ' is open...')
msg = '\r'
while msg != 'exit':
    port.write((msg + '\r').encode())
    out = ''
    start = time()
    while out.find('>>>') < 0:
        outport = port.read(10000)
        out = outport.decode('ascii') # utf-8
        print(out, end = '')
    print(time() - start)
    msg = input()

port.close()

Тестирование

Подключим по очереди каждую плату к компьютеру через USB. Проверим номер COM-порта. Загрузим boot.py и тестовые скрипты. Подключимся к REPL с помощью скрипта на Python и запустим тестовый скрипт с помощью команды exec.
exec(open("test.py").read())
Запустим скрипт несколько раз для большей точности и вычислим среднее значение.

В данном тестировании скрипт был запущен двумя сериями по три раза с полным отключением плат от питания между сериями.

Средний результат Raspberry Pi Pico — 2,0161 сек.

Средний результат ESP32 — 1,9853 сек.

ESP32 оказался быстрее, хотя полученная разница получилась очень небольшой — около 1,5%.

Выводы

При приблизительно одинаковых результатах теста производительности процессоров учтём то, что ESP32 имеет в два раза больше оперативной памяти. Этот параметр, при и без того малых объемах ее у микроконтроллеров, является одним из наиболее важных. Еще ESP32 имеет в два раза больше памяти для программ и файлов. Кроме того, ESP32 в отличие от Pico располагает модулями для работы с Wi-Fi и Bluetooth, что делает его гораздо лучшим выбором.



АРХИВ НОВОСТЕЙ
2019 2018 2017 2016
2015 2014 2013 2012
2011 2010 2009 2008
2007 2006


ПОПУЛЯРНОЕ НА САЙТЕ
Драйвер CH340 для NodeMCU
Драйвер CH340 для NodeMCU
Микросхема CH340G является мостом USB – UART, позволяющим NodeMCU обмениваться данными с компьютером с помощью USB.
Драйвер CH340 для китайских Arduino
Драйвер CH340 для китайских Arduino
При работе с китайскими клонами Arduino необходимо установить драйвер CH340G. Установка драйвера очень проста и не вызывает проблем в Windows 7, Windows 8 и Windows 10.
Драйвер программатора USBASP для Windows 7, 8, 10
Драйвер программатора USBASP для Windows 7, 8, 10
Универсальный драйвер программатора USBasp v 2.0 USB ISP без необходимости принудительного отключения сертификата драйвера или использования Zadig, достаточно скачать драйвер USBasp и запустить файл InstallDriver.exe из распакованного архива.
Как сделать простейшего робота
Как сделать простейшего робота
О том, как сделать робота в домашних условиях, используя лишь микросхему драйвера моторов и пару фотоэлементов. В зависимости от способа соединения моторов, микросхемы и фотоэлементов робот будет двигаться на свет или, наоборот, прятаться в темноту, следовать по линии или бежать за вашей рукой.




Copyright © myrobot.ru, 2005-2021


Яндекс.Метрика   Рейтинг@Mail.ru