http://jbvsblog.blogspot.ru/2013/09/pcduino-extends-to-4-uarts.html
Архив метки: pcDuino
pcDuino + Python + Arduino via UART
Узнаем 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()
pcDuino
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()