Project: Minecraft Cube part I: Introduction and Parts needed

Idea

The idea is to have a cube which looks like minecraft ore http://minecraft.gamepedia.com/Ore To make it more fancy it is illuminated from the inside. The main purpose of it is to use it as a nightlight. In Minecraft there are 8 different ores. Without coal (black) and nehter quartz (which has a differnt texture) there are 6 different ores which can be distinguished by their color. This fits to the 6 sides of a cube. The idea is to use an arduino board and an acceleration sensor to detect the orientation of the cube and light up the whole cube with one of the colors according to the orientation of the cube. This could look like this:

Youtube Video

DiamondCube

 

What is it good for? Fun, learning to build an computerized object and as a birthday present for my son.

What do I need

A transparent cube as the hull and main structure. I used a foto cube of acrylic glass which is made of two parts which can be fitted together.

2015-06-16 Transparent Cube

The texture of the minecraft block to use as outside texture. This is just a word document which needs to be printed on both sides. Since the cube has two parts, two copies are needed.

Minecraft Texture

The electronics needed as follows:

Li-Ion battery IMR 18350

Li-Ion charging board with mini usb socket (not seen on photo) based on TP4056

Pin connector as programming interface

Arduino Pro Mini controlling everything

Acceleration sensor based on MPU 6050 (Photo shows ADXL345), but MPU6050 looks almost identical

LED Strip WS2812B. These can be bought as a reel from 1 to 5 meters. Only 6 are needed…

On/Off switch. To switch off when there is no recharging possible and the battery goes down

2015-06-16 Parts needed

Some kind of mechanical frame to hold all this stuff especially the battery. The following is important:

  • There should’nt be any shadows on any of the sides of the cube
  • The center of mass should be in the center of the cube
  •  Outside access to recharge the battery and to reprogram the arduino without the need to disassemble

Therefore I 3D printed a frame which should hold all these parts.

2015-06-16 3D Print

Next Part: Project: Minecraft Cube part II: Internals and Software

Bastelkiste: Pro Mini

Hier mal eine kurze Vorstellung des Arduino Pro Mini. Das ist im Prinzip ein normales Arduino-Board nur nicht für Anfänger – daher ‚Pro‘ und sehr klein – daher ‚Mini‘. Aussehen tut das Board so:

ProMini

Das sieht groß aus, ist aber wie am Titelbild zu sehen viel viel kleiner als ein Arduino Uno und kostet auch nur ca. 10 Euro. Beim China Versender eures Vertrauens bekommt man den auch schon mal für 3 Euro. Wenn ihr also mit eurem Uno genug herumgesteckt habt, und das Projekt jetzt so bleiben soll, kann man den Lötkolben anheizen und alles zusammenlöten.
– Aber Moment zuerst gibt es noch was zu beachten:

  • Es gibt eine 3,3V/8Mhz und eine 5V/16Mhz Version. Die Spannung ist dabei gar nicht so interessant. Alle AVR Mega Microcontroller von den Arduino Boards vertragen zwischen 1.8 und 5.5 Volt Spannung. Bei geringerer Spannung läuft der Prozessor nur mit niedrigerer Frequenz stabil. Das Datenblatt meint dazu:
    • 0-4Mhz:1.8V
    • 0-8Mhz:2.7V
    • 0-16Mhz:4.5V

Wenn man den Pro Mini also direkt ohne den Spannungswandler mit Strom versorgt. Das geht über den Pin unten rechts bei dem RAW steht. Dann kann man ihn bis 8Mhz auch mit einer Li-Ion Batterie versorgen, die ja nur 3,7V hat. Für noch extremere Batterie Szenarien siehe Hier oder Hier

  • Es gibt keinen USB Anschluss. Man kann ihn also nur mit zusätzlicher Hardware programmieren. Hier kann man sehen wie das geht.

Beim Programmieren muss man aufpassen dass man in der Arduino Entwicklungsumgebung das richtige Board auswählt. Also auch 8 oder 16Mhz. Ansonsten funktionieren viele Libraries die korrektes Timing brauchen nicht. Manche Libraries sind aber auch generell mit 8Mhz nicht lauffähig. Die sehr gute FastLED Library habe ich nicht zum laufen bekommen. Ich habe dafür aber die light_WS2812 library gefunden.

Fazit

Ein sehr schönes Board das einen kompletten Arduino Uno ersetzt und gerade in Bezug auf Preis und Größe punkten kann. Ich werde euch von meinen Projekten berichten.

 

Lüftersteuerung mit ATtiny

Wie versprochen nun mein erstes ATtiny Projekt

Ziel

Wenn die Temperatur von dem Wechselrichter der Solaranlage eine bestimmte Temperatur überschreitet soll ein Lüfter hinzugeschaltet werden, der die Kühlrippen belüftet.

Funktionsweise

Das ganze ist ein ganz einfacher Temperaturgesteuerter Regelkreis. Eigentlich sogar ein einfacher Temperaturschalter. Warum das also mit einem Microcontoller steuern? Gute Frage. macht eigentlich keinen Sinn. Wenn man nur einen Hammer hat sieht halt alles aus wie ein Nagel. Egal – Das ist sozusagen das ‚Hello World‚ der Microcontroller Steuerung. Der Aufbau ist eigentlich ganz einfach. Ein Pin muss mit dem Temperatursensor verbunden werden, ein anderer gibt ein Steuersignal an ein Relais, das einen Lüfter steuert. Das Programm schaltet den Relais-Ausgang auf An wenn die Temperatur zu hoch ist. Der Aufbau sieht so aus:

2015-06-15 TemperatureBoard

Als Temperaturfühler verwende ich den DS18S20. Das ist eigentlich schon zu High-Tech für den Anwendungsfall, aber der war gerade greifbar. Den Ventilator schaltet dann ein Relais vom Typ SIL05-1A72-71L. Aufgebaut auf einer Lochrasterplatine sieht das dann so aus:
2015-06-15 Platine
Auf jeden Fall kompakter als ein Arduino Uno. Gegenüber dem Pro Mini der Vorteil dass alle Anschlüsse auf einem Board sind.

Coding

Bleibt noch das Programm. Das kompizierteste ist das Auslesen des Temperatursensors über den 1-Wire Bus. Das wird hier beschrieben. Eigentlich gibt es dafür auch eine fertige Bibliothek, aber benötigt zu viel Spiecher für den ATtiny 85.

#include <OneWire.h>

OneWire ds(0); // on pin 10 (a 4.7K resistor is necessary)
int relay = 1;
int threshold = 480; //30 Degrees =480
int temp;

void setup(void) {
  pinMode(relay, OUTPUT);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    ds.reset_search();
    delay(250);
    return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);

  delay(900);

  present = ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  for ( i = 0; i < 9; i++) {
    // we need 9 bytes
    data[i] = ds.read();
  }
  temp=(data[1]*256)+data[0];
  if (temp>threshold) {
    digitalWrite(relay, HIGH);
  } else {
    digitalWrite(relay, LOW);
  }
  delay(3000);
}

Ergebnis

Und was bring es? Vor 3 Tagen ohne Lüfter stieg die Temperatur auf bis zu 64 Grad. Über 60 Grad war sie fast 4 Stunden lang. Heute war es sehr sonnig und der maximale Ertrag lag bei über 4050W. Die Temperatur ist bis auf 61 Grad angestiegen, aber nur kurzzeitig für 15 Minuten. Vorher und nachher lag sie unter 60Grad. Das ist sicher nicht viel aber stimmt mich insgesamt positiv. Durch die Temperatursteuerung muss der Lüfter auch nur dann laufen wenn er wirklich gebraucht wird. Gerade bei einer sonnenabhängigen Erwärmung ist das stark von den Jahreszeiten abhängig. An einem sehr guten Tag im Januar wird der Lüfter höchstens 8 Stunden benötigt, bei trüben Wetter viel weniger. Im Sommer hingegen in der Regel 12 Stunden auch wenn es nicht ganz so sonnig ist.

 

ATtiny 85

Vor kurzen habe ich ein paar ATtiny 85 Microcontroller bestellt. Die kosten etwas mehr als 1 Euro pro Stück und sind im Prinzip die gleichen Microcontroller wie auf einem Arduino. Allerdings haben sie viel weniger Speicher (8 Statt 32 kB) und weniger Ein-/ Ausgänge (5 Statt 20) Hier eine gute Zusammenfassung

2015-06-14-Attiny

Wozu das ganze nun? Für kleine Projekte mag man vielleicht nicht immer gleich ein komplettes Arduino Board verwenden. Das ist ja doch ein bisschen größer selbst wenn es ein pro mini ist. Der größte Vorteil ist aber wohl, dass man den ATtiny 85 einfach in eine Schaltung integrieren kann, und durch den fehlenden Spannungswandler und Status LEDs kein unnötiger Strom verbraucht wird.

2015-06-14 Groessen

Wie Programmiert man das nun? Das kann man leicht im Internet nachschauen. Ich habe mich an die Anleitung von Highlowtech gehalten und einen Arduino Uno als Programmer benutzt. Nach einem kurzen Test auf dem Breadboard habe ich mir gedacht dass ich den Programmer sicher mal wieder brauche und nicht wieder die Anleitung im Internet suchen will um das auf dem Breadboard aufzubauen. Daher habe ich gleich ein kleines Arduino Shield gebastelt. Das ganze ist eigentlich nur Verkabelung von Arduino Pins auf ATtiny Pins. Siehe auch die Anleitung oben. Die LEDs blinken schön sind aber für die Funktion nicht notwendig.  Die Steckerleisten sind mit den Ein-/ Ausgängen des ATtiny verbunden. Damit kann man das Programm gleich testen. Ich bin nicht sicher wieweit die Verbindug mit dem Arduino Uno das einschränkt, aber bei mir ging das.

2015-06-14 Programmer

Mein erstes quasi ‚Hello World‘ Projekt zeige ich in einem der folgenden Beiträge.