Da ich beim bau meines Hauses einfach nicht genug Kabel verlegt habe, kam dieses Transmitter - Receiver Paar bei meiner Wettererfassung zum Einsatz.
Mein erster Test, einfach mit einem Arduino von TxD ein paar Buchstaben senden und mit Putty empfangen, ließ mich erschaueren. Außer Störungen nur ein paar brauchbare Daten. Ich habe mir nicht lange Gedanken über ein Übertragungsprotokollgemacht, da wurde ich mit Google schon fündig.
Hier die passende Libary. Hier wird alles geregelt. Ich übertrage damit die Messdaten meiner Wettersensoren.
Anschluss siehe Bild, ganz einfach.
Pin 1 und 2 an den Quarz, Pin 3 Batterie +
Pin 4 Masse PIN 5 und 6 an Arduino wie im Bild. PIN 7 Clock out, hier nicht beschaltet. Pin 8 +5V ohne die geht es nicht.
Das Programm benutzt schon mein 3 Draht LCD Display. Also bitte dem Libaryeintrag ändern. Oder ganz rausnehmen. Die Befehle sind dann von lcd.print auf serialprint zu ändern für eine Ausgabe auf den Seriallen Monitor. Weiterhin kann man auf <10 abfragen und dann bei den Zahlen eine Vorlaufnull erzeugen. Beispiele gibt es im Netz genug.
//Arduino 1.0+ Only
//Arduino 1.0+ Only
#include "Wire.h"
#define DS1307_ADDRESS 0x68
#include <LiquidCrystal595.h>
LiquidCrystal595 lcd(7,8,9); // datapin, latchpin, clockpin
byte zero = 0x00; //workaround for issue #527
void setup(){
Wire.begin();
Serial.begin(9600);
lcd.begin(16,2);
lcd.clear();
// setDateTime(); //MUST CONFIGURE IN FUNCTION
}
void loop(){
printDate();
delay(1000);
}
/*void setDateTime(){
byte second = 45; //0-59
byte minute = 34; //0-59
byte hour = 12; //0-23
byte weekDay = 1; //1-7
byte monthDay = 3; //1-31
byte month = 3; //1-12
byte year = 13; //0-99
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(zero); //start
Wire.endTransmission();
}*/
byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}
void printDate(){
// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
lcd.setCursor(0,1);
lcd.print(month);
lcd.print("/");
lcd.print(monthDay);
lcd.print("/");
lcd.print(year);
lcd.setCursor(0,2);
lcd.print(" ");
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.println(second);
}
Ja so einfach ist es.
Laden Sie bei Arduino die Software für Ihren PC runter und speichern Sie ihn in einem Verzeichnis.
Hier gibt es die Software http://www.arduino.cc/
Entpacken Sie die Software im Verzeichnis.
Schließen Sie den Arduino über ein USB Kabel an.
Der Rest geht automatisch.
Falls nicht dann geht es so !