Arduino – Einführung

Dies ist der erste Teil einer Arduino-Reihe.
Aufgrund aktueller Projekte habe ich wieder vermehrt mit Arduino zu tun, so dass ich in meinen Unterlagen von 2016 rumsuchen und experimentieren musste – also wollte ich meine Unterlagen in diesem Zuge gleich mit digitalisieren.

Meine Projekte führe ich zum Großteil mit dem Arduino Nano durch – einfach aus dem Grund weil es diese Boards im China-Shop im 10er Pack recht günstig gibt.
Normalerweise fangen die Leute mit dem Arduino Uno an – beide Boards (Uno und Nano) unterscheiden sich aber kaum von der Technischen Seite.
Hier der Offizielle Link zum Arduino Uno: https://store.arduino.cc/arduino-uno-rev3
Und hier zum Arduino Nano: https://store.arduino.cc/arduino-nano

Der größte unterschied den man auf dem ersten Blick sieht ist wohl die Größe des Boards an sich.
Der Arduino Nano eignet sich eher für die Steckbrett-Versuche aufgrund der Breadboard-kompatiblen Größe.

Okay.. dann fangen wir mal an.
Wir haben jetzt im Idealfall einen Arduino Uno oder Nano vor uns liegen, ein Steckbrett, ein paar Kabel, ein paar LED´s und ein paar Wiederstände (dazu später mehr).

Wie fangen wir nun an?
Als erstes brauchen wir eine Software um die Programme zu schreiben die später auf den Arduino laufen sollen.
Hierfür nutzt man Standardmäßig die Arduino-IDE welche man in der Version 1.8.5 unter https://www.arduino.cc/download_handler.php?f=/arduino-1.8.5-windows.zip als portable Version herunterladen kann.
Diese habe ich bei mir in das Verzeichnis C:\Arduino\arduino-1.8.5 gelegt. Dort drin befindet sich nun die IDE, welche wir über die Arduino.exe aufrufen können.

Sobald man die IDE Aufgerufen hat, bekommt man einen neuen Sketch angezeigt.
Sketche nennt man die Programme, welche man mit der Arduino-IDE schreibt.
Der neue Sketch sieht dann in etwa so aus:

1
2
3
4
5
6
7
8
9
void setup() {
  // put your setup code here, to run once:
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
}

Im Prinzip gibt es eine setup() Funktion in der man alle relevanten Einstellungen VOR dem Programmstart hinterlegt – und es gibt eine loop(), also eine Endlosschleife, welche immer wieder durch den Arduino aufgerufen wird.
Nun kennen wir auch das Funktionsprinzip des Arduinos – alles wird in einer Endlosschleife ausgeführt.

Um das etwas genauer zu sehen, öffnen wir eines der vielen Beispiele, welche zusammen mit der Arduino-IDE ausgeliefert werden unter: Datei -> Beispiele -> 01.Basics -> Blink
Dieses Blink-Programm läuft Standardmäßig auf jedem Arduino Board. Wenn man jetzt den UNO oder Nano über USB an eine Stromquelle anschließen würde, würde dieses Programm vom Werk aus darauf laufen – und eine LED auf dem Arduino-Board blinken.

Der Sketch dafür sieht dann so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
 
// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Wie oben erwähnt setzen wir in der Setup() Funktion die Einstellungen die vor dem eigentlichen Programmstart feststehen sollen. In diesem Fall wird der GPIO-Pin 13 als Ausgang definiert. An diesem Pin ist in den meisten Fällen eine LED auf dem Board angeschlossen.
In der loop() wird nun gesagt das am Pin 13 ein HIGH Signal angelegt werden soll.
Dies geschieht durch die Funktion digitalWrite() da der Pin 13 ein Digitaler Pin ist.
Da der Arduino mit einer Spannung von 5V arbeitet bedeutet das HIGH Signal hier, das diese 5V durchgereicht werden und die LED leuchtet.
Danach wird über das delay(1000) eine Wartezeit von 1000ms – also einer Sekunde – festgelegt, bevor das Programm weiter ausgeführt wird.
Dann wird ein LOW Signal, also 0V am Pin 13 ausgegeben – damit leuchtet die LED dann nicht mehr.
Und am ende wird wieder eine Sekunde gewartet.

Da uns eine Sekunde zu langsam ist, ändern wir die 1000ms hier einfach mal in 100ms ab.
Wenn wir nun den Arduino über ein USB-Kabel an den PC anschließen, können wir diesen in der Arduino-IDE auswählen:
Unter „Werkzeuge“ -> „Board, Prozessor, Port“: Arduino Nano, ATmega328 on COM3
Über den Button1 (erste Knopf oben links in der Arduino-IDE) kann man nun das Programm kompilieren und schauen ob man Fehler gemacht hat. Für dieses Beispiel werden aber keine Fehler gefunden.
Nun kann man über den Button2 (Rechts neben Button1 in der Arduino-IDE) das Programm zum Arduino geben.
In der IDE sollte dann in etwa so eine Ausgabe erscheinen:

1
2
3
Der Sketch verwendet 1.030 Bytes (3%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2.039 Bytes für lokale Variablen verbleiben. 
Das Maximum sind 2.048 Bytes.

Wenn dieser dann fertig ist, startet er neu und das neue Programm läuft. Was wir nun sehen ist das die LED nicht mehr jede Sekunde blinkt, sondern alle 100 Millisekunden.

Sehr schön! Da haben wir doch schon einiges für den Anfang geschafft 🙂

0  

SQL Server localdb – Mehrere Versionen verwalten

Vor einiger Zeit habe ich HIER schon mal etwas über SQLServer 2012 localdb geschrieben.
Mittlerweile gibt es von der localdb installation mehrere Versionen (Aktuell: 2012 / 2014 / 2016).

Um Herauszufinden welche Versionen auf dem System installiert sind, kann der Befehl „sqllocaldb versions“ genutzt werden:

1
2
3
4
5
E:\Programme\cmder>sqllocaldb versions
Microsoft SQL Server 2012 (11.0.5058.0)
Microsoft SQL Server 2014 (12.0.4100.1)
Microsoft SQL Server 2016 (13.0.1601.5)
Microsoft SQL Server 2017 (14.0.1000.169)

Standardmäßig wird eine neue Datenbank-Instanz über den „Create“-Befehl mit der aktuelleren Version angelegt.
Möchte man eine Instanz mit der 2012er Version anlegen, geht dies so:

1
2
E:\Programme\cmder>sqllocaldb create SQL2012 11.0.5058.0
LocalDB instance "SQL2012" created with version 11.0.5058.0.

Und für die 2014er Version so:

1
2
E:\Programme\cmder>sqllocaldb create SQL2014 12.0.4100.1
LocalDB instance "SQL2014" created with version 12.0.4100.1.

Ebenfalls kann so auch explizit eine 2016er Instanz angelegt werden:

1
2
E:\Programme\cmder>sqllocaldb create SQL2016 13.0.1601.5
LocalDB instance "SQL2016" created with version 13.0.1601.5.

Oder für eine 2017er Instanz:

1
2
E:\Programme\cmder>sqllocaldb create SQL2017 14.0.1000.169
LocalDB instance "SQL2017" created with version 14.0.1000.169.

Read more »

0  

Vorstellung: RDLViewer

Hier möchte ich mal den RDLViewer vorstellen.
Im Prinzip macht er nichts anderes als Lokale SQL Server Reports mit integrierter Datenquelle im XML Format anzuzeigen.
Entwickelt wurde das ganze ursprünglich mal als Kostenfreie Reporting-Alternative für diverse interne Tools.
Ziel des ganzen war dabei möglichst einfach Berichtsdaten ausgeben – und aus diesen einen Bericht erstellen und anzeigen zu können.

Das ganze sieht dann z.B. mit dem Beispiel-Bericht (einer kleinen Rechnung) wie folgt aus:
1_testbericht

Read more »

0  

MarkdownEditor

Heutzutage scheint jeder seinen eigenen Markdown-Editor zu bauen..
Naja, das Projekt liegt schon länger auf meiner Platte rum – damals wusste ich noch nichts davon das es mittlerweile so viele Editoren für Markdown gibt.

Jedenfalls habe ich auch einen gebaut.
Hauptaugenmerkt dabei war:
– einfache Bedienung
– HTML-Vorschau
– Syntax Highlighting
– Halbwegs ansehnlich

Momentan ist dies eine WinForms anwendung, welche das MetroFramework nutzt.
Die HTML Vorschau wird durch MarkDig gerendert, welcher ein wirklich phänomenaler MD2HTML Konverter darstellt – und für die Eingabe und das Syntax Highlighting habe ich die FastColoredTextBox genutzt, welche ein paar RegEx´s von SlimDown nutzt.

Das ganze sieht dann so im „Bearbeitungs-Modus“ aus:
markdownEditor1
Read more »

0  

LDAP – 8. SSL und TLS in OpenLDAP

​Da wir unser LDAP nicht nur unverschlüsselt, sondern auch verschlüsselt nutzen wollen, hier eine Anleitung wie wir SSL/TLS mit OpenLDAP zum laufen bekommen.

SSL/TLS Zertifikat erstellen
Dies muss in einem Debian (Hostsystem oder Buildroot) erfolgen:

# apt-get install gnutls-bin
# certtool --generate-privkey --outfile /etc/ssl/private/ldap-ca-key.pem
# certtool --generate-self-signed --load-privkey /etc/ssl/private/ldap-ca-key.pem --outfile /etc/ssl/certs/ldap-ca-cert.pem

Die Fragen sollten nach Möglichkeit gewissenhaft beantwortet werden.
Die Schlüssel kopieren wir anschließend in die Openldap Chroot:

cp -a /etc/ssl /chroots/openldap/etc/ssl

Read more »

0  

LDAP – 7. TestSystem & Beispiele

Hier nun ein paar Beispiele für Gogs, Redmine und Dokuwiki zur verwendung von OpenLDAP als User-Backend.

​Gogs
Benutzer: gogstest (befindet sich in der Gruppe „gogs“)
Passwort: test
Einrichtung:

Authentication Type: LDAP (via BindDN)
Authentication Name: LDAP
Host: server.ip
Port: 389
Bind DN: cn=admin,dc=freifunk,dc=net
Bind Password: password
User DN: ou=users;dc=freifunk,dc=net
User Filter: (&(objectClass=posixAccount)(uid=%s)(memberof=cn=gogs,ou=groups,dc=freifunk,dc=net))
First name attribute: givenName
Surname attribute: sn
E-mail attribute: mail

Kein Enable TLS Encryption
kein Skip TLS Verify

Read more »

0  

LDAP – 6. Freifunk-Template für LDAPAdmin

Um im LDAPAdmin (http://ldapadmin.org) die Attribute der LDAP-Benutzer leichter bearbeiten zu können, bietet es sich an ein Template für die eigenen Wünsche zu erstellen.
Dieses Template erweitert das normale „User“ Template um einen Neuen Tab „Freifunk-Account“, der wiederum 3 Tabs beinhaltet: „Benutzer“, „Linux“, und „SSH Key“.
Dieses Template speichert man z.b. in den Eigenen Dateien und teilt LDAPAdmin über „Tools“ → „Options“ → Karteireiter „Templates“ mit, dass es im Verzeichnis für die Eigenen Dateien nach evtl. Vorhandenen Templates suchen soll.
Danach (und nach jeder Änderung an den Templates) muss man LDAPAdmin neu starten, da die Templates nur beim Start geladen werden.
Nach dem Neustart sollte in der „normalen User-Form“ die Erweiterten Eigenschaften unseres Freifunk-Accounts drin stehen:

LDAPAdmin-1LDAPAdmin-2LDAPAdmin-3
Read more »

0  

LDAP – 5. Einrichtung Openssh mit Public Key

Hier eine Anleitung zur Verwendung von Public/Private-Key Authentifizierung an OpenSSH über LDAP.

​OpenLDAP
Als erstes brauchen wir ein Schema im LDAP.
Dieses definiert die Objektklasse „ldapPublicKey“ welche uns erlaubt das Attribut „sshPublicKey“ nutzen zu können.
Read more »

0  

LDAP – 4. PAM mit OpenLDAP

Hier nun eine Anleitung für Debian zur Benutzer-Authentifizierung mit libpam über LDAP.

Zuerst die benötigten Debian-Pakete installieren:

apt-get install libnss-ldap libpam-ldap

Read more »

0  

LDAP – 3. OpenLDAP Suchfilter

Nach dem einrichten des LDAP-Servers können wir nun anfangen diesen zu benutzen.
Um Einträge im LDAP-Verzeichnis wieder zu finden gibt es das Programm „ldapsearch“ mit welchem man LDAP-Intern als LDAP-Client suchen kann.
Möchte man LDAP-Einträge von externen Programmen finden, fungiert dieses als LDAP-Client und man muss in diesem diverse „Suchfilter“ angeben um die gesuchten Einträge zu finden.
Read more »

0  
Unterstütze den Frickelblog!