Alle Beiträge von sfambach

GY-NEO6MV2 GPS MODUL

Das GY-NEO6M in der Version 2 besitzt einen Neo 6 M Chip der die Positionsbestimmung via GPS erlaubt. Obwohl der Chip alle möglichen Schnittstellen bietet, habe ich leider nur die Version mit herausgeführter serieller Schnittstelle gefunden. Ich habe dieses Modul vor geraumer Zeit beim schnellen Ali für rund ~4€ mit Antenne erstanden. Es sollte mittlerweile aber schon günstigere Module geben.

Ansichten

Technische Daten

Anschlusspins4
Led1 -Blinkt wenn Verbindung aufgebaut ist
Schnittstelleseriell
Boudrate 9600
Stromversorgung3V – 5V / +Akku on board für Speicher
SpeicherEEPROM für Configuration
AntenneKeramik
Größe 25 mm x 35 mm x3mm

Anschluss

VCCSpannungsversorgung 3V – 5V
RXEmpfangen – serielle Schnittstelle
TXSenden – serielle Schnittstelle
GNDMasse

Beschaltung

Beschaltung Neo 6M Modul an ESP32 Wroom

Biliotheken

https://github.com/mikalhart/TinyGPSPlus/blob/master/src/TinyGPS%2B%2B.h (Mein Favorit)

https://github.com/cristiansteib/GPS-neo-6m

Testprogramm

Das Testprogramm ist ein Stückwerk aus ein paar Beispielprogrammen, welche ich im Netz gefunden habe. die RX TX Pins müssen je nach Board angepasst werden. Für Arduino Boards, die nur einen seriellen Port besitzen, kann der SoftwareSerial verwendet werden (Hier ein Beispiel Link)

So sieht es auf der Console aus.

Consolen Ausgabe

Probleme

Das Modul braucht bis zu ein paar Minuten bis es genügend Satteliten für die Positionsbestimmung gefunden hat. Also am Anfang nicht wunderen dass keine Position bestimmt wird.

Ich dachte am Anfang die Position ist etwas ungenau. Dies scheint aber der Java Api zur OpenStreetMap zu liegen unter Google stimmen die Koordinaten. Auf der Open StreetMap Webseite stimmt sie auch.

WeMos D1 R32 ESP32

Der WeMos D1 R32 ESP32 ist ein Arduino Board nachbau und besitzt kompatible Anschlüsse zum Arduino Uno.
Die IOs  arbeitet jedoch nur mit 3V anstatt mit den gewohnten 5V, was zu Inkompatibilitäten zu manchen Erweiterungsplatinen (Shields) führen kann. Der Preis liegt bei AliExpress unter 5 Euro.

Das schöne an diesem Board ist der ESP32 Prozessor, wecher über WLan und Bluetooth und noch über ein paar weitere Features verfügt.

In diesem Beitrag wird nur die Inbetriebnahme des Boards behandelt, andere Aspekte wie Funktionsumfang des ESP32 usw. können den ensprechenden Artikeln entnommen werden.

Ansichten

Überblick

Name WeMos D1 R32
ESP32
Anzahl/CPU
1/ESP 32
Takt (MHz)240
Kerne2
Digital IOs / Pins36/28
Analog inputs18
PWM16
SPI4
Flash Speicher
SRam (KB)520
EEPROM (KB)4 KB
WiFi802,11 b/g/N
Bluetooth
VerschlüsselungWEB / WPA2 / TKIP /AES
Bluetooth4.1
UART3
I2C2
Ethernet-
Video-
Sound-
USB1 Micro
Betriebsspannung [V]3,3
Eingangsspannung3,3 - 9
Strom (mA) / Standby (mA)
Größe l x b x h68,6 x 53,3
Gewicht [g]< 25

Pins

Wire: SCL  22 / SDA 21

A0 = 2

A1 = 4

A2 = —

A3 = —

A4 = —

A5 =–

Programmierung

Arduino Programmierumgebung

Wenn der ESP 32 vorher noch nicht benutzt wurde muss die Arduino Gui noch angepasst werden. Infos auch auf GITHUB.

Im Datei Menü den Punkt Einstellungen wählen.

Arduino Gui Menü

Jason Datei eintragen:
https://dl.espressif.com/dl/package_esp32_index.json

Jason eintragen

Danach über den Boardmanager den ESP32 installieren. Menü Tools -> Board: *** -> Boards Manger …

Boardmanager auswählen

ESP 32 in der Suchleiste eingeben und mit Enter bestätigen. Im bestem Fall erscheint nur ein Eintrag, diesen installieren.

ESP32 Auswählen und installieren

Noch das richtige Board auswählen. (Andere Boards funktionieren sicher auch)

Testprogramm

Als Testprogramm habe ich das WiFiClient Beispielprogramm genommen und etwas angepasst. Bitte die WLAN Daten entsprechend anpassen.

Nicht schön aber so sieht es bei mir aus:

Für das Programm braucht ihr eine Gegenstelle. Hierfür könnt ihr das kleine Java Tool nehmen, dass ich bereits in anderen Projekten verwendet habe. Beim Starten den port 88 angeben und/oder im Programm ändern.

Quellen

https://www.wemos.cc/
https://github.com/SmartArduino/SZDOITWiKi/wiki/ESP8266—ESPduino-32
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md

Arduino PS2 Controller Platine Grundlagen

Verkaufsname: 2018 Arduino Shield Expansion Board 6-12V with 4 Channels Motors Servos Ports PS2 Joystick Remote Control 

Ich habe die Erweiterungsplatine im Set inclusive PS2 Controller/Empfangsmodul, Arduino Uno und USB Kabel, beim schnellen Ali für unter 26€ gekauft.

!!!Vorab um ein paar Fehler zu vermeiden, ist es sinnvoll eine externe Spannungsquelle an den Arduino anzuschliessen, der Strom über den USB Port reicht leider nicht aus!!!

Aktuelle Status ist noch Draft, bitte meckern 😉

Überblick

Die Platine (hier in Version 2.1) ist beeindruckend vielfältig. Die wichtigsten Daten hier im Überblick:

  • Playstation 2 Anschluss für einen Controller-Empfänger.
  • 4 Motor Anschlüsse mit Motorbrücke
  • 6 Servoanschlüsse – 2 „Normale“ + 4 Über den PWM Chip
  • I2C Anschluss nach aussen geführt
  • Anschluss für einen HC-SR04 oder kompatiblen Sonarsensor
  • Anschluss für ein HC-06 kompatibles Bluetooth modul
  • Stromanschluss 6-9V
  • Stromanschluss Klemmen für +5V???
  • JMP Jumper zum deaktivieren on Board Spannung
  • JP1 Zur deaktiveren der 5V Spannung???

Ansichten

Beschaltung

Beschriftete Frontansicht

Einsatz

  • Als Morotplatine mit zuätzlichen Erweiterungen
  • Zur Steuerung von Robotern
  • Fernsteuerung diverser Fahrzeuge

Programmierung

Die Einbindung von Bibliotheken im Generellen ist unter folgenden Link beschrieben, hier werde ich nicht mehr näher darauf eingehen.
http://fambach.net/arduino-ide#Bibliotheken

Motorsteuerung

Die Motorbrücke wird über den I2C Bus angesteuert und ist mit der Adafruit Motor V2 Bibliothek kompatibel. Die Adresse ist 0x60.

Diese ist über den folgenden Link erhältlich:

https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library

Deren Verwendung habe ich schon einmal im Artikel zur Motor Platine V2 beschrieben :

Das Programm des Artikels habe ich einfach mal auf den UNO dieses Projektes gespielt und siehe da die Motoren drehen.

Servos

Es gibt 2 direkt mit dem Arduino verbundene Servos und 4 die über die Motorbrücke über den I2C Bus verbunden sind.

2 Direkt ansteuerbare Servos

Pinbelegung

Servo Arduino Pin
15
26

Testprogramm

Die Anschlüsse befinden sich direkt neben dem Stromanschluss. Der Masse Pol des Servos begfindet sich an der Platinenkante. Die beiden Servos hängen an den Ardunio Pins 5 und 6. Sie sind über die, in der Arduino-Bibliothek integrierte Servosteuerung, regelbar. Hier ein Beispiel:

P.S. Sollte die Servos unfug machen, mal eine extene Spannungsquelle anschliessen die USB Spannung reicht für dieses Board nicht aus.

4 über PWM ansteuerbare Servos

Für die Servos gibt es ebenfalls von Adafruit eine Servo-Treiber Bibliothek:

https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

Testprogramm

Eingebunden werden kann die Bibliothek sowohl über das GitHub Zip als auch über den Labrary Manager.

Pinbelegung

Servo Nummer Servo PWM Pins
(Nicht Arduino Pins)
10
21
314
415

Das folgende Programm lassen sich alle Servos drehen.

Ich habe noch eine zweite Version bei der die Position des Servos in Grad angegeben werden kann:

Die Adafruit Servo PWM Biliothek ist auch in der Adafruit Motor Bibliothek eingebunden, somit können die Servos auch über diese angesteuert werden. Dies ist im Beispiel des Herstellers der Fall.

PS2 Schnittstelle

Für die PS2 Schnittstelle gibt es eine Bibliothek die sich PS2X nennt und auf Github verfügbar ist hier der Link:

https://github.com/madsci1016/Arduino-PS2X/zipball/5d2be701af64d826d268301d83119a6d2ad04f15

Pinbelegung

Die Pinbelgung für den Controller ist wie folg zu definieren:

PinBeschreibung
12DAT
11CMD
10SEL
13CLK

Testprogramm

Als Testprogramm habe ich das Beispiel aus der Bibliothek verwendet und nur die Pins angepasst:

SR04

Pinbelegung

PinFunktion
7 Echo
8Trigger

Testprogramm

Den HC-SR04 habe ich schon einmal in folgenden Artikel getestet. Das Programm aus dem Artikel habe ich bezüglich der Pinbelegung angepasst und erfolgreich getestet.

http://fambach.net/ardunino-mit-dht10

I2C

Der I2C Bus ist auf der Oberseite der Platine gut beschriftet. Ich war mir unsicher welchen Mehrwehrt ich hier erzeugen könnte. Somit habe ich nur getestet ob die herausgeführte Schnittestelle auch funktioniert. Zum Test habe ich ein HMC5883L am I2C Bus angeschlossen, um einen Verbraucher zu haben.
Zum testen benutzte ich denn einen I2C Scanner den ich im Internet mal gefunden und etwas angepasst habe.

Und siehe da es funktioniert … nicht wirklich überraschend.

HC-06 Bluetooth

Ich habe aktuell weder eine HC-06 kompatibles Board zur Hand noch einen Anwendungszweck hierfür also lasse ich diesen Test mal aus. Schickt mir ein HC kompatibles Modul und ich teste es 😉

Fazit

Ich finde dies Platine toll, sie bietet fast alles um einen kleinen Roboter aufzubauen. Der hohe Stromverbrauch ist sicherlich ein Nachteil, jedoch kommt der nicht zuletzt auch von PS2 Empfänger.

Ich habe mir das Board im set gekauft weil ich eine Fernsteuerung brauchte. Zudem bietet es noch Anschlussmöglichkeiten für 4 Motoren, 6 Servos, einen Entfernungssenors, 1 Bluetooth Modul und diverser I2C Geräte. Mehr kann man für den Paketpreis von unte 25 € nicht erwarten. Wer nur die Platine braucht, kann sie für rund 16€ erwerben.

Probleme

Nichts geht, die Servos Ruckeln, alles ferhält sich doof …

Wenn nichts so richtig Funktioniert kann es an den folgenden Punkten liegen:

  • Die Spannung ist zu gering – Externe Spannungsquelle anschliessen
  • Falsche Version des Boards – Die getestete ist V2.1
  • Anderer Servo Hersteller – Ich verwende Billigware aus Fernost 95G, andere Servos brauchen evtl. andere Frequenzen.

Servo 3-6 gehen nicht

  • Achtung Servos können nicht mit der Standard Arduino Servo implementierung angesprochen werden, bitte die entsprechende Adafruit Bibliothek verwenden (Sieht Beispiel).
  • Anderer Servo Hersteller – Ich verwende Billigware aus Fernost 95G, andere Servos brauchen evtl. andere Frequenzen.

Projekte

Natürlich will ich die hier erworbenen Kenntnisse in einen kleinen Projekt anwenden. Sehr wahrscheinlich kommt ein Ferngesteuertes Auto dabei heraus.

Der Link zum Projekt kommt noch nach Fertigstellung.

Quellen

https://www.google.com/search?q=servo+daten+sc90&oq=servo+daten+sc90&aqs=chrome..69i57.3435j0j7&sourceid=chrome&ie=UTF-8

http://www.7gp.cn/archives/195  (Hersteller Link)
http://www.7gp.cn/archives/409  (Hersteller Link) 
http://www.7gp.cn/archives/475  (Hersteller Link) 

https://github.com/madsci1016/Arduino-PS2X/zipball/5d2be701af64d826d268301d83119a6d2ad04f15

Raspberry PI mit SATA im Gehäuse

Ich habe mir mal wieder was zum Basteln bestellt. Einen Raspberry PI 3B, eine Zusatzplatinen mit einem SATA Anschluss und ein passendes Gehäuse.

Diese Kombi soll den PI im Keller ablösen, den ich als Entwicklungsserver verwende. 

Komponenten

Ich verwende folgende Komponenten:

  • Raspberry PI 3 B
  • MakerHawk Raspberry Pi X820 2.5 Inch SATA HDD/SSD USB3.0 Storage Expansion Board 
  • MakerHawk Upgrated Raspberry Pi Case
  • 120 GB SATA (Kingston)
  • 16GB SD Karte (Sandisc)

Zusammenbau

Board Zusammenschrauben

Es sind zwei Abstandshaltertypen im Set. Einmal kurz mit M2/M2,5 Schauben und einmal etwas länger mit M3 Schrauben. Die etwas längeren auf der Unterseite anbringen, wo auch später die Festplatte eingesteckt wird. 

Danach die kürzeren Abstandshalter auf der Oberseite anbringen.

Den Pi noch aufschrauben und die Blindkappe aus dem Breiten Steckplatz rechts unten ziehen. Dieser ist für den Schalter. Der daneben liegende 5 Voltanschluss kann für den Lüfter im Gehäuse verwendet werden.

Hdd einstecken und verschrauben. 

TIPP: Wer jetzt schlau ist probiert das Ganze schon mal aus, bevor es ganz zusammen geschraubt ist. Dann muss es später nicht wieder demontiert werden.

Das Gehäuse bestücken

Die 4 Schrauben auf der Rückseite des Gehäuses lösen, dann lässt sich der Deckel hochklappen.

Die Platine mit dem PI SD Karten Slot nach vorne einsetzen.

Auf der Unterseite verschrauben.

Gehäuse verschliessen und schon kann es los gehen.

Installation

Die Installation kann nach belieben durchgeführt werden, hier ein Beispiel dafür wie es klappen könnte.

http://fambach.net/wp-admin/post.php?post=359&action=edit
Headlessinstallation

Hier wird noch beschrieben wie die dynamischen Daten auf die SSD kommen.

http://fambach.net/wp-admin/post.php?post=1487&action=edit
Dynamische daten auf SSD verschieben.

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

Menü Klassen für LCD Displays

Da ein Menü auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalitäten in Klassen gepackt.

Komponenten

Hardware

Software

  • Arduino IDE
  • LiquidChristal Lib (Kann über den Bibliotheksmanager installiert werden, siehe auch hier )
  • Meine Menu Lib (siehe unten)

Ziele

  1. Schritt einfache Header mit Klassen, die in einem Hauptrogramm verwendet werden können (erledigt).
  2. Schritt Verpacken der Klassen  als Arduino Lib welche in die Gui Importiert werden kann. (erledigt)
  3. Weitere Menüpunkt Varianten erstellen. (Kommt vielleicht noch)

Installation

Download

Die Lib kann bei GitHub runter geladen  werden (Hier der Link).

Hier könnt ihr sie direkt als Zip-Datei herunterladen.

Arduino IDE

Das Zip könnt ihr in der Aruino GUI installieren, siehe auch hier.

Testprogramm

Bei der Lib ist ein Testprogramm dabei, welches ihr über die Examples auswählen könnt.

LCD Menu Lib -> LCDSchieldTest

Hier seht ihr wie es geht.

Das Programm kompilieren und auf den Arduino spielen.

Wenn ihr ein andere Board verwendet bzw. nicht die LCD Keypad Platine, müsst ihr die Einstellungen für die Knöpfe und das LCD Display entsprechend euere Konfiguration anpassen.

Erklärung

Das Menü wird in der Funktion buildMenu() aufgebaut. Hier wird ein Haupmenüknoten erstellt, an den dann der Rest angehängt wird.

Folgende Knoten stehen aktuell zur Verfügung:

ItemMenu – Menü  -> Kann alle anderen Menüpunkte als Kind bekommen. Kann auch als Untermenüpunkt verwendet werden.

ItemBool – Schalter -> Dieser Menüpunkt kann ein und ausgeschaltet werden.

ItemInt – Ganzzahlenwert -> Hier können integer Werte erhöht oder vermindert werden. Min und Max geben die Schranken an.

Die Callbacks werden im Beispiel nicht benutz, diese könne dazu verwendet werden eine Funktion in eurem Programm aufzurufen wenn sich der Wert eines Menüpunktes ändert.

Navigation im Menü

Oben steht am Anfang das Hauptmenü.

Unten steht der 1. Menüpunkt. Mit den rechts/links Tasten könn ihr den ensprechenden Menüpunkt auswählen. Mit runter springt ihr in den Menüpunkt, mit hoch springt ihr wieder raus.

Die Menüs können beliebig verschachtelt werde, wie ihr an Submenue 1 und 2 seht.

Ausblick

Für mich reicht die Bibliothek erst mal, ich habe aber noch ein Paar Ideen vielleich werde ich die bei Gelegenheit nochmal umsetzen:

  • Gleitkomma Menüeintrag
  • Balken  Menüeintrag, für kleine Intwerte wird ein Balken angezeigt der die Einstellung symbolisiert.
  • Auswahlliste Menüpunkt (.. Wähle A, B oder C …)
  • zusätzlichen Beispiel für Callbacks

Probleme

Aktuell klappt das entprellen der Tasten im Beispiel nur bedingt. Den Fehler muss ich noch finden und beheben.

Quellen

Arduino LCD Keypad Shield

 

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

Sensor KY-018 Photowiderstand

Das Board KY-018 ist mit einem Licht abhängiger Widerstand und einen Vorwiderstand bestückt.

Daten

Spannung: 3V-5V
Ausgang: analoger Spannungswert

Ich vermute das hier ein GL5528  verbaut wurde.

Ansicht

 

(Front/Rückansicht)

 

 

Beschaltung

Masse
+ V+ (3V-5V)
S Signal

3 G V S.png

Funktionsweise

Verändert sich die Lichtstärke die auf den Sensor trifft, verändert dieser seinen Widerstand. Dies ist am Signalausgang als analoge Größe messbar.

Anwendungsgebiete

Das Sensorboard kann zur Messung der Herzfrequenz, als  Optokoppler oder einfache als Lichtschranke verwendet werden.

Versuchsaufbau

Testprogramm

Hier ein kleines Testprogramm welches den analogen Port 0 ausliest. Hierbei ist zu beachten, dass die Ausgabe invertiert ist (wenig Licht hoher Wert).

void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
}
void loop() {
  int LDR = analogRead(A0);
  Serial.println(LDR);
}

Ausgabe

Bibliotheken

Arduino Bibliothek

Quellen

http://sensorkit.joy-it.net/index.php?title=KY-018_Fotowiderstand_Modul

https://github.com/rdiot/rdiot-s002

http://home.roboticlab.eu/de/examples/sensor/photoresistor

Datenblatt zum GL5528

Datenblatt zur GL55 Serie

Arduino Bibliothek

Gut erklärte Lux berechnung (eng)