- September 11th, 2018, 12:45 am#4908485
I've been working on my own pack very slowly over the past year and originally was going to use a raspberry pi zero and python to put together the electronics kit. I finally decided against that method primarily due to the boot time of the raspberry pi and also it was taking more pins to control the type of LEDs I had selected (sparkfun luminati's which use 4 pins instead of the adafruit 3 pin). I came across this thread and decided to give the Arduino a go.
I was able to get it all running pretty smoothly with short connections like you had when you were testing it out on breadboards. And even though I saw that you had trouble when you ran a long cable between the arduino and the soundboard I still decided to give it a shot to see what happened.
I was able to duplicate your issue exactly, using a long (5 - 6 ft) 4 wire cable for LEDs instead of cat5 or anything like that (i.e. no twisted pairs or any sort of shielded cable). I noticed that the response data was consistent and after a little reading realized that it was actually the output of the soundboard when it resets and comes back online. Because of that, I decided that the TX/RX lines were actually functioning and decided to instead focus on the RST pin since I believed that the soundboard was being reset during transmission. I found a post (https://forums.adafruit.com/viewtopic.php?f=22&t=123853) where it was recommended to use a "stronger" pull-up resistor on the RST pin. Well with a little bit of trial and error, and not connecting it to 3.3 V but rather the main 5 V rail, I found that a 220 ohm resistor did the trick. A 1k or higher didn't work.
Now I don't exactly know/remember why this works. I believe on the high low swing of the TX/RX signal the induced current is swinging negative relative to ground pulling down the voltage on the RST pin and causing a reboot. The additional pullup resistor keeps the voltage high until the RST pin gets set to an actual output low. On that note, I tried a small 1 uF electrolytic cap to ground on the RST pin without the resistor and it worked as well. I would argue that it is probably the safer of the two options for the soundboard since we're not applying something closer to 5 V on a 3.3 V pin. I didn't do anything to the ACT pin but it may need the same treatment.
Anywho, also wanted to thank you for all your hard work Count!
CountDeMonet wrote: ↑October 9th, 2017, 3:58 pm The issue is the serial communication with the sound board. If I use a 5 inch cable I am able to list the tracks using the example from adafruit. If I hook it up with the 5 foot cat5 cable I get garbage back when I try to list the tracks. I've tried 2 different nanos from different manufacturers to make sure there isn't an issue there.Hello, first time posting here. I don't know if you ever resolved this on your own but I figured I'd share what I found.Code: Select allI'm going to try a larger cable to see if it's just the cat 5 it doesn't like. I think I'm going to have to scrap this processor board tho and start over with the arduino in the pack. First thing I'm going to test is the latency on the switches...Found 4 Files 0 name: ⸮⸮⸮ s 00020 size: 0 1 name: Adafruit F size: 0 2 name: FAT 00007F size: 0 3 name: Files 00020 size: 0
Moving the arduino to the pack doesn't change the connection diagrams. It just changes how I do the boards which is always a fun challenge. Glad I didn't get boards made by oshpark.
I've been working on my own pack very slowly over the past year and originally was going to use a raspberry pi zero and python to put together the electronics kit. I finally decided against that method primarily due to the boot time of the raspberry pi and also it was taking more pins to control the type of LEDs I had selected (sparkfun luminati's which use 4 pins instead of the adafruit 3 pin). I came across this thread and decided to give the Arduino a go.
I was able to get it all running pretty smoothly with short connections like you had when you were testing it out on breadboards. And even though I saw that you had trouble when you ran a long cable between the arduino and the soundboard I still decided to give it a shot to see what happened.
I was able to duplicate your issue exactly, using a long (5 - 6 ft) 4 wire cable for LEDs instead of cat5 or anything like that (i.e. no twisted pairs or any sort of shielded cable). I noticed that the response data was consistent and after a little reading realized that it was actually the output of the soundboard when it resets and comes back online. Because of that, I decided that the TX/RX lines were actually functioning and decided to instead focus on the RST pin since I believed that the soundboard was being reset during transmission. I found a post (https://forums.adafruit.com/viewtopic.php?f=22&t=123853) where it was recommended to use a "stronger" pull-up resistor on the RST pin. Well with a little bit of trial and error, and not connecting it to 3.3 V but rather the main 5 V rail, I found that a 220 ohm resistor did the trick. A 1k or higher didn't work.
Now I don't exactly know/remember why this works. I believe on the high low swing of the TX/RX signal the induced current is swinging negative relative to ground pulling down the voltage on the RST pin and causing a reboot. The additional pullup resistor keeps the voltage high until the RST pin gets set to an actual output low. On that note, I tried a small 1 uF electrolytic cap to ground on the RST pin without the resistor and it worked as well. I would argue that it is probably the safer of the two options for the soundboard since we're not applying something closer to 5 V on a 3.3 V pin. I didn't do anything to the ACT pin but it may need the same treatment.
Anywho, also wanted to thank you for all your hard work Count!