Archiv der Kategorie: Arduino

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

Frontansicht mit den Verbindern für Erweiterungsplatinen, dem Stromanschluss, USB-Anschluss und einem  Resettaster. Zusätzlich zu den normalen Achlüssen befindet sich noch weitere für den ESP8266,  ein Antennenanschluss und ein Dip-Schalter zur Einstellung der seriellen Schnittstelle an Bord.

Hier ein paar technische Daten und die Pinbelegung der nach aussen geführten ESP Pins.

 

Jumper Einstellungen

DIP

Programmierumgebung

UNO

Dipschalter 3,4 auf ON Rest auf OFF

ESP8266

Dipschalter 5,6,7 auf ON Rest auf OFF. Sollte das programmieren nicht beginne ist ein Reset de des Boards nötig. Das spielen mit der Reset Methode brachte hier leider keine Besserung.

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 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.

[gistpen id=“776″]

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.

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/

GY-68 mit Sensor BMP85/BMP180

Der Bosch BMP85 ist ein barometrischer Sensor.  Er kann den Luftdruck und die Temperatur messen, um daraus die aktuelle Höhe über 0 zu berechnen.  Der BMP85 wird nicht mehr hergestellt und wurde durch den BMP180 abgelöst. Der BMP180 ist von der Bauform kleiner aber ansonsten fast baugleich mit seinem Vorgänger.  Unterschiede können den gelinkten Datenblättern entnommen werden.  Bei den Kerndaten habe ich bis auf den höheren Stromverbauch beim BMP180 keine Unterschiede feststellen können. (Datenblätter BMP85 / BMP180)
Der Sensor kann mit 1,8v bis 3,6V betrieben werden. Da der Arduino einen 5V I2c Bus hat empfiehlt es sich ein Sensorboard wie das GY-68 zu verwenden.

Ansicht

Daten

NameGY-68 mit Sensor BMP85/180
SensortypBarometer
Thermometer
Betriebsspannung5V
Sensorspannung 1,8-3,6V
BusI2c
Genauigkeit0,01 hPa
0,1°C
Messbereiche300hPa bis 1100 hPa
0°C bis +65°C

Schaltung

Anschluss

GND Masse
SDA I2C SDA
SCL I2C SCL
Vin 5 V

 

Einsatzzwecke

  • Bestimmung der Höhe über 0
  • Ausgleich/Vergleich von Aussen- und Innendruck
  • Warnung vor Überdruck
  • Erhöhung der Genauigkeit bei GPS

Programmierung

Bibliothek

Es gibt von Adafruit zwei Treiber-Bibliotheken. Eine ältere und die neue „Unified“. Beide leisten das Gleiche. Die „Unified“ folgt den Adafruit Programmierrichtlinien für Sensoren und ist somit bei einem Sensorwechsel leichter austauschbar.

Testprogramm

Das Beispielprogramm ist  in der Bibliothek enthalten. Diese habe ich für meine ersten Test verwendet.

Ausgabe

Die Ausgabe sieht erstmal OK aus. Mangels Vergleichswerten konnte ich diese, bis auf die Temperatur, nicht auf ihre Genauigkeit überprüfen. Die Temperatur war rund 2 Grad zu hoch.

Probleme

Generelle I2c Probleme

http://fambach.net/uno-wire-scannen/

Quellen

https://github.com/adafruit/Adafruit-BMP085-Library

https://github.com/adafruit/Adafruit_BMP085_Unified

Uno – Wire Scannen

Der I2c oder auch 2 Wire Bus genannt, arbeitet mit zwei Kabeln und  theoretisch mit einer Geschwindigkeit von bis zu 5 Mbit/s. Für den Hobbybedarf mit Freiluftverkabelung sind es wahrscheinlich eher weniger.

Der Uno hat den Wire-Anschluss am analogen Ausgang 4 und 5. Zum Testen habe ich ein GY-68 Barometer angeschlossen welches auf Port 0x77 des I2C Busses arbeitet.

Schaltung

Programm

Das folgende Testprogramm habe ich mir aus einigen Beispielen zusammen „gesucht“. Es dient dazu, einfach mal zu schauen ob die aufgebaute Schaltung auch richtig verdrahtet ist.
Das Porgram geht alle Adressen des I2C Busses durch und klopft mal beim Empfänger an. Antwortet dieser, wird der Port und am Schluss die Anzahl der gefundenen Teilnehmer angezeigt.

Quellocode

ScanWiree.ino

Ausgabe

Probleme

Das Wire Modul antwortet nicht

Einfach mal SDA und SDC vertauschen.

Sollte das Problem immer noch bestehen, mal veruschen Pullup Widerstände in die Schaltung einzubauen. Der Uno hat allerdings schon Pullups, sollte also eigentlich nicht nötig sein.

Quellen

https://de.wikipedia.org/wiki/I%C2%B2C

https://www.mikrocontroller.net/topic/88806

https://playground.arduino.cc/Main/I2cScanner

https://gist.github.com/tfeldmann/5411375

Arduino – HC-SR04 Entfernungsmesser

Ansteuerung des HC-SR04 Ultraschall-Entfernungsmesser mit Hilfe des Arduino UNO.

Grundlagen

SR-04

Aufbau

Schaltung

(Ich habe nachträglich noch die Pins von 0/1 auf 2/3 geändert weil an 0/1 noch der ISP hängt).

Testprogramm

Hier ein kleines Testprogramm. Es filtert zu kleine und zu große Werte heraus und ermöglicht die Mittelwertbildung über ein definiertes intervall.

[gistpen id=“756″]

SR04Test.ino

Hier könnte jetzt noch der Median angewendet werden um Ausreisser heraus zu nehmen.

In der Praxis bietet es sich wahrscheinlich an die Millimeter weg zu kürzen und nur den Zentimeterwerte, die wesentlich geringeren Schwankungen unterliegen, zu verwenden.

Output

Quellen

http://www.mikrocontroller-elektronik.de/ultraschallsensor-hc-sr04/

 

 

Arduino Motor Platine V1

Die Motorplatine ist perfekt für kleine Roboter-Projekte geeignet, bei denen 2 bis 4 Antriebsmotoren verwendet werden.

Zusätzlich bietet sie Anschlüsse für zwei Servos und die analogen Ports und mit ihnen auch der I2C Bus, sind durchgeschleift.

Überblick

Hier die wichtigsten Daten im Überblick:

  • 2 Servoanschlüsse
  • 2 Motorbrücken
  • 1 Schieberegistert
  • 1 Resetschalter
  • 1 Externer Spannungsanschluss
  • 1 Power LED
  • Jumper – zur Unterbrechung der Boardspannung

Ansicht

Beschaltung

Einsatz

  • Zwei-Achs-Plotter
  • 2 oder 4 Rad-Roboter
  • Pan/Tilt Stativ

Motorbrücken

Mit Hilfe der Motorbrücken können 4 Gleichstrommotoren oder 2  Schrittmotoren (mit 4 Leitungen) betrieben werden. Die L293D Motorbrücken können Motoren bis zu einem Strom vom 600mA versorgen. (Kurzzeitig bis zu 1,2 A). Wird ein höherer Strom benötigt können weitere L293D IC’s huckepack auf die vorhandenen aufgelötet und parallel betrieben werden.

Das Schieberegister, ermöglicht es mit nur 3 Pins des Arduinos die Drehrichtungen der Motoren zu bestimmen.

(evtl. mal einen Beitrag zum Scheiberegister einfügen…).

Für die Ansteuerung der Motoren gibt es unteranderem eine Bibliothek von Adarfruit. Diese kann über Git oder die Arduino GUI herunter geladen werden (siehe unten).

https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master

Die Motorbrücken belegen die folgenden Pins am Arduino:

  • Pin 11 Motor 1 – Geschwindigkeit
  • Pin   3  Motor 2 – Geschwindigkeit
  • Pin   5  Motor 3 – Geschwindigkeit
  • Pin   6  Motor 4 – Geschwindigkeit
  • Pin   4, 7, 8, 12 Richtungsvorgabe für alle Motoren über 74HC595 Register.

Servoanschlüsse

Das Bord verfügt über zwei Steckplätze für Standardservos. Jeder Steckplatz hat drei Pins jeweils einen für Strom, Masse und den Steuereingang.

Die Steuereingänge belegen die folgenden Pins am Arduino:

  • Pin 9    – Servo 1
  • Pin 10 – Servo 2

Externe Spannungsversorgung

Hier können von 4.5V bis zu 25V an Schraubklemmen angelegt werden. Bitte auf die Polung achten sonst rauchts …

Kompatibilität

Der Shield kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

Uno + WiFi

Bedingt kompatibel, es wird eine externe Spannungquelle benötigt um mehr als einen Servo zu betreiben.

Arduino Uno + WiFi

Software

Bibliothek installieren

Ich habe mir die Bibliothek über GitHub herunter geladen und sie manuell installiert. Über die Arduino GUI geht es etwas einfacher.

Bibliotheksmanger aufrufen:

Nach „motor“ suchen und die „Adafruit Motor Shield Library“ in der letzten Version installieren.  Aufgepasst es gibt eine „Adafruit Motor Shield V2“ diese kann leider nicht für die V1 Platine verwendet werden. (Motorplatine V2).

Servos ansteuern

Im Grunde werden die Servos ganz normal über die Arduino Bibliothek angesprochen. Wichtig für die Motorplatine ist nur, dass hier die Servos an Port 9 und 10 angeschlossen sind.

Meine Billigservos, harkeln einwenig an den Endpunkten, diese könnte man noch ausschliessen indem man die Konstanten min und max anpasst.

Über den Faktor kann die Schrittgröße bestimmt werden und über wait die wartezeit zwischen den einzelnen Schritten.

[gistpen id=“629″]

ServoTest.ino

Motoren Ansteuern

Für einen ersten Test habe ich das vorhandene Beispielprogramm verwendet.

Einfach auswählen, kopilieren und schon läuft Motor 1.

Um alle 4 Motoren zu testen, was nützlich erscheint um die Drehrichtungen (Polung) zu überprüfen, habe ich die Datei wie folgt angepasst.

MotorTest2.ino

Die Ausgabe sollte dann wie folgt aussehen.

Quellen

https://playground.arduino.cc/Main/AdafruitMotorShield

https://learn.adafruit.com/adafruit-motor-shield/library-install

https://learn.adafruit.com/adafruit-motor-shield

https://learn.adafruit.com/adafruit-motor-shield/faq

 

Lessons Learned – Bibliotheken

Bufixes für Bibliotheken

Manchmal kann es von Vorteil sein Bibliotheken manuell zu installieren, um die letzten Änderungen mit zu bekommen.

Auf die Version achten

Wie auch bei mir sind auf den meisten Seiten die Versionen der Bibliotheken nicht angeben. Das kann dazu führen das Funktionen anders heissen oder nicht vorhanden sind.

Sollte es nicht mit der installierten Version funktionieren einfach mal eine andere ausporbieren oder sie sich ansehen.

Ähnliche Bibliotheksnamen

Vielen Bibliotheken heissen ähnlich, wie sollte man z.B. eine Bibliothek nennen die einen DHT10 und einen DHT20   ansteuert richtig dht.h . Darauf kommen aber auch andere.

Deshalb bei abweichenden Klassennamen, Funktionsnamen o.ä schauen ob es auch die richtige Bibliothek ist, die man verwendet.

Arduiono Motor Platine V2

Die Motorplatine V2 ist eingetroffen. Ich habe gleich mal das Testprogramm der V1 angepasst und die Platine auf den Wemos Uno gesteckt, um zu sehen ob die Beiden zusammen harmonieren.

Die Ansteuerung der Servos funktioniert auf dem Wemos nicht, da die Pins für die serielle Schnittstelle verwendet werden.

Überblick

Hier die wichtigsten Daten im Überblick:

  • 2 Motorbrücken
  • (2 Servoanschlüsse)
  • 1 Wire (I2c) ansteuerung für die Motoren
  • 1 Externer Spannungsanschluss
  • 1 Power LED
  • Jumper – zur Unterbrechung der Boardspannung
  • Platz für zusätzliche Schaltungen
  • Möglichkeit eine weitere Platine aufzustecken

Ansicht

 

 

Beschaltung

Kompatibilität

Die Platine kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

Wemos d1 d2 esp8266

Da die Platine über den I2c Bus betrieben funktioniert sie auch mit dem WeMos. Allerdings gibt es die bekannten Einschränkungen bei den Analogen Ports, hier ist nur einer durchgeführt.

WeMos D1 R2 ESP8266

Software

Bibliothek installieren

Installation über die Ardurino GUI.

Bibliotheksmanger aufrufen:

Nach „motor“ suchen und die „Adafruit Motor Shield Library V2“ in der letzten Version installieren. In meinem Fall ist das die 1.0.5.

Achtung es gibt auch eine Biliothek „Adafruit Motor Shield Library“  diese ist für die alte Version des Boards.

Servos ansteuern

Die Ansteuerung der Servos funktioniert auf dem ESPClone nicht, da die Pins für die Serielle Schnittstelle mit verwendet werden. Für die anderen Boards ist sie gleich zur V1 Platine.

Motoren Ansteuern

Ich habe einfach das Testprogramm des V2 Boards angepasst. Weitere Erleuterungen findet ihr hier.

MotorSchieldV2Test.ino

Quellen

https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/overview

https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library

https://store.arduino.cc/adafruit-motor-stepper-servo-shield-v2-3

Arduino Prototyp Platine (V1)

Dieser Shield vereinfacht den schnellen prototypischen Aufbau von Schaltungen.

Überblick

Die Platine hat folgende Zusätze:

  • 1 Steckplatine
  • 1 Reset Taster
  • 1 Beschaltbarer Taster
  • 2 Status LEDs (Bei den neueren Boards als SMD LED)
  • Durchgeführte Pins zur Verdrahtung auf der Steckplatine

Etwas störend ist, dass der freie Schalter und die LED’s  nicht mit den vorhandenen Pin-Header Buchsen verbunden sind. Somit muss erst eine Verbindung über ein Kabel oder zusätzlich eingelötete Pin-Header Buchsen geschaffen werden.

Kompatibilität

Der Shield kann mit folgenden Boards verwendet werden.

Arduino Uno

Arduino Uno

Arduino Leonardo

Arduino Leonardo

WeMos D1

Ist Kompatibel mit ein paar Einschränkungen:

  • Nur 1 Analoger Port
  • IOs mit 3v anstatt 5 V

WeMos D1 R2 ESP8266

Beispiel Projekte

DHT10 mit Arduino Uno

Quellen

https://store.arduino.cc/proto-shield-rev3-uno-size

https://www.exp-tech.de/module/prototyping/4193/arduino-proto-shield-rev3-assembled

https://www.adafruit.com/product/51

WeMos D1 R2 ESP8266

Der WeMos D1 R2 ESP8266 sieht bis auf die anzahl der analogen Ports, erstmal wie ein vollständiger Arduino Uno aus.
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.

Ansichten

Frontansicht mit den Verbindern für Erweiterungsplatinen, dem Stromanschluss, USB anschluss und Resettaster. Gut zu sehen ist der Aufgelötete ESP 8266 rechts unten.

 

Überblick

Name WeMos D1 R2 ESP8266  
Anzahl/CPU
ESP8266MOD
Takt (MHz)80
Kerne1
Digital IOs / Pins14
Analog inputs1
PWM10
SPI1
Flash Speicher 4MB
SRam (KB)128
EEPROM (KB)-
WiFi2,4 GHz 802.11 b/g/n
VerschlüsselungWEB / WPA2 / TKIP /AES
Bluetooth-
UART1
I2C1
Ethernet-
Video-
Sound-
USB1 Micro
Betriebsspannung [V]5
Eingangsspannung>5 ???
Strom (mA) / Standby (mA)>500
Größe l x b x h68,6 x 53,3
Gewicht [g]< 25

Programmierung

Arduino Programmierumgebung

Als board „WeMos D1 R2 & mini“ auswählen.

Die Bordeinstellungen sehen bei mir wie folgt aus:

Ich musste nur die Übertragungsgeschwindigkeit auf 115200 und den Port auf meinen Verbindungsport zum Board anpassen.

Kompatible Zusatzplatinen

Prototyp Platine V1

Ist Kompatibel mit ein paar Einschränkungen:

  • Nur 1 Analoger Port
  • IOs mit 3v anstatt 5 V

Arduino Prototyp Platine (V1)

 

Quellen

http://www.instructables.com/id/Programming-the-WeMos-Using-Arduino-SoftwareIDE/

https://www.wemos.cc/

Unpacking the Wemos D1 R2, ESPDuino clone, ESP8266 development board in Arduino Uno format

Arduino Uno

Aktuelle ist der Uno in der Revision 3 auf dem Markt. Der Microcontroller ist gesockelt, so dass er, wenn mal was schief geht, einfach ausgetauscht werden kann.

Ansichten

Frontansicht mit den Verbindern für Erweiterungsplatinen, dem Stromanschluss, USB anschluss und Resettaster.

Wie immer, die Unterseite ist unspektakulär.

Überblick

Name Arduino Uno  
Anzahl/CPU
1 / ATmega328P
Takt (MHz)16
Kerne1
Digital IOs / Pins14
Analog inputs6
PWM6
SPI1
Flash Speicher 32 KB
SRam (KB)2
EEPROM (KB)1
WiFi-
Verschlüsselung-
Bluetooth-
UART1
I2C1
Ethernet-
Video-
Sound-
USB1 normal
Betriebsspannung [V]5
Eingangsspannung7-12
Strom (mA) / Standby (mA)
Größe l x b x h68,6 x 53,3
Gewicht [g]25

Kompatible Zusatzplatinen

Arduino Prototyp Platine (V1)

Motor Platine V1

Quellen

https://store.arduino.cc/arduino-uno-rev3