4G Router als universeller Server für IoT


Router der ICR-3200- Serie ersetzen das klassische Paket: Einplatinencomputer + Modem + Router. Jetzt können Sie die gesamte erforderliche Logik direkt auf dem Router ausführen. Dank eines leistungsstarken ARM-Prozessors, 512 MB RAM und ~ 2 GB internem Flash-Speicher können Sie sogar den NodeJS-Server auf dem Router starten!

Serielle RS-232/485-Schnittstellen sind ebenfalls in den Router integriert und stehen sofort im Betriebssystem mit vollem Root-Zugriff zur Verfügung. Eine offene Umgebung zum Erstellen nativer Programme und eine C / C ++ - Bibliothek zum Arbeiten mit Hardware-APIs auf niedriger Ebene sind ebenfalls verfügbar.
Die Tiefschlaffunktion spart Energie bei der Arbeit mit Batteriestrom: Der Router kann nur aktiviert werden, wenn Kommunikation wirklich benötigt wird.

In diesem Artikel werden wir die interessanten Funktionen des Geräts analysieren und in der Praxis versuchen, mit der E / A-Schnittstelle aus Shell-Skripten zu arbeiten.

Technische Eigenschaften


Die Router der ICR-3200- Serie werden auf einer einzigen Hardwareplattform hergestellt und durch fünf Modelle dargestellt, die sich in den Frequenzbereichen von LTE, dem Vorhandensein von Wi-Fi und Geolocation (GNSS) unterscheiden. Geräte werden als Ersatz für ein Bündel eines Einplatinencomputers und eines Routers positioniert. Mit einem leistungsstarken Prozessor und viel RAM können Sie ressourcenintensive Benutzeranwendungen direkt auf dem Router ausführen.

  • Cortex-A8-Prozessor - 1 GHz, 32-Bit-Architektur
  • 512 MB RAM
  • Flash-Speicher von 1,5 bis 4 GB - zum Speichern von Benutzerdaten
  • E / A-Ports - RS-232/485-Schnittstellen und digitale E / A-Ports stehen für Benutzerprogramme zur Verfügung.

Separat gibt es ein ICR-3211B-Modell , das gemäß dem LTE Cat-Standard arbeitet. M1 ( NB-IoT ). LTE Cat-Protokoll. M1 wurde speziell für M2M-Lösungen entwickelt, hat eine niedrige Datenübertragungsrate (375 kb / s) sowie eine größere Reichweite und eine erhöhte Stabilität bei schwierigen Kommunikationsbedingungen in Innenräumen. Der Router verfügt über einen eingebauten Ionistor (Superkondensator) , mit dem das Gerät nach einem vollständigen Stromausfall für kurze Zeit arbeiten kann.

Tiefschlafmodus


Im Tiefschlafmodus können Sie den Router in einen Zustand versetzen, in dem alle Prozesse eingefroren und die Hardware ausgeschaltet sind, um Energie zu sparen, während alle Funktionen des Geräts ausgeschaltet sind und von der Seite vollständig ausgeschaltet aussehen. Der Energieverbrauch in diesem Modus beträgt nicht mehr als 10 mW .


Im Ruhemodus verbraucht der Router fast keine Energie und wacht in 3 Sekunden auf

Wenn Sie den Router für die Datenübertragung aktivieren müssen, wird er in ca. 3 Sekunden aktiviert . Natürlich wird zusätzliche Zeit benötigt, um das Modem im Mobilfunknetz zu registrieren, aber dies ist erheblich schneller als das Herunterladen des Routers von Grund auf neu. Diese Option ist nützlich für Systeme mit eigener Stromversorgung, von denen die meisten inaktiv und gelegentlich aktiviert sind, um aktive Aktionen auszuführen, z. B. einen Alarm oder eine Sicherungseinheit.

Erwachen und einschlafen


Die Verwaltung des Einschlafens und Aufwachens erfolgt über das Schlafmodus- Modul.

Es gibt zwei Möglichkeiten, den Schlafmodus zu steuern:

  • Über einen digitalen Eingang wird in diesem Modus der Router von einem externen Gerät wie einem Mikrocontroller gesteuert. Durch ein LOW-Signal geht der Router an einem digitalen Eingang in den Ruhezustand und wacht auf, wenn er HIGH empfängt, oder umgekehrt. Sie können auch ein Antwortzeitlimit konfigurieren, um vor versehentlichem Umschalten zu schützen.
  • Über einen internen Timer zählt der Router die Zeit und wacht zur richtigen Zeit auf / schläft ein. Dies ist praktisch für einmalige Vorgänge oder das Laden von Daten für einen bestimmten Zeitraum.


Deep Sleep-Konfigurationsschnittstelle

Letzte Atemzugfunktion


Ein Stromausfall an einem Remote-Standort kann besonders unangenehm sein, da unklar ist, warum keine Kommunikation mit dem Standort verfügbar ist. Mit der Funktion "Letzter Seufzer" kann der Router nach einem vollständigen Stromausfall einige Zeit arbeiten und eine Nachricht senden, dass ein Unfall aufgetreten ist und die Notstromversorgung nicht eingeschaltet wurde. Dank des eingebauten Ionistors, dessen Ressource weit mehr als wiederaufladbare Batterien sind, ist keine Wartung und kein Austausch erforderlich. Dies ist nützlich für Notstromversorgungssysteme, bei denen Ausfälle möglich sind, und es ist wichtig zu verfolgen, wann die Spannung vollständig verloren geht.


Der Router sendet auch nach einem vollständigen Stromausfall ein Signal über einen Stromausfall

Um auf den Fall eines Stromausfalls richtig reagieren zu können, müssen Sie es irgendwie herausfinden.
Die aktuelle Versorgungsspannung kann entweder mit dem Befehl status sys shell ermittelt werden:

 $ status sys Firmware Version : 6.1.10 (2019-07-02) Serial Number : ACZ1100000623519 Profile : Standard RTC Battery : Ok Supply Voltage : 12.3 V # ←   Temperature : 37 C # ←    Time : 2019-08-16 16:21:18 Uptime : 0 days, 11 hours, 43 minutes 

Oder verwenden Sie das Hardware-Unix-E / A-Steuerelement (ioctl) und ein Programm in C / C ++ oder einer anderen Sprache.
Die Tabelle zeigt die Adressen der erforderlichen Hardwareregister. Die aktuelle Versorgungsspannung wird als Ganzzahl in Millivolt zurückgegeben. Die Verwendung einer Low-Level-API ist in diesem Fall Shell-Skripten vorzuziehen, um eine schnellere Reaktion zu erzielen. Detaillierte Informationen zum Arbeiten mit der Hardware finden Sie im Entwicklerhandbuch.


Eine ioctl-Anforderung, die die aktuelle Versorgungsspannung zurückgibt.

Serielle Schnittstellen


In den Router sind zwei serielle Schnittstellen integriert: RS-232 und RS-485. Mit ihnen können Sie Peripheriegeräte ohne zusätzliche Umreifung direkt an den Router anschließen. Gleichzeitig kann auf dem Router ein vollwertiger Node-RED- oder Nodejs-Server gestartet werden, mit dem ein Gerät für die Bereitstellung eines einfachen Automatisierungssystems ohne zusätzliche Computer und Controller bereitgestellt werden kann.



Standardmäßig stehen beide Schnittstellen als serielle Standardgeräte unter Linux zur Verfügung:

 ls -la /dev/ttyS* crw------- 1 root root 251, 0 Jan 1 1970 /dev/ttyS0 # ←  rs-232 crw------- 1 root root 251, 1 Jan 1 1970 /dev/ttyS1 # ←  rs-485 crw------- 1 root root 251, 5 Jan 1 1970 /dev/ttyS5 # ←   

Alle Standardbibliotheken unterstützen diese Geräte ohne zusätzliche Einstellungen, einschließlich des Modbus-RTU2TCP-Moduls und anderer.

Benutzerdefinierte Module


Die Funktionalität des Geräts kann mithilfe benutzerdefinierter Module erweitert werden: Dies ist eine vereinfachte Version von Paketen, nur ohne Paketmanager. Die gesamte Liste der verfügbaren Module finden Sie unter https://advantech-bb.cz/products/software/user-modules .

Die Module werden manuell installiert, indem die Paketdatei über die Weboberfläche heruntergeladen wird:



Derzeit sind 73 Module verfügbar. Hier sind einige interessante:

  • Node-RED ist ein beliebtes Tool zum Kombinieren verschiedener Industrieprotokolle in einem einzigen System.
  • Nodejs ist ein vollständiger NodeJS-Server. Mit viel RAM und einem leistungsstarken Prozessor können Sie anspruchsvolle Anwendungen direkt auf dem Router ausführen!
  • Python2 / 3
  • Web-Shell - Ermöglicht das Arbeiten in der Konsole über einen Browser.
  • Azure IoT SDK Python - eine Reihe von Tools zum Entwickeln von Programmen für den Microsoft Azure IoT Hub.

Da die Firmware der Router geöffnet ist, können Entwickler ihre eigenen Module schreiben, einschließlich solcher mit einer Webschnittstelle. Referenzmaterialien finden Sie im Handbuch zum Schreiben von Modulen und im Entwicklerbereich der Website des Unternehmens. Für die bequeme Erstellung von Paketen steht eine vorgefertigte Cross-Compilation-Umgebung zur Verfügung.

Hardwareressourcen über Shell-Skripte


Für einfache Automatisierungsaufgaben ist es praktisch, Shell-Skripte zu verwenden, mit denen Sie die Lichtanzeige steuern und den Status digitaler Pins empfangen / einstellen können.

Die Leuchtanzeige ist praktisch, um den aktuellen Status der Befehlsausführung anzuzeigen. Beispielsweise leuchtet die Datenübertragungsanzeige - häufiges Blinken, Verbindungsversuch - seltenes Blinken, einfach - kontinuierlich auf. Betrachten Sie den LED- Befehl. Am Eingang ist nur ein Argument erforderlich - die Art der blinkenden LED.

 # led led on|off|fast|slow 

So sieht es im wirklichen Leben aus:


Demonstration der Betriebsarten der Benutzeranzeige durch Shell-Befehle

Verwenden Sie den Befehl io, um mit digitalen Pins zu arbeiten.

 $ io Usage: io [get <pin>] | [set <pin> <value>] io set out0 1 #    OUT0   1 (LOW) io get bin0 #     BIN0 

Es ist wichtig zu beachten, dass die Logik in diesem Fall invertiert ist. Dementsprechend ist 1 = NIEDRIG, 0 = HOCH. Mit dem Befehl io können wir problemlos mit digitalen Pins aus Bash-Skripten arbeiten und eine einfache Logik für die Automatisierung und Steuerung erstellen.

Als Demonstration der Einfachheit der Arbeit mit digitalen Eingängen und Anzeigen schreiben wir ein nutzloses Skript, das den Status eines digitalen Eingangs mithilfe einer LED anzeigt.

 #!/bin/bash while true do [ $(io get bin0) -eq 0 ] && led fast || led on done 

Das Prinzip des Skripts ist einfach: Wenn sich BIN0 im Zustand 0 befindet, brennt die Diode häufig, andernfalls brennt sie kontinuierlich. So sieht es live aus:


Demonstration des Bash-Skripts, das den Status eines digitalen Eingangs mithilfe eines Indikators anzeigt.

Trotz der Primitivität dieses Skripts wird deutlich, wie Sie in einer Zeile ohne zusätzliche Software, Bibliotheken und Einstellungen Eingabedaten von digitalen Eingaben empfangen und darauf reagieren können.

Referenzen



Willkommen im Advantech Partner Forum



Das Advantech Forum wird eine einzigartige Plattform sein, um lokale und globale Trends im Internet der Dinge zu diskutieren. Hier können Sie Erfahrungen mit neuen technologischen Lösungen und Produkten austauschen, neue Kunden und Partner finden. Sie haben die Möglichkeit, die Produkte zu sehen, die wir in den Artikeln beschrieben haben, und nicht nur. Branchenführer und Vertreter wichtiger Partner - NVidia, Intel und andere Unternehmen, die sich in den kommenden Jahren aktiv an der Entwicklung des industriellen Internet der Dinge beteiligen werden - werden mit uns sprechen. Wir freuen uns, alle Experten auf dem Gebiet der industriellen Automatisierung und des Internets der Dinge auf der Veranstaltung zu sehen. Die Teilnahme an der Veranstaltung ist kostenlos! Die Anzahl der Plätze ist begrenzt. Beeilen Sie sich, um sich zu registrieren .

Source: https://habr.com/ru/post/de464003/


All Articles