quarta-feira, 1 de abril de 2026

INTERFACE VOX PARA REPETIDORAS CONECTADAS NA INTERNET


OLÁ AMIGOS!

NESTE ARTIGO, COMPARTILHAREMOS UM DIAGRAMA DE UMA INTERFACE QUE VAI LIGADA EM UM COMPUTADOR COMUM, CONECTADO NA INTERNET, COM UM APLICATIVO DE CONVERSAS GRATUITO INSTALADO NO COMPUTADOR.
A INTERFACE DETECTA O AUDIO PROVENIENTE DO COMPUTADOR E CIONA O TX DO RADIO VHF, (VEJA OS VIDEOS)
JÁ NA RECEPÇÃO, O COMPUTADOR ESTA COM O APLICATIVO CONFIGURADO PARA SER ACIONADO PELO AUDIO POVENIENTE DA SAIDA DE ACESSORIOS DO RÁDIO E APLICADO A ENTRADA DA PLACA DE AUDIO DO COMPUTADOR. O AUDIO É DESACOPLADO ATRAVES DE CAPACIOTORES ELETROLITICOS PARA QUE NÃO HAJA LOOP DE TENSÕES ENTRE AS ENTRADAS E SAIDAS DE AUDIO DOS APARELHOS.

LOGO ABAIXO TEMOS O DIAGRAMA:



Se inscreva em nosso canal no YouTube: https://www.youtube.com/c/Licotelecom

quinta-feira, 12 de fevereiro de 2026

RIB DE PROGRAMAÇÃO MOTOROLA COM GERADOR DE AUDIO 1KHZ








Se inscreva em nosso canal no YouTube: https://www.youtube.com/c/Licotelecom

quarta-feira, 11 de fevereiro de 2026

FONTE DE BANCADA COM AJUSTE DE TENSÃO E CORRENTE 60V 20A







Se inscreva em nosso canal no YouTube: https://www.youtube.com/c/Licotelecom

sexta-feira, 6 de fevereiro de 2026

COMO FAZER UMA MAQUINA VIRTUAL PARA PROGRAMAR O MOTOROLA GM300

Pessoal, neste artigo vamos ensinar como fazer uma maquina virual para programar o rádio Motorola GM300.

Um detalhe muito importante, seu windows deve ser de 32 bits, versões do windows 64 bits não são comativeis com o DOS BOX.

Vamos deixar o link para voce baixar o software DOS BOX e os respectivos arquivos:


ATENÇÃO!!!!!!!!!!!!!!!!! PARA CRIAR A MAQUINA VIRTUAL (SÓ PRECISA FAZER ISSO NA PRIMEIRA VEZ QUE RODA O DOS BOX): BAIXE A PASTA GM300 EM SEU COMPUTADOR, DESCOMPACTE, DEPOIS COPIE A PASTA DESCOMPACTADA PARA O DISCO C: DO SEU COMPUTADOR, DEPOIS ABRA O DOS BOX, NA PRIMEIRA VEZ QUE FOR ABRIR, ELE VAI PEDIR PRA VOCE CRIAR A MAQUINA VIRTUAL QUE VAI EMULAR O SOFTWARE, ENTAO VOCE IRÁ DIGITAR OS COMANDOS A SEGUIR: 1° abra o DOS BOX 2° digite MOUNT C C:\gm300v.5 3³ aperte ENTER (neste ponto a maquina virtual é criada) 4° agora digite C: 5° aperte ENTER (neste ponto você inicia a maquina virtual) 6° agora digite gm300 7° aperte ENTER (neste ponto você fala pra maquina virtual qual pasta ela vai executar) A tela do software Motorola deverá abrir ====================================================================== SEMPRE QUE FOR ABRIR O SOFTWARE DO GM300 NO DOS BOX VOCE IRÁ FAZER O SEGUINTE PROCESSO: 1° abra o DOS BOX 2° digite C: 3° aperte ENTER 4° digite gm300: 5 aperte ENTER Pronto o software irá abrir.


Se inscreva em nosso canal no YouTube: https://www.youtube.com/Licotelecom

quarta-feira, 21 de janeiro de 2026

RIB USB MOTOROLA









Se inscreva em nosso canal no YouTube: https://www.youtube.com/c/Licotelecom

terça-feira, 6 de janeiro de 2026

ANEMOMETRO - TERMOMETRO COM ARDUINO

NESTE ARTIGO, APRESENTAMOS O PROJETO EM DUAS VERSÕES:

A PRIMEIRA VERSÃO DO ANEMOMETRO NÃO POSSUI O TERMOMETRO, APENAS MEDE A VELOCIDADE DO VENTO.


A SEGUNDA VERSÃO DO PROJETO, CONTA COM DOIS SENSORES DE TEMPERATURA, UM INTERNO E OUTRO EXTERNO, BEM COMO O SENSOR DE VELOCIDADE DO VENTO CONFORME O MODELO MAIS SIMPLES


LOGO ABAIXO TEMOS O CODIGO PARA VOCE INSTALAR EM SEU PROJETO:


 //CODIGO FONTE - PROJETO ANEMOMETRO E TERMOMETRO DIGITAL COM ARDUINO 
//JANEIRO 2025 =========================================
//LICOTELECOM ASSIS ===================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16,2);

const float pi = 3.14159265;     //Número de pi
int period = 5000;               //Tempo de medida(miliseconds)
int delaytime = 1000;            //Invervalo entre as amostras (miliseconds)
int radius = 105;                //Raio do anemometro(mm)
unsigned int Sample  = 0;        //Armazena o número de amostras
unsigned int counter = 0;        //Contador para o sensor
unsigned int RPM = 0;            //Rotações por minuto
float speedwind = 0;             //Velocidade do vento (m/s)
float windspeed = 0;             //Velocidade do vento (km/h)
float temperatura1 = 0;
const double beta1 = 3600.0;
const int pinTermistor1 = A2;
const double t01 = 273.0 + 25.0;
const double r01 = 10000.0;
const double rx1 = r01 * exp(-beta1/t01);
const double vcc1 = 5.0;
const int nAmostras1 = 5;
const double Ra = 10000.0;
float temperatura2 = 0;
const double beta2 = 3600.0;
const int pinTermistor2 = A3;
const double t02 = 273.0 + 25.0;
const double r02 = 10000.0;
const double rx2 = r02 * exp(-beta1/t02);
const double vcc2 = 5.0;
const int nAmostras2 = 5;
const double Rb = 10000.0;
int sensorTensaoDC = A0;
int amostragem =100;
float valorTensaoDC;
float mediaTotalTensaoDC = 0;
float valorFinalTensaoDC = 0;
float R1 = 10000.0;  
float R2 = 995.0;
float voltsporUnidade = 0.004887586;
const int Led3 = 3;
const int Led4 = 4;
const int Led5 = 5;
const int Led6 = 6;
const int Led7 = 7;

  // ------ Configurações Inicias ----------------------------
  void setup() {
  lcd.backlight();
  analogReference(DEFAULT);
  pinMode(sensorTensaoDC, INPUT);
  pinMode(Led3, OUTPUT);
  pinMode(Led4, OUTPUT);
  pinMode(Led5, OUTPUT);
  pinMode(Led6, OUTPUT);
  pinMode(Led7, OUTPUT);
  lcd.init();
  pinMode(1, INPUT); //configura pino 2 como entrada do pulso
  digitalWrite(1, HIGH);    //define pulso em pull-up
  Serial.begin(9600);       //inicia serial em 9600 

  lcd.setCursor(0,0);                               
  lcd.print("Anemometro");
  delay(500);
  lcd.setCursor(6,1);                               
  lcd.print("Termometro");
  delay(1000);
  lcd.clear(); 
  lcd.setCursor(0,0);                               
  lcd.print("Licotelecom");
  delay(500);
  lcd.setCursor(8,1);                               
  lcd.print("Assis SP");
  delay(1000);
  lcd.clear(); 
  lcd.setCursor(0,1);                               
  lcd.print("v.1.05  jan.2026");
  delay(500);
  lcd.clear(); 
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando.");
  delay(500);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando..");
  delay(500);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando...");
  delay(500);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando....");
  delay(500);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando.....");
  delay(1000);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando......");
  delay(500);
  lcd.setCursor(0,0);                              
  lcd.print ("Iniciando.......");
  delay(500);
  lcd.clear();
  }

  // ------ Loop Infinito -------------------------------------
  void loop() {

  //Calculo temperatura 1 -------------------------------------
  int soma1 = 0;
  for (int i = 0; i < nAmostras1; i++) {
  soma1 += analogRead(pinTermistor1);
  delay (10);
  }
  // Determina a resistência do termistor 1 -------------------
  double v1 = (vcc1*soma1)/(nAmostras1*1024.0);
  double rt1 = (vcc1*Ra)/v1 - Ra;
  // Calcula a temperatura
  double t1 = beta1 / log(rt1/rx1);
  temperatura1 = (t1-273.0);

  //Calculo temperatura 2 -------------------------------------
  int soma2 = 0;
  for (int i = 0; i < nAmostras2; i++) {
  soma2 += analogRead(pinTermistor2);
  delay (10);
  }
  // Determina a resistência do termistor 2 -------------------
  double v2 = (vcc2*soma2)/(nAmostras2*1024.0);
  double rt2 = (vcc2*Ra)/v2 - Rb;
  // Calcula a temperatura
  double t2 = beta2 / log(rt2/rx2);
  temperatura2 = (t2-273.0);
  
  //Economia de bateria ---------------------------------------
  if(speedwind > 1) 
  lcd.backlight();
  if(speedwind < 1) 
  lcd.noBacklight();

  //Calculo da tensão ajustada no trimpot ---------------------
  valorFinalTensaoDC = 0;
  mediaTotalTensaoDC = 0;
  for(int i=0; i < amostragem ; i++){
  valorTensaoDC = analogRead(sensorTensaoDC);
  valorTensaoDC =(valorTensaoDC*voltsporUnidade);
  mediaTotalTensaoDC = mediaTotalTensaoDC+ (valorTensaoDC / (R2/(R1+R2)));
  delay(1);
  }
  valorFinalTensaoDC = ((mediaTotalTensaoDC / amostragem) *2); // O ultimo valor do parentese         serve  para ajuste fino da velocidade do alarme

  //Mensagens pagina serial arduino ---------------------------
  Sample++;
  Serial.print(Sample);
  Serial.print(": Coletando dados...");
  windvelocity();
  Serial.println("   Calculado.");
  Serial.print("Contador: ");
  Serial.print(counter);
  Serial.print(";  RPM: ");
  RPMcalc();
  Serial.print(RPM);
  Serial.print(";  Vel. Vento: ");

  //Indicador velocidade do vento em M/s ----------------------
  WindSpeed();
  Serial.print(windspeed);
  Serial.print(" [m/s] ");

  //Indicador velocidade do vento em Km/h ---------------------
  SpeedWind();
  Serial.print(speedwind);
  Serial.print(" [km/h] ");
  Serial.println();

  //Informações no display -------------------------------------------------------------------------------------------
 
  //Velocidade medida -------------------------------
  //lcd.setCursor(0,0); //coluna, linha
  //lcd.print(">");
  lcd.setCursor(0,0); //coluna, linha
  lcd.print(speedwind,0);
  lcd.print(" Km/h ");
  
  //Velocidade maxima ajustada -----------------------
  lcd.setCursor(0,1);
  lcd.print(valorFinalTensaoDC,0);
  lcd.print(" max ");

  //Temperaturas 1 e 2 --------------------------------
  lcd.setCursor(9,1); //coluna, linha
  lcd.print(temperatura1,0);
  lcd.write(B11011111);
  lcd.print(" ");
  
  lcd.setCursor(13,1); //coluna, linha
  if(temperatura2 > 1)
  lcd.print(temperatura2,0);
  lcd.write(B11011111);
  if((temperatura2 < 1))
  lcd.setCursor(14,1); //coluna, linha
  lcd.print("---");
  
  //Mensagem de status da velocidade ------------------
  lcd.setCursor(9,0);
  if((speedwind < valorFinalTensaoDC))
  lcd.print("Normal ");
  
  lcd.setCursor(9,0);
  if(speedwind > (valorFinalTensaoDC - 10))
  lcd.print("Cuidado");
  
  lcd.setCursor(9,0);
  if((speedwind > valorFinalTensaoDC))
  lcd.print("Perigo ");
  
  //Leds indicadores ----------------------------------
  if((speedwind > valorFinalTensaoDC))
  digitalWrite(Led3, HIGH);  
  else digitalWrite(Led3, LOW); 
  if(speedwind > (valorFinalTensaoDC - 10))
  digitalWrite(Led4, HIGH);  
  else digitalWrite(Led4, LOW);
  if((temperatura1 < 0))
  digitalWrite(Led5, HIGH);  
  else digitalWrite(Led5, LOW); 
  delay(delaytime);                       
  } 

  //Função para medir velocidade do vento ------------------------------------------------------------------------
  void windvelocity() {
  speedwind = 0;
  windspeed = 0;
  counter = 0;
  attachInterrupt(0, addcount, RISING);
  unsigned long millis();
  long startTime = millis();
  while (millis() < startTime + period) {}
  }

  //Função para calcular o RPM -----------------------------------------------------------------------------------------------
  void RPMcalc() {
  RPM = (((counter) * 60) / (period / 1000)*1.0); // O ultimo valor do parentese serve para ajuste fino da velocidade indicada
  }

  //Velocidade do vento em m/s
  void WindSpeed() {
  windspeed = (((2 * pi * radius * RPM) / 60) / 1000); //Calcula a velocidade do vento em m/s
  } 

  //Velocidade do vento em km/h
  void SpeedWind() {
  speedwind = ((((2 * pi * radius * RPM) / 60) / 1000) * 3.6); //Calcula velocidade do vento em km/h
  } 
  
  //Incrementa contador
  void addcount() {
  counter++;
  }