StartHardware.org – Arduino für Schulkinder

Starthardware.org
Heute mal was in eigener Sache. Gestern habe ich mein neues Projekt StartHardware.org veröffentlicht. Wie auf Arduino-Tutorial.de geht es darum, das Wissen um Arduino zu vermitteln. Diesmal ist die Zielgruppe allerdings etwas jünger.

StartHardware.org ist erstmal ein Online-Kurs für den Einstieg in Arduino und das Programmieren von Hardware. Elektronische Grundlagen werden ebenso wie Programmieren Schritt für Schritt erklärt. Am Ende kann man sich sein eigenes elektronisches Haustier basteln, dass mit den Augen blinzelt, meckert, wenn man sich nicht darum kümmert und das schnurre, wenn es gestreichelt wird.

Starthardware.org Starter Kit mit Arduino

Dazu kommt ein sehr günstiges Starter Kit, das ich zusammen mit meinen Partnern von TinkerSoup.de entwickelt habe. Es ist für 39,90 Euro erhältlich und beinhaltet alles für den Arduino-Start.

Also falls Ihr noch didaktisch wertvolle Weihnachtsgeschenke für Eure Kinder sucht, wäre ein StartHardware.org Starter Kit eine tolle Wahl ;-)

Funkübertragung von Messwerten mit dem RF Link Modul

Das RF Link Modul (Receiver und Transmitter) aus der RWS-371-Serie ist ein ziemlich günstiger Weg, Signale kabellos über kurze Distanzen zu übertragen. Dieses Beispiel zeigt, wie man es verwendet. Als Transmitter kannst Du die Module TLP 434, 434-A oder 916-A, als Receiver die Module RLP 434, 434-A, 916-A oder 916-F verwenden.

Die Funktionsweise der Module ist sehr einfach. Wenn der Daten-Pin des Sendemoduls getriggert wird, sendet es ein Signal. Der Empfänger empfängt es und schickt ein Signal an einen Pin des Mikrocontrollers.

Damit man mit dieser Funktion etwas Sinnvolles anstellen kann, werden wir die VirtualWire Bibliothek von Mike McCauley verwenden, die es uns ermöglicht, komplexe Daten zu übertragen.

Die Bibliothek kannst Du Dir von dieser Seite herunterladen. Sie muss in den libraries Ordner im Arduino-Benutzerordner kopiert werden. Danach musst Du die Arduino IDE erneut starten.

Ich schlage vor, dass Du die Schaltung einfach nachbaust und die Programme auf die beiden Microcontroller überträgst. Der Code ist ziemlich selbsterklärend: Sechs Analoge Inputs des Sendenden Mikrocontrollers werden ausgelesen und mittels RF Link Modul verschickt. Der empfangende Mikrocontroller sendet die empfangenen Daten dann an die serielle Schnittstelle. Mit dem Seriellen Monitor der Arduino-Software kann man sich die Daten ansehen.

Circuits using Arduino UNO

RF Link Modul mit Arduino

Circuits using the Teensy 3.1

RF Link Modul mit Teensy

Code für den Sender

/*.............................................................
transmitter

build on example "Sending Multiple Variables Using VirtualWire. Transmitter"
by Author: Rodrigo Mompo Redoli
For controlrobotics.rodrigomompo.com
..............................................................*/
#include <VirtualWire.h>

int sensorPins[] = {A0,A1,A2,A3,A4,A5}; // The pins were sensor are attached
char Sensor1CharMsg[21];// The string that we are going to send trought rf 

void setup() {
  // VirtualWire setup
  vw_set_ptt_inverted(true);

  vw_setup(2000); // Bits per sec
  vw_set_tx_pin(12);// Set the Tx pin. Default is 12
}

void loop() {
  sprintf(Sensor1CharMsg, "%d,%d,%d,%d,%d,%d", analogRead(sensorPins[0]), analogRead(sensorPins[1]), analogRead(sensorPins[2]), analogRead(sensorPins[3]), analogRead(sensorPins[4]), analogRead(sensorPins[5]));
  delay(5);

  vw_send((uint8_t *)Sensor1CharMsg, strlen(Sensor1CharMsg));
  vw_wait_tx(); // Wait until the whole message is gone
 
  delay(40);
}

Code für den Empfänger

/* Receiver 

build on example "Sending Multiple Variables Using VirtualWire."
by Author: Rodrigo Mompo Redoli
For controlrobotics.rodrigomompo.com
..............................................................*/

#include <VirtualWire.h>

const int led_pin = 13;
const int receive_pin = 12;

int maxSensorData = 6;
int sensorData[6];

char StringReceived[22]; 

void setup() {
  Serial.begin(9600);                        // initialising serial
  vw_set_rx_pin(receive_pin);                // virtual wire setup
  vw_set_ptt_inverted(true);                 // virtual wire setup
  vw_setup(2000);                            // bits per second
  vw_rx_start();                             // Start the receiver PLL running
} // END void setup

void loop(){
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen)) {        //Taking the data from the control base
    int i;
    for (i = 0; i < buflen; i++) {            
      StringReceived[i] = char(buf[i]);      // data to array
    }
    // split data into array sensorData
    sscanf(StringReceived, "%d,%d,%d,%d,%d,%d", &sensorData[0], &sensorData[1], &sensorData[2], &sensorData[3], &sensorData[4], &sensorData[5]); // Converts a string to an array
  }
  for (int i=0; i<maxSensorData; i++){       // nice output
    Serial.print("Sensor "); Serial.print(i); Serial.print(": "); 
    Serial.print(sensorData[i]); Serial.print("\t");
  }
  Serial.println("");                        // linefeed
  // reset variable StringReceived
  memset(StringReceived, 0, sizeof(StringReceived));
  delay(5);
}

Arduino

RF Link Modul mit Arduino

Teensy

RF Link Modul mit Teensy

Montage auf Breadboard. Für den Versuchsaufbau teilen sich beide Controller eine Stromquelle. Das ist natürlich nicht nötig.

Dias automatisch digitalisieren mit Arduino

Zwei Potentiometer regeln Fokus- und Dia-Dauer

Dieses Projekt von Koen Dooms löst das nervige Problem Dias zu digitalisieren. Der Diawechsel wird dabei durch einem Diaprojektor mit Schlitten vollzogen. Eine digitale Spiegelreflexkamera fotografiert die Dias mittels Makro-Objektiv ab. Das Arduino wird dabei als Controller verwendet.

Um die optimale Beleuchtung der Dias zu gewährleisten, muss eine weiße Plastikfläche als Diffusor zwischen Leuchte und Dia eingesetzt werden.

In der Schaltung werden Optokoppler verwendet, um die Fokus/Shutter-Funktion der Kamera auszulösen. Danach wird die Transportfunktion des Diaprojektors ausgelöst, um das nächste Dia an die richtige Position zu bringen.

Zwei Potentiometer können zur Justierung des optimalen Timings von Fokus und Transport verwendet werden.

Achtung! Beim Arbeiten am offenen Dia-Projektor muss der Stecker aus der Steckdose gezogen sein! Die Arbeit an 230V Geräten ist gefährlich. Nutze diese Anleitung auf eigene Gefahr.

Fritzing-Diagramm

Fritzing-Diagramm

Hier sind die Dateien zum Download

Arduino Yún präsentiert von den Machern

Über das Arduino Yún hatte ich ja hier schon mal etwas geschrieben, aber in diesem Video kommen die Macher mal zu Wort. Massimo Banzi und David Cuartielles kündigen in diesem Video das nun veröffentlichte Board an. Kaufen kann man es z.B. bei Amazon: Arduino YUN

Das Board ist ein auf dem ATmega32u4 (Arduino Leonardo) basierendes Mikrocontroller Board, das zusätzlich über einen Atheros Prozessor verfügt. Auf ihm läuft die Linux Distribution Linino. Das Arduino Leonardo hat einen eingebauten Ethernet Adapter (RJ 45), WIFI Support, einen USB-A Port, 20 digitale Input/Output-Pins, wovon 7 als PWM Ausgänge und 12! als analoge Eingänge verwendet werden können. Angeschlossen werden kann das Arduino Yún über eine Micro USB Verbindung. Es hat einen ICSP Header.

Das Arduino Yún kann mit der laufenden Linux Distribution kommunizieren. Neben Linux Kommandos, kann man eigene Shell und Python Skripte schreiben und nutzen.

Laut einer Amazon-Rezension gab es anfängliche Probleme mit der Bridge-Software, die nun scheinbar behoben werden können.

Die offizielle Arduino Yún Seite könnt Ihr hier finden.

Mein Arduino Yún ist bestellt und ich werde natürlich berichten, was sich damit alles anstellen lässt.

Falls Ihr schon Ideen dafür habt, postet die bitte in den Kommentaren :-)