http://jbvsblog.blogspot.ru/2013/09/pcduino-extends-to-4-uarts.html
Узнаем IP address который получила pcDuino через DHCP и посылаем его в Arduino через UART.
#!/usr/bin/env python import socket import fcntl import struct import serial import time, os def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24]) # Инициализация порта UART0 def uart_init(): GPIO_MODE_PATH= os.path.normpath('/sys/devices/virtual/misc/gpio/mode/') GPIO_PIN_PATH=os.path.normpath('/sys/devices/virtual/misc/gpio/pin/') GPIO_FILENAME="gpio" pinMode = [] pinData = [] SERIAL = "3" for i in range(0,2): pinMode.append(os.path.join(GPIO_MODE_PATH, 'gpio'+str(i))) pinData.append(os.path.join(GPIO_PIN_PATH, 'gpio'+str(i))) file = open(pinMode[0], 'r+') file.write(SERIAL) file.close() file = open(pinMode[1], 'r+') file.write(SERIAL) file.close() uart_init() pcDuinoIPaddress = get_ip_address('wlan0') arduino = serial.Serial('/dev/ttyS1',baudrate=115200,timeout=10) arduino.write("["+pcDuinoIPaddress+"]") arduino.close()
В процессе программирования возникли некоторые трудности, которые оказались связанные с ошибкой сборки. Решил все перебрать, улучшить конструкцию для сборки и разборки, а также для того чтобы было удобно добавлять необходимые датчики. Также заменили камеру, установили более удобную и более качественную, также установил серво-привод для вращения камерой.
Теперь программировать и добавлять того чего захочется.
Учебно-тренировочный робот для изучения совместной работы Arduino Mega 2560 и pcDuino.
Основной блок управления двигателями и другими датчиками собран на Arduino Mega 2560. Для обработки видео используется pcDuino. Внизу есть фото с диограмой всего робота. Робот управляется через WWW, Telnet или при помощи IR (Инфокрасный пульт управления). pcDuino доступна через WiFi — через USB WiFi Edimax. Доступ к Arduino Mega тоже возможен через WiFi — для этого использовали модуль WiFly от SparkFun. pcDuino и Arduino Mega общаются между сабой через UART или через WiFi.
— Сейчас работает трансляция с камеры (можно в режиме реального времени смотреть все то что видит робот)
Dimensions: 125mm X 52mm
Features:
- 1GHz ARM Cortex A8 CPU
- GPU: OpenGL ES2.0, OpenVG 1.1 Mali 400 core
- 1GB DRAM
- Onboard Storage: 2GB Flash, microSD card (TF) slot for up to 32GB
- Arduino-Style Peripheral Headers (Adapter Needed for Shield Form-Factor)
- HDMI Video Output
- Linux3.0 + Ubuntu12.10 Supported
- 0.1″ Spaced GPIO Headers
- RJ45 Ethernet Connection
- Power Requirements: 2A @ 5VDC
- API to access the following interfaces:
- UART
- ADC
- PWM
- GPIO
- I2C
- SPI
- Program in C, C++ with GNU tool chain
- Program in Java with standard Android SDK
Купить: SparkFun
Работаем с I2C
Для начала установим следующие пакеты:
sudo apt-get install i2c-tools sudo apt-get install python-smbus
root@ubuntu:# i2cdetect -y 2 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Для доступа из С/C++ не забываем сделать:
roto# modprobe gpio root# modprobe pwm root# modprobe adc
Доступ к UART (GPI0 and GPI1) из Python
#!/usr/bin/python import serial ## Select and configure the port arduino = serial.Serial('/dev/ttyS1',baudrate=115200,timeout=10) arduino.write("Arduino, Hello") ## Close the port so other applications can use it. arduino.close()