Как подключить arduino к raspberry pi
Перейти к содержимому

Как подключить arduino к raspberry pi

  • автор:

Установка поддержки Rasbperry Pi Pico в Arduino IDE

В этой статье мы объясним как установить поддержку плат Raspberry Pi Pico в Arduino IDE.

Для установки поддержки этих плат достаточно выполнить несколько простых шагов. Перед их выполнением убедитесь, что на ПК на котором они выполняются есть подключение к сети Интернет и доступ к нему для Arduino IDE не заблокирован в Брендмауре Windows.

1 — Откройте менеджер плат Arduino IDE

Выберете пункт меню «Инструметы» -> «Плата:» -> «Менеджер плат. «

2 — Найдите плату в списке

Введите rp2040 в поле поиска

3 — Установите поддержку плат

Найдите строку Arduino Mbed OS RP2040 Boards и нажмите «Установить»

Начнётся установка. Если появится диалоговое окно «Контроль учётных записей», нажмите «Да».

Если появятся окна «Безопасность Windows» с установкой USB устройств, нажмите «Установить»

4 — проверка

Если Вы ещё не подключили плату к ПК, подключите её зажав кнопку «BOOTSEL» на плате.

Выберете пункт меню «Инструменты» -> «Плата:» -> «Arduino Mbed OS RP2040 Boards» -> «Rasbperry Pi Pico»

Начнётся настройка устройства

После завершения настройки в меню «Инструменты» -> «Порт» должен появится новый COM порт. Выберете его.

Загрузите проверочный скетч в плату (например Blink)

5 — устранение неполадок (Нет COM порта в списке)

Если Вы уже использовали плату с MicroPython и после этого сбрасывали на заводские настройки при помощи flash_nuke.uf2 файла, то после подключения к ПК в Arduino IDE порт платы может быть не виден, но при этом внизу окна Arduino IDE будет показан COM порт отсутствующий в списке.

Просто нажмите «Загрузить скетч» не выбирая никаких портов и после загрузки скетча и перезагрузки платы появится новый порт в списке.

Если внизу окна Arduino IDE нет порта не из списка портов или в меню порт уже выбран какой-либо порт, то:

  • Зажмите кнопку «BOOTSEL» на плате при подключении к ПК. Плата определится как флеш карта.
  • Скопируйте на неё вот этот файл. Дождитесь перезагрузки микроконтроллера.
  • В меню «Инструменты» -> «Порт» появится новый порт. Выберете его и загрузите в плату любой скетч, выбрав при этом Raspberry Pi Pico в меню плат.
  • После загрузки скетча плата определится как Raspberry Pi Pico.

Сброс на заводские настройки

Не важно, что вы загружали в плату, её всегда можно перезагрузить в режиме флеш-карты и сбросить на заводские настройки. Для этого:

  • Зажмите кнопку «BOOTSEL» на плате при подключении к ПК. Плата определится как флеш карта.
  • Скопируйте на неё flash_nuke.uf2 файл с сайта производителя. Дождитесь перезагрузки микроконтроллера.
  • Микроконтроллер сброшен на заводские настройки.

Блог Дмитрия Сошникова

Я работаю в компании Майкрософт на позиции технического евангелиста. Я люблю делать людей счастливыми.

О чем я пишу

Июль 2015

Пн Вт Ср Чт Пт Сб Вс
« Июн Ноя »
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

Подключение Arduino к Raspberry Pi

Как я уже писал ранее, во многих сценариях интернета вещей бывает полезно иметь один достаточно мощный встраиваемый компьютер (в роли которого может выступать Raspberry Pi), который может связываться с множеством расположенных в разных местах сенсоров, управляемых простыми микроконтроллерами семейства Arduino. При этом можности Raspberry Pi хватает, чтобы передавать данные по защищенным каналам HTTPS в облако, а также чтобы осуществлять взаимодействие с пользователем посредством развитого интерфейса (например, при работе под управлением Windows 10).

Для соединения Arduino с Raspberry Pi существует несколько сценариев подключения:

    • Использование явного последовательного канала передачи данных. При этом возникают сложности, связанные с разностью уровней питания: Raspberry Pi работает на напряжении 3.3В, в то время как Arduino использует 5 вольт. При этом для обеспечения безопасного соединения рекомендуется использовать специальные преобразователи уровня.
    • Использование последовательной шины I2C, что позволяет подключать к одной Raspberry Pi до 128 устройств Arduino в режиме slave, при этом такое подключение также не требует преобразователей уровня.
    • Подключение по USB является пожалуй самым простым способом, поскольку для этого достаточно всего лишь воткнуть Arduino через стандартный кабель в USB-разъем Raspberry Pi. Именно этот способ мы и рассмотрим.

    В качестве примера рассмотрим простейший датчик температуры и давления BMP-180, подключенный к Arduino Uno по стандартной схеме. После этого контроллер Arduino включается в USB-разъем Raspberry Pi, а сам Raspberry Pi затем подключается обычным образом к питанию, монитору и т.д.

    WP_20150427_18_39_55_Pro

    При таком подключении общение Arduino и Raspberry происходит по последовательному порту. Предварительно (до подключения) на Arduino необходимо залить требуемый скетч – в нашем случае это простая программа, считывающая значение давления и температуры с датчика и печатающая их в виде текста в последовательный канал (температура предваряется символом Т, а давление – P):

     
    #include <Wire.h> #include <BMP180.h> BMP180 barometer; void setup() < Serial.begin(9600); Wire.begin(); barometer = BMP180(); if(barometer.EnsureConnected()) < barometer.SoftReset(); barometer.Initialize(); >else < Serial.println("E"); >> void loop() < if(barometer.IsConnected) < long pres = barometer.GetPressure(); float temp = barometer.GetTemperature(); Serial.print("P"); Serial.println(pres); Serial.print("T"); Serial.println(temp); delay(1000); >>

    Проверим работоспособность скетча в Arduino IDE, открыв монитор последовательного порта – мы должны увидеть появляющиеся значения температуры и давления. Обратите внимание на скорость – в программе задана скорость в 9600 бод, такие же установки должны быть и у монитора последовательного порта.

    Теперь загрузим Raspberry Pi – в моем примере я использую Pidora в качестве базовой операционной системы и классическую модель Rapsberry Pi, хотя с таким же успехом можно использовать Raspberry Pi 2 и Windows 10.

    Первым делом нужно определить, какой последовательный порт будет отвечать за общение с Arduino-контроллером. Проще всего это сделать следующим образом: при выключенной плате Arduino смотрим все доступные последовательные терминалы (ls /dev/tty*), после чего включаем плату в USB-порт, и через некоторое время снова смотрим список терминалов. То устройство, которое появилось в списке, и будет требуемым портом. В моём случае это был /dev/ttyUSB0, но в зависимости от номера порта, используемого дистрибутива системы и других факторов это имя может сильно отличаться.

    2015-04-27-190009_1920x1200_scrot

    Теперь мы можем использовать любые средства общения с последовательным портом для того, чтобы принять значения от датчика, передаваемые Arduino. Чаще всего удобным оказывается использовать Python и библиотеку serial. Например, следующий простой скрипт, набранный прямо в REPL, будет отображать на экране все данные, приходящие в последовательный порт:

     
    import serial ser = serial.Serial("/dev/ttyUSB0",9600) while 1: ser.readline()

    Ниже показано, как этот скрипт выполняется в окне терминала на Raspberry Pi:

    2015-04-27-185823_1920x1200_scrot

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

    Соединение Raspberry Pi и Arduino

    В блоге проекта Raspberry Pi опубликована заметка с целью развенчать всякие спекуляции по поводу конкуренции Raspberry Pi и Arduino. На самом деле ничего подобного: разработчики Raspberry Pi считают, что Arduino — отличная вещь, и эти две платформы вовсе не конкурируют, а могут даже работать вместе.

    Raspberry Pi и Arduino предполагается использовать совершенно для разных вещей. В Arduino используется микроконтроллер, а в Raspberry Pi — процессор. Для некоторых вещей лучше Raspberry Pi (например, его удобнее подключить к телевизору), а для других подходит Arduino.

    Более того, они могут работать совместно. Например, плату Arduino можно подключить к Raspberry Pi по USB — и управлять с помощью Python (см. инструкции).

    Уже практически готов дизайн моста между Raspberry Pi и Arduino — такое устройство под названием Ponte проектирует один из энтузиастов.

    Тем временем, компания Adafruit тестирует плату ввода-вывода Prototyping Pi Plate Kit, которая работает с Raspberry Pi и позволяет подключать периферийные устройства через интерфейсы GPIO/I2C/SPI и т.д.

    Подключение Raspberry Pi к Arduino через UART интерфейс

    Подключение Raspberry Pi к Arduino через UART интерфейс

    В этой статье мы покажем вам, как обмениваться данными между Raspberry Pi и платой Arduino через последовательный интерфейс.

    Для начала, кратко объясним, что такое последовательный интерфейс. Затем посмотрим, как настроить оборудование и программное обеспечение, а затем углубимся в код Python (Cpp для Arduino). Разберем простой пример, ведущий к более совершенному использованию Raspberry Pi, Arduino и других электронных устройств.

    Это руководство подходит для плат Raspberry Pi 4 (и ранних: 3B, 3B +) и любой платы Arduino. Мы будем использовать в основном Arduino Uno, но также более подробно расскажем о различиях между платами Arduino, когда дело касается последовательной передачи данных.

    При работе с электронными устройствами передача данных является ключевым моментом. Каждое устройство – помимо своей основной функции – должно четко обмениваться данными с другими устройствами. Это одна из самых важных вещей, с которыми нужно уметь работать, чтобы перейти от очень простых приложений к более сложным.

    Что такое последовательный интерфейс (UART)?

    Последовательная передача данных – это просто способ их передачи. Данные отправляются последовательно, по одному биту (1 байт = 8 бит), в отличие от параллельной связи, когда одновременно отправляется много битов.

    Что такое протокол UART?

    Говоря более конкретно, когда вы используете последовательный порт с Arduino и Raspberry Pi, вы используете протокол UART. UART означает «Универсальный асинхронный приёмопередатчик».

    По сути, это асинхронный multi-master протокол, основанный на последовательном интерфейсе, который позволяет обмениваться данными между двумя платами. Будьте уверены, есть библиотеки, которые справятся со всеми низкими уровнями за вас.

    Multi-master означает, что все подключенные устройства смогут отправлять данные, когда требуется. Это одно из основных отличий от протоколов «master-slaves», где только главное устройство может инициировать обмен данными.

    Обычно используются другие протоколы, такие как I2C и SPI, когда вам нужны конфигурации ведущий-ведомый: например, когда у вас есть одна плата Arduino и несколько датчиков или исполнительных механизмов.

    На плате Arduino Uno есть один UART, который можно использовать либо с USB-кабелем, либо с контактами RX / TX (не используйте его с обоими одновременно). Некоторые платы имеют больше доступных UART.

    Например, Arduino Mega имеет разные последовательные интерфейсы (Serial, Serial1, Serial2, Serial3), а Arduino Zero имеет только порт USB (используйте SerialUSB вместо Serial).

    На Raspberry Pi возможно подключить множество последовательных устройств к портам USB. У каждого устройства будет свое имя (посмотрим как их найти позже в этой статье). Вы также можете использовать GPIO (RX0 / TX0) для дополнительного UART.

    Вы, наверное, уже знакомы с библиотекой Serial для Arduino

    Когда вы используете монитор последовательного порта, в общем случае ваша среда разработки Arduino запускает последовательный интерфейс с вашим Arduino. Вы можете получать и отправлять данные прямо с монитора последовательного порта.

    То, что мы сделаем здесь, почти то же самое, за исключением того, что вместо вашей среды разработки Arduino другой стороной последовательного интерфейса будет плата Raspberry Pi. Нам нужно будет произвести некоторые настройки и написать код, чтобы он заработал. Тогда и Raspberry Pi, и Arduino смогут отправлять сообщения друг другу.

    Давайте теперь посмотрим, как физически соединить две платы вместе.

    Настройка оборудования для последовательного интерфейса

    Есть 2 способа подключить Raspberry Pi и Arduino для последовательного интерфейса.

    1. С помощью USB

    Самый простой способ – соединить обе платы кабелем USB.

    Со стороны Raspberry Pi USB-разъем – это все, что вам нужно. Вы можете выбрать любой из 4 портов USB, имеющихся на плате.

    Для Arduino вы будете использовать USB-порт, который вы используете для загрузки кода с вашего компьютера (со среды разработки Arduino) на вашу плату. Выбор USB-разъема зависит от того, какая у вас версия. Для таких плат, как Arduino Uno и Mega, разъем будет отличаться от Arduino Nano и от Arduino Zero.

    В этом примере мы использовали плату Arduino Uno.

    Соединение Arduino и Raspberry Pi через USB

    Как видите, это простейшее аппаратное соединение, которое вы можете установить между Raspberry Pi и Arduino.

    Примечание: сначала вам нужно подключить Arduino к компьютеру, чтобы вы могли загрузить код в плату. После этого подключите USB-кабель к Raspberry Pi. Raspberry Pi будет питать Arduino через этот кабель

    2. С помощью интерфейса ввода/вывода общего назначения (GPIO)

    Чтобы установить последовательное соединение, вы также можете использовать простые провода между интерфейсом ввода/вывода Raspberry Pi и контактами Arduino

    Соединение Arduino и Raspberry Pi через GPIO

    В зависимости от типа вашей платы Arduino вам может потребоваться переключатель уровня напряжения. Raspberry Pi работает при напряжении 3,3 В. Для плат Arduino, таких как Due, 101, это тоже подойдет, так как они также используют 3,3 В.

    Но для многих Arduino, таких как Uno, Mega, Leonardo, Nano и многих других, плата работает при напряжении 5 В. Таким образом, вам понадобится переключатель напряжения 3,3 В / 5 В для защиты Raspberry Pi при подключении RX и TX.

    В оставшейся части этого руководства мы будем использовать настройку с помощью кабеля USB. С ним будет проще работать, поэтому советуем использовать USB-кабель вместо GPIO для последовательного интерфейса.

    Как настроить программное обеспечение Raspberry Pi?

    Для Arduino не требуется никаких специальных настроек. Просто убедитесь, что вы скачали и установили среду разработки Arduino.

    Однако, на вашем Raspberry Pi требуется несколько вещей, чтобы интерфейс заработал.

    Подключитесь к Raspberry Pi через протокол SSH или с помощью экрана, мыши и клавиатуры, и откройте консоль. Если вы еще не установили ОС на плату, вы можете очень легко установить Raspbian или Ubuntu на SD-карту.

    1. Найдите плату Arduino

    При подключении к Arduino через USB, вы должны обнаружить ее по адресу /dev/ttyACM0 или /dev/ttyUSB0 (иногда цифра в адресе может отличаться, к примеру /dev/ttyACM1).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *