banner left Boxtec Banner
Platzhalter BoxtecProdukteForumShopKontaktPlaygroundn/aJobs
 

Kommunikations-Technologien

Hier werden unterschiedliche Kommunikations-Technologien zwischen Mikrocontrollern im Detail beschrieben. Die Informationen sollen als Auswahlhilfe und als Nachschlagewerk dienen.

Übersicht

Name Standard Kabel(Anzahl) Distanz Synchron Clock Anzahl Partner Bitrate Endgeräte Details
Serial UART Kabel(3 GND,RX,TX) 300m Asynchron Nein max. 2 9600-250000 Arduino,PIC32,Yun,PC Serial UART
RS485 RS485 Kabel(3/4) ? ? ? ? ? RS485
I2C/SPI I2C/SPI Kabel(4) ? ? ? ? ? I2CSPI
IP/Ethernet IP/Ethernet Wireless ~100m (100BaseT) n/a n/a 232 10-1000M IP-fähig Ethernet/IP
BLE Bluetooth Low Energy Wireless ? ? ? ? ? BLE
Bluetooth Bluetooth Wireless ? ? ? ? ? Bluetooth
RFM12B/433 Mhz RFM12B/433 Mhz Wireless 50-100m 1-31 115kBit/s Arduino mit RF Shield, RF Shield Mini Yun RFM12B433Mhz
Wlan/Wireless Wlan/Wireless Wireless ? ? ? ? ? WlanWireless

Details

Serial UART

UART = Universal Asynchronous Receiver Transmitter

Die serielle Verbindung ist eine Verbindung ohne Synchronisation (Asynchron) es gibt kein “Clock”. Der Sender und Empfänger müssen die gleiche Bit Rate eingestellt haben.

Verbindung

Es können nur 2 Partner miteinander verbunden werden. Wir verbinden drei Kabel: Rx,Tx und GND

Signal

Logisch 1 bedeutet eine tiefe Spannung und Logisch 0 eine hohe Spannung. Wir unterscheiden Start/Stop Bit und die 8 Datenbits 0 bis 7. Das gibt dann 10 Bits.

Die Geschwindigkeit wird über die Baud Rate festgelegt und muss beim Sender und Empfänger gleich eingestellt werden. Die Baudrate bedeutet Bits pro Sekunde. 9600 Bauds ⇒ 960 Bytes/Sekunde

Hier in der Grafik ist das beispielhaft dargestellt, der Volt “Level” ist jedoch für RS 232 aufgezeigt mit +/- 15 Volt wäre das für TTL viel zu hoch.

Quelle: http://wikipedia.org

Es gibt unterschiedliche TTL Volt Levels welche zu beachten sind, hier eine Übersicht:

Quelle: http://www.interfacebus.com

Spezielles

Die Serielle Verbindung ist schon sehr alt und wurde für das Fernschreibnetz entwickelt ( TTY = Teletype = Fernschreiber ).

Verwendung

Die Serielle Schnittstelle ist beim Arduino allgegenwärtig über Sie können wir den Arduino programmieren oder Informationen vom Programm über Serial.print im Serial Monitor auf dem Computer beobachten.

Sie wird auch zur Verbindung zwischen dem Yun/Yun Shield und dem Arduino verwendet.

Quelle: https://www.arduino.cc

Auch die OpenWRT Systeme verfügen über einen UART Anschluss. Das OpenWRT System ist eine Linux Distribution für Embedded Systeme. Der WrtNode ist ein preiswertes IoT Modul.

Der OpenWrt verfügt über Wlan und Ethernet aber jetzt wollen wir Ihn mal direkt mit dem Computer verbinden. Das ist sehr hilfreich, wenn wir bei der Netzwerk- oder Firewall-Konfiguration Fehler gemacht haben und nicht mehr auf das Gerät zugreifen können. Dann kann man über die Serielle Verbindung immer noch zugreifen und die Fehler beheben.

Dazu verwenden wir einen FTDI Adapter und 4 Dioden um von 5 Volt auf 3.3 Volt zu kommen. Natürlich kann auch ein “Level Shifter” eingesetzt werden.

Auf dem Computer verwendet man am besten Putty. Einfach den COM Port vom FTDI Adaper und die Baud Rate 115200 eintragen und verbinden.

Wenn der WrtNode startet sieht man gleich auch Boot Informationen. Von hier aus könnte auch eine neue Firmware eingespielt werden. Hier einfach warten bis der Boot Vorgang vorbei ist.

Nachdem die keine neuen Bootmeldungen mehr erscheine einfach <ENTER> drücken und schon wird eine Konsole geöffnet mit welcher ganz normal gearbeitet werden kann.

WrtNode mit HelvePic32

Der WrtNode ist für die Verbindung mit Sensoren auf der Linux Seite nicht sehr gut ausgestattet. Es gibt kein Analoger Input Pin und es sind auch keine Libraries von Sensoren vorhanden. Analog zum Yun liegt es auch hier auf der Hand den OpenWrt mit einem Arduino zu verbinden. So hat man alle Vorteile der Arduino Welt und trotzdem ein Linux System zur Hand.

= Anschluss =

Wir verbinden folgende Leitungen

HelvePic32 WRTNode
UART1 TX RXD2 Pin 7
UART2 RX TXD2 Pin 8
GND GND

Den Wrtnode und den HelvePic32 schliessen wir per USB an.

Jetzt müssen wir noch die Baud Rate kontrollieren, beide Systeme müssen für die UART Schnittstelle die gleiche Baud Rate verwenden. Auf dem OpenWrt ist der UART von Pin 7 und 8 unter /dev/ttyS0 erreichbar. Um die Baud Rate zu kontrollieren auf dem WrtNode einfach folgenden Befehl eingeben:

stty -F /dev/ttyS0

Hier oben ist ersichtlich dass wir mit 115200 Baud arbeiten.

Diese Baud Rate verwenden wir weiter unten im HelvePic32 Programm. Falls es zu unsicheren Verbindungen oder unerklährlichen Fehler in der Verbindung kommt kann mit dem folgenden Befehl die Baudrate reduziert werden. Hier auf 9600 Baud. Achtung diese Einstellung wird beim erneuten Anschliessen der Kabel wieder auf den Standard zurückgesetzt.

stty -F /dev/ttyS0 9600

Damit das ganze Sinn macht habe ich am HelvePic32 ein Lichtsensor angeschlossen, die Lichtstärke soll über den HelvePic32 zum WrtNode und dann auf einem Emoncms Server zur Auswertung übertragen werden.

Hier die Codings:

HelvePic32

int mil;
char inChar = 0;
int sensorPin = A7;
int sensorValue = 0;
String cmd;

void setup() {
	Serial.begin(9600);  // USB Serial
	Serial0.begin(9600); // UART 1
//	Serial1.begin(115200); // UART 2
}

void loop() {
  sensorValue = analogRead(sensorPin); 
  Serial.print("Sensor : ");
  Serial.println(sensorValue);
  mil = millis() / 200;
  Serial.print("Request at: ");
  Serial.println(mil);
  Serial.print(" / Response: ");
  cmd = "python /root/emon.py 0 0 " + String(sensorValue);
  Serial0.println(cmd);

  while (Serial0.available() > 0) {
    // get incoming byte:
    inChar = Serial0.read();
    Serial.print(inChar);
  }

 Serial.println();
 delay(4000);
 
}

emon.py

import sys, string, time
import httplib

ts = time.time()
st = int(ts)
print st

domain = "emoncms.org"

apikey = " hier api key eingeben "

nodeid = 10

conn = httplib.HTTPConnection(domain)

csv = sys.argv[1] + "," + sys.argv[2] + "," + sys.argv[3] 

conn.request("GET", "/input/post.json?apikey="+apikey+"&node="+str(nodeid)+"&csv="+csv+"&time="+str(st))
response = conn.getresponse()

print response.read() 

Im Serial Monitor vom HelvePic32 kann man das Protokoll prüfen oder dann direkt in der Emoncms Instanz prüfen ob Messdaten angekommen sind. Natürlich macht eine Grafische Auswertung mehr Spass als nur die Zahlen.

Weitere Themen

Hier weitere Themen welche noch nicht behandelt wurden.

  • Software Serial
  • CTS/RTS “Ready to send” und “Clear to Send”

RS485

I2C/SPI

IP/Ethernet

BLE

BLE oder Bluetooth Low Energy

Bluetooth

RFM12B/433 Mhz

Der Transceiver RFM12B von HopeRF ist ein universeller Sender und Empfänger für die drahtlose Datenübertragung im 433/866/915 MHz-Bereich.

Im Arduino-Umfeld wird dieser Transceiver hauptsächlich für drahtlose Sensor-Netzwerke verwendet.

Bekannte Projekte sind

JeeNode (http://jeelabs.net/projects/hardware/wiki/JeeNode)

Openenergymonitor (http://openenergymonitor.org).

Wlan/Wireless

 
interface/start.txt · Last modified: 2018/03/11 23:03 by dinoi
 
 

zum Seitenanfang

Letzte Aktualisierung: © boxtec internet appliances · the better security products