knowit / snappysense

3 stars 1 forks source link

Expose a second I2C bus to allow concurrent slave mode? #82

Open lars-t-hansen opened 1 year ago

lars-t-hansen commented 1 year ago

This is apropos issue #55, in which we want to have a config mode that does not need a web server or WiFi, this is useful for LoRa and other radio types, especially, since we don't want to pay 700KB of code for the web stack if we're not using it.

I have a prototype configuration mode working where the device, after a long button press to trigger config mode, comes up in I2C slave mode on a secondary I2C bus (pins 14 and 32, directly above the other two I2C pins, are convenient). I can then pump data to the device from my Raspberry Pi using a simple program.

For this to work smoothly, we may want to expose three lines on the SnappySense for the two pins and GND, ideally as a three-prong male Dupont connector so that a single triple-wire female-female band of Dupont wires can be plugged onto the connector and similarly to three nearly adjacent pins on the RPi (or other system). This new connector does not have to be user-accessible, I think, because this is only for factory config. It could be on the bottom side of the PCB, near the WiFi antenna and the existing PIR plug.

(Another alternative which is a little more annoying to use but also a little more secure, is to have a separate configuration station for the MCU, based on a breadboard / RPi hat, like the breadboard setup I have now to experiment with this. See picture. In that case, we don't need to modify the PCB. We should have a discussion on what the most reasonable arrangement is.)

PXL_20230328_080019412

lars-t-hansen commented 1 year ago

Maybe a STEMMA QT solution is the thing here, if we want a connector on the snappysense device. There's a question about what to do about the power input. There are options.