I'm currently working on a project, which consists of 512 sensors (aligned 16 in a column, 32 rows).
Each sensor can detect the presence of a person standing on a surface above it, the output of each sensor IC is high when nothing is detected and low when a person is detected. Multiple sensors may be triggered at the same time (several players).
What would be the best way to read these 512 readings with an Arduino, to then communicate any changes to a Raspberry Pi (which then consumes this data as part of a game running on it)?
I was considering using the MCP23017, each one would give 14 inputs (the most recent version of the MCP23017 lost the input capability on two of the 16 pins), but then I would need 37 MCP23017 plus alot of cable and a way to adress more than 4 MCP23017 through I2C.
Would something like a button matrix with diodes work, even though not working with buttons?
As mentioned before, several sensors might be triggered at the same time and I need to know exactly which ones.
However, this is only for a • AEC-Q100Qualified version, and according to the table on page 38 these are only available in the 28 pin SSOP package. These are identifiable by having a /SSVSO post fix (at the end) of the part number, and I suspect are more expensive.
You will normally be buying a standard DIL package, so there is no danger that you will accidentally get this version because these variants do not exist in DIL packages. So just ignore the possibility that you will ever get one of these.
Anyway luckily the I2C variant is not the one you want anyway, because of the distance between your sensors.
Thanks for this. But where did you see that only AEC-Q100 Qualified are affected. I only read that GPA7 and GPB7 are Output only for MCP23017. No limitation on the AEC-Q100, which yes was added to scope in this revision of the Datasheet, but has its own identifier as you correctly stated.
So you would recommend going for the SPI version and placing the MCP23S17 close to each row of the 16 sensors and having just 4 wires / row of sensors going wherever the Arduino is located, rather than placing the MCP23017 close to the Atmega (on a custom PCB with some maybe RJ45 Connectors) and having all 512 wires (still 64 RJ45 cables) going it?
At the end it would in fact be 3 lines (SCLK, MOSI, MISO) plus 32 SS Lines going the the Arduino, right? So well within the number of available pins on an Arduino Mega.
That is how you read a date sheet. It says right at the top of page 1 that this is a different device to the "normal" DIL part. As it will only apply to AEC-Q100Qualified version.
So this will not affect any device that is not a AEC-Q100Qualified version. Otherwise it would be very silly indeed. What probably happened is that in order to get a qualified version of this part some updating to the input circuitry had to be done to meet the extra requirements of a qualified device. This required a modification to the chip's silicon mask and that required loosing two inputs.
This sort of thing happens all the time in the professional world of electronics. That is why it has a new suffix to allow companies to specify exactly what they want.