

Вход
Регистрация | Забыли пароль?
Поиск
Рубрики
Рейтинг
Облако тэгов
windows, raspberry pi 3, raspbian, умный дом, gpio, ubuntu, osmc, windows 10, linux, игры, python, установка ос, raspberry pi 2, raspberry pi zero, raspberry pi zero w, слежение, самолёт, http, diy, 1c-битрикс, нейросеть, сеть, кластер, бесперебойник, акустикаБоковое меню
Соединяем Raspberry Pi с Arduino через Serial GPIO
Одним из способов соединения Raspberry Pi и Arduino является их связь по линиям GPIO с функцией последовательного порта.

Выводы миникомпьютера Raspberry Pi и платы Arduino имеют разное напряжение, поэтому при их связи таким образом необходимо использовать преобразователь логических уровней или хотя бы делитель напряжения.
Для начала нужно настроить Raspberry Pi для последовательной передачи данных.
Во-первых, чтобы использовать серийный порт Raspberry Pi, нужно деактивировать getty (программу, которая отображает экран для логина). Для этого находим в файле /etc/inittab строчку:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
И комментируем ее:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Во-вторых, чтобы предотвратить отправку данных в последовательный порт при загрузке Raspberry Pi, открываем файл /boot/cmdline.txt и находим, а затем удаляем следующую строчку:
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
Затем перезагружаем Raspberry Pi с помощью команды sudo reboot. После этого устанавливаем minicom:
sudo apt-get install minicom
Загружаем в Arduino следующий скетч:
byte number = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()) {
number = Serial.read();
Serial.print("character recieved: ");
Serial.println(number, DEC);
}
}
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()) {
number = Serial.read();
Serial.print("character recieved: ");
Serial.println(number, DEC);
}
}
Теперь соединяем линии GPIO миникомпьютера и линии последовательного порта Raspberry Pi через конвертер логических уровней.

Удостоверьтесь, что подключение Raspberry Pi произведено в соответствии с распиновкой разъема GPIO:

Теперь протестируем Minicom. Чтобы соединиться с Arduino через последовательный порт, введем в терминале:
minicom -b 9600 -o -D /dev/ttyAMA0
Если вы введете какой-нибудь символ, он будет отправлен в Arduino и послан назад в виде соответствующего ASCII-кода. Вот так просто Raspberry Pi может общаться с Arduino.

Чтобы выйти, нажмите CTRL + A, а затем Q.
Теперь попробуем сделать более сложные вещи, написав программу на Python. Для начала нужно установить Py-Serial:
sudo apt-get install python-serial
Ниже приведен небольшой код, который отправляет строчку «testing» через последовательный интерфейс GPIO:
import serial
ser = serial.Serial(`/dev/ttyAMA0`, 9600, timeout=1)
ser.open()
ser.write("testing")
try:
while 1:
response = ser.readline()
print response
except KeyboardInterrupt:
ser.close()
ser = serial.Serial(`/dev/ttyAMA0`, 9600, timeout=1)
ser.open()
ser.write("testing")
try:
while 1:
response = ser.readline()
print response
except KeyboardInterrupt:
ser.close()

Чтобы выйти, нажмите CTRL + C.
Источник