Blog

  • Conectando o SIM7600G ao Arduino Mega

    Conectando o SIM7600G ao Arduino Mega

    May 30, 2025

    Notas de bancada sobre a ligação do modem LTE SIM7600G ao Arduino Mega, com pinagem, sketch C++ completo e lista de comandos AT essenciais.

    Por que usar o SIM7600?

    • 4G LTE Cat-4: até 150 Mb/s de download e 50 Mb/s de upload.
    • GPS/GLONASS embutido — rastreamento sem módulo extra.
    • Interface rica: UART, USB 2.0, GPIOs, áudio analógico.
    • Controlado 100% por AT Commands. Fácil de scriptar.

    Pinagem do conector

    Silk Descrição
    0 S SLEEP
    1 e 6 G GND
    2 V VCC
    3 K PWRKEY
    4 T TXD
    5 R RXD

    Fiação rápida com o Arduino Mega

    Placa SIM7600G Arduino Mega
    V (5 V) 5 V externo (2 A)
    G (GND) GND
    T (TXD) RX1 (pino 19)
    R (RXD) TX1 (pino 18)

    Sketch de teste

    /**
     * main.cpp – Console AT para SIM7600G no Arduino Mega 2560
     *
     * Fiação usada:
     *   SIM7600 TXD  → Mega 19 (RX1)
     *   SIM7600 RXD  → Mega 18 (TX1)  (via divisor ou level-shifter → 3 V3!)
     *   SIM7600 GND  → Mega GND
     *   SIM7600 VCC  → Fonte 5 V / ≥2 A (NÃO pegue do 5 V USB do Mega)
     *
     * Abra o Serial Monitor em 115 200 baud (Both NL & CR).
     * Tudo que você digitar vai pro modem e toda resposta volta pra tela.
     */
    
    #include 
    
    constexpr uint32_t USB_BAUD   = 115200;   // PC <--> Mega
    constexpr uint32_t MODEM_BAUD = 115200;   // Mega <--> SIM7600
    
    void setup()
    {
        Serial.begin(USB_BAUD);
        while (!Serial) { /* espera o monitor abrir */ }
    
        Serial1.begin(MODEM_BAUD);            // UART-1: pinos 19 (RX) / 18 (TX)
    
        Serial.println(F("
    === SIM7600G AT Console ==="));
        Serial.println(F("Digite comandos AT e pressione "));
        Serial.println(F("Exemplo: AT+CSQ"));
        Serial.println();
    }
    
    void loop()
    {
        // PC --> Modem
        while (Serial.available())
            Serial1.write(Serial.read());
    
        // Modem --> PC
        while (Serial1.available())
            Serial.write(Serial1.read());
    }
    
    /* Abra o Monitor Serial a 115 200 baud. Digite AT e receba OK. */
    

    Comandos AT para começar

    Comando O que faz
    AT Eco de vida – deve responder OK
    ATI Identidade do modem
    AT+CPIN? Confere se o SIM pediu PIN
    AT+CSQ Qualidade do sinal (0-31)
    AT+CREG? Registro na rede GSM/LTE
    AT+CGATT? Anexado ao GPRS/LTE?
    AT+CGDCONT=1,”IP”,”internet” Define APN

    Referências

    Seu navegador não suportou embed de PDF. Clique aqui para abrir.

  • Arduino Mega 2560 + SIM7600G: Nó IoT Celular com Telemetria em JSON

    Este artigo mostra como utilizar as placas de desenvolvimento Arduino Mega 2560 e um modem SIM7600G em um nó IoT celular capaz de coletar dados de rede, GPS e status do SIM, empacotá-los em JSON, que futuramente enviará para qualquer back-end.

    Por que um Mega 2560 + SIM7600G?

    • SRAM abundante (8 kB) — gera JSON, mantém buffers e ainda sobra para lógica de aplicação; um UNO ficaria no limite.
    • UART dedicada (Serial1) — o Mega oferece portas seriais extras, isolando o tráfego do modem do console USB.
    • SIM7600G — cobre 2G/3G/4G e GNSS no mesmo chip, simplificando o hardware.

    A pinagem utilizada para este projeto está explicada em outro post.

    Estrutura do projeto

    arduino-mobile-sensor/
    ├─ src/                // sketch principal
    ├─ include/            // headers próprios
    ├─ lib/                // bibliotecas internas
    └─ .pio/               // cache do PlatformIO
    

    Código-fonte e arquivos do projeto: https://gitlab.com/mfs.eng.br/hardware-quirks/arduino-sim7600-telemetry

    Anatomia do código em C++

    Inclusões mínimas

    #include <Arduino.h>        // HAL AVR
    #include <avr/pgmspace.h>   // PROGMEM
    #include <ArduinoJson.h>    // Única lib externa
    

    Definições constantes

    constexpr uint32_t USB_BAUD   = 115200;
    constexpr uint32_t MODEM_BAUD = 115200;
    constexpr uint16_t TIMEOUT_MS = 1500;
    #define OUTPUTDEBUG 0
    
    /* ------------ buffer de recepção ----------------------------- */
    static char   respBuf[160];
    static size_t respLen = 0;
    
    • constexpr garante avaliação em compile-time;
    • flags #define ativam logs sem custo quando desligadas;
    • buffers globais (char respBuf[160]) vivem em BSS, evitando uso de heap.

    Strings AT em Flash

    /* ------------ comandos em flash ------------------------------ */
    const char CMD_CGSN[]    PROGMEM = "AT+CGSN";
    const char CMD_CIMI[]    PROGMEM = "AT+CIMI";
    const char CMD_CGMM[]    PROGMEM = "AT+CGMM";
    const char CMD_CSPN[]    PROGMEM = "AT+CSPN?";
    const char CMD_CSQ[]     PROGMEM = "AT+CSQ";
    const char CMD_CREG[]    PROGMEM = "AT+CREG?";
    const char CMD_COPS[]    PROGMEM = "AT+COPS?";
    const char CMD_CGPADDR[] PROGMEM = "AT+CGPADDR";
    const char CMD_CGDCONT[] PROGMEM = "AT+CGDCONT?";
    const char AT_GPSINFO[]  PROGMEM = "AT+CGPSINFO";
    

    PROGMEM poupa SRAM; cada comando moraria no Flash.

    Compatibilidade Flash-print

    #ifndef FPSTR
      #define FPSTR(p) (reinterpret_cast<const __FlashStringHelper *>(p))
    #endif
    

    Isso permite que Serial.println() imprima strings guardadas em Flash.

    Máquina de leitura/escrita dos comandos AT (sendAT)

    Envio

    Serial1.println(cmd); // já inclui \r\n
    

    Coleta em bloco

    // Loop principal: fica ativo enquanto o tempo decorrido for menor que 'tout'
    while (millis() - t0 < tout)
    {
        // Loop de leitura: executa enquanto houver bytes no UART *e*
        // ainda houver espaço no buffer (deixa 1 byte livre para o '\0')
        while (Serial1.available() && respLen < sizeof(respBuf) - 1)
            // Lê um byte da porta Serial1 e armazena na posição atual do buffer,
            // depois incrementa 'respLen' para apontar para o próximo espaço livre
            respBuf[respLen++] = Serial1.read();
    
        // Coloca terminador nulo na posição atual, transformando respBuf
        // em uma string C válida (necessário para usar funções de <string.h>)
        respBuf[respLen] = '\0';
    
        // Verifica se a resposta já traz um "\nOK" ou "\nERROR"
        // — padrões que sinalizam fim de resposta AT.
        // Se encontrar, sai imediatamente do loop externo (timeout não é mais necessário)
        if (strstr(respBuf, "\nOK") || strstr(respBuf, "\nERROR"))
            break;
    }
    

    A função singleLineAT

    /* ---------- devolve primeira linha “útil” -------------------- */
    bool singleLineAT(const __FlashStringHelper *cmd, char *dst, size_t dstSz)
    {
      if (!sendAT(cmd)) return false;
    
      char *p = respBuf;
      while (*p) {
        /* pula CR/LF */
        while (*p == '\r' || *p == '\n') ++p;
        if (!*p) break;
        /* encontra fim da linha */
        char *q = p;
        while (*q && *q != '\r' && *q != '\n') ++q;
    
        /* copia linha para tmp */
        char line[128];
        size_t len = min((size_t)(q - p), sizeof line - 1);
        memcpy(line, p, len); line[len] = '\0';
    
        /* trim início */
        char *s = line;
        while (*s == ' ') ++s;
    
        /* descarta eco, OK, ERROR */
        if (!strncmp(s, "AT", 2) || !strcmp(s, "OK") || !strncmp(s, "ERROR", 5)) {
          p = q;
          continue;
        }
    
        /* achou payload */
        strncpy(dst, s, dstSz - 1);
        dst[dstSz - 1] = '\0';
        return true;
      }
      return false;
    }
    

    A rotina singleLineAT() encapsula todo o trabalho de disparar um comando AT e devolver exatamente a primeira linha útil da resposta, já limpa de ecos, quebras de linha, espaços extras e tokens de controle.

    • Disparo e verificação de sucesso: if (!sendAT(cmd)) return false; reaproveita sendAT() para enviar o comando e encher respBuf. Se ocorrer ERROR ou timeout, a função já devolve false.
    • Iterador p percorre o buffer bruto: char *p = respBuf; while (*p) { ... } varre o buffer até achar uma linha útil.
    • Pular quebras de linha: while (*p == '\r' || *p == '\n') ++p; garante que p sempre aponte para o primeiro caractere real da linha corrente.
    • Encontrar o fim da linha corrente: char *q = p; while (*q && *q != '\r' && *q != '\n') ++q; define o intervalo [p, q) da linha.
    • Copiar para buffer temporário usando memcpy() e limitando o tamanho para evitar overflow.
    • Copiar o payload ao destino com strncpy(dst, s, dstSz - 1); dst[dstSz - 1] = '\0';.
    • Se nenhuma linha útil aparecer, o laço termina naturalmente e a função devolve false.

    Boas práticas de embarcados — buffers fixos em vez de String

    Benefício Consequência no campo
    Zero fragmentação de heap Uptime sem resets imprevistos
    Tempo de execução determinístico Sem pausas aleatórias de realloc

    Funções de conversão e limpeza

    Função Propósito
    ddmmToDecimal() No GPS, converte coordenadas NMEA ddmm.mmm → graus decimais.
    csqToDbm() Converte 0-31/99 → dBm (-113 a -51).
    cregText() Código 0-5 → texto “registered (roaming)”.
    techText() 0/1/2/7/82G/3G/4G/CDMA.
    csvField() Extrai campo n de "CMD: a,b,c".
    stripQuotes() Remove aspas e espaços nas extremidades.

    Todas essas funções recebem ponteiros ou valores primitivos para otimização de memória.

    Roteiro

    Setup

    • Abre USB e UART do modem.
    • Habilita GPS automático (AT+CGPSAUTO=1).
    • Define exibição numérica de operadora (AT+COPS=3,2).

    Loop

    • Se chegar "INFO" pelo USB, dispara sendInfoJSON() e imprime o JSON.
    • Caso contrário, funciona como serial transparente PC ↔ modem.

    A função sendInfoJSON() executa a sequência dos comandos AT, converte métricas e monta o JSON final.

    Campos gerados e valor para telecom

    Campo Uso prático
    imei Inventário de ativos, id do dispositivo (modem).
    imsi Inventário de ativos, id do simcard.
    spn Nome comercial da operadora.
    csq / rssi Diagnóstico de antena e qualidade de cobertura.
    reg / ran Estado de registro e tecnologia (2G/3G/4G).
    ip / apn Validação de contexto de dados (PDP/Bearer).
    location Georreferenciamento.

    O JSON completo cabe em ~300 bytes, ideal para transporte via MQTT.

    Tricks and Tips

    • Reaproveitar respBuf — o mesmo buffer serve à detecção de fim de comando e à análise da resposta, evitando tráfego duplicado.
    • singleLineAT() universal — limpa eco e ruído em qualquer comando que retorne uma única linha.
    • Strings em Flash — elimina 300+ bytes de SRAM, algo crítico em AVR.

    Próximos passos sugeridos

    • Publicar via MQTT/TLS.
    • Gerenciar energia — desligar GPS (AT+CGPS=0) fora das janelas de leitura.
    • Implementar FOTA — update de firmware remoto direto no módulo.

    Conclusão

    Esse é o primeiro passo: entender o diálogo “AT” e convertê-lo em dados de negócio. No próximo artigo, veremos como transmitir essa telemetria de forma segura e escalável para a nuvem.

  • A Conectividade como Habilitadora para os Negócios de IoT

    A Conectividade como Habilitadora para os Negócios de IoT

    A Conectividade como Habilitadora para os Negócios de IoT

    Recentemente, tive a honra de participar de um bate-papo muito enriquecedor no podcast IoT em Foco, promovido pelo canal Tudo Sobre IoT, durante a 1ª edição do IoT Solutions Congress Brasil (a versão brasileira do renomado evento de Barcelona).

    Na entrevista, conduzida por Dhiego Frances, discutimos profundamente como a conectividade é o verdadeiro motor por trás da revolução da Internet das Coisas (IoT) e como a Algar Telecom tem atuado para transformar esse cenário no Brasil.

    Gosto de pensar que, se a terceira revolução industrial foi sobre colocar computadores nas máquinas, a quarta revolução é sobre fazê-las conversarem entre si. Não existe Indústria 4.0 sem IoT, e definitivamente não existe IoT sem conectividade.


    Abordagem Agnóstica e Multiconectividade

    No mercado de IoT, não existe uma "bala de prata". Dependendo do caso de uso — seja conectando o centro de São Paulo ou áreas remotas no agronegócio —, a tecnologia ideal pode variar. É por isso que destacamos a importância de um portfólio completo que engloba 2G, 3G, 4G, 5G, além das redes LPWAN, como LoRaWAN e NB-IoT.

    O Desafio da Gestão de Dispositivos

    Conectar é apenas o primeiro passo. O verdadeiro diferencial para empresas que gerenciam milhares ou milhões de dispositivos (SIM cards) é ter uma plataforma de gestão centralizada, democrática e que não prenda o cliente a um único fornecedor.

    Redes Privativas e o Poder do 5G

    Discutimos como o futuro da conectividade passa pela criação de redes privativas. Elas são fundamentais para casos de uso que exigem baixíssima latência e alta velocidade, viabilizando tecnologias como realidade aumentada, vídeo analytics na indústria e gêmeos digitais.

    A Evolução para o Everything as a Service

    A conectividade pura já se tornou uma commodity. O futuro das operadoras e empresas de Telecom é entregar valor agregado, oferecendo o processamento de dados, o armazenamento em nuvem e a integração com inteligência artificial como um serviço completo.


    Foi um prazer compartilhar um pouco dos meus anos de experiência em redes móveis e arquitetura de plataformas IoT. Acredito fortemente que o ecossistema e a inovação aberta são os grandes viabilizadores dos negócios do futuro.

    Convido você a assistir à entrevista completa e mergulhar com a gente nessa discussão!

    📺 Assista ao bate-papo na íntegra no YouTube

  • Web Summit Lisboa 2023: Onde o Futuro se Encontra com o Presente

    Web Summit Lisboa 2023: Onde o Futuro se Encontra com o Presente

    Web Summit Lisboa 2023: Onde o Futuro se Encontra com o Presente

    Entre os dias 13 e 16 de novembro de 2023, Lisboa recebeu a edição mais emblemática do Web Summit. Mais de 77 mil pessoas de todo o mundo se reuniram na MEO Arena e no Lisbon Exhibition & Congress Centre para discutir o que está por vir na tecnologia, nos negócios e na sociedade.

    Participei como parte de uma missão técnica da Algar Telecom, uma oportunidade única de absorver tendências globais e trazer insights estratégicos para o ecossistema brasileiro de IoT e telecomunicações.


    Inteligência Artificial: O Tema Central

    A IA dominou absolutamente todas as conversas. Mas o que me chamou atenção não foi o hype — foi a maturidade com que o assunto foi tratado:

    • Da Personalização para a Antecipação: O uso de IA migrou de recomendar conteúdo para antecipar necessidades. Empresas já não querem só entender o que o cliente fez — querem saber o que ele vai fazer.
    • Regulação Global como Imperativo: Não houve consenso, mas uma certeza — a regulação da IA precisa ser global. Qualquer fragmentação cria desequilíbrio competitivo. Para termos de comparação, os EUA vão investir em IA aproximadamente o mesmo que investem em Defesa.
    • IA como Ferramenta, não como Substituição: A frase que mais ouvi: “A IA não vai substituir pessoas. Pessoas usando IA vão substituir pessoas que não usam.” É mais uma ferramenta na caixa — o foco deve estar em usá-la para trabalhar mais rápido e melhor.

    Startups que Marcaram

    O ecossistema de startups apresentou soluções que vão muito além do óbvio:

    • Inspira — Legaltech brasileira, vencedora do Pitch Competition 2023, usando IA para conteúdo jurídico.
    • Buddieapp — Plataforma de relacionamento para idosos e cuidadores, de Israel.
    • HIT — Startup espanhola usando IA para detectar fraude em pagamentos.
    • Luckie Tech — Portuguesa desenvolvendo jogos de azar baseados em blockchain.

    Os nichos mais quentes? Social commerce direto do TikTok e Instagram, redes sociais para GenZ (anonimato e micro-comunidades), créditos de carbono, opinião médica via IA e dicas de saúde baseadas em DNA.


    Insights de Negócio

    Alguns aprendizados que levei para a prática:

    • Clientes querem solução, não produto. O mix entre startups e grandes empresas tem alto valor agregado quando resolve um problema real.
    • “Nenhum negócio deve ser perdido.” Se a solução não existe, crie.
    • Escalabilidade é essencial. Se não escala, não tem valor percebido.
    • Atenção ao pricing baseado em necessidades reais — não no que o mercado diz que custa.
    • Muitas empresas internacionais querem entrar no Brasil, mas têm medo da complexidade tributária e jurídica. Isso é barreira e oportunidade ao mesmo tempo.
    • Conteúdo patrocinado por empresas pode viabilizar planos de Telecom gratuitos no futuro — o advertising-funded connectivity está chegando.
    • As maquininhas de cartão estão ameaçadas pelas carteiras digitais (Google Pay, Apple Pay, PayPal).

    A Energia de Lisboa

    O Web Summit não é só palestra. É corredor. É conversa no estande. É Night Summit em Lisboa. É onde um engenheiro de telecom de Uberlândia pode trocar ideia com um fundador de startup de Tel Aviv e sair com uma perspectiva totalmente nova.

    Os 77 mil participantes provam uma coisa: o futuro não espera. Ele se constrói em eventos como este — com diversidade, com debate intenso e com a coragem de olhar pra frente.

  • O que uma Operação IoT de Referência Precisa Ter

    Durante minha imersão em Portugal, visitei uma das maiores operações de IoT do mundo. O que vi confirmou minha perspectiva sobre o que significa construir um negócio de Internet das Coisas escalável e sustentável.

    Não vou citar a empresa, estou aqui para compartilhar o modelo.

    Pilar 1: Conectividade como Base, não Produto

    A operação de referência que visitei possui +165 milhões de dispositivos conectados e adiciona +2 milhões de novas conexões por mês.

    Uma SIM global, uma plataforma global. A conectividade precisa ser:

    • Multiconectada e agnóstica — 2G, 3G, 4G, 5G, LPWA (CAT-M, NB-IoT). Não existe “bala de prata”. O caso de uso define a tecnologia.
    • Global — mais de 570 redes liberadas em 182 países. O dispositivo nasce conectado e continua conectado, não importa onde vá.
    • Resiliente via eSIM — provisioning e troca de perfil de operadora de forma dinâmica. Um único chip que se adapta ao melhor sinal disponível.

    A conectividade pura já virou commodity. O diferencial está em como você a gerencia em escala.

    Pilar 2: Ecossistema, não Produto

    Aqui está o insight mais importante que tirei dessa visita:

    “Não existem Produtos IoT. Existem PROJETOS IoT.”

    A operação de referência não vende chips nem sensores. Ela orquestra um ecossistema com:

    • Plataforma centralizada com ferramentas de visualização e data lake, o cliente vê seus dados, não precisa construir infraestrutura pra isso.
    • Marketplace de soluções — dispositivos, sensores, chips, aplicações segmentadas, monitoramento. O parceiro especialista traz a solução vertical; a plataforma integra.
    • 7 centros de especialidade vertical — construções, logística, saúde, manufatura industrial, automotivo, seguros, agricultura. Cada centro com expertise profunda no segmento.
    • Redes Privativas (MPN) — para casos que exigem latência ultra-baixa e alta velocidade: realidade aumentada industrial, vídeo analytics, gêmeos digitais.

    Um insight valioso: os suportes N2/N3 são SEMPRE do parceiro. Quem conhece o cliente de perto é quem produz o hardware ou aplicação. A plataforma não compete com seus parceiros, ela os habilita.

    O parceiro é obrigado a assinar o projeto também. Isso mitiga risco de falência e troca de prestador de serviço. É gestão de parceiros, não apenas de contratos de clientes.


    Pilar 3: Transformação Digital, não Produto

    A operação de referência trabalha com abordagem de consultoria. Quando necessário, traz consultorias globais (tipo KPMG, EY) para diagnosticar o problema do cliente antes de propor a solução.

    O caminho é:

    1. Diagnosticar — entender o problema real do cliente
    2. Projetar — desenhar a solução com parceiros especializados
    3. Conectar — garantir a conectividade resiliente
    4. Gerenciar — plataforma centralizada com visibilidade total
    5. Escalar — procedimentos de field service para cada cidade que precisar

    De Tel.co para Tech.co

    A transição de operadora de telecom para empresa de tecnologia é o movimento estratégico mais importante do mercado hoje em dia.

    Quem ainda está vendendo chip e plano de dados como produto principal já está atrasado e perdendo uma fatia do mercado. O futuro é Everything as a Service — processamento de dados, armazenamento em nuvem, integração com inteligência artificial, tudo entregue como serviço completo.


    O que isso significa para o Brasil?

    O mercado brasileiro de IoT tem tudo para ser um dos maiores do mundo. Temos escala, temos demanda em agronegócio, cidades inteligentes, indústria 4.0 e logística. O que falta não é tecnologia — falta uma plataforma integradora que conecte os parceiros certos aos problemas certos.

    Essa é a missão.