Это руководство по началу работы с платой Seeed XIAO RP2040 от Seeed Studio. Недавно Seeed Studio выпустила самую маленькую в мире плату RP2040 под названием XIAO RP2040, которая похожа на Raspberry Pi Pico. Ее фирменные ценности — высокая производительность, низкая стоимость, простота использования и крошечный размер — делают ее идеальной для TinyML, умных носимых устройств и проектов IoT.
Размер платы аналогичен плате XIAO BLE NRF52840 и XIAO ESP32-C3. Seeed Studio XIAO RP2040 поддерживает программирование с помощью Arduino IDE, MicroPython и CircuitPython.
В этом руководстве мы рассмотрим обзор платы XIAO RP2040, а также ее функции, возможности, распиновку и приложения. Сначала мы рассмотрим ее базовое использование, например, мигание светодиода и использование встроенного светодиода Neopixel. Затем мы будем управлять миганием светодиода с помощью аналогового контакта и потенциометра. Позже мы считаем значения температуры и влажности с датчика DHT11, а также отобразим текст на OLED-экране.
Необходимые компоненты
- Плата Seeed Studio XIAO RP2040.
- Светодиод 5мм любого цвета (купить на AliExpress).
- Резистор 200 Ом.
- Датчик температуры и влажности DHT11 (купить на AliExpress).
- Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Плата Seeed Studio XIAO RP2040
Seeed Studio XIAO RP2040 — это совместимый с Arduino микроконтроллер с чипом Raspberry Pi Pico RP2040. Он оснащен мощным двухъядерным процессором RP2040, который может гибко работать с частотой до 133 МГц, что является маломощным микроконтроллером. Плата также имеет 264 КБ SRAM и 2 МБ встроенной флэш-памяти, что позволяет сохранять и запускать больше программ. С другой стороны, эта маленькая плата имеет хорошую производительность при обработке, но требует меньше энергии.
Плата разработана в крошечном размере, размером с большой палец (20×17,5 мм), и может использоваться для носимых устройств и небольших проектов. На Seeed Studio XIAO RP2040 имеется 14 GPIO-контактов, из которых 11 цифровых контактов, 4 аналоговых контакта, 11 контактов PWM, 1 интерфейс I2C, 1 интерфейс UART, 1 интерфейс SPI и 1 интерфейс SWD Bonding pad.
Seeed Studio XIAO RP2040 дружелюбна к сообществам благодаря своей хорошей программной совместимости, которая поддерживает Arduino, Micropython и CircuitPython. За исключением программного обеспечения, гибкий ввод-вывод позволяет ему общаться практически с любым внешним устройством. Вы также можете использовать редактор Thonny для программирования, как если бы вы использовали Raspberry Pi Pico. Благодаря двум быстрым ядрам, большому объему встроенной оперативной памяти и порту TensorFlow Lite RP2040 является отличной платформой для приложений машинного обучения.
Верхняя сторона платы имеет чип RP2040, встроенный в печатную плату. Как и другие платы, она имеет две кнопки, одну для сброса и другую для загрузки. Она также имеет красный светодиод питания и встроенный светодиод RGB. На плате также имеется светодиод Neopixel, который можно программировать. Плата имеет интерфейс USB типа C для программирования и последовательной связи.
Особенности платы
- Мощный микроконтроллер: двухъядерный процессор ARM Cortex M0+, настраиваемая тактовая частота до 133 МГц.
- Хорошие объемы памяти на кристалле: 264 КБ SRAM и 2 МБ встроенной флэш-памяти.
- Гибкая совместимость: поддержка Micropython/Arduino/CircuitPython.
- Простота эксплуатации проекта: удобная для макетной платы и SMD-дизайн, отсутствие компонентов на задней панели.
- Маленький размер: размером с большой палец (20×17,5 мм) для носимых устройств и небольших проектов.
- Несколько интерфейсов: 11 цифровых контактов, 4 аналоговых контакта, 11 контактов ШИМ, 1 интерфейс I2C, 1 интерфейс UART, 1 интерфейс SPI, 1 интерфейс контактной площадки SWD.
Распиновка
На плате Seeed Studio XIAO RP2040 имеется 14 контактов GPIO, из которых 11 цифровых, 4 аналоговых, 11 контактов ШИМ, 1 интерфейс I2C, 1 интерфейс UART, 1 интерфейс SPI и 1 интерфейс контактной площадки SWD.
Рабочее напряжение микроконтроллера платы составляет 3,3 В. Входное напряжение, подключенное к общим контактам ввода/вывода, может привести к повреждению чипа, если оно выше 3,3 В. Плата может питаться от внешнего источника питания 5 В. Встроенная схема преобразователя постоянного тока, способная преобразовывать напряжение 5 В в 3,3 В, позволяет питать устройство напряжением 5 В через VIN-PIN и 5V-PIN.
Вход в режим загрузчика
Иногда порт Seeed Studio XIAO RP2040 может исчезнуть при сбое процесса пользовательского программирования. Эту проблему можно решить, выполнив следующую операцию:
- Длительно нажмите кнопку «B».
- Подключите Seeed Studio XIAO PR2040 к компьютеру.
- Компьютер будет отображаться как драйвер диска.
В этот момент чип переходит в режим загрузчика и снова появляется порт записи. Это возможно поскольку чип RP2040 имеет два раздела, один из которых — загрузчик, а другой — пользовательская программа. Продукт запишет код загрузчика в системную память, когда покинет завод. Мы можем переключать режимы, выполняя указанные выше шаги.
Перезагрузка платы
Если вы хотите сбросить настройки Seeed Studio XIAO RP2040, выполните следующие действия:
- Подключите Seeed Studio XIAO RP2040 к компьютеру.
- Нажмите на кнопку «Reset» один раз.
Обратите внимание: поведение встроенных программируемых одноцветных светодиодов (два синих, один зеленый) противоположно поведению на Arduino. На Seeed Studio XIAO RP2040 для включения необходимо подать на вывод низкий уровень.
Начало работы с платой Seeed XIAO RP2040 в Arduino IDE
Перед использованием платы XIAO RP2040 нам нужно настроить Arduino IDE. Arduino IDE не имеет предустановленной платы XIAO RP2040. Поэтому нам нужно сначала установить плату.
Сначала откройте Arduino IDE и перейдите в File > Preferences (Файл > Настройки) и заполните поле “Additional Boards Manager URLs” («URL-адреса дополнительных плат») следующим URL-адресом:
Перейдите в Tools > Board > Boards Manager (Инструменты > Плата > Менеджер плат), введите ключевое слово «RP2040» в поле поиска, выберите последнюю версию и установите ее.
После установки платы перейдите в меню Tools > Board > Seeed RP2040 Boards («Инструменты» > «Плата» > «Платы Seeed RP2040») и выберите «Seed XIAO RP2040».
Перейдите в меню Tools > Port (Инструменты > Порт) и выберите имя последовательного порта, к которому подключена Seeed XIAO RP2040.
Теперь ваша плата готова к программированию и запуску проекта.
Мигание светодиода
Первая программа, которую мы реализуем, это мигание светодиода. На плате есть встроенный RGB-светодиод, подключенный к контакту 25. Мы будем использовать пример кода для мигания светодиода в течение 1 секунды.
Исходный код программы
Скопируйте следующий код и загрузите его на плату RP2040.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(5000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(2000); // wait for a second } |
После загрузки вы должны увидеть, как зеленый светодиод (USER) контакта 25 на плате мигает раз в секунду. Если это так, поздравляем!
Это означает, что подключение прошло успешно, и теперь вы можете исследовать больше проектов с помощью Seeed Studio XIAO RP2040!
Использование светодиодов Nexopixel RGB
Контакт 11 платы XIAO RP2040 — это контакт включения RGB-светодиода. Вы можете зажечь RGB-светодиод, установив высокий уровень на контакте 11. Здесь мы заставим его мигать. Сначала нам нужно добавить стороннюю библиотеку.
Откройте Arduino IDE, перейдите в Sketch > Include Library > Manage Libraries для поиска библиотеки. Введите ключевое слово «Adafruit_NeoPixel» в Ardunio library Manager (менеджер библиотек) и установите последнюю версию данной библиотеки.
Исходный код программы
Теперь скопируйте следующий код в Arduino IDE и нажмите кнопку Upload («Загрузить»), чтобы загрузить его.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <Adafruit_NeoPixel.h> int Power = 11; int PIN = 12; #define NUMPIXELS 1 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); pinMode(Power,OUTPUT); digitalWrite(Power, HIGH); } void loop() { pixels.clear(); pixels.setPixelColor(0, pixels.Color(15, 25, 205)); delay(400); pixels.show(); pixels.clear(); pixels.setPixelColor(0, pixels.Color(103, 25, 205)); delay(400); pixels.show(); pixels.clear(); pixels.setPixelColor(0, pixels.Color(233, 242, 205)); delay(400); pixels.show(); pixels.clear(); pixels.setPixelColor(0, pixels.Color(233, 23, 23)); delay(400); pixels.show(); pixels.clear(); pixels.setPixelColor(0, pixels.Color(12, 66, 101)); delay(400); pixels.show(); delay(500); } |
После загрузки кода RGB отобразит цвет радуги.
Аналоговый вывод Usgae для управления светодиодом
Теперь давайте посмотрим, как мы можем использовать аналоговый вывод платы XIAO RP2040 для управления светодиодом. Для этого подключите потенциометр к выводу A0, а 5-миллиметровый светодиод к выводу 27 через резистор 200 Ом.
Я использовал макетную плату для сборки этой схемы. Вы также можете разработать свою собственную печатную плату для этого.
Исходный код программы
Загрузите следующий код для управления интервалом мигания светодиода путем вращения ручки потенциометра.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
const int sensorPin = A0; const int ledPin = 27; void setup() { // declare the ledPin as an OUTPUT: pinMode(sensorPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { // read the value from the sensor: int sensorValue = analogRead(sensorPin); // turn the ledPin on digitalWrite(ledPin, HIGH); // stop the program for <sensorValue> milliseconds: delay(sensorValue); // turn the ledPin off: digitalWrite(ledPin, LOW); // stop the program for for <sensorValue> milliseconds: delay(sensorValue); } |
Подключение датчика DHT11 к RP2040
Теперь давайте подключим датчик DHT11 к плате XIAO RP2040. Подключите VCC, GND и выходной контакт датчика DHT11 к 3.3V, GND и контакту 27 платы XIAO.
Я снова использовал простое соединение с помощью макетной платы, как показано на рисунке ниже.
Исходный код программы
Для кода требуется библиотека датчика DHT11. Откройте Arduino IDE, перейдите в Sketch > Include Library > Manage Libraries для поиска библиотеки. Введите ключевое слово «DHT11» в Ardunio library Manager (менеджере библиотек) и установите последнюю версию данной библиотеки.
Скопируйте следующий код в Arduino IDE и нажмите кнопку Upload («Загрузить»), чтобы загрузить его.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include "DHT.h" #define DHTPIN 27 // Digital pin connected to the DHT sensor #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); Serial.println(F("DHTxx test!")); dht.begin(); delay(2000); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; } Serial.print(F("Humidity: ")); Serial.print(h); Serial.println("%"); Serial.print(F("Temperature: ")); Serial.print(t); Serial.println(F("°C ")); Serial.println(""); delay(2000); } |
После загрузки кода откройте Serial Monitor (окно монитора последовательной связи) — в нем вы можете увидеть данные о влажности и температуре.
OLED-дисплей с RP2040
Здесь мы собираемся подключить плату XIAO RP2040 к OLED-дисплею 0,96″ через контакты I2C и вывести на экран сообщение «Hello world».
Мы будем использовать контакт 5 как контакт SCL, а контакт 4 как контакт SDA.
Исходный код программы
Откройте Arduino IDE, перейдите в Sketch > Include Library > Manage Libraries, чтобы найти библиотеку. Введите ключевое слово «U8G2» library в Ardunio library Manager и установите последнюю версию данной библиотеки.
Скопируйте следующий код в Arduino IDE и нажмите кнопку «Загрузить», чтобы загрузить его.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); void setup(void) { u8g2.begin(); } void loop(void) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font u8g2.drawStr(0,10,"Hello Wrold!"); // write something to the internal memory u8g2.drawStr(0,30,"Hello Werold!"); u8g2.drawStr(0,50,"Hello Wrrrold!"); u8g2.sendBuffer(); // transfer internal memory to the display delay(1000); } |
Результаты работы этого проекта будут выглядеть следующим образом: