MMA8451 clone accelerometer query #49
-
Hey there :) I've ordered an actual MMA8451 breakout board, but I've also got a clone as seen in the eBay link: https://www.ebay.co.uk/itm/235972939165 I tried cabling the clone up to a Pico in the same way you would the actual MMA8451, and it didn't work. I'm new to the whole Pico thing but if someone can tell me why the clone didn't work that would help my curiosity while I wait for the real board to come in. Here is the boot and error log from my previous attempts: 2025/08/06 18:08:19 Info: Flash JEDEC ID recognized as Winbond W25Q16JV-IQ/JQ, capacity 2097152 bytes Thanks for checking my query out, best wishes to you :) |
Beta Was this translation helpful? Give feedback.
Replies: 9 comments 11 replies
-
If you've already double-checked the wiring, and you're sure that everything's right, you probably just have a bad part. Do you have any other equipment that can test an I2C device independently, such as a Bus Pirate board? That would let check for sure if it's the accelerometer chip that's the problem. |
Beta Was this translation helpful? Give feedback.
-
Hello again! I received the actual accelerometer today. I soldered the headers and connected it up- still not working but at least the log says that the pico recognizes the board. After booting up, the nudge tab doesn't show any readings whatsoever. I have tested the gpio pins on the pico, they all work. 2025/08/08 12:56:30 Info: Flash JEDEC ID recognized as Winbond W25Q16JV-IQ/JQ, capacity 2097152 bytes I've attached my config json and a picture of my wiring just in case. It's possible that my soldering might be bad but hey ... I have a spare MMA8451Q just in case. Thank you for your support with this, the project (a briefcase digital pinball) will be massively improved with accelerometer nudge :) |
Beta Was this translation helpful? Give feedback.
-
The log looks good as far as the I2C connection goes. Try firing up a console connection (with a terminal program like PuTTY, connecting to the COM port shown on the overview page of the Config Tool) and type |
Beta Was this translation helpful? Give feedback.
-
By the way, regarding the "clone", I didn't notice that that doesn't actually claim to be an MMA8451Q, but rather 8452, so that might explain the problem. The name sounds so close but it could be a completely different register set. I'd never expect any I2C device to work with a given piece of software unless it's exactly the same device the software is designed for - this is one of those cases where close isn't usually good enough. |
Beta Was this translation helpful? Give feedback.
-
The soldering is probably fine - PCB traces are usually pretty robust. One thing you might try is removing the You can also try manually reading the XYZ registers, from the console:
That'll read the six bytes of the XYZ registers, so we can see if those are reading back as all zeroes every time. Normally those will be fluctuating as the device picks up small vibrations. |
Beta Was this translation helpful? Give feedback.
-
Did you just delete the |
Beta Was this translation helpful? Give feedback.
-
Oops, I took a quick look at the |
Beta Was this translation helpful? Give feedback.
-
From your ad hoc register reading, it does look like the chip is producing readings, so I continue to suspect the INT1 connection. Double-check that you have the breadboard wire connected to the INT1 pin (not INT2). And in any case, the poll-mode test (using the firmware update) will also help test that proposition. |
Beta Was this translation helpful? Give feedback.
-
Good catch on GP0! I don't know what would be causing that noise problem either. It might be worth re-flowing the solder on the Pico header pin at GP0, in case it's a bad solder joint. (Just hit it with the soldering iron long enough to melt the solder. You can also add a little bit more solder if it looks too thin there.) It's also possible that the breadboard or the jumper wire is flaky at that location - those little pre-built dupont wires sometimes have loose crimps at one end or the other, so jiggling them can change the behavior. It can be maddeningly difficult to track down flaky connections like that, since just touching the setup can flip it between working and non-working, or it can just change seemingly spontaneously, because of ambient vibration. If you suspect something like that you can always swap the wire for a new one. |
Beta Was this translation helpful? Give feedback.
OK I think I figured out the problem, I'm getting readings now :)
I changed the interrupt from GPIO 0 to GPIO 1. I did this because I noticed the GPIO 0 was making a signal in the Buttons tab, even when nothing was connected to it. (see below)
I also pushed down on the pins in the breadboard , not sure if that helped.
I think this is resolved, still not sure why GPIO 0 is triggering but I can look into that.
Thank you for your help with this!