sábado, 14 de junho de 2008

Medindo o nível de qualidade do sinal em Modems GSM

Fala gente,

O trabalho está estressante então resolvi parar um pouco e colocar mais uma contribuição aqui para meus amigos tecnomaniacos.

Hoje vamos falar um pouco sobre qualidade de sinal de Modems GSM.
Todos sabemos que para ocorrer uma transmissão bem sucessida é necessário estar dentro de um HotSpot adequando para o mesmo. O módulo deve ser capaz de transmitir dados para ERB local com uma intensidade boa para que possa ter um troughput capaz de estabelecer uma conexão de dados consistente.

O módulo que apresento é o Siemens MC35i, já trabalho há algum tempo com eles e apesar de ser um módulo dual band, sem pilha tcp/ip, funciona muito bem para praticamente 90% das aplicações de Campo que eu necessitei até hoje.

Bom vamos lá.

O comando para se descobrir qual a Qualidade do Sinal é o AT+CSQ.

O resultado é um número de 0 a 31 ou 99 no primeiro campo. Este número corresponde a tabela abaixo:

0 -113 dBm or less
1 111 dBm
2 - 30 -109 to -53 dBm
31 -51 dBm or more
99 Unknown

O nível mais forte de sinal é -51dBm e o mais fraco é -113dBm... caso o retorno seja 99 é porque ele não conseguiu averiguar o nível de sinal.

Olha um exemplo C#... dá pra usar já...


========================== recorte aqui =========================
using System;
using System.Collections.Generic;
using System.Text;

namespace XXX {
public class ModemConfig {
// ------- Response Setters
//0 -113 dBm or less
//1 111 dBm
//2 - 30 -109 to -53 dBm
//31 -51 dBm or more
//99 Unknown
public void SetCSQ(string csq) {
string dbFactor = csq.Substring(0, csq.IndexOf(','));
dbFactor = dbFactor.Substring(csq.IndexOf(' '));
int dbiFactor = int.Parse(dbFactor);
if (dbiFactor == 0 || dbiFactor == 99) {
signalStrenght = 0;
antennaDbi = -113;
} else if (dbiFactor == 1) {
signalStrenght = 1;
antennaDbi = -111;
} else if (dbiFactor == 31) {
signalStrenght = 100;
antennaDbi = -51;
} else {
int fullDbiFactor = (56 * dbiFactor) / 28;
antennaDbi = -109 + fullDbiFactor;
signalStrenght = (fullDbiFactor * 100) / 56;
}
}

// ------- Variáveis interpretadas
private int signalStrenght;
private int antennaDbi;

public int SignalStrenght {
get { return signalStrenght; }
}

public int AntennaDbi {
get { return antennaDbi; }
}
}
}
========================== recorte aqui =========================

Se você quiser poderá fazer o download diretamente do arquivo...

http://rapidshare.com/files/122415261/ModemConfig.cs.html

Saber a qualidade do sinal é muito importante, pois assim pode-se configurar a sincronização de dados somente quando a condição mínima de qualidade for alcançada.

Um comentário:

  1. conheço pouca gente que projeta com renesas mas acredito no potencial deste chip que tem muitas qualidades, adorei o artigo sobre gsm, continue não pare, precisamos que alguém começe para que outro se sintam mais ousados como você,muito obrigado pelo artigo !

    ResponderExcluir