Nano 33 IoT and Neopixel strip

Hi there,

I'm fairly new to electronics. I'm trying to control a Neopixel LED strip (SK6812) with an Arduino Nano 33 IoT. In addition to the datasheets of the parts I'm using, I have also used the following two diagrams as guidelines for my own connections. Unfortunately, I've managed to destroy two Nanos already and before I destroy another one, I thought it would be a good idea to ask some pros to check my wiring :slight_smile:

https://learn.adafruit.com/assets/64121

I have already successfully connected and tested the strip and my code using an Arduino Uno. No problems there. However, the Uno has no wireless connection and that's why I want to switch my working setup to a Nano 33 IoT. As far as I can tell, the only change I need to make is to add a 74AHCT125 converter to get the 3.3V data signal to 5V. I've attached my fritzing diagram.

I really don't know what I did wrong (twice!). I first just connected the 5V power supply to my Arduino. The Blink sketch seemed to work fine. The moment I completed the wiring and ran the Neopixel strand test sketch, the LEDs did not light up as expected. Only the first few LEDs lit up white instead of the entire strand cycling through the colors. Now my two Nanos are not recognized anymore when connected to a PC.

Is there an error in my setup? Is there a specific way to turn things on/off? Electronics seems like a lot of magic to me, there's often some weird physics phenomenon that lurks around the corner that I don't know about.

Help is much appreciated.

Please try this:

  1. Disconnect all external wiring from your Nano board.
  2. Connect your Nano board to your computer with the USB cable.

Do you now see the Nano board listed in the Tools > Port menu of the Arduino IDE?

I tried that. That's why I'm assuming the Nano is dead. It doesn't show up in the Arduino IDE, neither on Windows nor Linux.

I ordered three additional Nanos. I would like to avoid destroying them as well. The issue is, I don't know how they got damaged. I'm worried I'll kill another one when I try the same setup as outlined above.

With the board connected to the computer with the USB cable, p/lease try pressing and releasing the reset button on your board quickly twice.

After doing that, do you see the "L" LED pulsing?

Ha, yes! What exactly does pressing the button twice do? The Arduino seems to work again. It appears again in the port menu and I was able to successfully upload the blink sketch again.

Thank you. I guess the board is not damaged? But what happened?

The tricky thing about the boards with native USB functionality like your board is that the USB code that creates the CDC serial port is running on the same microcontroller as your sketch. This means your sketch code can break the USB code, or stop it from running. When that happens, it no longer presents a port.

This can be unexpected to those who previously mainly worked with the boards like Uno and Mega that have a dedicated USB chip that can never be affected by the sketch code.

The missing port makes it so you can't upload normally any more. However, the situation is really not so bad because there is an independent program called the bootloader in a separate section of memory from your sketch, and that program has its own USB CDC code. So even if the sketch is completely broken, you only need to activate the bootloader and you will get a port back and be able to upload. The bootloader can activated manually via the double reset technique you have learned.

My guess would be that there was something in your LED sketch that broke the USB code. You can test this by uploading that sketch again to see whether the problem comes back. Now that you know how to easily recover the board from that state, it is nothing to be afraid of and you can proceed to finding what it is in the sketch that is causing the problem.

Thank you very much for the info. That's very good to know.

Having done some more testing, I think I figured out what actually caused the issue. It's not the sketch. It's such a stupid mistake. I placed my setup on a breadboard for testing, not realizing there is only one way to place the 74AHCT125 level shifter on the board without short circuiting it - across the bridge in the middle. I just put it on one side of the board. :man_facepalming:

It'll take me a few days to actually test the proper setup (I need to desolder some stuff) but I'll definitely report back (and mark the thread as resolved) when I've got a successfully working project.

1 Like

So yeah, that was indeed the cause. If I don't ignorantly short-circuit the level shifter, the setup in my first post works perfectly :slight_smile:

Thanks again in0 for taking a look, helping me reset my two devices and for the useful information.

I'm glad to hear it is working now! Thanks for taking the time to post an update.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.