[PYTHON] Mesurer la force du signal SIM avec Raspberry Pi

Aperçu

Il est devenu nécessaire de mesurer l'intensité du champ radio à l'endroit où l'onde radio atteint la limite avec la communication LTE SIM, et j'ai d'abord mesuré la force des ondes radio de SIM en utilisant Raspberry Pi à la maison avec un bon environnement d'ondes radio, donc je vais résumer les résultats C'était. IMG_8437.jpg

environnement

Le SIM préparé cette fois est le plan-D du SORACOM qui couvre la région de Docomo. L'équipement a été testé avec la configuration suivante. ・ Module de communication Raspberry Pi3 + LTE (4GPI) ・ Modem USB Raspberry Pi4 + (MS2372-607) Le système d'exploitation est Raspbian, mais pour Raspberry Pi3, j'ai utilisé 4gpi-buster-lite-20200612.zip pour 4GPI et l'ai mis à jour avec le dernier état.

Exemple de construction de l'environnement du modem Raspberry Pi4 + USB (MS2372-607)

L'exemple d'utilisation de 4GPI est omis et un exemple de création d'un environnement de modem USB général est brièvement expliqué. Branchez votre modem USB et exécutez la commande lsusb pour vérifier que le périphérique 004 reconnaît votre modem.

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Le modem USB (MS2372-607) est reconnu par / dev / ttyUSB0. Pour référence, dans le cas de 4GPI, ce sera / dev / tty4GPI.

$ ls -al /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 Sep 22 00:19 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Sep 22 00:11 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 Sep 22 00:11 /dev/ttyUSB2

SORACOM Air sera disponible à:

$ curl -O https://soracom-files.s3.amazonaws.com/setup_air.sh
$ sudo bash setup_air.sh

Vous pouvez vérifier la connexion de l'interface réseau wwan0 comme suit.

$ ifconfig wwan0
wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.62.145  netmask 255.255.0.0  broadcast 169.254.255.255
        ether 00:1e:10:1f:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49  bytes 14994 (14.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Mesure de la force du signal SIM

Afin de mesurer la force du signal de SIM, il est nécessaire d'envoyer la commande AT correspondante par communication série avec le modem ou le module de communication et de recevoir le résultat. La commande AT qui peut acquérir l'intensité du champ radio est ** AT + CSQ **, et l'intensité des ondes radio est déterminée en fonction de ce résultat de sortie.

Jugement de la puissance radio

La force du signal est la commande AT ** AT + CSQ **, mais le résultat est exprimé comme ** + CSQ: 19,99 **. ** 19 ** dans l'exemple de résultat ci-dessus est RSSI (Received Signal Strength Indicator), qui va de 0 à 31 ou 99. (99 est inconnu ou indétectable.) Dans l'exemple de résultat ci-dessus, ** 99 ** est BER (Bit Error Rate), et 99 semble signifier qu'une erreur de bit s'est produite ou était inconnue ou n'a pas pu être détectée. Pour convertir cela en une valeur dBm qui représente l'intensité du champ radio, calculez à l'aide de la formule ** - 113 + (valeur RSSI * 2) **. La valeur RSSI, la valeur dBmc et l'intensité du champ radio sont résumées dans le tableau ci-dessous, mais si vous souhaitez connaître la force approximative des ondes radio, la valeur RSSI est suffisante.

RSSI dBm Connection status
0 -113 or less -
1 -111 -
2~9 -109~-95 Marginal
10~14 -93~-85 OK
15~19 -83~-75 Good
20~30 -73~-53 Excellent
31 -51 or greater -
99 - Not known or not detectable

Programme de mesure de l'intensité du champ radio

Cette fois, j'ai créé un programme pour mesurer l'intensité du champ radio avec Python 2.7. La communication série Python nécessite pyserial.

$ pip install pyserial

J'ai créé le programme suivant en me référant aux informations sur le Web. ** / dev / ttyUSB0 ** est pour un modem USB (MS2372-607) et ** / dev / tty4GPI ** pour 4GPI.

LteSimLevel.py


#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import serial

modem = serial.Serial("/dev/ttyUSB0",baudrate=115200,timeout=1)

def sendAt(cmd):
   modem.write('AT+'+cmd+'\r')
   time.sleep(0.1)
   return modem.read(32798)

def calcDbm(csq):
   csq = csq.replace('OK','')
   csq = csq.replace('+CSQ: ','')
   csq = csq.replace('\n','')
   csq = csq.replace('\r','')
   dec = csq.split(',')
   if unicode(dec[0]).isdecimal():
     dbm = -113 + (int(dec[0]) * 2)
     return dbm
   else:
     return -113

def connStatus(dbm):
  if dbm >= -73:
    return "Excellent"
  elif dbm >= -83:
    return "Good"
  elif dbm >= -93:
    return "OK"
  elif dbm < -93:
    return "Alert:Marginal"

try:
   if modem.inWaiting()>0: modem1.flushInput()
   csq = sendAt('CSQ')
   print("AT command response")
   print(csq)
   print("SIM signal strength")
   dbm = calcDbm(csq)
   print(connStatus(dbm) + " (" + str(dbm) + "dbm)" )
finally:
   modem.close()

Résultats de la mesure de la force radio

Dans le cas du modem USB (MS2372-607), c'était comme suit.

$ python LteSimLevel.py
AT command response

+CSQ: 19,99

OK

SIM signal strength
Good (-75dbm)

Dans le cas de 4GPI, c'était comme suit.

$ python LteSimLevel.py
AT command response

+CSQ: 27,99

OK

SIM signal strength
Excellent (-59dbm)

Dans le cas d'un modem USB (MS2372-607), l'antenne est intégrée au dongle USB et le gain de l'antenne est faible, et on estime que 4GPI avec une antenne solide sur la carte dédiée a le gain de l'antenne de ce montant, donc ce qui précède est C'est un résultat convaincant. Maintenant que nous avons confirmé la différence de puissance radio, il semble que nous pouvons mesurer la puissance radio à l'endroit où l'onde radio atteint la limite par la communication LTE SIM.

Site de référence

__ Utilisation de SORACOM Air sur divers appareils __ https://dev.soracom.io/jp/start/device_setting/ __Lire les données de commande AT avec pySerial __ https://stackoverrun.com/ja/q/6675281 __3 Informations de référence nécessaires pour déterminer l'emplacement d'installation lors de l'utilisation de G / LTE __ https://armadillo.atmark-techno.com/howto/armadillo_3g-lte_installation-location AT Command AT+CSQ https://m2msupport.net/m2msupport/atcsq-signal-quality/ __ Commandes AT apprises avec SORACOM --3 édition pratique (commandes AT + CSQ) __ https://bearmini.hatenablog.com/entry/at-command3 AT Commands https://wiki.teltonika-networks.com/view/AT_Commands MS2372-607 https://blog.soracom.com/ja-jp/2018/08/17/ms2372/ 4GPI https://mechatrax.com/products/4gpi/

Recommended Posts

Mesurer la force du signal SIM avec Raspberry Pi
GPGPU avec Raspberry Pi
DigitalSignage avec Raspberry Pi
Mesurer la température du processeur de Raspeye avec Python
Plantes Mutter avec Raspberry Pi
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Mesurez et comparez les températures avec Raspberry Pi et générez automatiquement des graphiques
[Raspberry Pi] Contrôle du moteur pas à pas avec Raspberry Pi
Utilisez vl53l0x avec RaspberryPi (python)
Commande de servomoteur avec Raspberry Pi
Communication série avec Raspberry Pi + PySerial
Configuration du système d'exploitation avec Raspberry Pi Imager
Essayez L Chika avec raspberrypi
Construire un serveur VPN avec Raspberry Pie
Essayez de déplacer 3 servos avec Raspeye
Utiliser une webcam avec Raspberry Pi
Surveillance des animaux avec Rekognition et Raspberry pi
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Essayez de pêcher le Wakasagi avec Raspberry Pi
Programmation normale avec la programmation Node-RED avec Raspberry Pi 3
Capteur humain amélioré fabriqué avec Raspberry Pi
Essayez la détection d'objets avec Raspberry Pi 4 + Coral
Exécuter le servomoteur SG-90 avec Raspberry Pi
Travailler avec des capteurs dans Mathematica sur Raspberry Pi
Utiliser le capteur de mouvement PIR avec Raspberry Pi
Faire une minuterie de lavage-séchage avec Raspberry Pi
Modèle Infer Custom Vision avec Raspeye
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Créez un compteur de voiture avec Raspberry Pi
Enregistrement de la valeur d'Inkbird IBS-TH1 avec Raspberry Pi
Travailler avec le GPS en Python pour Raspberry Pi 3
Afficher la force du signal RSSI d'un SSID spécifique (raspberry pi (linux))
Discord bot raspberry pi zéro avec python [Note]
Programmation média avec Raspeye (préparation audio)
J'ai essayé L-Chika avec Razpai 4 (édition Python)
Profitez du travail électronique avec GPIO de Raspberry Pi
MQTT Radicon Car avec Arduino et Raspberry
Allumez / éteignez votre PC avec Raspberry Pi
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Observez le groupe de météores Futago avec RaspberryPi4
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Raspberry + am2302 Mesure la température et l'humidité avec un capteur de température et d'humidité
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Application d'analyse des investissements boursiers avec tarte aux framboises
Enregistrement de la valeur d'Inkbird IBS-TH1 mini avec Raspberry Pi
Connectez-vous à MySQL avec Python sur Raspberry Pi
Suivi GPS avec Raspeye 4B + BU-353S4 (Python)
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
Exécutez la matrice LED de manière interactive avec Raspberry Pi 3B + sur Slackbot
Utilisez le capteur d'éclairement numérique TSL2561 avec Raspberry Pi
IoT facile pour démarrer avec Raspeye et MESH
Utilisation de la voiture 4RM FT-MC-004 d'Akizuki Denshi avec Raspberry Pi
Visualisons la pièce avec tarte aux râpes, partie 1
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.