Archiv der Kategorie: Allgemein

Abgesetzter Temperatursensor mit micro:bit radio

Micro:bit ist zwar BLE tauglich, doch unter Python reichen die Ressorcen für den BLE-Stack nicht aus und es bleibt die micro:bit radio Verbindung.

Zur abgesetzten Temperaturmessung kann ein micro:bit als Sensorknoten und eine weiterer als Empfängerknoten genutzt werden. Die Message des Sensors wir hier als Broadcast versendet.

Das Python-Programm des Sensors ist:

# Measuring chip temperature on micro:bit & output to radio
from microbit import *
import radio

# The radio won't work unless it's switched on.
radio.on()

while True:
 temp = temperature() - 3 # offset to ambient temperature
 display.scroll(str(temp)+" C")
 radio.send(str(temp))
 sleep(5000)

Das Python-Programm des Empfängers ist:

# Receiving chip temperature from a micro:bit sensor node & output to console
from microbit import *
import os
import radio

uart.init()
uart.write(os.uname().machine +" get chip temperature by radio connection\r\n")

# The radio won't work unless it's switched on.
radio.on()

while True:
 # Read any incoming messages.
 temp = radio.receive()
 display.scroll(str(temp)+" C")
 uart.write("micro:bit chip temperature = "+str(temp)+" C\r\n")
 sleep(1000)

 

 

BBC Micro:bit

Micro:bit ist ein für Ausbildungszwecke entwickelter Mikrocontroller mit Features, die diesen Controller auch für Prototypen-Entwicklungen u.a. interessant machen. Hier sind die Retails zu diesem Controller zu finden.

Die technischen Spezifikationen sind:

  • Nordic Semiconductor nRF51822 Bluetooth Low Energy & 2.4GHz Wireless SoC (32-bit ARM® Cortex™ M0 CPU mit 256kB Flash und 16kB RAM)
  • Bluetooth Smart Antenne
  • microUSB Anschluss (Programmdownload, Console)
  • LiPo-Anschluss
  • 25 LEDs, 2 Taster
  • 20 Pin Edge Connector
  • Accelerometer, Compass

Programmierbar in

  • JavaScript-Blocks-Editor (PXT)
  • microPython

MicroPython Programmbeispiel

# Measuring chip temperature on micro:bit & output to console
from microbit import *
import os

uart.init()
uart.write(os.uname().machine +" measuring chip temperature\r\n")

while True:
 temp = temperature()
 display.scroll(str(temp)+" C")
 uart.write("micro:bit chip temperature = "+str(temp)+" C\r\n")
 sleep(5000)

 

 

MAC Adresse als Node Id

In vernetzten Umgebungen ist es erforderlich, die einzelnen Knoten identifizieren zu können. Bei der Vernetzung über Ethernet oder WLAN hat man die MAC Adresse des jeweiligen Netzwerkadapters zur Verfügung. Netzwerkknoten, die über andere Medien vernetzt sind, verwenden häufig eine unverwechselbare Seriennummer.

Beim C.H.I.P. kann die Seriennr. folgendermaßen ermittelt werden:

cat /proc/cpuinfo | grep "Serial" |  awk '{print $3}'

Beim NodeMCU habe ich eine Client Id mit folgendem Aufruf erzeugt:

CLIENTID = "ESP8266-" ..  node.chipid()

Hat man eine solche Seriennr. auf dem betreffenden Chip nicht zur Verfügung, dann kann die MAC Adresse, wenn vorhanden, als Id verwendet werden.

Hierzu habe ich ein Shell Script getid.sh geschrieben:

#!/bin/bash

echo "Build Ident from MAC ID"
ID=`ifconfig | grep wlan`
echo -n "MAC ID = "
ID=`echo ${ID#*HWaddr }` # see https://goo.gl/WLR79p
echo $ID
ID=`echo $ID | /bin/sed 's/://g'`
echo -n "Ident = "
ID=`echo $((16#$ID))`
echo $ID

ID

 

 

LoRa Gateway Dragino LG01

 

Dragino LG01 ist ein Open Source Single Channel LoRa Gateway. Damit kann das LoRa Wireless Netzwerk über WiFi, Ethernet, 3G oder 4G an ein IP-Netzwerk übertragen werden.

Das LG01 hat hierzu eine WiFi-Schnittstelle, Ethernet-Port und USB-Host-Port. Diese Schnittstellen bieten flexible Methoden für die Benutzer, ihre Sensornetzwerke mit dem Internet zu verbinden.

LG01 läuft Open Source OpenWrt System, Benutzer sind frei, die Quelldatei zu ändern oder das System zu kompilieren, um ihre benutzerdefinierten Anwendungen zu unterstützen.

Beim LG01 handelt es sich um ein LoRa Gateway, nicht um eine LoRaWAN Gateway.

Hier sind die Links zu Datenblatt und Benutzerhandbuch.

Betrachtet man die LG01 Systemübersicht, dann erkennt man schnell einen Arduino Yún als Basis.

dragino-lg01p-868-03_1

Zum Einlesen in diese Thematik möchte ich in eigener Sache auf das Büchlein Arduino für die Cloud: Arduino Yún & Dragino Yún Shield hinweisen.

Bevor ich mich den eigentlichen LoRa-Tests zuwende, statte ich ein solches Linux-Device mit den beiden Shell-Scripten boardinfo.sh und monitoring_uptime.sh aus.

boardinfo.sh zeigt uns die Ausstattung des Dragino LG01, hier speziell des Dragino HE Linux Moduls.

boardinfo

monitoring_uptime.sh ruft das Kommando uptime auf und sendet die Daten als Pushover Mitteilung an mein Smartphone. Als Cronjob eingerichtet erhalte ich tagsüber (zu jeder vollen Stunde) diese Mitteilung, die mir zeigt, ob mein Gateway stabil arbeitet.

monitoring_uptime

Zeigt sich das eben in Betrieb genommene Gateway über die nächsten Tage stabil, dann werde ich die erste LoRa-Strecke einrichten und in dem speziell dafür eingerichteten Blog berichten.

Die Quelltexte der hier betrachteten Shell-Scripts sind auf Github abgelegt.

Hilf mit, einen i.MX8 SBC zu definieren

Die CRE-8 Initiative sammelt Ideen,  um einen i.MX8 basierten Single Board Computer zu definieren, der für uns alle von großem Interesse ist.

Gemeinsam sollen Ideen und Anforderungen an Hardware und Software und vieles mehr erfasst, geteilt und diskutiert werden.

Alle Details sind beschrieben unter CRE-8 i.MX 8 Single Board Computer – The beginning. Registrierung unter CRE-8.world.

Rapid Demonstrator Service: Per Klick zum Funktionsmuster

Nach dem im Januar erschienenen Beitrag zum Rapid Demonstrator Service von Phytec zeigt der in der ELEKTRONIK 5/2017 erschienene Beitrag die Umsetzung vom ersten Klick im Webformular bis hin zur Inbetriebnahme des fertigen Prototypen.

An jedem der drei Messetage der embedded world in Nürnberg verlost Phytec zwei Rapid Demonstrator Entwicklungen im Wert von bis zu 1600 €. In Halle 1 Stand 206 können Sie sich mit dem Rapid Demonstrator Service bekannt machen.

Die Daten zu meinem Beitrag (Designdaten, Scripts, Benchmarks) sind über goo.gl/pGcVPi zugänglich.