Как прикрепить Arduino?


43

Сайт Arduino резюмирует это как

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

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

Как мне подключить один к Raspberry Pi? Как мне настроить связь?

Ответы:


38

Arduinos обычно появляются как последовательные USB-устройства. В современных платах используется драйвер последовательного интерфейса USB, встроенный в основной микропроцессор, но в старых Arduinos (и клонах) использовались отдельные сторонние чипы последовательного интерфейса USB.

Чтобы просто получать Serial.printданные о Raspberry Pi от Arduino, я использую программу GNU Screen в качестве основного терминала: screen [serial-port] [baud-rate](например screen /dev/ttyACM0 9600).

Я проверил три разных Arduinos и один довольно другой клон. Все новые варианты появились как /dev/ttyACM0порты, а старые /dev/ttyUSB0. Вот что я нашел при Распбиане:

  • Duemilanove - серийный чип: FTDI FT232RL ; Последовательный порт:/dev/ttyUSB0
  • Uno - последовательный чип: Atmel ATmega16U2 (или 8U2 на старых платах); Последовательный порт:/dev/ttyACM0
  • Леонардо - Серийный чип: Atmel ATmega32U4 (встроенный); Последовательный порт:/dev/ttyACM0
  • OMS Omega-328U - серийный чип: Silicon Labs CP210x ; Последовательный порт: /dev/ttyUSB0.

Raspberry Pi может не обеспечивать достаточную мощность для управления Arduino, поэтому вам может потребоваться внешнее питание. Для полноты картины я также протестировал Prolific PL2303 , хотя его нет ни на одном Arduino, о котором я знаю. Выглядело довольно счастливо /dev/ttyUSB0.

Для более сложной связи с датчиками вы можете рассмотреть Firmata , «общий протокол для связи с микроконтроллерами из программного обеспечения на главном компьютере». Он имеет реализации для библиотек Arduino и Python для работы на стороне Raspberry Pi.

Вот небольшой пример использования pyFirmata для считывания LM35 и изменения яркости светодиода:

#!/usr/bin/python
# -*- coding: utf-8 -*-

# simple test of pyfirmata and Arduino; read from an LM35 on A0,
#                                       brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)

import pyfirmata

# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')

# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()

# set up pins
pin0=board.get_pin('a:0:i')             # A0 Input      (LM35)
pin3=board.get_pin('d:3:p')             # D3 PWM Output (LED)

# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
    pass

for i in range(10):
    pin3.write(i/10.0)                  # set D3 to 0, 10%, 20%, ... brightness
    print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
    board.pass_time(1)                  # pause 1 second

pin3.write(0)                           # turn LED back off
board.exit()

При использовании pyFirmata есть несколько предостережений:

  • Аналоговые чтения и записи ШИМ нормированы на диапазон 0 .. 1, а не стандартные Arduino 0 ... 255 и 0 ... 1023.
  • Вам действительно нужно запустить отдельный поток итератора, чтобы остановить старые чтения, переполняющие последовательный буфер
  • Поскольку Arduino читается асинхронно, убедитесь, что соединение pyFirmata полностью инициализировано перед чтением из портов. В противном случае Noneзначения следуют.

1
Я также подтвердил, что вы можете запустить Processing на Raspberry Pi. Это очень медленно, но мне удалось заставить его управлять Arduino через USB-соединение: управление Arduino из Raspberry Pi с помощью Processing . Я посмотрю, смогу ли я перенести это на Python / tkinter ...
scruss

Спасибо за этот ответ, это было очень полезно. Я использую серийный Python для чтения из / dev / ttyACM0 и считаю его очень противоречивым. Я предположил, что это был недостаток питания для моего Arduino, но я подключил его к внешнему источнику питания и до сих пор возникают проблемы. Иногда данные искажены, иногда выдается исключение, потому что / dev / ttyACM0 не найден (хотя последующие запуски найдут его). Были ли у вас похожие проблемы?
Энди Смит

Нет, это не соответствует моему опыту.
scruss

Спасибо за ответ - интересно, должно быть, я что-то не так делаю!
Энди Смит

Возможно, задайте не-пи-специфичный вопрос о SE, или задайте его непосредственно на форуме Arduino. Серийный обмен часто вызывает у меня головную боль ...
scruss

13

Если это неясно, с помощью Raspbian Wheezy вы можете запустить IDE Arduino и загружать эскизы в Arduino при подключении к USB-порту Raspberry Pi. Для установки на Raspbian просто введите в оболочку (она же командная строка):

sudo apt-get install arduino

Он загрузит и установит все необходимые пакеты. У меня есть пара фотографий Arduino IDE в Raspbian здесь:

http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/03/review-of-raspberry-pi-images

(как другие люди описали выше, Raspberry Pi также может программировать Arduino через выводы последовательного порта (UART) на заголовке GPIO. В этом случае вам не придется «тратить» порт USB, но это потребует дополнительной настройки ).

Ура, Дрю


Я протестировал Arduino Uno с RGB-светодиодом с простым замиранием, и Arduino Uno работал только от USB-порта Raspberry Pi. У меня не было никаких проблем, но, конечно же, YMMV.
pdp7

8

Можно выбрать подключение Rpi к Arduino, используя порт USB или с помощью контактов GPIO. Можно использовать Wiringpi для связи между досками.

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

Основной привет мир можно найти здесь .


7

Режим а ля

Объявленный как надлежащий способ положить Arduino в Raspberry Pi по Hack Day А, а - ля режима является наращиваемой Arduino клона разработан Anool Mahidharia, Джастин Шоу и Кевин Osborn из Wyolum.com Collaborative OSHW. Hack A Day описал это следующим образом

Сразу же, AlaMode подключается непосредственно к выводам GPIO Raspberry Pi. Оттуда, связь с ATMega Arduino включена, что позволяет отправлять и получать данные так же, как с Arduino. Есть часы реального времени, сервоприводы, множество способов питания платы и даже прорыв для модуля GPS.

В AlaMode покончено с множеством ненужных бесполезных действий; Там нет USB-порта, но он может быть запрограммирован непосредственно через контакты GPIO Raspberry Pi. Довольно аккуратно, и мы не можем дождаться, чтобы взять один для нашего [Raspberry Pi].

Кевин дает немного больше подробностей в своем блоге :

Вот функции, включая несколько дополнительных вкусностей:

  • Гибкая сила. Может питаться напрямую от Pi, автономно с аккумулятором или настенной розеткой, или от USB. Это важно, если ваш щит потребляет больше энергии, чем может дать Пи, или если вы хотите отсоединить его для автономной работы. Программируется через UART Pi на выводах GPIO или через USB-последовательный адаптер FTDI или интернет-провайдера.
  • Разъем для подключения Fastrax UP501 GPS. DS3234 Часы реального времени. У Pi нет собственной RTC с батарейным питанием. Вы можете установить программу в AlaMode, чтобы сообщать время Pi через последовательный порт или I2C.
  • Слот для карты Micro-SD. Полезно для регистрации данных и большой памяти для ваших приложений Arduino
  • Ряд сервоприводов, подключенных к выводам ШИМ с настраиваемой шиной питания и заземлением

Ограниченная бета

Доска в настоящее время находится в ограниченной бета-версии, но она заслуживает упоминания как хорошо продуманный клон, который был объявлен группой с предыдущей формой .

Ссылки

  1. Взломать дневник
  2. Блог Кевина Осборна
  3. Wyolum.com

4

Вы можете рассмотреть Gert Board, который теперь основан на Arduino, если вы хотите аппаратную интерфейсную платформу общего назначения. Одним из преимуществ является то, что существует обширная документация по взаимодействию с RPi. Доступен по предварительному заказу от Element14 по состоянию на 8.08.12.


0

Существует RaspberryPi HAT, который ведет себя как Arduino и может быть запрограммирован через его веб-интерфейс из любого браузера. Проект называется CoPiino . Он поставляется полностью с программным обеспечением и работает. Просто введите Arduino Sketch в пользовательский интерфейс браузера и нажмите «скомпилировать и запустить» - вот и все.


1
учитывая, что вы опубликовали как минимум два ответа, рекламирующих CoPino, я подозреваю, что вы подключены к этому проекту. Любая связь должна быть отмечена в вашем ответе,
Стив Робиллард

Да, это абсолютно правильно, и мой комментарий полностью охватывает эту тему. Плата CoPiino аналогична уже упомянутой плате a-la-mode. Где CoPiino предлагает несколько приятных дополнительных функций. Где программирование Arduino от Pi легко освещено - это был первый вопрос.
tswaehn

Четыре года на вас еще не редактировали в вашей принадлежности. Пожалуйста, сделай так.
Джон Харпер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.