[PYTHON] Messen Sie die SIM-Signalstärke mit Raspberry Pi

Überblick

Es wurde notwendig, die Signalstärke des Ortes zu messen, an dem das Signal mit der LTE-SIM-Kommunikation die Grenze erreicht, und zuerst habe ich die Signalstärke der SIM-Karte mit Raspberry Pi zu Hause in einer guten Funkumgebung gemessen, um die Ergebnisse zusammenzufassen Es war. IMG_8437.jpg

Umgebung

Die diesmal vorbereitete SIM-Karte ist SORACOMs Plan-D, der den Docomo-Bereich abdeckt. Das Gerät wurde mit der folgenden Konfiguration getestet. ・ Raspberry Pi3 + LTE-Kommunikationsmodul (4GPI) ・ Himbeer-Pi4 + USB-Modem (MS2372-607) Das Betriebssystem ist Raspbian, aber für Raspberry Pi3 habe ich 4gpi-buster-lite-20200612.zip für 4GPI verwendet und es auf den neuesten Stand gebracht.

Konstruktionsbeispiel für die Umgebung des Raspberry Pi4 + USB-Modems (MS2372-607)

Das Beispiel für die Verwendung von 4GPI wird weggelassen, und ein Beispiel für die Erstellung einer allgemeinen USB-Modemumgebung wird kurz erläutert. Schließen Sie das USB-Modem an und führen Sie den Befehl lsusb aus, um sicherzustellen, dass das Gerät 004 das Modem erkennt.

$ 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

Das USB-Modem (MS2372-607) wird von / dev / ttyUSB0 erkannt. Als Referenz ist es im Fall von 4GPI / 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 ist erhältlich unter:

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

Sie können die Verbindung der Netzwerkschnittstelle wwan0 wie folgt überprüfen.

$ 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

Messung der SIM-Signalstärke

Um die Signalstärke von SIM zu messen, muss der entsprechende AT-Befehl durch serielle Kommunikation mit dem Modem oder Kommunikationsmodul gesendet und das Ergebnis empfangen werden. Der AT-Befehl, der die Funkfeldstärke erfassen kann, ist ** AT + CSQ **, und die Funkwellenstärke wird basierend auf diesem Ausgabeergebnis bestimmt.

Beurteilung der Funkstärke

Die Signalstärke ist der AT-Befehl ** AT + CSQ **, das Ergebnis wird jedoch als ** + CSQ: 19,99 ** ausgedrückt. ** 19 ** im obigen Ergebnisbeispiel ist RSSI (Received Signal Strength Indicator) (0 bis 31 oder 99). (99 ist unbekannt oder nicht nachweisbar.) Im obigen Ergebnisbeispiel ist ** 99 ** BER (Bit Error Rate), und 99 scheint zu bedeuten, dass ein Bitfehler aufgetreten ist oder unbekannt war oder nicht erkannt werden konnte. Um dies in einen dBm-Wert umzuwandeln, der die Funkfeldstärke darstellt, berechnen Sie mit der Formel ** - 113 + (RSSI-Wert * 2) **. Der RSSI-Wert, der dBmc-Wert und die Funkfeldstärke sind in der folgenden Tabelle zusammengefasst. Wenn Sie jedoch die grobe Funkwellenstärke kennen möchten, ist der RSSI-Wert ausreichend.

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

Programm zur Messung der Funkfeldstärke

Dieses Mal habe ich ein Programm erstellt, um die Funkfeldstärke mit Python 2.7 zu messen. Die serielle Python-Kommunikation erfordert Pyserial.

$ pip install pyserial

Ich habe das folgende Programm unter Bezugnahme auf die Informationen im Web erstellt. ** / dev / ttyUSB0 ** ist für ein USB-Modem (MS2372-607) und ** / dev / tty4GPI ** für 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()

Ergebnisse der Funkstärkemessung

Im Fall eines USB-Modems (MS2372-607) war dies wie folgt.

$ python LteSimLevel.py
AT command response

+CSQ: 19,99

OK

SIM signal strength
Good (-75dbm)

Im Fall von 4GPI war es wie folgt.

$ python LteSimLevel.py
AT command response

+CSQ: 27,99

OK

SIM signal strength
Excellent (-59dbm)

Im Fall eines USB-Modems (MS2372-607) ist die Antenne in den USB-Dongle eingebaut, und die Verstärkung der Antenne ist gering. Es wird geschätzt, dass 4 GPI mit einer festen Antenne auf der dedizierten Karte die Verstärkung der Antenne um diesen Betrag aufweist Es ist ein überzeugendes Ergebnis. Nachdem wir den Unterschied in der Funkstärke bestätigt haben, können wir die Funkstärke anscheinend an Orten messen, an denen die Funkwellen mit der LTE-SIM-Kommunikation die Grenze erreichen.

Referenzseite

__ Verwenden von SORACOM Air auf verschiedenen Geräten __ https://dev.soracom.io/jp/start/device_setting/ __Lesen Sie AT-Befehlsdaten mit pySerial __ https://stackoverrun.com/ja/q/6675281 __3 Referenzinformationen zur Ermittlung des Installationsorts bei Verwendung von G / LTE __ https://armadillo.atmark-techno.com/howto/armadillo_3g-lte_installation-location AT Command AT+CSQ https://m2msupport.net/m2msupport/atcsq-signal-quality/ __ Mit SORACOM --3 Practical Edition erlernte AT-Befehle (AT + CSQ-Befehle) __ 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

Messen Sie die SIM-Signalstärke mit Raspberry Pi
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Messen Sie die CPU-Temperatur von Raspeye mit Python
Mutter pflanzt mit Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Anzeige der Signalstärke RSSI einer bestimmten SSID (Himbeer-Pi (Linux))
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Genießen Sie die elektronische Arbeit mit GPIO von Raspberry Pi
MQTT Radicon Car mit Arduino und Himbeere
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Himbeere + am2302 Temperatur und Luftfeuchtigkeit mit Temperatur- und Feuchtigkeitssensor messen
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Aktieninvestitionsanalyse-App mit Himbeerkuchen gemacht
Protokollieren des Werts von Inkbird IBS-TH1 mini mit Raspberry Pi
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Mit Akizuki Denshis 4WD Auto FT-MC-004 mit Raspberry Pi
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.