2

I have a Model 3 Pi, with a SIM800 GSM card attached. The GSM card needs to be powered up by applying a High pulse to a pin pin on the card for 1.2 seconds. I attached one of the Pi Pins to this pin, and wrote some python, which configures the GPIO Pin as output, applies the pulse, then cleans up. (Which sets the GPIO Pin back to being an input Pin.)

All works fine. But when a call arrives to the GSM card, it immediately shuts down. After some research, I have discovered that this is because when the call arrives, a voltage appears on the Pi GPIO Pin. Even though it's configured as an input pin. I have tried GPIO19 and GPIO26.

This voltage is enough ( > 2.8V) to be interpreted as another pulse on the GSM Card power pin, and it activates Shutdown.

I have worked around this by keeping the GPIO Pin as an output Pin, where I can control the state.

So, my question is - Why would there be a voltage present on the GPIO Input Pin?

UPDATE: Curiouser and curiouser. Even with the GPIO pin set as output, and set low, I still see the GSM card reset when a call arrives. Looking at the circuit for the GSM card, the Power pin is supposed to have a 50K pulldown resistor attached, and its connected to the gate of a FET, which drives the POWER signal. I guess that may be missing, and some noise on the GPIO line is triggering the FET. But short of putting a scope on there, I can't say. I ended up using a relay (operated by the GPIO Pin) to connect the Power Pin to 3.3v for a few seconds, at Pi startup time.

  • Maybe the pin is floating, can you post a schematic? – Sim Son Mar 25 at 16:29
  • This is a standard Pi GPIO Pin, and I can measure this behaviour while it is set as an input Pin and not connected to anything. But here is a schematic for the Pi GPIO Pins: mosaic-industries.com/embedded-systems/microcontroller-projects/… – Greycon Mar 25 at 16:32
  • A clear photo may help. – joan Mar 25 at 16:33
  • Input pins are kind of floating as long as nothing (load, pullup,...) is connected. Is this voltage stable? – Sim Son Mar 25 at 16:33
  • No. As per my question, it is very low, but once the GSM Card receives a call, the voltage rises to a level which would be considered High for 3.3V Logic. – Greycon Mar 25 at 16:44
1

You haven't said which pin.

Pins 3 and 5 are used for I2C. They have hardwired 1k8 pull-up resistors to 3V3. They will read high if set as an input unless a low voltage is present on the pin.

Several other pins (those connected to GPIO 0-7) are connected to internal pull-ups to 3V3 at boot. They will also read high if set as an input unless a low voltage is present on the pin.

  • Hi Joan, I tried GPIO19 and GPIO26, which I am pretty certain are not being used by anything else. Original question updated. – Greycon Mar 25 at 16:16
1

First, there is going to be a voltage here. It won't be in some undefined state of unmeasurable voltage. So the question can only be why is the voltage high?

Second, there's generally no reason that the voltage measured at two high-impedance pins should be anything in particular. In general, any voltage number there could make sense. It also could be that it's time dependent, drifting around or maybe changing radically simply by measuring it.

So in your specific case, you had one pin set high on the Pi as an output connected to a pin on your GSM, which is presumably an input (i.e. high impedance). A very small, but non-zero, amount of current was flowing at that point, allowing your GSM module to detect the voltage level applied. When you set Pi's pin to also be an input (i.e. high impedance), you haven't forced the voltage to be anything specific. It might preferentially remain high (forever or for a while) for many reasons, for example but not necessarily: You trapped some charges in between the two pins. Since these pins are pretty sensitive, it probably doesn't take a lot of charges to make a measurable difference, and, since the pins are high impedance, it may take a "long" time for them to escape one way or the other. Another possibility is that the GSM pin is floating, which seems more likely in your case, given your description. That would also be allowed under a lot of specifications for a chip that wants a pin set at a certain level as a signal.

The right answer to your underlying problem is the one that you've found, namely that you should keep the Pi pin set as output and set it to the value that you need.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.