It’s a while since I posted something last time (actually I ever only posted two pictures of dishes I had when I was in Asia) on Tumblr, but posting pictures of foodwas obviously nothing that really hooked me^^.
Anyway. I recently found some old PIC18F4550 microcontrollers laying around. I made some small gadgets you could attach to your computer via USB years ago with them, but then switched to the ATMEL universe as there, you can get all these super cheap super small 20x30mm Arduino in a pack of 5 for 15€. That was really useful to build things that have to been powered by a USB powerbank, like a Camera Slider or Long Exposure Controller. Nevertheless I really want to do something useful with the PICs and to get back in and started, I made this breakout board(though I am not world class in soldering). It supports USB, and has all the necessary Pins you need for example for the ICP, I²C or EUSART grouped together so it’s not a mess when you start wiring up sensors or other devices. If you don’t use USB you can attach a 5V source via a regular SP4 Power Connector and route either the 12V or the 5V line via jumper to the upper power connector(blue) on the board. Unfortunately I didn’t add the diods to isolate the USB connector from SP2 input, so it is now an either USB or SP4... but thats something I will upgrade when necessary.
0 notes
Vorstellung #1 2019: BBC micro:bit
In diesem Tutorial möchte ich den Microcontroller micro:bit vorstellen.
Microcontroller micro:bit
Der Microcontroller micro:bit wird von der Britischen Firma British Broadcasting Corporation (kurz "BBC") vertrieben. Auf dem kleinen Einplatinencomputer ist ein ARM CPU verbaut welcher sich mit der Programmiersprache Python ("MicroPython") programmiert werden.
Geschichte
Der Einplatinencomputer micro:bit wurde ab dem Jahr 2012 von der Firma BBC entwickelt. Neben der genannten Firma waren noch viele weitere Firmen, Institute an der Entwicklung beteiligt. In erster Linie sollte der micro:bit für die Schulen in Großbritannien dienen und Schüler im Alter von 11 bis 12 Jahre in die Welt der Informatik einführen. (Ähnliche Projekte gibt bzw. gab es bereits schon den Niederlanden sowie in Island.)
Ab Oktober 2016 wurde die Weiterentwicklung und der Vertrieb an die gemeinnützige Stiftung Micro:bit Educatinoal Foundation übertragen. Seit dem ist der Microcontroller auch für Privatpersonen erhältlich.
Bezug
Den Microcontroller micro:bit kann man zbsp. auf eBay.de für ca. 21€ inkl. Versandkosten erwerben. Den besten Preis inkl. Versandkosten erhält dieses mal jedoch bei amazon.de, dort zahlt man z.Zt. (21.02.2019) nur 18,99€.
Es gibt für den BBC micro:bit einige Sets welche durchaus einen kauf Wert sind, hier wird für wenig Geld eine Grundausstattung aus Sensoren & Aktoren geboten und man hat alles auf einmal um sofort loszulegen.
Da ich bereits einiges an Sensoren & Aktoren habe benötige ich dieses Set nicht, jedoch werde ich mir ein BreakoutBoard zulegen denn dieses macht das Abgreifen von Pins deutlich einfacher bzw. ermöglicht dieses erst.
Lieferumfang
Zum Lieferumfang meines micro:bit gehört, neben dem Microcontroller eine kleine Anleitung wie der Controller eingerichtet und betrieben werden kann und ein Blatt über generelle Informationen zu dem Controller in diversen Sprachen.
Technische Daten des micro:bit
CPU
ARM Cortex-M0
32Bit
16 MHz Taktfrequenz
Speicher
256 KB Flash Speicher
16 KB SRAM
Der micro:bit verfügt über folgende zusätzliche Features:
Bluetooth (4.0, Low Energy),
2 Tasten,
5 x 5 LED Matrix,
Geesten Sensor,
Micro USB Buchse,
Batterie Sockel,
Reset Taster,
Stecksockel
Aufbau
Der micro:bit ist beidseitig bestückt, auf der Vorderseite sind eine 5x5 LED Matrix und 2 Taster zu finden, auf der Rückseite sind die Anschlüsse für USB und Batterie zu finden. Des Weiteren sind die Chips der Sensoren und der Prozessor dort zu finden.
Alles ist jeweils mit einem Text markiert.
Microcontroller micro:bit von der Firma BBC
Dokumentation
Eine ausführliche Dokumentation zum micro:bit mit vielen Beispielen findest du auf der Herstellerseite https://microbit.org/de/.
Auf dieser Seite findest du zusätzliche Informationen wie du die verschiedenen Sensoren & Aktoren steuern kannst und einen Online Python Editor in welchem du ohne ein zusätzliches Plugin auf deinem Rechner installieren zu müssen sofort mit der Entwicklung loslegen kannst.
Installation
Damit der Controller mit dem Computer (Mac oder PC) verbunden werden kann benötigt man ein USB Kabel (Micro USB Stecker auf USB Typ A Stecker). Dieses Kabel lag meinem Controller nicht dabei.
Wenn nun also den Controller mit dem Computer verbunden hat, so wird der Controller als zusätzliches Laufwerk eingebunden.
Laufwerk "microbit" im Explorer
Auf dieses Laufwerk können wir dann den Code ablegen und nach einem Neustart des Controllers wird der Code ausgeführt.
Erster Start
Wenn man den Controller zum ersten mal startet so wird ein Beispielcode ausgeführt. Zuerst werden die Button "A" & "B" abgefragt und danach die Sensoren. Die entsprechenden Texte werden über die 5x5 LED Matrix angezeigt.
Programmieren
Der Microcontroller kann über verschiedene Entwicklungsumgebungen (kurz "IDE") programmiert werden. Die meisten dieser IDE's sind Webanwendungen welche in einem Browser betrieben werden.
Open Roberta
Das Frauenhofer-Institut für Intelligente Analyse- und Informationssysteme hat mit der Software Open Roberta eine Entwicklungsumgebung ähnlich wie ArduBlock geschaffen. Um das "Lab" nutzen zu können muss man sich nicht anmelden, somit kann man die Adresse https://lab.open-roberta.org/ direkt öffnen und einen Microcontroller wählen.
Auswahl des Microcontrollers im Lab der Webanwendung "Open Roberta"
Mit der Software "Open Roberta" lässt sich einfach per Drag'n Drop die Befehle in form von Bausteinen zusammensetzen und daraus entsteht dann der Quellcode für den Microcontroller micro:bit.
einfaches Beispiel mit Open Roberta
Zusätzlich gibt es eine gute Liste mit Beispielen für den micro:bit.
Es ist somit für den Einsteiger und Programmieranfänger sehr schnell möglich die ersten kleinen Projekte mit dem micro:bit zu erstellen. (Für größere Projekte werden zusätzliche Erweiterungskarten benötigt.)
micro:bit Editor
Auf der Herstellerseite des micro:bit findet man 2 Editoren einmal den MakeCode für den Anfänger und einmal für den erfahrenen Programmierer einen Editor in der Programmiersprache MicroPython.
MakeCode
Der Editor MakeCode ist ähnlich wie der Open Roberta & ArduBlock ein visueller Editor. Der Vorteil ist jedoch, das der Editor einem im Browser gleich das Ergebnis anzeigt. Somit kann man auch ohne den Code auf den Microcontroller zu laden sich "on the fly" sein Output anschauen.
MakeCode Editor für den micro:bit
Auf der Oberfläche befindet sich mittig ein Schalter "Block / Javascript" wenn man diesen klickt wechselt die Ansicht auf JavaScript und man kann mit der Scriptsprache JavaScript programmieren.
Den Code kann man über die Tastatur eintippen oder aber auch Codeschnipsel per Drag'n Drop einfügen.
Micropython Editor
In dem recht spartanisch aufgebauten Editor programmiert man mit der Programmiersprache MicroPython.
micro:bit Python Editor
Wenn man diesen Editor öffnet wird bereits ein kleines Beispiel angezeigt. Wie bei fast jeder Programmiersprache üblich ist es "Hello World!".
Es gibt hier keine Vorschau, jedoch eine kleine Unterstützung, wenn man auf die Schaltfläche "Snippets" klickt, erhält man eine kleine Liste an Befehlen und man wird nach einer Auswahl von einem Befehl, durch das Tool angeleitet diesen korrekt zu befüllen.
Fehlerbehandlung
Was jedoch fehlt ist eine Funktion um den Code auf Fehler zu prüfen. Fehler werden auf dem micro:bit in Laufschrift angezeigt.
Wenn wir also folgenden kleinen Code auf den micro:bit spielen.
x = 1
y = a
print(x+y)
Dann erhalten wir eine Fehlermeldung das der Bezeichner "a" nicht bekannt ist.
Bei kleinen Projekten ist das noch relativ überschaubar, jedoch bei größeren kann dieses in ein "Try and Error" ausarten was doch sehr frustrierend sein kann.
Aufspielen des eigenes Quellcodes
Wenn man in dem Editor die Schaltfläche "Download" betätigt so wird einem die Datei "microbit.hex" zum Download angeboten. Diese Datei wird auf den micro:bit über den Explorer des Betriebssystems auf das Laufwerk "microbit" kopiert.
Nachdem dieses erledigt ist, muss unter umständen der Microcontroller neugestartet werden. Dieser neustart wird durchgeführt wenn wir das USB Kabel einmal entfernen und wieder hineinstecken.
Beispiele
Die nachfolgenden Beispiele programmiere ich in dem Online Tool "Python editor von micro:bit" von dem Hersteller micro:bit. Eine ausführliche Anleitung zu den Funktionen des micro:bit findet sich unter https://microbit-micropython.readthedocs.io/en.
Unterschiede von MicroPython & Python3
MicroPython enthält nicht alle Funktionen der Programmiersprache Python.
Bibliotheken
Gegenüber von Python3 enthält MicroPython nicht alle bzw. nur wenige Standard Bibliotheken. Dieses ist für Microcontroller besonders wichtig denn hier kommt es auf den Speicherverbrauch an. Wenn man also eine bestimmte Bibliothek in seinem Code verwenden möchte oder muss, so muss man sich diese über ein import Befehl hinzufügen.
GarbageCollection
Jede höherwertige Programmiersprache hat einen GarbageCollector. Diese Funktion dient dazu alte, nicht mehr Benötigte (also Referenzierte) Objekte aus dem Speicher zu entfernen. Dieses kann MicroPython nicht und der Entwickler muss sich darum selber kümmern.
Eine ausführliche Liste der unterschiede findet sich auf dem GitHub Repository von MicroPython.
Aufbau des Quellcodes
Zunächst möchte ich den Aufbau des Quellcodes erläutern. Da Python eine Scriptsprache ist wird der Code von "oben" nach unten ausgeführt.
Zunächst müssen wir unsere Bibliothek in das Projekt importieren.
from microbit import *
Damit holen wir uns die Funktionen und Objekte damit wir den microbit programmieren können.
Danach wird die Logik implementiert, wir nutzen hier eine While Schleife welche als Parameter den Wert TRUE erhält.
while True:
//do something
Somit haben wir uns eine Endlosschleife erzeugt. Es ist auf die korrekte Einrücktiefe zu achten damit der Code auch in der Schleife ausgeführt wird. Sollten wir den Code nicht in einer Endlosschleife ausführen so wird dieser nur einmal ausgeführt, diesen umstand kann man nutzen wenn man zbsp. eine Grafik auf der LED Matrix anzeigen möchte. Wenn man jedoch eine Benutzerinteraktion abfragen möchte so benötigt man die Endlosschleife.
# Add your Python code here. E.g.
from microbit import *
while True:
//do something
Tasten
In diesem Beispiel, möchte ich nun zeigen wie man das drücken einer Taste auswerten und daraus eine Aktion generieren kann.
Wenn der Benutzer auf die Taste "A" klickt, so wird auf der LED Matrix der Buchstabe "A" ausgegeben, wenn dieser jedoch die Taste "B" drückt dann der Buchstabe "B". Drückt der Benutzer keiner der beiden Tasten so passiert nichts.
# Add your Python code here. E.g.
from microbit import *
while True:
if button_a.is_pressed():
display.scroll("A")
elif button_b.is_pressed():
display.scroll("B")
Video
5 x 5 LED Matrix
Die 5x5 LED Matrix des micro:bit kann man mit nur einer Zeile Code bedienen.
display.scroll("A")
Ein großer Vorteil beim verwenden des Online Editors und der damit verbundenen Bibliothek "microbit" ist das für jeden Sensor & Aktor bereits ein Objekt existiert. In diesem Fall nutzen wir das Objekt "display".
Das "display" Objekt hat einige Funktionen damit man auf der LED Matrix Texte & einfache Grafiken anzeigen kann.
Texte anzeigen
Möchte man Texte auf der LED Matrix anzeigen, so verwendet man die Funktion 'scroll("")'. Der Text wird dabei von rechts nach links als Lauftext angezeigt.
# Add your Python code here. E.g.
from microbit import *
while True:
display.scroll("Dies ist ein langer Text.")
Bilder anzeigen
Der Bibliothek "microbit" liegen einige Bilder bei.
Eine komplette Liste aller Bilder findest du unter https://microbit-micropython.readthedocs.io/en/latest/tutorials/images.html.
einzelne Pixel steuern
Möchte man nur einen einzelnen Pixel (quasi eine LED) aufleuchten lassen so nutzt man die Funktion 'set_pixel(x_pos, y_pos, brightness)'. Dieser Funktion wird die X & Y Koordinate und die Helligkeit (min. 0 und max. 9) übergeben.
# Add your Python code here. E.g.
from microbit import *
while True:
display.set_pixel(0, 1, 4)
X & Y Koordinaten der LED Matrix
Das Koordinatensystem der LED Matrix beginnt mit dem Index "0" und endet somit mit "4". Die Koordinate X=0 und Y=0 ist dabei oben links.
X & Y Koordinaten der LED Matrix
Geesten Sensor
Mit dem Geesten Sensor kann man die Lage des Microcontrollers erkennen und welche G-Kräfte auf diesen wirken. Die Lage des Microcontrollers kann man als X & Y Koordinate auslesen oder aber auch als Text.
Wenn man den Text verarbeiten möchte gibt es folgende mögliche Werte
up,
down,
left,
right,
face_up,
face_down,
freefall,
3,
6g,
8g und
shake
Wobei die Werte "freefall", "3g", "6g" und "8g" schwierig zu erreichen sind.
steuern eines Pixels auf der LED Matrix
An einem kleinen Beispiel möchte ich zeigen wie man die Werte des Geesten Sensors ausliest und damit eine LED auf der LED Matrix steuert.
Es wird geprüft ob die letzte ausgeführte Geeste eine Richtung zu einer bestimmten Seite war (oben, unten, rechts, links) wenn dieses so ist dann soll der Wert für die Koordinate manipuliert werden.
Zum Schluss wird an der Koordinate auf der LED Matrix das Pixel aktiviert und eine kleine Pause von 35ms. durchgeführt. Danach beginnt die Schleife von vorne und alle Pixel werden deaktiviert und die Daten werden wieder ausgelesen.
from microbit import *
x = 2
y = 2
while True:
display.clear()
accelerometer.current_gesture()
if accelerometer.was_gesture("up") and y y = y + 1
elif accelerometer.was_gesture("down") and y > 0:
y = y - 1
elif accelerometer.was_gesture("left") and x x = x + 1
elif accelerometer.was_gesture("right") and x > 0:
x = x - 1
display.set_pixel(x, y, 4)
sleep(35);
Video
Bluetooth
Leider gibt es bisher keine implementation von Bluetooth in MicroPython. Daher werde ich in dem folgenden Beispiel auf die visuelle Darstellung von Code mit "MakeCode" zurückgreifen (müssen).
Um die Bluetooth Funktionen anzuzeigen, müssen wir zunächst das Paket in die "IDE" einbinden. Dieses machen wir indem wir über das Menü "Fortgeschritten" > "Erweiterungen" navigieren. Auf der neuen Seite wählen wir dann die Kachel "Bluetooth" aus. Es wird eine Meldung angezeigt welche aufzeigt dass, das bereits existierende Paket "radio" nicht kompatibel mit dem neuen Bluetooth ist somit müssen wir bestätigen das dieses zunächst entfernt wird. Danach haben wir die Bluetooth Funktion zur Verfügung.
Pairing von Geräten
Damit die Bluetoothgeräte untereinander Kommunizieren können müssen diese gekoppelt werden. Diesen Vorgang nennt man "Pairing". Für das Pairing muss man die Tasten A & B gedrückt halten, zusätzlich muss man danach den Reset Taster kurz betätigen. (Die Tasten A & B weiter gedrückt halten.) Als Bestätigung wird dann die LED Matrix aufgefüllt, nun muss gewartet werden bis alle LED aktiviert sind dann müssen die Tasten A & B wieder losgelassen werden.
Mit einem Handy oder Tablet (diese müssen BLE unterstützen) kann nun nach einem Bluetoothgerät gesucht werden. In meinem Fall wurde der micro:bit unter der Bezeichnung "BBC micro:bit " gefunden.
micro:bit als Bluetoothgerät verbunden
AndroidApp zum aufbauen der Verbindung
Nachdem wir die Geräte gekoppelt haben, können wir nun eine Verbindung aufbauen dazu nutze ich die App "micro:bit Blue".
Wenn die App gestartet wird muss zunächst mit der Schaltfläche "FIND PAIRED BBC MICRO:BITS" nach Geräten gesucht werden. In meinem Fall wird der "BBC micro:bit (BONDED)" gefunden.
Mit einen "klick" auf den Eintrag wird dann die Verbindung aufgebaut.
einfaches Beispiel mit Bluetooth
Als erstes möchte ich ein ganz einfaches Beispiel mit Bluetooth zeigen. Es soll auf der LED Matrix ein glückliches Smiley angezeigt werden wenn eine Verbindung aufgebaut wurde andernfalls ein schlechtes.
einfaches Bluetoothbeispiel mit MakeCode für den micro:bit
Wenn also nun mit AndroidApp "micro:bit Blue" eine Verbindung aufgebaut wurde, dann ändert sich das Gesicht "schlecht" auf "glücklich" bzw. wenn die Verbindung unterbrochen wird von "glücklich" auf "schlecht".
Auf Seite 2 geht es weiter mit den Erweiterungskarten zu dem micro:bit.
Erweiterungskarten
Für den micro:bit gibt es diverse Erweiterungskarten zu erwerben damit kann man zbsp. eine Klaviatur. Was sich auf jeden Fall Lohnt anzuschaffen ist eine Karte um die IO Ports zuverlässig abzugreifen.
Die nachfolgende Erweiterungskarte (oder auch Expansionboard genannt) habe ich über ebay.de für ca. 7,5€ inkl. Versandkosten erstanden. Da der micro:bit nicht so verbreitet ist gibt es nicht viele Hersteller welche die Boards anbieten und somit sind diese in der Anschaffung etwas teurer als für den Arduino und deren Clones.
Der Erweiterungskarte lagen leider keine Lötstifte bei, d.h. diese muss man separat bestellen!
Die Stiftleiste kann man je nach bedarf und Einsatzzweck anlöten, einmal so das die Pins von oben abgegriffen werden können und einmal von unten. Wenn man die Stiftleiste nach unten anlötet, so kann man das Board dann bequem auf ein Breadboard stecken.
Die nachfolgenden Grafiken wurden mir mit der Genehmigung der Firma Eckstein GmbH zur Verfügung gestellt. Für mehr Informationen zu den Erweiterungsboards klicke bitte auf das Bild, du wirst dann zu dem Shop weitergeleitet.
Read the full article
0 notes
PCB of the day! Adafruit I2C Stemma QT Rotary Encoder Breakout with NeoPixel - STEMMA QT / Qwiic 🔧🔄🎛️
Rotary encoders are soooo much fun! Twist them this way, then twist them that way. Unlike potentiometers, they go all the way around and often have little detents for tactile feedback. But, if you've ever tried to add encoders to your project, you know they're a real challenge to use: timers, interrupts, debouncing…
This Stemma QT breakout makes all that frustration disappear - solder in any 'standard' PEC11-pinout rotary encoder with or without a push switch. The onboard microcontroller is programmed with our seesaw firmware and will track all pulses and pins for you and then save the incremental value for querying over I2C. Plug it in with a Stemma QT cable for instant rotary goodness with any microcontroller from an Arduino UNO up to a Raspberry Pi.
You can use our Arduino library to control and read data with any compatible microcontroller. We also have CircuitPython/Python code for use with computers or single-board Linux boards.
35 notes
·
View notes