Digistump AVR Boards (Digispark) für die Arduino IDE ergänzen für ATTINY85 und Raspberry Pi

Wie können die Menü Einträge, für die Digispark AVR Boards in der Arduino IDE ergänzt werden? Evl. fehlen diese Einträge im Menü: „Werkzeuge – Board

Dann in dem Menü: „Arduino – Einstellungen“ auf den Button „Zusätliche Boardverwalter-URLs“ klicken und die folgende URL ergänzen:

URL:

Nun noch unter dem Menüeintrag: „Werkzeuge – Board – Board Verwalter …“ den Digistump AVR Boards auswählen und installieren:

Schon sind die Menüeinträge vorhanden. Dann kann der ATTINY85 ja geflasht werden.

ATTINY85 General Micro USB Development Board für Arduino und Raspberry Pi

Für 1,28 Euro inkl. versand aus China eingetroffen …

… und von hinten:

Hier ein paar tech. Daten vom Anbieter.

Dann mal an dem Raspberry Pi anschließen, aber nicht mehr heute. Oder andere Ideen?

Wie kann der ESP8266 mit dem Raspberry Pi verwendet werden?

Wie kann der ESP8266 mit dem Raspberry Pi verwendet werden. Das Teil gibt es für ein paar Euros in der eBucht. Habe nun auch so eine Platine liegen. Dazu erst einmal eine Mindmap (ESP8266) erstellt, für den schnellen Überblick.

Es gibt schon viele Seiten zu dem Thema. Welche sind wichtig? Was kann man da mit machen? Ideen?

Oder doch besser am Arduino verwenden?

Vorschläge gern als Kommentar.

Arduino: Drahtlos senden von Geräuschen (analog oder digital)

Es können mit diesen günstigen Modulen Geräusche analog oder auch digital drahtlos übertragen werden.

Die VirtualWire Library kann für die Ansteuerung verwendet werden. Hier ein Beispiel mit dem Arduino der Raspberry Pi würde natürlich auch gehen.

Tech. Daten

Empfänger
1.Product Model: MX-05V
2.Operating voltage: DC5V
3.Quiescent Current: 4MA
4.Receiving frequency: 315 MHZ (in Deutschland nicht zugelassen, dort z.B. 433 Mhz verwenden)
5.Receiver sensitivity:-105DB
6.Size: 30 * 14 * 7mm
7.External antenna: 32CM single core wire, wound into a spiral

Sender
1.Product Model: MX-FS-03V
2.Launch distance :20-200 meters (different voltage, different results)
3.Operating voltage :3.5-12V
4.Dimensions: 19 * 19mm
5.Operating mode: AM
6.Transfer rate: 4KB / S
7.Transmitting power: 10mW
8.Transmitting frequency: 315 M (in Deutschland nicht zugelassen, dort z.B. 433 Mhz verwenden)
9.An external antenna: 25cm ordinary multi-core or single-core line
10.Pinout from left → right: (DATA; VCC; GND)

Mikrofon
LM393 oder KY-038

Das Sender Programm, das in den Arduino geflasht werden muss:

Der ganze Aufbau des Senders:
Arduino Sender
Der Arduino:
Arduino Sender
Das Micro im Detail:
Arduino Sender

Das Empfänger Programm in den Empfänger Arduino flashen. In dieser Version werden die Daten nur in der Konsole ausgegeben. Cool…

Arduino Empfänger

Arduino Empfänger

Reichweite:
Bisher habe ich die Daten nur von einem Raum in den anderen übertragen. Weiter Tests folgen…

Arduino: Neue Arduino IDE Version 1.6.2 veröffentlicht

Die neue Arduino IDE steht nun seit ein paar Tagen kostenlos zum Download für Mac OS X, Linux und Windows bereit.
Logo

Hier ein paar Highlights:

So sieht die IDE nach dem Start aus:

Arduino IDE 1.6.2
Arduino IDE 1.6.2

Also, dann mal los.

Arduino: Wie können RFID Tags eingelesen werden?

Wie können RFID-Tags eingelesen werden?

Das geht ganz einfach mit einem Arduino Nano und ein 125 kHz EM4100 RFID card reader module (RDM630 UART) das keine 5 Euro inkl. Versand kostet.

Die Belegung des RFID-Readers:
RDM630
Die PINs:

Spec RDM630: Baud Rate: 9600bps,N,8,1, Frequenze: 125 kHz, DC 5V (+-5%), <50 mA, Empfangsbereich: 2 bis 5 cm, Checksum card 10byte Data mit XOR So sieht der Aufbau aus: EM4100

Es sind nur 3 Verbindungen zwischen dem Arduino und dem RDM630 nötig und zwar:

Dann folgende Software RFIDReader.ino auf den Arduino laden, die den Vorteil hat, das die serielle Konsole frei bleibt.

Compile mit der Arduino 1.5.8 IDE.

Arduino IDE
Arduino IDE

Einstellung in der IDE:
Board Arduino Nano, Prozessor Arduino ATMega328, Programmer USBtinyISP
Serielle Konsole auf 57000 Baud stellen
und einen RFID-Tag an die Antenne halten:

Serielle Konsole Arduino NANO RFIDReader
Serielle Konsole Arduino NANO RFIDReader

Es wird eine Reichweite von ca. 4 cm erreicht. Wenn die Antenne unter der Schreibtischplatte montiert wird, kann der RFID-Tag sicher gelesen werden, wenn der Tag oben drauf liegt (Anwesendheitskennung).

Habt ihr eine Idee, wie die Reichweite vergrößert werden kann?
Oder einen guten Anwendungsfall?

Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?

Im JeeLink ist der Demo Version 5 Sketch wie schon mal hier beschrieben.

Wie hier beschrieben, kann der JeeLink mit neuen Sketchen für PCA301, Lacrosse, Energy Count 3000, JeeLabs RoomNode und anderen geflasht werden.

Dazu die 36_LaCrosse-LaCrosseITPlusReader.zip
und die master.zip laden.

Beide in ein Verzeichnis ohne Sonderzeichen auspacken. Also das Verzeichnis jeelib-master in jeelibmaster umbenennen. Sonst kommt es zu Fehlern. Hier mal die Verzeichnisstruktur: „Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?“ weiterlesen

Der neue Arduino-Clone ist heute eingetroffen: „Schokuino“ ( neue essbare Nanotechnologie )

20140225-090947.jpg

Der neue Arduino-Clone „Schokuino“ wurde mir heute von den lieben Kollegen zum Abschied überreicht. Das Arduino-Logo mit den 2 x + gefällt mir auch besser als das Orginal. Welche CPU da wohl verbaut wurde? Bahlsen-CPU aus Hannover oder eine von Dauerbrot.de? Der Kuchen inkl. Leiterbahnen hat auch sehr lecker geschmeckt.

Da bleibt nach 7 Jahren kein Auge trocken 😉 Danke … keeping in touch …

Wie kann eine Kommando Shell (bitlash) für Arduino verwendet werden?

Es gibt für Arduino eine Kommando Shell mit Namen Bitlash. Auch eine Anleitung ist auf Hompage des Entwicklers zu finden.

Hier die nötigen Schritte, um ein Arduino (Nano) damit zu bestücken.

Zuerst einmal die neueste Version (2.0) von bitlash installieren, dazu in das Libraries Verzeichnis von Arduino wechseln und per git die Neueste Version holen:

cd ~/Documents/Arduino/Libraries
git clone https://github.com/billroy/bitlash.git

oder auch als ZIP und dann auspacken.

Dann die Arduino IDE (1.5.2) starten und über das Menü: Datei-Beispiele-bitlash-Bitlashdemo das Beispiel Sketch laden, compilieren und auf den Arduino hochladen.

Wenn dann der Serielle-Monitor aufgemacht wird, ist es bei mir mit dem Nano abgestürzt.
Deshalb habe ich die Geschwindigkeit auf 9600 geändert. Hier das angepasste Beispiel Sketch:

/**
twbitlash.pde Thomas Wenzlaff http://www.wenzlaff.de Version 1.0 vom 31.08.2013

        Beispiel einen einfachen Kommandointerpreter für den Arduino Nano.
        
        Basis Beispielprogramm von:

Bitlash is a tiny language interpreter that provides a serial port shell environment
for bit banging and hardware hacking.

This is an example demonstrating how to use the Bitlash2 library for Arduino 0015.

Bitlash lives at: http://bitlash.net
The author can be reached at: bill@bitlash.net

Copyright (C) 2008-2012 Bill Roy

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
**/

#include "bitlash.h"

void setup(void) {

// Initialisierung und setzen der Baud Rate 57000 bricht beim Nano ab
// Startet den Kommandozeileninterpreter und führt den startup Makro aus
initBitlash(9600);
}

void loop(void) {
runBitlash();
}

und dann läuft dieses Beispiel.

Nach öffnen des Seriellen Monitors in der IDE (1.5.2) erscheint:

Bitlash Startbildschirm
Bitlash Startbildschirm

Alle Kommandos lassen sich mit help anzeigen:
Bitlash 2.0 Online Hilfe
Bitlash 2.0 Online Hilfe

Wie dann die erste Funktion erstellt wird, steht hier.
Kurz, um die LED 13 blinken zu lassen folgende Befehle eingeben:

function toggle13 {d13 = !d13;}
function startup {pinmode(13,1); run toggle13,1000;}
startup
boot

Funktionen lassen sich mit ls anzeigen:
Erstes Beispiel
Erstes Beispiel

Weitere Doku hier.

Berechnung der zu erwartenden Größe der Arduino Log Datei

Ausgehend von einem Eintrag, den der Arduino mit 2 Temp. Sensoren erzeugt, in dieser Form:

11-11-2013_11:11:11 Arduion.Temperatursensor_1 T: 20.12

Die Länge ist 55 Zeichen lang.
Bei einer Messung alle 10 Sekunden mit 2 Sensoren ergibt das
55 x 6 x 2 = 660 pro Minute
das sind am Tag
660 x 60 x 24 = 959.400
im Monat
959.400 x 30 = 28.512.000
im Jahr
28.512.000 x 365 = 10406880000
das sind dann in MB
10.406.880.000 / 1.000.000 = 10406,88 MB
also in GB
10.406,88 MB / 1000 = 10,40688 GB im Jahr.

Das ist zuviel für einen 8 GB USB-Stick.
Wenn die Messzeit um den Faktor 100 verlängert wird, also alle 10 x 100 = 1000 Sekunden (alle 16 Minuten), müsste im Jahr
10,40688 GB im Jahr / 100 = 0,1040688 GB im Jahr anfallen,
das sind dann pro Monat:
0,1040688 GB / 12= 0,0086724 GB oder
0,1040688 GB / 1000 = 104,0688 MB pro Monat

Wie kann mit Arduino die serielle Ausgabe über TCP ausgegeben werden auf dem TP-WR703N Gerät?

Der Arduino (NANO) wird per USB an den TP-WR703N (12.09) angeschlossen. Wie kann nun von einem anderen Rechner darauf per TCP (Telnet) zugegriffen werden?

Dazu erst socat auf den WR703 installieren mit

opkg update
opkg install socat

Socate (Version 1.7.2.1) kann bidirektionale Verbindungen aufbauen. Es verbindet den USB Port mit dem TCP Port.
Dann das folgende Script erstellen start-temp.sh, und evl noch die Schnittstelle DEV und den PORT und BAUD anpassen.

#!/bin/bash

DEV=/dev/ttyUSB0
PORT=1234
BAUD=9600

while true; do
if [ -e $DEV ]
then
socat tcp-l:$PORT,reuseaddr,fork file:$DEV,nonblock,raw,echo=0,waitlock=/var/run/tty,b$BAUD
else
sleep 2
fi
done

und ausführbar machen mit

chmod +x start-temp.sh

Dann kann das Script mit ./start-temp.sh & im Hintergrund auf dem WR703N gestartet werden.

Nun kann von einem anderen Rechner mit
telnet ip-adresse 1234 die Ausgabe ausgegeben werden.

Will man das das Script autom. beim hochfahren des WR703N startet, muss es noch in der /etc.rc.local eingetragen werden (aber vor exit 0). Das geht auch über Luci:

Luci Startskripte
Luci Startskripte

Evl. muss der USB Port einmal reconnected werden.

Arduino Mega Projekt: Ansteuerung der besuchten Urlaubsorte auf einer Weltkarte mit Arduino Mega mit LEDs

Wollte lange schon mal, zur Erinnerung an schöne Urlaube eine Markierung auf der Weltkarte anbringen wo wir waren. Als IT-Berater muss es dann aber schon eine Micro-Computer gesteuerte Version sein. Ein roter Punkt reicht da nicht.

Also hier das Ergebnis als Video, und weiter unten dann die Details:

Also so sieht die Weltkarte von vorne aus:

Die Weltkarte in einem Bilderrahmen
Die Weltkarte in einem Bilderrahmen

Hier die Rückseite. Ein Arduino Mega wurde verwendet, weil der bis zu 60 Ausgänge hat, die einzelnd angesteuert werden können.

Die ganze Rückseite, es fehlen noch die analogen Eingänge die als digitale Ausgänge geschaltet werden
Die ganze Rückseite, es fehlen noch die analogen Eingänge die als digitale Ausgänge geschaltet werden

An jedem besuchten Urlaubsort wurde ein 3 mm Loch gebohrt und eine LED reingesteckt. An einen Pin der LED wurde jeweils noch ein 220 Ohm Widerstand angelötet. Ja, es sieht etwas wild aus:

An jede LED kommt noch ein Widerstand
An jede LED kommt noch ein Widerstand

Eine nah Aufnahme des Arduino Mega.
Weltkarte5

Ein Reed-Kontakt habe ich noch an einem Interrupt-Eingang des Arduino geschaltet, so kann man von vorne mit einem Magnet über den Null-Meridian fahren, und schon leuchten unsere TOP 3 Urlaubsorte (Hawaii, Tokio, Seychellen) permanent.

Reed-Kontakt für die TOP 3 Urlaubsorte
Reed-Kontakt für die TOP 3 Urlaubsorte

Hier das C-Programm, welches in den Arduino geflasht wird und die Ansteuerung durchführt. Das ist die 1. Version, da werde ich noch einiges ergänzen.
„Arduino Mega Projekt: Ansteuerung der besuchten Urlaubsorte auf einer Weltkarte mit Arduino Mega mit LEDs“ weiterlesen

Arduino MEGA 2560 Board R3 16U2 – Quicktest am USB Hub unter Mac OS X

Hochladen eines Testprogramms über einen „alten“ USB-Hub. Als Board muss in der IDE „Arduino Mega 2560 …“ ausgewählt werden und die Serielle-Schnittstelle muss ausgewählt werden. Die werden am Mac OS X nur angezeigt wenn das Gerät angeschlossen ist. Es ist auch eine andere wenn der USB-Hub angeschlossen ist, bei mir z.B. dev/cu.usbmodemfd1421, der ist aber auf jedem System anders.

Der Arduino Mega 2560
Der Arduino Mega 2560

Der ATMega2560 R3 ist ein Microcontroller auf Basis des ATmega2560 mit diesen technischen Daten:
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 14 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz

Der Arduino Mega am USB-Hub
Der Arduino Mega am USB-Hub

Flashen des TP-Link TL-WR703N mit OpenWrt über den seriellen Port und einrichten der Luci Gui

Durch das flashen des TP-Link TL-WR703N mit einem Image unbekannter Herkunft,
hatte das schöne Teil leider seinen Geist aufgegeben.

Es kann aber wiederbelebt werden, aber nur über die Serielle-Schnittstelle die nicht nach draußen geführt ist.
Also musste ich doch die drei Kontakte nach draußen führen. Nach dem öffnen des Geräts, und freilegen der Platine,
sind die drei Kontakte (TX, RX, Masse) schnell lokalisiert, dank der guten Fotos auf http://forums.openpilot.org/blog/52/entry-92-unbrick-wr703n-wifi-router/

Eine gute Anleitung ist hier zu finden

http://wiki.villagetelco.org/index.php?title=Building_a_Serial_Port_for_TL-WR703N
und auch
http://www.bitzof.me/doku.php?id=electronics:wr703n:unbricking

Das größte Problem dabei ist an die kleinen Kontakte, passende Drähte anzulöten. Die Kontakte sind wirklich nur ca. 0,4 mm klein. Gefühlt 0,0000001 mm.
Ein Kollege hatte noch den passenden Draht, der wirklich dünner als ein Haar ist und konnte mir einen Meter überlassen.

Also die Brille gesucht und es hat beim ersten Versuch geklappt.

Das war der komplizierteste Teil.

Um den Mac zu schonen, habe ich das flashen der neuen Firmware auf einen alten Windows-Rechner gemacht.

Was war nötig alles nötig?

1. Den seriellen to USB Adapter cf20… an den WR-703N anschließen:

PIN 4 TX an WR TX
PIN 5 RX an WR RX
PIN 6 GND an WR GND

Achtung! Nicht RX an TX und TX an RX .so wie sonst, dann klappt es nicht und das Terminal Fenster bleib schwarz.

2. Treiber für den cf20 von geladen.
Der Treiber richtet einen virtuell COM Port ein. Port in den Systemeinstellungen auf 115200/8/N/1/XON-XOFF stellen.

3. Putty laden und seriell Einstellungen auf: 115200/8/N/1/XON-XOFF

4. TFtp Server von laden und neue OpenWrt Firmware (openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin) in das Verzeichnis kopieren.
Habe den langen Namen noch gekürzt, in firm.bin.

Install Verzeichnis des TFTP32 Server
Install Verzeichnis des TFTP32 Server

Einstellungen des TFTP Servers
Einstellungen des TFTP Servers

5. Rechner IP Adresse setzten 192.168.1.100. Unter Netzwerkverbindungen-Lan-Verbindung-Allgemein-Eigenschaften-Internetprotokoll-Eigenschaften-Folgende-IP-Adresse verwedne-IP-Adresse.
Wichtig: Verbindung vom Rechner zum WR703N per Ethernet nicht vergessen!

6. Nach verbinden des WR-703N hat man max. 1 Sekunde zeit, im Terminal „tpl“ und Enter einzugeben um auf dem Prompt zu kommen.
Beim dritten Versuch hat es bei mir geklappt. Wenn hornet> angezeigt wird, hat man gewonnen.

7. Dann folgende Befehle eingeben:

hornet> tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
hornet> erase 0x9f020000 +0x3c0000
hornet> cp.b 0x81000000 0x9f020000 0x3c0000
hornet> bootm 9f020000

flash

Lösch Befehl
Lösch Befehl

und warten bis alles abgeschlossen ist. Dann Enter drücken und der OpenWrt-Prompt mit OpenWrt-Logo erscheint.

8. Ethernet verbinden. Mit Telnet 192.168.1.1 verbinden und wenn der OpenWrt Prompt kommt,
das Passwort setzen mit passwd. Ab dann ist kein Telnet mehr möglich. Neu verbinden mit SSH.

9. Eine andere statische IP vergeben, die im Namensraum vom DNS Server des Internet Routers liegt vergeben.

10. Per SSH anmelden und das Netzwerk einstellen: /etc/config/network

config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.2.123' # feste statische Adresse des Routers
option netmask '255.255.255.0'
option ip6assign '60'
option dns '8.8.8.8' # Adresse des Google dns, oder anderen
option gateway '192.168.2.1' # Adresse des gateway

reboot
Ethernet Kabel an Router anschließen.
ping wenzlaff.de
muss erfolgreich laufen

11. Dann die Web-Gui luci installieren
opkg update
opkg install luci luci-i18n-german luci-theme-bootstrap

12. Web Server starten
/etc/init.d/uhttpd start
und damit es beim nächsten start automatisch läuft:
/etc/init.d/uhttpd enable

13. Im Browser die feste statische Adresse aufrufen und anmelden mit User: root und den vergebenen SSH Passwort anmelden.

Bildschirmfoto 2013-07-11 um 21.53.08

Bildschirmfoto 2013-07-11 um 21.53.45

5 V 4-Phase Stepper Motor und Driver Board ULN2003 für Arduino

So, der 4-Phasen-Stepp_Motor ist schon mal gekommen für das nächste Projekt.
Diese techn. Daten soll er haben:

  • Spannung: DC5V
  • 4-Phase
  • Reduction Ratio: 1/64
  • Step Torque Angle: 5.625°/64
  • DC Resistance: 200Ω ± 7% (25℃)
  • Insulation Resistance: >10 MΩ (500 V)
  • Dielectric Strength: 600V AC / 1mA / 1 s
  • No-load Pull in Frequency: >600 Hz
  • No-load Pull out Frequency: >1000 Hz
  • Pull in Torque: >34.3 mN.m (120 Hz)
  • Detent Torque: >34.3 mN.m
  • Temperature Rise: < 40 K (120 Hz)
  • Geräusch: < 40dB (120 Hz, No load, 10 cm)
  • Größe der Platine: ca. 29 ×21 mm

20130709-205443.jpg

Arduino Nano Relais Ansteuerung (Relay test)

Mit dem Arduino kann leicht auch 230 Volt geschaltet werden. Dazu kann ein Relais an den digitalen Pin 7 und + VCC und – Masse verbunden werden.

In diesem Video kann man hören und sehen, wie das Relais alle 5 Sekunden an und wieder aus geschaltet wird.

Folgendes Sketch ist in den Arduino Nano hochzuladen.
/*
TWRelais

Dieses Programm schaltet das Relais alle 5 Sekunden an und aus.

Thomas Wenzlaff 02.07.2013

Das Relais wir an den digitalen Pin 7 angeschlossen und VCC 5 V und Masse verbunden

Größe des compilierten Programm: 1108 Byte
*/

// An Pin 7 ist eine Relais angeschlossen,
const int RELAIS = 7;

// Die setup Methode wird nur einmal ausgeführt und bei reset
void setup() {
// Digitaler PIN 7 mit der RELAIS ist ein Ausgang
pinMode(RELAIS, OUTPUT);
}

// Die Endlosschleife
void loop() {
digitalWrite(RELAIS, HIGH); // RELAIS anschalten
delay(5000); // 5s warten
digitalWrite(RELAIS, LOW); // RELAIS ausschalten
delay(5000); // 5 Sekunden warten
}

Luftdrucksensor BMP085 von Bosch inkl. Temperatursenor für den Arduino

Der BMP085 ist ein Drucksensor mit hoher Präzision und ultra-niedrigem Stromverbrauch für den I2C-Bus.

Technische Daten:

  • Druckbereich: 300 – 1100 hPa (9000 Meter über dem Meeresspiegel bis -500 m)
  • Versorgungsspannung: 1.8V – 3.6 V (VDDA). 1.62V – 3.6 V (VDDD)
  • LCC8 Paket: bleifreie keramische Carrier Package (LCC)
  • Geringe Leistungsaufnahme: 5 μA im Standard-Modus
  • Hohe Präzision: Low-Power-Modus, die Auflösung von 0.06 hPa (0,5 m)
  • Hohe linearen Modus mit einer Auflösung von 0.03 hPa (0,25 m)
  • Mit Temperatur-Ausgang
  • I2C-Schnittstelle
  • Temperaturkompensation
  • Reaktionszeit: 7,5 ms
  • Standby-Strom: 0.1 μA
  • Beseitigt die Notwendigkeit für einen externen Taktgeber
  • Größe: 21 x 15 x 10 mm

Die Platine mit dem BMP085 (auf GY-65) ist nur 1,5 cm x 2 cm klein.
Von oben:

Luftdrucksensor von vorne
Luftdrucksensor von vorne

Von unten:

Luftdrucksensor für Arduino
Luftdrucksensor für Arduino

Anschlussbelegung:

BMP085 Luftdrucksensor
BMP085 Luftdrucksensor

Software:
Folgende beiden Libs von Adafruit downloaden und in das Lib Verheichnis kopieren. Evl. noch die Verzeichnisnamen umbenennen, da keine Sonderzeichen vorhanden sein dürfen.

1. Adafruit Unified Basis Sensor Driver

2. Adafruit Unified Drucksensor BMP085 Driver

Diesen Sketch TWDruck hochladen:


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>

/* 
TWDruck Version 1.0 vom 06.07.2013

Thomas Wenzlaff http://www.wenzlaff.de

Programm Größe: 12296 Bytes

Dies Programm liest den Luftdrucksensor und den Temperatursensor endlos aus,
und gibt die Werte über die Serielle-Schnittstelle mit Leerzeichen getrennt aus.
Kommentare beginnen mit #.

z.B.
# Luftdruck und Temperatur Messprogramm
# TWDruck 1.0 vom 06.07.2013
# http://www.wenzlaff.de
# Sensor: BMP085
# Treiber Version: 1
# Unique ID: 10085

# [Luftdruck in hPa] [Temperatur in Grad Celsius] [Höhe in Meter] 

1022.59 26.84 -80.49
1022.73 26.84 -81.69
1022.63 26.85 -80.83
1022.51 26.85 -79.80
...

Anschluss an den Nanu Arduino:

Das BMP085 an:
    SCL   an A5
    SDA   an A4
    VDD   Plus 3.3V DC
    Masse Minus
    
*/
const long MESSINTERVAL = 5000; // Messintervall in milli Sekunden
const long SENSOR_ID = 10085; // eindeutige Sensor ID
String KOMMENTAR = "# "; // Kommentar präfix
String TRENNER = " "; // Trennzeichen der Werte

Adafruit_BMP085 bmp = Adafruit_BMP085(SENSOR_ID);

void anzeigeDetails(void)
{
  sensor_t sensor;
  bmp.getSensor(&sensor);
   
  Serial.println(KOMMENTAR +"Luftdruck und Temperatur Messprogramm");
  Serial.println(KOMMENTAR +"TWDruck 1.0 vom 06.07.2013");
  Serial.println(KOMMENTAR +"http://www.wenzlaff.de");
  Serial.print (KOMMENTAR + "Sensor: "); Serial.println(sensor.name);
  Serial.print (KOMMENTAR + "Treiber Version: "); Serial.println(sensor.version);
  Serial.print (KOMMENTAR + "Unique ID: "); Serial.println(sensor.sensor_id);
  delay(500);
}

void setup(void)
{
  Serial.begin(9600);
  
  if(!bmp.begin())
  {
    Serial.print(KOMMENTAR + "Kein BMP085 gefunden ... Prüfe I2C Adresse!");
    while(1);
  }
  
  anzeigeDetails();
}

void loop(void)
{
  sensors_event_t event; // neues Sensor ereignis
  bmp.getEvent(&event);
 
  if (event.pressure)
  {
    Serial.print(event.pressure); // Luftdruck in hPa
    Serial.print(TRENNER);
    
    /* Calculating altitude with reasonable accuracy requires pressure *
     * sea level pressure for your position at the moment the data is     *
     * converted, as well as the ambient temperature in degress           *
     * celcius.  If you don't have these values, a 'generic' value of     *
     * 1013.25 hPa can be used (defined as SENSORS_PRESSURE_SEALEVELHPA   *
     * in sensors.h), but this isn't ideal and will give variable         *
     * results from one day to the next.                                  *
     *                                                                    *
     * You can usually find the current SLP value by looking at weather   *
     * websites or from environmental information centers near any major  *
     * airport.                                                           *
     *                                                                    *
     * For example, for Paris, France you can check the current mean      *
     * pressure and sea level at: http://bit.ly/16Au8ol                   */
     

    float temperature;
    bmp.getTemperature(&temperature);

    Serial.print(temperature); // Temperatur in Grad Celsius
    Serial.print(TRENNER);

    /* Then convert the atmospheric pressure, SLP and temp to altitude */
    /* Update this next line with the current SLP for better results */
    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; // 1013.25F Average sea level pressure is 1013.25 hPa
   
    Serial.print(bmp.pressureToAltitude(seaLevelPressure,
                                        event.pressure,
                                        temperature)); // Höhe in Meter
    Serial.println();
  }
  else
  {
    Serial.println(KOMMENTAR +"Sensor error");
  }
  delay(MESSINTERVAL);
}

Mit diesen Daten, wird dieses Diagramm erzeugt:

Luftdruck und Temperatur Diagramm mit  gnuplot
Luftdruck und Temperatur Diagramm mit gnuplot

Die gerade Linie im Diagramm, rührt daher das der PC sich automatisch in den Standby-Betrieb schaltet und damit die Serielle-Verbindung nicht mehr abgefragt wird.
Der dritte Wert der Daten ist die Höhe, die ändert sich nicht gross und wird deshalb nicht im Diagramm dargestellt. Wie wird bei gnuplot die 3. Y-Achse erzeugt? Geht das überhaupt?