Як прикріпити ардуїно?


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. Це те, що я знайшов під Raspbian:

  • 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 serial для читання з / dev / ttyACM0 і вважаю це дуже непослідовним. Я припускав, що це мій ардуїно, це нестача живлення, але я підключив його до зовнішнього джерела живлення, і у мене все ще виникають проблеми. Іноді дані неправильно формуються, іноді викидається виняток, оскільки / dev / ttyACM0 не знайдено (хоча наступні запуски знайдуть його). У вас були подібні проблеми?
Енді Сміт

Ні, це не відповідає моєму досвіду.
scruss

Дякую за відповідь - цікаво, повинно бути те, що я тоді роблю неправильно!
Енді Сміт

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

13

Якщо це не зрозуміло, за допомогою програми Raspbian Wheezy ви можете запустити Ardeino IDE і завантажити ескізи до Arduino при підключенні до USB-порту Raspberry Pi. Щоб встановити на Raspbian, просто введіть оболонку (він же командний рядок):

sudo apt-get install arduino

Він завантажить та встановить усі необхідні пакети. У мене є кілька фотографій IDE Arduino в 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 A Day, режим а-ля - це складний клон Arduino, розроблений Anool Mahidharia, Джастіном Шоу та Кевіном Осборном із спільного проекту WHolum.com OSHW. Hack A Day описав це так

Прямо біля кажана AlaMode підключається безпосередньо до GPIO-штифтів Raspberry Pi. Звідти спілкування з ATMega Arduino ввімкнено, що дозволяє вам надсилати та отримувати дані так само, як і з Arduino. Є годинник в режимі реального часу, сервозаголовки, безліч способів живлення плати і навіть пробій для [a] GPS-модуля.

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

Кевін надає трохи більше деталей у своєму блозі :

Ось функції, включаючи кілька додаткових смаколиків:

  • Гнучка потужність. Може живитись безпосередньо від Pi, автономного пристрою з батареєю або настінною бородавкою або USB-джерелом живлення. Це важливо, якщо ваш щит забирає більше енергії, ніж може забезпечити Pi, або якщо ви хочете відкрутити його для самостійної роботи. Програмується через UART Pi на штифтах GPIO або через USB-послідовний адаптер FTDI або ISP.
  • Заголовок для підключення GPS Fastrax UP501. DS3234 Годинник у режимі реального часу. У Pi немає власного RTC, що підтримується акумулятором. Ви можете встановити програму в AlaMode, щоб повідомляти про час Pi через serial або I2C
  • Слот для Micro-SD карт. Корисно для обміну даними та великої пам’яті для ваших програм Arduino
  • Ряд сервоприводів підключений до ШІМ-штифтів з можливістю налаштування потужності та заземлення

Обмежена бета-версія

В даний час рада є обмеженою бета-версією, але вона заслуговує на згадку як добре продуманий клон, про який оголосила група з попередньою формою .

Список літератури

  1. Злому дня в блозі
  2. Повідомлення в блозі Кевіна Осборна
  3. Wyolum.com

4

Ви можете розглянути плату Gert, яка зараз заснована на Arduino, якщо ви хочете платформу для взаємодії апаратних засобів загального призначення. Однією з переваг є те, що існує велика документація щодо взаємодії з RPi. Доступно для попереднього замовлення від Element14 станом на 8/8/12.


0

Існує HAT RaspberryPi, який поводиться як Arduino і може бути запрограмований через веб-інтерфейс з будь-якого браузера. Проект під назвою CoPiino . Він поставляється повністю з програмним забезпеченням, що працює і працює. Просто введіть ескіз Arduino в інтерфейс браузера і натисніть "компілювати і запустити" - ось це.


1
враховуючи, що ви опублікували принаймні дві відповіді, які рекламують CoPino, я підозрюю, що ви підключені до цього проекту. Будь-який зв’язок слід зазначити у вашій відповіді,
Стів Робіллард

Так, це абсолютно правильно, і мій коментар повністю висвітлює цю тему. Дошка CoPiino схожа на вже згадану плату a-la-mode. Де CoPiino пропонує деякі додаткові функції. Де легко програмувати програмування Arduino від Pi - це було початкове питання.
tswaehn

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