Весьма странная ситуация с ценами линейки Raspberry Pi
Вот взять, хотя бы, Zero последней версии 2W: Википедия сообщает, что он стоит $15, но ни у farnell ни у mouser их нет в наличии, на амазоне же торгуются по $78, у китайцев с али запросы чуть скромнее - по $68, но тем не менее...
Хотя та же википедия вообщает, что Zero - модель 2021 года, то есть она в настоящее время должна вовсю производиться и повода взвинчивать цены быть не должно. На практике, судя по всему, есть некие сложности.
Зато с моделью Pico ситуация обратная. При объявленной в Вики цене $5 у китайцев можно найти не дороже 500 рублей. Учитывая внушительные характеристики - цена очень демократичная, и пока есть возможность, надо хватать. Благо предложений на алиэкспрессе выше крыши, есть даже китайские клоны с объемом флэша аж до 16 Мб.
Кстати, о клонах... Еще существует вериант RP2040 connect, за который хотят ни много ни мало, $47... А отличие только в том, что на борту у этой платы есть Wi-Fi. Странная цена, учитывая, что нет проблем прикрутить к оригинальному Pico какую-нибудь дешманскую ESP8266. Но этот connect - чисто фэновский проект, на который даже денежки краудфандингом собирали. Весьма удачно, кстати, собирали, в разы больше, чем требовалось.
А вот с программным обеспечением для Pico не все шоколадно.
Дело в том, что официальный API описывает ряд функций для параллельной работы двух ядер. Диспетчера, как в ESP32 там нет, и ядра должны работать независимо в раздельных потоках, не переключаясь. А для обмена данными предусмотрен FIFO-конвейер.
Должны, да не работают. При попытке запустить второе ядро наблюдается непредсказуемое поведение - либо первое останавливается, либо оба. Иногда проскакивает один символ, посылаемый в последовательный порт вторым потоком, но не более.
Тем не менее удалось найти альтернативное ядро, с которым два потока на этом процессоре таки можно запустить.
Вот оно.
Запустилось это ядро только через Arduino IDE, и хотя в документации присутствует способ подключения его к более удобной среде разработки PlatformIO, мне этого сделать не удалось :(
Ну, а поскольку пришлось вновь перелезть на ненавистный Arduino, напомню, что у него пины SPI по умолчанию иные, чем у PlatformIO.
Чтобы не заморачиваться с перетыканием штырей туда-сюда (а вдруг они допилят код и он пойдет на PlatformIO?), пришлось вникнуть в механизм конфигурирования. Оказалось не так и сложно:
SPI.setRX(4);
SPI.setCS(5);
SPI.setSCK(2);
SPI.setTX(3);
Ethernet.init(0);
Ethernet.begin(mac, ip);
И всё, можно ничего не перетыкать...