DynamicDevices / mitems

My Items - LoRa based inventory control system
1 stars 0 forks source link

Can we use multiple pins #5

Open goatchurchprime opened 5 years ago

goatchurchprime commented 5 years ago

Currently the switch is connected to just GPIO13.

I now think it's worth making a hopper with multiple switches on a column with one device at bottom.

What other pins could we program in at the same time? Could each of them trigger a wakeup, and then the reading would send the states of all of them.

What is the consequence of leaving one of them floating? (Or does it have to detect this during configuration and remember it's not attached.)

ajlennon commented 5 years ago

I now think it's worth making a hopper with multiple switches on a column with one device at bottom.

Sounds good.

There is a reasonable amount of confusion around the pinouts for TTGO devices. There seem to be multiple manufacturers and multiple variants. Attempts are made to keep the pin-out compatible but I've read of pin-out diagram errors and changes.

See here for commentary on incorrect pin-outs.

Pin-outs, designs, software for the Heltec TTGO can be found here which I will take as the primary source for now.

image

ajlennon commented 5 years ago

There are a number of ways that the ESP32 can be woken from deep sleep.

The most applicable to our use-case is that GPIO pins which are connected through the RTC module can be used to wake the ESP32 from a deep sleep in which the RTC core is left enabled. (This is what we are currently doing for the single GPIO pin wakeup).

For this to work for multiple pins we thus need to ensure that other inputs are connected to GPIOs which are linked through the RTC core. There are some notes for the ESP32 DevKit v1 board here

image

You can see that we are using GPIO13 which is RTC GPIO14. We need to ensure that other GPIOxx pins used are available as RTC GPIO yy pins.

ajlennon commented 5 years ago

What is the consequence of leaving one of them floating? (Or does it have to detect this during configuration and remember it's not attached.)

My understanding is that this is a "bad thing"(tm) and shouldn't be done

https://www.mouser.com/blog/dont-leave-your-pins-floating

ajlennon commented 5 years ago

What other pins could we program in at the same time? Could each of them trigger a wakeup, and then the reading would send the states of all of them.

I believe we have a problem here. We can trigger one of the bank of pin inputs going high or one of the bank of inputs going low, but not both. So for this I think atm that all switches would have to be in the same state. This could perhaps be solved mechanically by a switch that always returns to "off" after actuation?

See: https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/sleep_modes.html#external-wakeup-ext1

ajlennon commented 5 years ago

We could perhaps look at ULP wakeups?