Новости:

SMF форум только что установлен!

Main Menu

Соединяем Raspberry Pi с Arduino через Serial GPIO

Автор ak167, 11 Марта 2023, 23:34:47

« предыдущая тема - следующая тема »

ak167

Одним из способов соединения 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);
}
}


Теперь соединяем линии 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()



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