У статті наведена коротка інформація про модуль Raspberry Pi Pico W призначений для використання у вбудованих системах Інтернету речей. Наведені основні характеристики модуля та наведені рекомендації з його програмування.
В. Макаренко
Одноплатні комп’ютери все частіше використовуються в промислових проектах і в Інтернеті речей [1]. Як показують звіти дистриб’юторів, половина опитаних професійних інженерів використовують одноплатні комп’ютери (SBC, Single-Board Computer) в промислових виробах і пристроях Інтернету речей (ІоТ). Найпопулярнішою платою є Raspberry Pi, якій віддають перевагу 44% професійних користувачів. Друге місце зайняв Arduino (28 відсотків), а на третьому місці з 6 відсотками знаходиться плата Beagleboard, підтримувана Texas Instruments.
SBC використовуються на всіх етапах розробки і виробництва продукції, причому, як і слід було очікувати, 23% респондентів використовують їх для підтвердження концепції, а 35% — для створення прототипів. Хоча плати також використовувалися в дрібносерійному виробництві, опитування показало, що 22% встановлюють недорогі SBC у виробничому обладнанні; при цьому близько 20% такої продукції випускається в обсягах від 5 тис. або більше на рік, а 20% використовується для розробки випробувального обладнання та тестування.
Глобальне опитування проводилося з березня по травень 2021 року і зібрало майже 1500 відповідей від професійних інженерів, розробників і виробників, які працюють над рішеннями в області SBC. Три чверті респондентів були професійними користувачами, а лише чверть-любителями. Питання формулювалися таким чином, щоб зрозуміти, як популярні SBC від деяких провідних світових виробників використовуються в професійних продуктах і проектах.
Близько 24% професіоналів створюють власні плати для використання з SBC, демонструючи переваги стандартної обчислювальної платформи з користувацькими інтерфейсами вводу-виводу у багатьох додатках.
Однак лише 20% інженерів зараз використовують штучний інтелект (AI) та машинне навчання у своїх додатках на SBC, що може бути пов’язано з обмеженою продуктивністю плат. Найбільш поширеними побажаннями розробників до виробників SBC є підвищення продуктивності при вирішенні завдань AI і збільшення обсягу пам’яті.
Найпопулярнішим аксесуаром на сьогоднішній день, безумовно, є сенсорні екрани, проте також користуються попитом камери і комплекти для додаткового живлення від акумуляторів або сонячних батарей.
Використовувати плати, адаптовані до конкретного додатка, з більшою ймовірністю будуть професійні користувачі, ніж любителі. «Це дослідження чітко демонструє широке поширення SBC серед інженерів, які створюють комерційні, loT та промислові програми. Успіх Raspberry Pi та Arduino зумовлений потужним поєднанням високої продуктивності, універсальності, функцій та аксесуарів, низької вартості та великої активної спільноти користувачів, що робить ці платформи дуже привабливими для інженерів, які прагнуть швидко розробляти та впроваджувати у виробництво широкий спектр додатків. Використання SBC в прототипах надає інженерам можливості значного зниження витрат і набагато більш швидкого виведення нових продуктів на ринок», — сказав Ромен Соро (Romain Soreau), керівник відділу одноплатних обчислювальних пристроїв компанії Farnell.
На сьогоднішній день Farnell продала понад 15 мільйонів одиниць і пропонує повний асортимент одноплатних комп’ютерів Raspberry Pi, включаючи випущений у 2020 році Raspberry Pi Pico на базі процесора RP2040 (рис. 1), а також аксесуари, включаючи чохли, блоки живлення, кабелі microHDMI та камери високої чіткості Raspberry Pi.
Рис. 1. Одноплатний комп’ютер Raspberry Pi Pico
Компанія Raspberry Pi активізувала розробку своїх чіпів, випустивши чотирьохядерний мікро- контролер з двома ядрами ARM Cortex-M33 і двома власними ядрами RISC-V. Планується до випуску плата Raspberry Pi Pico 2, що використовує мікро- контролер RISC-V RP2350, а безпроводову версію Pico 2 W з модемом від Infineon Technologies.
Процесор RP2350 вдвічі більший за розміром, має більш високу тактову частоту ядра (150 МГц), вдвічі більший обсяг пам’яті (520 кбайт SRAM в десяти банках) і нові функції безпеки в порівнянні з RP2040, випущеним більше трьох років тому, з двома ядрами M0+. Розмір матриці становить 5.3 мм2 проти 2 мм2 у RP2040, але найкомпактніша версія RP2350A буде всього на десять центів дорожче і буде коштувати 0.80 долара за 3400 одиниць або 1.1 долара за одиницю продукції.
Крім ядер M33, в RP2350 додані два ядра RISC- V, які можуть бути виділені під час завантаження. Завантажувальний ПЗП автоматично визначає архітектуру для двійкового файлу другого рівня та пе- резавантажує чіп у відповідний режим.
На відміну від одного варіанту корпусу QFN56 розміром 7×7 мм для RP2040, RP2350 випускається у корпусі QFN60 розміром 7×7 мм (RP2350A) з роздільною здатністю 30 точок на дюйм або корпусі QFN80 розміром 10×10 мм (RP2350B) з роздільною здатністю 48 точок на дюйм, а також варіанти з 2 МБ вбудованою захищеною flash-пам’яттю QSPI (RP2354A і RP2354B).
Pico 2 і RP2350 підтримуються оновленою версією Pico SDK, а також новими образами MicroPython і CircuitPython. Метою проекту Trusted Firmware є створення RP2350 як еталонної апаратної платформи для випуску довгострокової підтримки Trusted Firmware-M 2.1.0, а TF-M надає еталонну реалізацію для сертифікованих чіпів Arm V8-M, надаючи розробникам простий спосіб захистити пристрої від поширених атак.
Розглянемо основні особливості Raspberry Pi Pico W [2] з вбудованим модулем Wi-Fi (рис. 2). На рис. 3 наведено розташування виводів плати Raspberry Pi Pico W [3].
Основні характеристики Raspberry Pi Pico W:
- 32-розрядний двоядерний процесор Rp2040 Cortex-M0 + з частотою 133 МГц
- 2 МБ флеш-пам’яті Q-SPI
- 264КБ SRAM-пам’яті
- 26 GPIO (сумісність з +3.3 В)
- вбудований 12-розрядний АЦП
- прискорені вбудовані бібліотеки обчислень з плаваючою комою
- вбудований односмуговий чіп InfineonCYW43439 (безпроводовий інтерфейс 2,4 ГГц (802.11 b/g/n) та Bluetooth® 4
- послідовний порт налагодження (SWD)
- порт Micro-USB (USB1) для живлення (+5 В) і даних
- 2 х UART, 2 х I2C, 2 х інтерфейс шини SPI
- 16 каналів ШІМ
- 1х таймер (з 4 будильниками), 1х лічильник реального часу
- бортовий датчик температури
- вбудований світлодіод на GPIO, керований модулем 43439
- зазубрений модуль, що дозволяє припаювати безпосередньо до плат
- 8 програмованих кінцевих автоматів вводу- виводу (PIO)
- програмування на MicroPython, C, C++
- швидке програмування через USB
- номінальна напруга VBUS +5 В ±10 %
- діапзон напруги VSYSвід +1.8 В до +5.5 В
- діапазон робочих температур від -20 до + 85 °C.
Вбудовану 2 Мбайт Q-SPI-флеш-пам’ять можна перепрограмувати або за допомогою послідовного порту налагодження, або за допомогою спеціального USB-порту.
Рис. 2. Одноплатний комп’ютер Raspberry Pi Pico W
Найпростіший спосіб перепрограмувати флеш- пам’ять Pico — це використовувати USB. Для цього потрібно вимкнути живлення плати і потім, утримуючи кнопку BOOTSEL (біла кнопка на рис. 2) включити живлення плати. Після цього Pico буде відображатися як USB-накопичувач. Перетягування спеціального файлу ‘.uf2’ на диск призведе до запису цього файлу на флешку та перезапуску Pico. Завантажувальний код USB зберігається в ПЗП (ROM) RP2040, тому його неможливо випадково перезаписати.
Плата сумісна з макетною платою (тобто відстань між контактами 0,1 дюйма), і після пайки контактів плату можна підключити до макетній платі для простого підключення до контактів GPIO за допомогою перемичок.
На одному краю плати знаходиться порт microUSB для подачі живлення на плату і для програмування плати. Поруч з USB-портом знаходиться вбудований спеціальний світлодіод, який можна використовувати під час розробки програм. Поруч із цим світлодіодом знаходиться кнопка BOOTSEL (рис. 2), яка використовується під час програмування мікроконтролера. Поруч з чіпом процесора є 3 отвори, до яких можна зробити зовнішні підключення. Вони використовуються для налагодження програм за допомогою Serial Wire Debug (SWD). На іншому краю плати знаходиться однодіапазонний модуль Wi-Fi 2,4 ГГц (802.11n). Поруч з модулем Wi-Fi розташована бортова антена.
На рис. 2 наведено вид ззаду апаратного модуля Pico. На рис. 2 і 3 всі контакти GPI позначені буквами і цифрами:
- GND- загальний джерела живлення (цифровий загальний)
- AGND- загальний джерела живлення (аналоговий загальний)
- 3V3 — живлення +3,3 В (вихід)
- GP0 — GP22 — цифрові виводи GPIO
- GP26_A0 — GP28_A2 — аналогові входи
- ADC_VREF — опорна напруга АЦП
- TP1 — TP6 — контрольні точки
- SWDIO, GND, SWCLK — інтерфейс налагодження
- RUN- вивід RUNза замовчуванням, низький рівень для скидання
- 3V3_EN- за замовчуванням включає живлення +3,3 В (живлення можна відключити, підключивши цей контакт до загального)
- VSYS- вхідна напруга системи (від 1.8 В до 5.5 В), для створення живлення +3.3 В для плати
- VBUS- вхідна напруга micro-USB(+5 В).
Деякі контакти GPIO використовуються для внутрішніх функцій плати:
- GP29 (input) — використовується в режимі АЦП (ADC3) для вимірювання VSYS/ 3
- GP24 (input) — вхід) якщо рівень VBUSsenseвисокий, якщо VBUSприсутній, інакше низький
- GP23 (output) — управляє виводом енергозбереження SMPS.
Рис. 3. Розташування виводів плати Raspberry Pi Pico
Вбудований імпульсний DC/DC-перетворювач +3.3 В використовується для живлення RP2040 в діапазоні вхідної напруги від 1.8 В до +5.5 В. Наприклад, 3 лужні батареї типу АА можуть використовуватися для забезпечення +4,5 В для живлення Pico.
Піко може живитися кількома способами. Найпростіший спосіб-використовувати USB-порт комп’ютера або адаптер живлення + 5 В. Треба подати живлення на вхід VSYS (рис. 4) через діод Шотткі. Напруга на вході VSYS буде дорівнювати напрузі VBUS за вирахуванням падіння напруги на діоді Шотткі (близько 0.7 В). Виводи VBUS і VSYS можуть бути замкнені, якщо плата живиться від зовнішнього USB-порту +5 В. Напруга VSYS подається на SMPS через DC/DC-перетворювач RT6150, який формує фіксовану напругу +3.3 В для живлення процесора та інших частин плати. Напруга VSYS ділиться на три і доступна через аналоговий вхідний порт GPIO29 (ADC3), який легко контролювати. GPIO24 перевіряє наявність напруги VBUS і має високий логічний рівень, якщо напруга VBUS присутня.
Рис. 4. Підключення зовнішнього джерела живлення
На рис. 5 наведена принципова схема кола живлення модуля.
Рис. 5. Принципова схема кола живлення модуля Raspberry Pi Pico
На рис. 6 наведена спрощена структура апаратного модуля Pico. Треба звернути увагу, що контакти GPIO безпосередньо підключені від мікросхеми процесора до роз’єму GPIO. GPIO26-28 можна використовувати або як цифровий GPIO, або як вхід АЦП. Входи АЦП GPIO26-29 мають зворотні діоди на 3 В, тому вхідна напруга не повинна перевищувати 3.6 В.
Рис. 6. Спрощена структура апаратного модуля Raspberry Pi Pico
Програмування Raspberry Pi Pico W
Хоча Raspberry Pi Pico за замовчуванням налаштований для використання з потужними і популярними мовами C / C++, багатьом новачкам простіше використовувати MicroPython-версіюмови програмування Python, розроблену спеціально для мікроконтролерів.
Перед використанням плати потрібно встановити MicroPython на Raspberry Pi Pico W. Після встановлення MicroPython залишається на Pico, поки він не буде перезаписаний чимось іншим [4, 5]. Для встановлення MicroPython потрібне підключення до Інтернету, і це потрібно лише один раз. Це можна зробити або за допомогою Raspberry Pi (наприклад, Raspberry Pi 4), або за допомогою ПК. Завантажити MicroPython можна за посиланням [6].
Для встановлення MicroPython потрібно:
- натиснути і утримувати кнопку BOOTSELна платі Pico
- підключити Picoдо порту USBПК за допомогою кабелю micro-USB, утримуючи кнопку натисну- тою
- зачекати кілька секунд і відпустити кнопку BOOTSEL(ви повинні побачити, що Picoвідображається як знімний диск з ім’ям RPI-RP2)
- перетягнути завантажений файл MicroPythonUF2 на дискг RPI-RP2 (RaspberryPiPicoперезаван- тажиться, і після цього можна використовувати MicroPythonна Pico.
Після вимикання програма залишається у флеш-пам’яті. У джерелах [4.6] рекомендується встановити текстовий редактор Thonny з вбудованим інтерпретатором Python на ПК [7]. Завантажити останню портативну версію редактора можна за посиланням [8].
Після розпакування і запуску програми виводиться вікно (рис. 7) у якому можна обрати мову інтерфейсу.
Рис. 7. Вибір мови інтерфейсу при першому запуску редактора Thonny
Після вибору мови відкривається робоче вікно програми (рис. 8).
Рис. 8. Робоче вікно редактора Thonny
Для прикладу розглянемо просту програму обчислення середнього значення двох чисел (Average), що вводяться з клавіатури [10]. Результат виконання наведено на рис. 9.
Рис. 9. Результат виконання програми Average
Рис. 10. Результат виконання програми Average
Приклад 2: середнє значення 10 чисел, прочитаних з клавіатури У цьому прикладі з клавіатури зчитуються 10 чисел і відображається їх середнє значення. Мета цього прикладу-показати, як можна побудувати цикл у Python.
Програма називається Average 10 [10], а лістинг програми і приклад запуску програми показані на рис. 10. У цій програмі будується цикл, який виконується від 0 до 9 (тобто 10 разів). Усередині цього циклу числа зчитуються з клавіатури, складаються один з одним і зберігаються в змінній sum. Потім обчислюється середнє значення і відображається шляхом ділення sum на 10. Зверніть увагу, що новий рядок не друкується після операторів друку, оскільки всередині оператора друку використовується опція end=».
В [10, 11] наведена велика кількість прикладів для першого знайомства з MicroPython.
Рис. 11. Схема підключення світлодіода до Raspberry Pi Pico
Розглянемо ще один приклад що демонструє як зовнішній світлодіод можна підключити до Pico.
Схема підключення світлодіода наведена на рис. 11.
На початку програми GP1 налаштований як вихід. Потім формується цикл while, який виконується до тих пір, поки користувач не зупинить його. Всередині цього циклу світлодіод включається і вимикається з затримкою в одну секунду (рис. 12).
Рис. 12. Лістинг програми та результат її виконання на ПЕ без підключеного модуля Raspberry Pi Pico
При відсутності зв’язку з Raspberry Pi Pico у вікні Асистент виводиться повідомлення про похибку. Тому при програмуванні потрібно мати підключений модуль для перевірки програми. Звісно, у рамках однієї статті розглянути всі аспекти роботи з модулем Raspberry Pi Pico неможливо. Більш детально з програмуванням на MicroPython з великою кількістю прикладів можна ознайомитись у [10, 11].
ЛІТЕРАТУРА
- Nick Flaherty Raspberry Pi launches its first RISC-V multicore chip. Technology News, August 9, 2024. / https://www.eenewseurope.com/en/raspber- ry-pi-launches-its-first-risc-v-multicore-chip/
- RASPBERRY-PI RASPBERRY PI PICO W / https://uk.farnell.com/raspberry-pi/raspberry-pi- pico-w/raspberry-pi-board-arm-cortex/dp/3996082
- Raspberry Pi Pico W Datasheet / https://www.farnell.com/datasheets/3759470.pdf?_g l=1*1vnsnie*_gcl_au*Mzc0OTk4Mzg1LjE3MjQxNDQy NTA.
- Getting started with pico /https://datasheets.raspberrypi.com/pico/getting- started-with-pico.pdf