1. Preparação do Ambiente de Desenvolvimento
- Software:
- Python: Linguagem de programação para scripts.
- Bibliotecas Python: pyserial para comunicação serial, time para gerenciamento de tempo, e csv para gravação de dados.
- Drivers: Drivers USB para o módulo Quectel, se necessário.
2. Instalação e Configuração do Sistema no Windows
- Instalar Python
- Instalar bibliotecas necessárias:
pip install pyserial
- Instalar drivers USB:
- Se o módulo Quectel necessitar de drivers USB, é necessário baixar do site do fabricante. Isso garantirá que o módulo seja reconhecido corretamente pelo Windows.
- Configurar a porta serial:
- Conexão do módulo Quectel ao notebook via USB.
- Confirmação da porta COM utilizada (ex.: COM3):
- No Gerenciador de Dispositivos no Windows localizar o dispositivo sob "Portas (COM e LPT)".
3. Desenvolvimento do Script de Coleta de Dados no Windows
- Criação do Script
- Script básico para comunicação serial:
- Criação de um arquivo Python (ex.: drive_test.py).
- Configuração de bibliotecas necessárias e da porta serial.
import serial
import time
import csv
# Configuração da porta serial
ser = serial.Serial('COM3', 115200, timeout=1)
# Função para enviar comandos AT e ler a resposta
def send_at_command(command):
ser.write((command + '\r').encode())
time.sleep(1)
response = ser.read(ser.inWaiting()).decode()
return response
- Funções para Coleta de Dados:
- Adição de funções para coletar diferentes tipos de dados (qualidade do sinal, informação da célula, localização GPS).
def get_signal_quality():
return send_at_command('AT+CSQ')
def get_network_info():
return send_at_command('AT+QNWINFO')
def get_serving_cell_info():
return send_at_command('AT+QENG="servingcell"')
def get_gps_location():
return send_at_command('AT+QGPSLOC?')
- Gravação dos Dados em CSV:
- Configuração da gravação de dados em um arquivo CSV.
def start_measurement():
with open('5g_measurements.csv', mode='w', newline=) as file:
writer = csv.writer(file)
writer.writerow(['Timestamp', 'Signal Quality', 'Network Info', 'Serving Cell', 'GPS Location'])
while True:
try:
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
signal_quality = get_signal_quality()
network_info = get_network_info()
serving_cell = get_serving_cell_info()
gps_location = get_gps_location()
writer.writerow([timestamp, signal_quality, network_info, serving_cell, gps_location])
print(f"{timestamp} - Data collected")
time.sleep(10) # Esperar 10 segundos antes da próxima medição
except KeyboardInterrupt:
print("Medição interrompida pelo usuário")
break
# Iniciar a medição
start_measurement()
4. Execução e Teste no Windows
- Executar o Script:
- Salvar o arquivo e executar no Prompt de Comando:
python drive_test.py
- Verificar a Coleta de Dados:
- Durante a execução, o script deve coletar e salvar os dados no arquivo 5g_measurements.csv.
- Verificar o arquivo para garantir que os dados estão sendo registrados corretamente.
5. Melhorias e Expansões
- Tratamento de Erros e Resiliência:
- Adicionar tratamento de exceções e reconexão automática em caso de falhas de comunicação.
def send_at_command(command):
try:
ser.write((command + '\r').encode())
time.sleep(1)
response = ser.read(ser.inWaiting()).decode()
return response
except serial.SerialException as e:
print(f"Erro de comunicação: {e}")
return None
- Interface de Usuário com Flask:
- Criação de uma interface web simples usando Flask para visualizar os dados em tempo real.
- Instalar Flask:
pip install flask
- Script Flask para Visualização:
from flask import Flask, render_template, send_file
import pandas as pd
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/data')
def data():
return send_file('5g_measurements.csv', mimetype='text/csv', attachment_filename='5g_measurements.csv', as_attachment=True)
@app.route('/chart')
def chart():
data = pd.read_csv('5g_measurements.csv')
return render_template('chart.html', tables=[data.to_html()], titles=[])
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
- Arquivos HTML (index.html e chart.html):
- Criação de arquivos HTML para a interface web.
- Index
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title >Drive Test 5G< /title>
</head>
<body>
<h1>Drive Test 5G</h1>
<a href="/data">Download Data</a>
<a href="/chart">View Data</a>
</body>
</html>
- Chart
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Drive Test 5G Data< /title>
</head>
<body>
<h1>Drive Test 5G Data</h1>
{% for table in tables %}
Predefinição:Table
{% endfor %}
</body>
</html>
6. Análise e Visualização de Dados
- Utilização de ferramentas como pandas e matplotlib para analisar e visualizar os dados coletados.
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('5g_measurements.csv')
# Exemplo de visualização de qualidade do sinal
plt.figure(figsize=(10, 5))
plt.plot(data['Timestamp'], data['Signal Quality'], marker='o')
plt.title('Qualidade do Sinal ao Longo do Tempo')
plt.xlabel('Timestamp')
plt.ylabel('Qualidade do Sinal')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()