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
значения следуют.
Если это неясно, с помощью Raspbian Wheezy вы можете запустить IDE Arduino и загружать эскизы в Arduino при подключении к USB-порту Raspberry Pi. Для установки на Raspbian просто введите в оболочку (она же командная строка):
Он загрузит и установит все необходимые пакеты. У меня есть пара фотографий 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, но это потребует дополнительной настройки ).
Ура, Дрю
источник
Можно выбрать подключение Rpi к Arduino, используя порт USB или с помощью контактов GPIO. Можно использовать Wiringpi для связи между досками.
В настоящее время также разрабатывается мост под названием Понте .
Основной привет мир можно найти здесь .
источник
Режим а ля
Объявленный как надлежащий способ положить Arduino в Raspberry Pi по Hack Day А, а - ля режима является наращиваемой Arduino клона разработан Anool Mahidharia, Джастин Шоу и Кевин Osborn из Wyolum.com Collaborative OSHW. Hack A Day описал это следующим образом
Кевин дает немного больше подробностей в своем блоге :
Ограниченная бета
Доска в настоящее время находится в ограниченной бета-версии, но она заслуживает упоминания как хорошо продуманный клон, который был объявлен группой с предыдущей формой .
Ссылки
источник
Вы можете рассмотреть Gert Board, который теперь основан на Arduino, если вы хотите аппаратную интерфейсную платформу общего назначения. Одним из преимуществ является то, что существует обширная документация по взаимодействию с RPi. Доступен по предварительному заказу от Element14 по состоянию на 8.08.12.
источник
Существует RaspberryPi HAT, который ведет себя как Arduino и может быть запрограммирован через его веб-интерфейс из любого браузера. Проект называется CoPiino . Он поставляется полностью с программным обеспечением и работает. Просто введите Arduino Sketch в пользовательский интерфейс браузера и нажмите «скомпилировать и запустить» - вот и все.
источник