Hallo Bastler,
vor kurzem habe ich mir einen Arduino Uno mitsamt Ethernet Shield gekauft, damit ich die Temperatur meines Aquariums daheim messen kann.
Ich verwende für meinen Aufbau ein EthernetShield HANRUN HR91115A, einen Arduino UNO sowie den Temperatursensor TMP36. Zur Verknüpfung der Komponenten verwende ich M/M Kabel und ein Breadboard.
Ich habe mir aus verschiedenen Sketches einen eigenen erstellt, der nichts anderes machen soll, als die Temperatur auszulesen und über das Shield (welches ich per LAN an den heimischen Router angeschlossen habe) an eine Website in meinem Netz auszugeben.
Funktioniert soweit einwandfrei, lediglich die übermittelten Temperaturwerte sind viel zu hoch.
Mir werden Werte im >200°C Bereich ausgegeben.
Da ich absoluter Neuling auf dem Gebiet des Programmierens bin, hoffe ich nun hier die Lösung meines Problems finden zu können.
#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>
int TMP36 = A0;
int sensorwert;
int temperatur = 0;
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Adresse des Arduino Boards !WICHTIG! MAC Adresse darf nur einmal im Heimnetz vorkommen
byte ip[] = {
192, 168, 2, 177 }; // IP Adresse des Arduino Boards !WICHTIG! IP Adresse muss manuell im Netzwerk vergeben werden, i.d.R. 192.168.x.xxx
byte gateway[] = {
192, 168,2, 1 }; // Gateway Fritzbox !WICHTIG! Auszulesen über Start -> "cmd" -> "ipconfig" -> Standardgateway
byte subnet[] = {
255, 255, 255, 0 }; // Subnet Maske (optional)
EthernetServer server(80); // Port Einstellung (Standard für HTML : 80)
void setup() {
Wire.begin(); // I2C als Master-BUS
Ethernet.begin(mac, ip); // Ethernet initialisieren
server.begin(); // Auf Clients warten
}
void loop() {
sensorwert=analogRead(TMP36); // Auslesen des Sensorwertes.
temperatur= map(sensorwert, 0, 410, -50, 150); // Umwandeln des Sensorwertes mit Hilfe des "map" Befehls.
delay(500);
EthernetClient client = server.available(); // Prüfen, ob Client Seite aufruft
if (client) { // Seitenaufruf durch User
server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n"); // Ausgabe in HTML
server.print("<HTML><HEAD><TITLE>");
server.print("Arduino Board");
server.print("</TITLE>");
server.print("</HEAD><BODY>");
server.print("<h2 align=center><font size=7><b>Funduino Thermometer </b></font></h2>");
server.print("<center><font size=5><b>Die Temperatur beträgt </font>");
server.print(temperatur);
server.print("<font size=5> Grad Celsius. </font");
delay(10); // Kurzer Delay, um Daten zu senden
client.stop(); // Verbindung mit dem Client trennen
}
}
Mit freundlichem Gruß