Daniel Sheard Daniel Sheard - 7 months ago 33
Python Question

Raspberry Pi Not Connecting to Arduino via USB

I'm following this tutorial: (http://www.seeedstudio.com/recipe/index.php?controller=recipe&action=show&recipe_id=166)

I have the Raspberry Pi connected to the Arduino via USB

When I run python in terminal, the commands work as expected and the arduino flashes as directed.

However when I put the commands in a python script and execute the .py file, regardless of the number I pass, the LED on pin 13 flashes a 3 or 4 times very quickly, then pauses and flashes slowly once more.

I can't understand why it isn't running as it is supposed to. There is a clear difference in how the arduino interprets serial messages sent via terminal python (>>>) and executing arduino.py.

When I run dmesg, I get:

pi@raspberrypi ~ $ dmesg | grep tty

[ 0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2709.boardrev=0xa01041 bcm2709.serial=0x4c5954ea smsc95xx.macaddr=B8:27:EB:59:54:EA bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
[ 0.002073] console [tty1] enabled
[ 0.195158] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2
[ 6.986035] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
[ 271.283091] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 273.926013] usb 1-1.5: ch341-uart converter now attached to ttyUSB0
[ 455.883149] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 530.727358] usb 1-1.3: ch341-uart converter now attached to ttyUSB0


When I run python --version in terminal, I get 2.7.3

When I print sys.version in the script, it shows [GCC 4.6.3]

arduino.py:

#!/usr/bin/env python
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.write("3")

Answer

Solved!

It seems that opening the serial connection was causing my Arduino to reset... I put a time.sleep(3) after opening the connection.

My code is:

import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600)
time.sleep(3)
ser.write('2')

Very strange that this issue happens in an executable, but not in console.

Comments