I am relatively inexperienced when it comes to circuitry and electronics. However I am trying to create a simple device in which with a press of a button, the device turns on and calls a specific number.

My parts list - - Fona 32u4 - Logic Level N channel Mosfet - 10k ohm resistor - 220 ohm resistor - push button - LED - Wires and such - 3.7 v 3000 mAH battery

For Prototyping purposes, I am currently designing this on a breadboard -

enter image description here

Here is the circuitry -

enter image description here

Whenever I run this program -

#include "Adafruit_FONA.h"

#define FONA_RX 9   
#define FONA_TX 8
#define FONA_RST 4
#define FONA_RI 7

#define number "###"

int LED = 11;

#include <SoftwareSerial.h>
SoftwareSerial fonaSS = SoftwareSerial(FONA_TX, FONA_RX);
SoftwareSerial *fonaSerial = &fonaSS;

Adafruit_FONA fona = Adafruit_FONA(FONA_RST);

uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout = 0);
uint8_t type;

void setup() {


pinMode(12, OUTPUT);//This is the MOSFET gate
digitalWrite(12, HIGH);//Immediately activate the MOSFET gate
pinMode(13, OUTPUT);//This is the LED
pinMode(LED, OUTPUT);//This is the LED

if (! fona.begin(*fonaSerial)) {
while (1);

type = fona.type();
Serial.println(F("FONA is OK"));
Serial.print(F("Found "));
switch (type) {
case FONA800H:
  Serial.println(F("FONA 800H")); 

while (1) {

digitalWrite(LED, HIGH);       // turn the LED on
delay(100);                    // wait for a second
digitalWrite(LED, LOW);    // turn the LED off 

    uint8_t n = fona.getNetworkStatus();
    Serial.print(F("Network status "));
    Serial.print(F(": "));
    if (n == 0) Serial.println(F("Not registered"));
    if (n == 1) Serial.println(F("Registered (Online)"));
    if (n == 2) Serial.println(F("Not registered (searching)"));
    if (n == 3) Serial.println(F("Denied"));
    if (n == 4) Serial.println(F("Unknown"));
    if (n == 5) Serial.println(F("Registered roaming"));

    if (n == 1) break;

Serial.println ("Ready to call");


void loop(){

digitalWrite(13, HIGH);delay(50);digitalWrite(13, LOW);delay(50);


void callPhone() {

Serial.println("called the POPO");


It does not work due to a lack of voltage. The battery supplies 3.7 volts, but by the time the circuit is put in use, the chip is only being supplied 1.2 volts. As stated before, I am limited in knowledge. I ask someone to help me understand why the supplied voltage is so low and how to fix it.

I suspect it is the breadboards fault, perhaps the wires lower the voltage, or the mosfet. But I have no way of understanding.

  • 1
    \$\begingroup\$ Please draw a more complete schematic of your circuit. Are you sure the battery is charged? \$\endgroup\$ – Hearth Nov 22 '18 at 17:58

This is not something that should be tested on a breadboard.

The GSM module SIM800 requires peak currents up to 2A.

At least the battery must be connected as close as possible to the FONA power supply pins.

I doubt that the breadboard pins are rated at 2A and you have six breadboard connections between the battery and the FONA supply, the voltage losses are to high.

Figure out something to get the battery closer to FONA power pins


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.