Archiv der Kategorie: Allgemein

Bascom Font Converter

Viele Jahre habe ich BASCOM-AVR begleitet und mein Buch „Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR“ (ISBN 978-3-907857-14-4) hat eine große Verbreitung gefunden. Dafür bin ich meiner Leserschaft sehr dankbar.

Ich unterstütze deshalb gern auch Aktivitäten anderer rund um dieses Thema und möchte hier auf den

FontConv

hinweisen, der  jeden Windows©-Font in eine Font-Datei für BASCOM-AVR konvertieren kann.

Für Bascom-AVR werden von vornherein wenige Fonts angeboten. Windows© und das Internet bieten hingegen eine Fülle von Fonts an. Will man diese Fonts für ein grafisches LCD unter Bascom einsetzen, so ist dies nun mit dem Font Converter von Daschke Ltd. sehr einfach möglich.

Die Software bietet sogar eine Datenreduktion an, indem sie es dem Anwender ermöglicht, leere Zeilen und Spalten im globalen Datensatz zu löschen. Dazu legt der Font Converter alle Zeichen in eine Maske übereinander. Der Anwender kann diese maximale Fläche aller Zeichen reduzieren, indem er nicht gewünschte leere Zeilen und Spalten löscht.

Auch die Länge des Zeichensatzes kann vom Anwender bestimmt werden, was wiederum Speicher im AVR-Mikrocontroller spart.

Das Endergebnis ist eine Datei des Typs xxxx.font, die sofort nach Abspeicherung in Bascom-AVR eingesetzt werden kann.

Grundlage dieser Mitteilung:
Pressemitteilung erstellt von Dipl. Ing. Rudolf Rautert, Geschäftsführer von Daschke Ltd.

Ledunia

Gratulation zur erfolgreichen Kickstarter-Kampagne. 

b869c7b701372a7d631d0ef86ba71c33_original

Ich freue mich, meine Programmbeispiele (https://www.amazon.de/Building-IoT-Node-less-than-ebook/dp/B018J1OVC4/) auf der neuen Plattform zu testen.

Auf den erweiterten Speicher und die Vorkehrungen für die Deep Sleep Option bin ich gespannt. Die RGB-LEDs sind eine gelungene Erweiterung in Verbindung mit dem semi-transparenten Gehäuse.

 

 

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.