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.

 

Serielle Datenübertragung mit Arduino über Infrarot

 

Heute geht es um Infrarote Datenübertragung.

Eigentlich war sinn des Projektes einen Infrarotsender im Haus zu empfangen, aber dazu schreibe ich in einem anderen Beitrag mal was. Hier also eher eine einfache Übertragung  über die serielle Schnittstelle mit Hilfe von Infrarotlicht.

Boards

Sender

Aufgebaut habe ich einen Sender mit Hilfe eines Arduino Uno. Der macht nichts anderes als alle 2 Sekunden 480 Byte über die serielle Schnittstelle auszugeben. Das Coding dazu ist geradezu trivial:

void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(9600);
}

void loop()
{
  for(int i = 0; i < 40;i++){
    Serial.write("Hallo Test--");
    }
    delay(2000);
}

Die Elektronik dazu verstärkt das Signal und leitet es an die Infrarot LED CQY 99 weiter. Die LED benötigt bis zu ca. 150mA Strom. Bei 5V braucht man einen 24Ohm Vorwiderstand mit 540mW. Da ich nicht soviel Leistung brauche, habe ich 2x100Ohm parallel geschaltet und komme so auf 75mA und 280mW. Das ist zwar etwas mehr Leistung als die Widerstände vertragen, aber im Pulsbetrieb sollte das kein Problem sein. Mit Hilfe einer Digitalkamera kann man sehen wie die LED alle 2 Sekunden kurz aufleuchtet. Mit bloßem Auge kann man das Infrarotlicht nicht sehen.

IrLed

Besonderst hell sieht das nicht aus, aber eigentlich kann man es ja gar nicht sehen, also ist das schon ein Fortschritt.

Schaltplan

Schaltplan

Die Transistoren verstärken das Signal und da es sich um eine Emitterschaltung handelt wird es auch invertiert. Das soll beim senden vermieden werden, daher eine doppelte Emitterschaltung, ist aber beim Empfangen erwünscht, da das serielle Signal eine invertierte Signalform hat.

Empfänger

Der Empfänger ist ein Arduino Mega. Dort ist ein Fototransistor SFH 300 FA-3/4 der die Infrarotsignale empfängt. Diode und Transistor sind für 950nm Wellenlänge ausgelegt, passen also zusammen. Die Empfangsschaltung ist ein einfacher Transistorverstärker. Ich nehme da den BC337, ein universeller NPN Transistor. Da der Arduino Mega 4 serielle Schnittstellen hat, kann man ganz einfach die empfangenen Daten an den über USB gekoppelten Computer ausgeben.

byte inByte = 0;

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop()
{
  if (Serial1.available() > 0) {
    // get incoming byte:
    inByte = Serial1.read();
    Serial.print(inByte);
  }
}

Und nach einigen Experimenten funktioniert die Übertragung bei 9600 bps über eine Strecke von 5-20 cm je nach störendem Lichteinfall. Viel ist das nicht, aber doch ganz nett zu sehen dass es zumindest eine kurze Distanz überbrücken kann.

Demnächst mehr Details zu den übertragenen Daten.

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.