Archiv der Kategorie: Uncategorized

Willkommen auf meinem Blog

Ich habe schon ein paar Projekte mit Microcontrollern erfolgreich abgeschlossen. Da ich durch meine Arbeit und Familie manchmal Wochen oder gar Monate lang nicht zum Weitermachen komme, fange ich danach meist wieder von vorne an. Irgendwann war ich es leid, deshalb habe ich mich entschlossen die, dem Internet entlockten Erkenntnisse, aufzuschreiben oder zumindest zu verlinken. Daraus ist dieser Blog entstanden.

Dieser Blog beinhaltet, wie ich hoffen, eine nützliche Sammlung von Beiträgen zum thema Microcontroller. Die Beiträge sind sehr selektiv und meinen aktuellen Interessen geschuldet.

Durch die begrenzte Zeit sind größere Beiträge meinst in thematisch abgeschlossene kleine Stücke unterteilt. Dies ermöglicht mir schnell einen Beitrag abzuschliessen und doppelte Erklärungen zu vermeiden, indem ich sie einfach verlinke.
Leider wirkt sich das nachteilig auf die Navigation aus, leicht kann man den Überblick beim springen zwischen den Beiträgen verlieren.

Inhaltlich liegt ja bekanntlich in der Kürze die Würze, leider aber auch die Missverständnisse. Ich versuche die Sachverhalte immer kurz zu umreissen und mit einen für mich selbstverständlichen Beispielcode oder ähnlichem zu versehen. Dies hilft mir, wenn ich wieder mal nach Monaten neue starte, nicht bei NULL anzufangen.
Leider müssen diese kurzen Skizzen für andere Leser nicht unbedingt verständlich sein. Somit lebt auch dieser Blog von den Kritiken der Leser. Schreibt also wenn euch was nicht klar ist oder nicht gefällt. Positive Kommentare sind natürlich auch was schönes, Kritik ist mir jedoch lieber ;). Der Blog ist so konfiguriert, dass der erste Kommentare von mir freigeben werden muss. Dies soll nicht der Zensur dienen sondern nur den täglichen Spam herausfiltern.

Die Rechtschreibung und ich! Ich bin der deutschen Rechtschreibung nicht wirklich Herr. Auch tendiere ich dazu bestehende Sätze am Anfang zu verändern ohne den Schluss richtig anzupassen. Daraus entstehen dann meist unverständliche Konstrukte. Ich lese die Beiträge 2-3 mal gegen, dennoch fallen mir nach dem Veröffentlichen immer wieder Patzer auf. Diese bitte ich zu entschuldigen. Ich werde sie, sobald sie meine Aufmerksamkeit erringen, korrigieren.

An diese Stelle bleibt mir nicht mehr übig als euch viel Spaß mit meinem Blog zu wünschen, möge die Macht mit euch sein ;).

SFA

Arduino LCD Keypad Shield

Die LCD, Keypad Zusatzplatine passt auf den Arduino Uno und kompatible Boards.

Es hat wie der Name schon impliziert ein blaues 2×16 Zeichen LCD Display und 6 Tasten.

Ansichten

Oben

  • Ein grosses Display in der Mitte
  • Links oben die Einstellung für den Kontrast
  • Unten die Knöpfe (Select, Left, Up, Down, Right und Reset)

Unten

Unten gibts ausser den Pins nicht viel zu sehen.

Beschaltung

Pin Function
Analog 0 Köpfe (select, up, right, down and left)
Digital 4 DB4
Digital 5 DB5
Digital 6 DB6
Digital 7 DB7
Digital 8 RS (Daten oder Singalanzeige)
Digital 9 Enable (Aktivierung)
Digital 10 Beleuchtungssteuerung

Bibliothek

Im Bibliotheksmanager nach Liquid Crystal suchen und die Bibliothek installieren.

Wie es geht seht ihr hier.

Testprogramm

Das Testprogramm habe ich nicht selbst geschrieben, sondern ich verwende das von DFRobot.

Hier der Code ArduinoLCDKeypadShieldTest

Einfach kompilieren und aufs board laden. Wie es geht seht ihr hier.

So solltes es aussehen:

Wird ein Knopf gedrück, wird dieser links unten angezeigt.
Rechts werden die Sekunden seit dem Programmstart hochgezählt.

Fehlersuche

Das Display zeigt nicht ans

Links oben ist eine Einstellschraube für den Konstrast. Diese nach rechts drehen bis die Buchstaben und Ziffern sichtbar sind.

Quellen

https://www.arduino.cc/en/Reference/LiquidCrystal

Nr.01 – Keypad Shield

https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

https://forum.arduino.cc/index.php?topic=424620.0

http://arduino-projekte.de/index.php?n=25

 

Arduino SSD1306 Monochrom OLED 128×64 I2C

Ich möchte für ein kleinen Projekt ein kleines 128×64 Pixel großes Oled Display anschliessen. Hierfür habe ich mir einen kleinen Prototyp erarbeitet den ich hier gerne vorstellen möchte.

Ich betreibe das Display an einem Arduino Uno über den Wird Bus.

Komponenten

Hardware

  • Arduino Uno oder ähnlich
  • Oled Display SD1306
  • Prototyp shield oder ein Steckbrett
  • Ein paar Verbindungskabel

Software

  • Arduino IDE (Installation)
  • Adafruid Adafruit_SSD1306 Unified Bibliothek
  • Testprogramm aus der Bibliothek

Versuchsaufbau

Ich verwende die Prototypzusatzplatine (siehe hier).

Das Display wird über den Arduino mit Strom versorgt. Zusätzlich findet die Datenkommunikation über den Wire Bus statt, dieser liegt auf Port A4 und A5 des Arduino Uno.

Schaltplan

Bibliothek

Es gibt auch andere Bibliotheken für das SD1306 aber die Adafruit war mit geringen anpassungen die für mich die am leitesten zu verwendende.  Bei anderen hatte ich zusätzlich das Problem, dass der Speicher des Arduino zu klein ist.

Entweder über GITHUB die neuste Version holen oder über den Bibliotheksmanger installieren.

https://github.com/adafruit/Adafruit_SSD1306

Wie es geht steht hier.

Programmierung

Vorbereitung der Bibliothek

Eine sehr lästige Eigenschaft der Adafruit Bibliothek ist, das hier das define der Displaygröße für den Präprozessor in der Bibliothek geändert werden muss. Dieses steht standardmässig auf 128×32 Pixel.

Also Bibliothek auf der Festplatte suchen, die Datei heist:

Adafruit_SSD1306.h

In der aktuellen Version wird die Zeile74 Ausdokumentiert und die Zeile 73 reingenommen.

Beispielprogram

Ich verwende ein Beispielprogramm, welches zur Bibliothek gehört:

Pfad: Adafruit SDD 1306 -> sdd1306_128x64_i2c

Wie ihr ein Tesprogramm auswählt, findet ihr hier.

Das Programm auf den Arduino schieben, und schon sollte es klappen.

Weitere Projekte

NodeMCU V3 mit Oled Display aufmotzen

Quellen

https://github.com/adafruit/Adafruit_SSD1306

 

 

Arduino IDE

Ich habe festgestellt, dass sich in meinen Beiträgen, Anleitungen welche die Arduino IDE betreffen, wiederholen. Diese möchte ich hier sammeln. Es wird hier keine kommplette Beschreibung der IDE geben, ich werde den Artikel aber bei Bedarf ergänzen um ihn zu verlinken.

Die Arduino IDE wurde ursprünglich zur Programmierung der Arduino Boards (Uno, Mega, Leonardo …. ) entwickelt und für diese kostenlos zur Verfügung gestellt.
Mittlerweile ermöglicht sie auch das Programmieren anderer Boards wie Beispielsweise diverse ESP Boards.

Installation

Die Arduino IDE kann über folgenden Link gedownloaded werden:

https://www.arduino.cc/en/Main/Software

Wenn der Windows Installer lässt sich per Doppelklick starten und ist selbsterklären.

Auf der Arduino Seite gibt es hierzu eine detailierte Anleitung, weshalb ich an dieser Stelle auf sie verweisen möchte (Link).

Bibliotheken installieren

Die Arduino IDE liefert einen Satz von Biblitheken, wie zum Beispiel das Ansprechen des seriellen Ports, mit. Sobald es aber um Periferie geht, die etwas komplizierter ist, müssen sog. Softwarebibliotheken installiert werden. Diese dienen meist einen besonderen Zweck, wie das Ansprechen einer OLED Anzeige oder eine bestimmten Sensors.

Diese könne auf unterschiedliche Arten installiert werden. Entweder Arduino kennt die Bibliothek, dann kann der Bibliotheksmanager verwendet werden oder sie ist nicht bekannt, dann muss sie manuell installiert werden.

Bekannte Bibliotheken

Bekannte Bibliotheken sind solche, welche die Arduino IDE kennt. Diese können über den Bibliotheksmanger gesucht und installiert werde.

Wähle den Bibliotheksmanager im Menü aus (Sketch -> Include Library -> Manage Libraries).

Danach erscheint ein neues Fensster mit dem Manger. Die einfachste Möglichkeit eine Bibliothek zu finden ist das Suchfeld oben links.
Hier den Namen des Sensors oder anderen Moduls eingeben. Falls das Modul bekannt ist, folgt eine Auswahl von ein odere mehreren Bibliotheken.

Eine davon auswählen und den Installation-Knopf drücken.

 

Unbekannte Bibliotheken

Ihr benötigt eine Zip Bibliothek für den entsprechenden Zweck. Diese könnt ihr zum beispiel bei GITHUB herunterladen.

Nach dem Download wählt ihr den Menüeintrag Sketch -> Include Library -> Add .Zip library.

 

Dort könnt ihr die heruntergeladenen Datei auswählen und mit dem Knopf Open installieren.

Wenn alles gut gegangen ist könnt ihr nun die Bibliothek auswählen, und deren Beispielprogramme wählen.

Tips

Manchmal muss man mehrer Bibliotheken ausprobieren um die, für den Zweck richtige, zu finden.

Achtet darauf für welche Boards die Bibliotheken sind, nicht jedes Board arbeitet mit jeder Bibliothek zusammen.

Beispielprogramm auswählen

Jede gute Bibliothek hat ein oder mehrere Beiepielprogramme mit dabei. Diese können über den Menüpunkt File -> Examples ausgeählt werden. Sie sind nach den Installierten Bibliotheken gruppiert.

Nach Auswahl eines solchen Testprogramms, erscheint ein neues Fenster mit dem dem entsprechenden Code.

Quellen

https://www.arduino.cc/en/Main/Software

https://www.arduino.cc/en/Guide/HomePage

ESP32 WiFi Kit 32

Ich habe gleichzeitig mit dem ESP Lora 32 auch noch die kleinere Version mit bestellt.  Sie ist etwas günstiger (~17€), ohne externe Antenne und ca 2mm kürzer. Bis auf die Netzwerk Sendestärke scheinen die beiden Boards sich nur minimal zu unterscheiden.

Es passt gerade so auf ein Steckbrett, so dass an beiden Seiten noch ein Pin zur Beschaltung frei ist. Die Pins wurden in meinem Fall mitgeliefert und müssen selbst eingelötet werden.

In diesem Beitrag sind nur die Eigenheiten beschrieben, für die Programmierung, Fehler … sei auf den Lora Beitrag verwiesen.

Ansicht

Frontansicht

Display zwei Knöpfen und USB Anschluss.

Rückansicht

Anschluss ( JST-PH 2Pin 1.25mm)  für einen Akku .

 

Überblick

Name WiFI Kit 32  
Anzahl/CPU
1 / ESP 32
Takt (MHz)240
Kerne1
Digital IOs / Pins36 / 28
Analog inputs18
PWM16
SPI4
Flash Speicher
SRam (KB)520
EEPROM (KB)4 MB
WiFi802,11 b/g/N
Bluetooth
VerschlüsselungWEB / WPA2 / TKIP /AES
Bluetooth4.1
UART3
I2C2
Ethernet-
Video 0.96 OLED display
Sound_
USB1 Micro CP2102
Betriebsspannung [V]3,3
Eingangsspannung3,3 - 7
Strom (mA) / Standby (mA)
Größe l x b x h53 x 25 x 12
Gewicht [g]??

Pinning

WIFI_Kit_32-Diagram

 

Fazit

Das ESP32 WiFi Kit 32 Board ist netzwerktechnisch nicht so gut ausgestattet wie sein großer Burder das Lora, aber wer nicht die Weitstreckenkommunikation benötigt, ist mit dem etwas billiergerem Board gut bedient.

 

Ähnliche Beiträge

ESP32 WiFi Lora 433

Quellen

https://en.wikipedia.org/wiki/ESP32

http://esp32.net/

https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series#instructions

https://www.heise.de/make/artikel/Grosser-Bruder-Espressif-ESP32-3256039.html

https://github.com/espressif/arduino-esp32/issues/758

Herstellerseite

Arduino Uno + WiFi

Hier geht es um einen Chinaimport und nicht um den offiziellen Uno WiFi. Die Platine hat einen vollständigen Ardunio Uno mit Atmega Prozessor und einen ESP8266 Chip on board. Über Dipschalter, kann jeweils der Uno mit dem USB, der ESP mit dem USB oder der ESP mit dem UNO verbunden werden.

Für den Betrieb kann eine externe Wlan-Antenne angeschlossen werden. Es sind zusätzlich ESP-Pins herausgeführt, die Beschaltung steht auf der Rückseite.

Daten

Name Uno + Wifi  
Anzahl/CPU
2 / ATmega328P + ESP 8266
Takt (MHz)16 / 80
Kerne1
Digital IOs / Pins14 / 4
Analog inputs6 / ?
PWM6 / ?
SPI1
Flash Speicher 32 KB / 8 MB
SRam (KB)2 / 128
EEPROM (KB)1 / -
WiFi- /2,4 GHz 802.11 b/g/n
Verschlüsselung- / WEB / WPA2 / TKIP /AES
Bluetooth-
UART1 / 1
I2C1 / 1
Ethernet- / -
Video-
Sound-
USB1 Micro
Betriebsspannung [V]5
Eingangsspannung7 - 12
Strom (mA) / Standby (mA)< 500
Größe l x b x h68,6 x 53,3
Gewicht [g]>25

Ansichten

 

 

Jumper Einstellungen

DIP

Programmierumgebung

UNO

Dipschalter 3,4 auf ON Rest auf OFF

ESP8266

Dipschalter 5,6,7 auf ON Rest auf OFF. Ein Reset vor der Programmierung kann nicht schaden.

Test Programme

ESP8266 Durchreiche

Das folgende Programm reicht alles was auf dem seriellen Port eingeht an den verbundenen Server weiter und alles was über das  Netz rein kommt wieder auf den seriellen Port. Das Listing ist etwas lang weil ich die Netzwerkkommunikation aus einem anderen Projekt übernommen habe, deshalb hier nur die gelinkte Datei.

UARTEcho.ino

Alles Wichtige passiert in der loop Funktion. Die Daten für den Accesspoint und den Server müssen entsprechend angepasst werden.

Nachträglich habe ich auch einen Code von Arduino in den Beispielen der GUI gefunden. Die Datei heisst Wifi2Serial.ino.

Uno Echo

Das Testprogramm des Uno’s ist gleichfalls trivial. Es schreibt alles was er über den seriellen Port empfängt wieder auf diesen zurück.

String buf = "";

void setup(){
  Serial.begin(9600);
  while(!Serial){ delay(1);}
  buf.reserve(200);
  Serial.println("UNO started");
}

int ib = 0;
void loop(){
  while (Serial.available()){
    delay(4); // allow buffer to fill
    ib = Serial.read();
    buf += ((char)ib);

    if(((char)ib)== '\n' || buf.length()== 200){
        Serial.print("Echo: ");
        Serial.print(buf);
        buf = "";
    }
  }
}

SerialEcho.ino

Testen

Zum testen kann mein Socket-Tool verwendet werden.

Java Socket Konsolen Server

Dipschalter1,2 auf ON, der Rest auf OFF.

Die Socket Console starten.

Im Feld neben den „send“ Knopf kann ein Text eingegeben werden. Mit Betätigung des „send“ Knopfes, wird der Text an den Client geschickt. Wenn alles geklappt hat, kommt der Text mit einem „Echo: “ davor zurück.

Durch die Testausgaben des ESP auf den seriellen Port, kommen ein paar mehr Echos zurück als eingegeben wurden. Auch fehlt nach der Serververbindung der „New Line“- Befehl. Weshalb erst der 2. eingegeben Text gut sichtbar ist. Für einen ersten Test des Boards reicht es jedoch aus.

Kompatible Zusatzplatinen

Arduino Prototyp Platine (V1)

Motor Platine V1

Quellen

https://github.com/jandrassy/UnoWiFiDevEdSerial1#writing-sketches-for-esp8266

https://github.com/esp8266/Arduino/issues/3004

https://community.blynk.cc/t/uno-wifi-r3-atmega328p-esp8266-board-32mb-memory-usb-ttl-ch340g-compatible-for/21564

https://github.com/gmag11/FirmataMaster

https://www.arduino.cc/reference/en/language/functions/communication/serial/