Hin und her und her und hin

Ob ich meine Auszeit doch noch träumen kann? Momentan sieht es recht gut aus. Daran ist mein neuer Arbeitgeber schuld. ABER es läuft darauf hinaus, dass es wohl ein Jahr später losgehen kann.
Das aber ist in Anbetracht der politischen Situation nähe der EU/NATO- Ostgrenze gar nicht mal so ein Desaster.
Noch ist nicht alles in trockenen Tüchern und unterschrieben

Download PDF

Sabbatial auf Eis

So. Damit lege ich meinen Traum auf´s Eis. Eine angeplatzte Seifenblase ist eine geplatzte. Ewig drauf gespart und nun zu 50% zerstört. Ob das wieder zu flicken ist? Schauen wir mal. Die Enttäuschung ist groß. Sehr sogar.

Download PDF

Aduino Nano, OLED, Uhr und Thermometer und Luftdruck

Nach dem x-ten Versuch habe ich heute einen China-Ardunio (XTWduino Nano V3.0 ATMEGA328P) mit einem China-OLED erfolgreich verheiratet. <Endlich!> Und weil diese Hochzeit noch nicht alles sein sollte, habe ich das Paar in die Flitterwochen geschickt mit einem BMP180 für den Luftdruck und einer DS3231SN für die genaue Uhrzeit. <Hurra!>

Für die ganze Spielerei gab es einige Hürden zu überwinden. Angefangen hat das ganze Theater mit der Verbindung vom chinesischen Arduino zum Mac. Das kleine Chinabauteil hat erstmal eine absolut merkwürdige Schnittstelle zur Außenwelt eingebaut (CH341). Dafür benötigt man einen externen Treiber (CH341SER_MAC.ZIP) . Mit diesem geht es. ABER nicht unter MacOSX 10.10 alias Yosemite. Hier wird der Treiber installiert, aber nicht aktiviert. Nach einiger Zeit des Suchens bei dieser großen Suchmaschine findet man dann heraus, dass der Treiber in Form einer Kernel-Extension nicht signiert ist und deswegen nicht geladen wird. Eine Lösung gibt es auch und diese ist auch noch unschön. Ist dies alles überwunden, so kann es weitergehen.

Nun kommt die OLED-Geschichte. Diese war nicht gerade heldenhaft. Die ersten beiden OLED´s für je 3,50 EUR hatte ich beim China-Mann bestellt, und sie erwiesen sich nach einem Monat postalischer Wartezeit als absolut störrisch und erstmal (und bis heute) als unbrauchbar. Sie haben einen i2c-Anschluß, so wie ich es auch haben wollte und sie laufen mit 3,3 V oder auch 5 V. Problem ist nur, dass ich sie nicht ans Laufen bekomme. Ich vermute mal, daß der RST und auch der D/C-Anschluß irgendwie beschaltet werden müssen, nur keine Ahnung wie. LadyAda hat da auch eine nette Library im Angebot, welche den Anschluß vom RST irgendwohin angeschlossen haben will, doch geholfen hat das nicht. Mein i2c-Adressscanner hat keines der zwei Displays gefunden. Angeblich sollen sie keinen Rückkanal haben – fragt mich bitte keiner mehr und schon garnichts genaues.

Nach weiß ich nicht mehr wie vielen Versuchen habe ich dann erstmal das Handtuch geschmissen und einen der etwas teureren OLED´s bei eBay zu bestellt, welcher nur die klassischen vier Anschlüsse (5-3.3Vcc,GND,SLC,SDA) hat. Und siehe da: es geht. Und es geht mit vielen der rumschwirrenden Librarys. Was machen die anders? Egal erstmal. Es geht – nichts hinterfragen.
[Ganz gut scheint mir diese Library zu sein (zumindest kam ich hier ganz gut mit klar): GOFi2cOLED]

Hinzugenommen habe ich dann einen BMP180. Das lustige Kerlchen mißt Luftdruck, nebenbei auch Temperatur, und es funktioniert mit max 3.6 V (3µA) und hat einen i2c-Anschluß. Diesen dann angeschlossen und es geht echt prima.
[Als Library wurde die von LadyAda genutzt: BMP085]

Hinzugenommen habe ich dann auch noch eine RTC mit einem DS3231SN und der Typenbezeichnung ZS-042 drauf. Diese RTC ist eine hochgenaue Uhr mit zwei Weckzeiten und Datum. UND auch einem Thermometer (von -40°C bis +85°C). Das ganze Bauteil sollte entsprechend einiger Fundstücke im Web mit 3.3V betrieben werden. Das wollte ich sowieso. 5V sollen der Batterie nicht gut tun. Also: angeschlossen und geht.
[Die Library, mit der es ganz gut klappte – auch mit dem Einstellen der Zeit ist: DS3231].

Hier mal mein Sketch:

// DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin
// SCL pin -> Arduino Analog 5 or the dedicated SCL pin


#include <Wire.h>

#include <DS3231.h>
DS3231 rtc(SDA, SCL); // Init the DS3231 using the hardware interface
Time t; // Init a Time-data structure

#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;

#include <GOFi2cOLED.h>
GOFi2cOLED GOFoled;

void setup()
{
 Serial.begin(115200);

 if (!bmp.begin()) {
 Serial.println("Could not find a valid BMP085 sensor, check wiring!");
 while (1) {}
 }
 rtc.begin();
 // The following lines can be uncommented to set the date and time
 //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
 //rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
 //rtc.setDate(8, 2, 2014); // Set the date to February 8st, 2014

 GOFoled.init(0x3C); //initialze OLED display

 //GOFoled.display(); // show splashscreen
 delay(0);
 GOFoled.clearDisplay();

 GOFoled.setTextSize(2);
 GOFoled.setTextColor(WHITE);
 GOFoled.setCursor(0, 0);
 GOFoled.println("Ollidunio");

 GOFoled.setTextSize(1);
 GOFoled.setTextColor(WHITE);
 GOFoled.println("2015 by olli@mac.com");
 GOFoled.println("v0.1");
 GOFoled.println(" ");
 GOFoled.display();

 GOFoled.setTextSize(1);
 GOFoled.setTextColor(WHITE);
 GOFoled.println("Luftdruck, Uhrzeit, Temperatur, Kompass, GPS, Sonar & Tracker");
 GOFoled.display();

 delay(6000);

}

void loop()

{
 t = rtc.getTime(); // Get data from the DS3231

 GOFoled.clearDisplay();
 GOFoled.setTextSize(1);
 GOFoled.setTextColor(WHITE);
 GOFoled.setCursor(0, 0);

 GOFoled.print("Datum ");
 GOFoled.print(t.date, DEC); GOFoled.print("."); GOFoled.print(t.mon, DEC);
 GOFoled.print("."); GOFoled.println(t.year, DEC);

 GOFoled.print("Uhrzeit ");
 GOFoled.print(t.hour, DEC); GOFoled.print(":"); GOFoled.print(t.min, DEC);
 GOFoled.print(":"); GOFoled.println(t.sec, DEC);

 // Send current temperature
 GOFoled.print("TempRTC = ");
 GOFoled.print(rtc.getTemp());
 GOFoled.println(" *C");


 GOFoled.print("Temp. = ");
 GOFoled.print(bmp.readTemperature() / 1);
 GOFoled.println(" *C");

 GOFoled.print("Luftdr. = ");
 GOFoled.print(bmp.readPressure() / 100);
 GOFoled.println(" hPa");

 GOFoled.print("Luftdr.NN = ");
 GOFoled.print(bmp.readSealevelPressure() / 100);
 GOFoled.println(" hPa");

 GOFoled.print("Hoehe = ");
 // Calculate altitude assuming 'standard' barometric pressure of
 // 1013.25 millibar = 101325 Pascal
 GOFoled.print(bmp.readAltitude(101325));
 GOFoled.println(" m");

 GOFoled.print("Hoehe real= ");
 // you can get a more precise measurement of altitude
 // if you know the current sea level pressure which will
 // vary with weather and such. If it is 1015 millibars
 // that is equal to 101500 Pascals.
 GOFoled.print(bmp.readAltitude(101500));
 GOFoled.println(" m");


 GOFoled.display();

 delay(50);

}
Download PDF