SIM808 autonomous switch on?

Hi I'm using the arduino UNO with the SIM808 and I have a question about the necessity to press the start button on the SIM808 for it to be switched on :

Usually for any module, when there is a power cut or when you just switch it off, it will still be able to run again when the power's back.
But with the SIM808 when this happens, we can see that the power is on (the power LED lights up) but I have to press the start button everytime for it to run again..
Is there a way to avoid this action, with a different way to connect it ?

Any help please?

How is it connected now ?

Your post was MOVED to its current location as it is more suitable.

Could you also take a few moments to Learn How To Use The Forum.

Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum in the future.

with an arduino so TX to SCL, RX to SDA, VMCV to 5V, AND GND to GND PINS ( SIM808/UNO) , the power is supplied via the arduino card.

Please post a wiring diagram.
How is the "arduino card" powered?


The PINS 11 and 10 can be switched to SCL and SDA one's, it works the same in my case.

SCL and SDA are I2C signals. Connect them to those pins on the UNO board, not pin 9 and 10. SCL and SDA is available near the USB connector. You tell about Rx/Tx... That's a different business than I2C.
Please autoformat the code and post it using the code tag symbol, </>, in this window.

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

#define PIN_TX SDA
#define PIN_RX SCL
SoftwareSerial mySerial(PIN_TX, PIN_RX);
DFRobot_SIM808 sim808(&mySerial);

#define PHONE_NUMBER "+33672780465"
#define MESSAGE_LENGTH 160
char message[MESSAGE_LENGTH];
int messageIndex = 0;  
char phone[16];
char datetime[24];

//pour l'heure
unsigned long millis();
unsigned long seconde = 0 ;
unsigned long  minute = 0 ;
unsigned long  heure = 0 ;
unsigned long jour = 0 ;
unsigned long temps = 0 ;

//pour éviter les rolls overs
static unsigned long nbRollover = 0;
static unsigned long previousMillis = 0;
unsigned long currentMillis = millis();

//pour la réception du message à la retranscription en heure de départ
String msg;
String clock_heure;
String clock_minute;
unsigned long  minute0 = 0 ;
unsigned long  heure0 = 0 ;

void setup() {
  // put your setup code here, to run once:

  while(!sim808.init()) {                    
    Serial.print("Sim808 init error\r\n");
  Serial.println("Init Success, please send me an SMS");

void loop() {
  // put your main code here, to run repeatedly:
  //attente reception d'heure de depart
  messageIndex = sim808.isSMSunread();
  //Serial.print("Nombre de SMS non lus : ");
  if (messageIndex > 0) {            
    //initialisation du temps?
    sim808.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime); 
    msg = message;
    //recherche de l'heure dans le message
    clock_heure = msg.substring(0),msg.substring(1);
    clock_minute = msg.substring(3),msg.substring(4);
    //conversion de string à int
    heure0 = clock_heure.toInt();
    minute0 = clock_minute.toInt();
    Serial.print("heure de départ: ");

  if (millis() >= 1000 + temps) {
    seconde ++ ;
    temps = millis() ;
  if (seconde == 60 ) {
    seconde = 0 ;
    minute ++ ;
    Serial.println("heure est de:");
    heure = heure + heure0 ;
    minute = minute + minute0 ;
  if (minute == 60 ) {
    minute = 0 ;
    heure ++ ;
  if (heure == 24 ) {
    heure == 0;
    jour ++ ;

  //nbr de rollovers
  if (currentMillis < previousMillis) {
  previousMillis = currentMillis;
  /*//passer de valeur de 32bits a 64bits
  unsigned long long finalMicros = nbRollover;
  finalMicros <<= 32;
  finalMicros +=  currentMicros;
  return finalMicros;*/

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.