mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Projekt an der Uni - Kühlschrankwächter mit MC, WLAN oder GSM


Autor: Hauke B. (sattelschwein25)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Guten Tag zusammen, ich bin dualer Student des 
Wirtschaftsingenieurwesens und bereite mich auf mein Projekt in 
Mechatronik vor. Bevor es zur Projektbeschreibung und den Einzelheiten 
geht, muss ich erwähnen, dass dieses Projekt zwar definitiv umgesetzt 
wird, aber in diesem Semester lediglich die Recherche und die 
Projektplanung durchgeführt, sowie die Machbarkeit ermittelt werden 
soll. Insofern geht es mir hier vorerst nicht um die genaue Umsetzung 
sondern erst einmal um die Planung und die generelle Machbarkeit, 
unabhängig von den dazu notwendigen Fähigkeiten. Dazu lässt sich sagen, 
dass ich im vorherigen Semester das Modul Elektrotechnik hatte, die 
praktische Umsetzung jedoch Neuland für mich ist und ich zwar dabei bin 
mich in die Materie einzuarbeiten, auch mit Hilfe dieses Forums, 
allerdings einige Begriffe und Abkürzungen noch etwas schwer zu verdauen 
sind.

Projekt
Kühlschrankwächter

Grundidee
Der Gedanke hinter dem Kühlschrankwächter entsteht aus der Aufbewahrung 
von Medikamenten bei einer bestimmten Temperatur. Als Beispiel ein 
Medikament, das konstant bei 10°C (+- 3°C) gehalten werden muss. Ich 
habe die Aufgabe ein Gerät zu entwickeln, welches ein optisches, 
akustisches und digitales Warnsignal (Mail/SMS) abgibt, bei einer Unter- 
oder Überschreitung des kritischen Temperaturwertes. Zusätzlich sollte 
das Gerät per Akku/Batterie betrieben werden, mit möglichst langer 
Haltezeit und einer Warnung, sollte die Stromversorgung langsam zur 
Neige gehen.

Optional soll ich mir zusätzliche Features überlegen, die ich je nach 
erfülltem Workload noch umsetzen kann und natürlich positiv in die 
Benotung einfließen.

Zusätzliche Features, bzw. meine Interpretation des Gerätes:
Ein Gerät mit Magnetfüßen wird an der Kühlschranktür befestigt und ein 
oder mehrere Temperatursensoren werden per Kabel in den Kühlschrank 
geführt (durch die Gummidichtung). Die zu haltende Temperatur wird per 
Display angezeigt. Per Poti o.ä. kann die zu haltende Temperatur 
verändert werden, allerdings ohne die +- 3°C o.ä. zu ändern. Die 
Temperatur wird im Sekundentakt o.ä. gemessen und überprüft. Bei 
kritischen Temperaturen wird ein akustisches Signal, wie bei einem 
Feuermelder ausgelöst und eine LED oder eine Warnleuchte fängt an zu 
blinken. Zusätzlich wird eine E-Mail an den Empfänger gesendet. Bevor 
der Alarm ausgelöst wird, läuft ein Timer ab, damit nicht bei jeder 
Öffnung des Medikamentenkühlschrankes der Alarm ausgelöst wird (möglw. 
30 sek. o.ä.). Gut wäre wenn man per Internetabfrage noch die aktuelle 
Temperatur abfragen kann, es wäre ja möglich, dass es sich um einen 
kurzfristigen Temperaturabfall handelt. Ein zusätzliches Warnsignal 
müsste erscheinen, wenn der Akku oder die Batterie bald keinen Strom 
mehr zur Verfügung stellen kann. Genial wäre, wenn der Ladezustand 
zusätzlich auf dem Display zu sehen wäre.

Daraus resultierende Anforderungen
- möglichst energiesparend
- W-LAN fähig
- möglichst genaue Temperaturmessung
- regelmäßige Temperaturmessung
- Einhaltung des Budgets von 50€ (für Hauptbestandteile)

Mögliche Hauptkomponenten nach eigener Recherche
Temperatursensor
- DS18B20 (digitales Signal, günstig, 1-wire, mit 12bit sehr genau, bei 
Bedarf erweiterbar auf mehrere Sensoren mit IP-Bezug ohne großen 
Aufwand)
Microcontroller mit W-LAN-Modul
- ESP8266 geflasht (aufwendig (flashen etc.), stromsparend, günstig, 
fähig??)
- Arduino Nano mit ESP8266 als W-LAN-Modul (teuer, mehr Strom, USB-Port 
inklusive, fähiger??, einfacher zu programmieren??)
Display
- OLED 128x64 Display (einiges darstellbar (Temp. und Akkustand))
- Einfacheres Display?
Akku oder Batterie
- 9V Blockbatterie o.ä. käuflich gut erwerbbare Akku’s/Batterien 
(günstig, schnell zu besorgen, Spannung muss umgewandelt werden)
- 5V LiPo (teurer, nicht so gut zu besorgen, ideale Spannung)
Volt Regulator
- AMS1117 Regulator 5V auf 3,3V (für ESP8266)
Zusätzlich benötigte Bauteile
- Widerstände, Kabel, Layout etc. je nach Bedarf

Soweit erst einmal zu der bisherigen Idee. Es wäre jetzt sehr gut zu 
wissen, ob ich da schon auf der ansatzweise richtigen Spur bin oder ob 
ich gravierende Fehler in der Idee habe. Deshalb würde ich es erstmal 
gerne auf den Grundaufbau mit MicroController, Temperatursensor und 
Stromversorgung beschränken und besprechen. Stück für Stück kann man 
dann die zusätzlichen Teile wie das Display etc. und die technische 
Umsetzung der Ideen besprechen. In vorderster Linie natürlich, ob die 
Sachen wie das versenden einer Mail oder das Einstellen per Poti mit so 
einer Konfiguration o.ä. überhaupt vorstellbar bzw. möglich ist. Dass 
dieses Projekt gerade für den Anfang wahrscheinlich sehr schwer zu 
verdauen ist, kann ich mir gut vorstellen, allerdings muss es 
irgendwann, in welcher Form auch immer, umgesetzt werden und ich hoffe 
ihr habt Lust mich ein wenig zu unterstützen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hauke B. schrieb:
> Zusätzlich sollte das Gerät per Akku/Batterie betrieben werden,

Schon mal drüber nachgedacht, daß am Aufstellungsort von Kühlschränken 
mit sehr hoher Wahrscheinlichkeit davon ausgegangen werden kann, daß 
Steckdosen mit Netzspannung vorhanden sind? Der Kühlschrank selbst wird 
ja schließlich auch irgendwie betrieben.

Verwendet man als Kabel einen Folienleiter, lässt dieser sich auch 
problemlos durch die Türdichtung führen, so daß auch die Dichtung kein 
Argument für aufwendige Akku- oder Batteriestromversorgung ist.

Obendrein können dann --bis auf den Innenraumtemperaturfühler-- alle 
Teile der Schaltung außerhalb des Kühlschranks untergebracht werden, was 
insbesondere dem WLAN-Modul gut tun dürfte (Kühlschrankgehäuse bestehen 
oft aus Metall und haben daher abschirmende Eigenschaften).

Wenn man die Medikamente innerhalb des Kühlschrankes in einer isolierten 
Verpackung mit ausreichender Wärmekapazität unterbringt, stellt auch 
nicht jedes Türöffnen sofort ein Problem dar.

Autor: Kolja (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
DS18b20 sollte genau genug sein.
Hab mal 10 Stk. durch nen Kalibrator geschickt,
hatte weniger Abweichung als im Datenblatt angegeben.

Die Programmierung von nem Arduino oder nem ESP kann die selbe sein.
Für deinen Fall auf jeden!
Nimm den ESP.

Muss ein Display wirklich sein?
Ein ESP kann einen WLAN AP aufmachen, da kann sich jedes Handy einwählen 
und auf einer Webseite Daten einsehen und Konfigurationen vornehmen.

Als Stromversorgung sind Lithium-Ionen-Akkus evtl. nicht glücklich,
da die Kapazität mit der Temperatur sinkt.
Habe ich aber zu wenig Ahnung von...

Wenn du den 1117 nimmst, kannst du gleich ein NodeMCU nehmen.
Effizient sind die (glaube ich) nicht wirklich.



Die Hardware geht schon klar, deine große Aufgabe wird die Software 
sein.
Dein Vorhaben ist aber gut zu stemmen, auch für einen blutigen Anfänger.
Und hey, es gibt CredidPoints ;-)

Mein Vorschlag, kaufe eine NodeMCU (die hat nen USB Anschluss), einen 
DS18b20 und einen 4,7kOhm Widerstand.
Lade dir die ArduinoIDE runter und suche nach Beispeilskripten.

Viel Spaß, ist auf jeden Fall interessanter, als für Klausuren zu 
lernen.

Autor: _Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Max MMM (maxmicr)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hauke B. schrieb:
> - ESP8266 geflasht (aufwendig (flashen etc.), stromsparend, günstig,
> fähig??)

Es gibt im esp8266-Forum eine ausführliche Anleitung, wie man unter 
Windows (wenn das dein favorisiertes OS ist) Eclipse zusammen mit dem 
SDK von Espressif zum laufen bekommt. Damit kannst du den Controller (in 
Verbindung mit einem USB / UART Konverter) in C programmieren und die 
von dir gewünschten Sachen sind nicht allzu schwer umzusetzen. 
Alternativ auch in Lua oder mit der Arduino IDE. Der ESP8266 hat einen 
ADC-Pin, mit dem du die Spannung des Akkus überwachen könntest, der 
digitale Temperatursensor kann mit entsprechenden Protokollen 
angesprochen werden. I2C ist z.B. möglich. SPI ist, soweit ich richtig 
informiert bin, schon vom externen Flash belegt. SPI lässt sich aber in 
Software relativ 'einfach' umsetzen.
Dann liest du mit einem Timer in bestimmen Zeitabständen den 
Temperatursensor aus und überträgst die Temperatur an eine Website via 
HTTP. Diese wiederum kann z.B. via Ajax eine PHP Funktion auf dem 
Webserver aufrufen, der eine E-Mail sendet, wenn die Temperatur nicht 
mehr im gewünschten Bereich liegt.
Als weiteres Feature könnte ich mir eine Art 'Datalogging' vorstellen. 
Die PHP Funktion kann die Werte in einer Datenbank ablegen, diese stellt 
die Website wiederum in einem schicken Diagramm dar.
Eine Website muss nichts kosten, es gibt Anbieter, die liefern einen 
kostenlosen Webspace mit (veraltetem) PHP & MySQL.

Wenn du Strom sparen musst: Der ESP8266 hat auch einen Sleep Modus. Ein 
stromsparender Spannungswandler wäre z.B. der HT7333, der hat auch eine 
geringere Dropout Voltage als der AMS1117.

: Bearbeitet durch User
Autor: someone (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Du scheinst Dir ja schon Gedanken gemacht zu haben. Das ist gut!
Was die 50 Euro Budgetgrenze sollen, weiß ich aber nicht, das finde ich 
doch sehr einschränkend.

Ohne nun zuviel Kritik an der Sache üben zu wollen, aber der Clou 
heutiger Miniaturisierung ist doch, dass man dan ganzen Kram mit 
Displayeinheit uswusf. gar nicht mehr braucht. Da könnte man sicher 
deutlich coolere Features einbauen, wenn man etwas um die Ecke denkt. 
Falls Du Inspiration suchst, frag nach.

Dein größtes Problem wird die Sache mit der Energie. Du solltest also 
darauf achten, möglichst energiesparende Komponenten zu verwenden. 
Hierfür wäre erstmal eines wichtig: Die Temperaturüberprüfung deutlich 
seltener laufen lassen. Finde heraus, gegebenenfalls durch Messungen, 
wie lange so ein Medikament überhaupt braucht, um sich so stark 
aufzuwärmen, dass die Lagertemperatur überschritten wird. Das sind 
hoffentlich nicht die 3 K, die du als Grenzwert angegeben hast, sondern 
etwas mehr. Sobald du das weißt, kannst du dein Messintervall 
entsprechend anpassen. Ich gehe nicht davon aus, dass du häufiger als 
alle 10-30 Sekunden messen musst. Zwischen den Messungen schickst du 
dein Gerät in den Schlaf, dann braucht es kaum Energie. Die 
Funkverbindung wird erst dann angeschaltet, wenn sie wirklich benötigt 
wird, also zum Alarm bzw. für periodische "ich lebe noch"-Nachrichten. 
Gegebenenfalls wird verlangt, die Temperatur aus Gründen der 
Nachvollziehbarkeit mitzuloggen, die letzten Logdaten kannst du dann in 
dieser Nachricht versenden.
WLAN braucht UNGLAUBLICH viel Strom. Vergiss also alles, das dein Gerät 
die ganze Zeit im Netz lässt. Die Sache mit dem Display ist halt auch so 
eine Sache. Die brauchen auch Strom, den Du nicht hast. Deine ganze 
Projektidee ist meines Erachtens nach etwas zu konservativ, du hängst 
noch zu sehr an der riesigen an der Türe montierten Einheit. Ein Problem 
dabei ist auch, das System gegen Fehlbedienung der Benutzer zu 
sichern--ein Kühlschrank hat verschiedene Temperaturzonen. Wenn Sensor 
und Medikament nicht in der selben Zone liegen, bringt die Überwachung 
nicht so viel.

Die Komponentenauswahl ist durchaus okay, gegebenenfalls reicht aber 
auch ein entsprechend spezifizierter Thermistor zur Messung. Dafür 
brauchst du den ADC, das sollte aber passen.

Autor: Thomas G. (blasebalg)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Hab vor Jahren einen Kühlschrankwächter gebaut, da meine Schildkröten 
damals im Kühler überwintert wurden. Daher ein paar Praxisdinge:
Das Temperaturgefälle im Kühler ist nicht zu unterschätzten, da unten 
meist Wärmer wegen Motor. Bei mir waren‘s ca. 4 Grad Gefälle. Daher ehr 
mehr Sensoren nehmen. Zusätzlich volle Wasserflaschen im Kühler 
unterbringen oder PC-Lüfter hat etwas Abhilfe geschaffen.
Hatte damals ein paar DS???? im 8pol DIL-Gehäuse im Schrumpfschlauch 
untergebracht. Im Kühler standen Kisten mit Erde in welchem die Sensoren 
eingebuddelt waren. Temperatur schwankte bei mir um ca. 1 Grad. Mein 
Wächter war eigentlich eine 2. Steuerung für den Kühler…. Kühler wurde 
auf ca. 2 Grad gestellt und der Wächter schaltete einfach den Kühler ab, 
wenn 5 Grad unterschritten wurden und wieder ein bei 6 Grad.
Kabel für Sensor wurde einfach durch die Tür gelegt… Der Kühlergummi hat 
genug gedichtet.
Jede Sekunde die Temperatur zu messen halte ich für Überflüssig, da 
feste Stoffe die im Kühler untergebracht sind doch was träger sind beim 
erwärmen/abkühlen ebenso der Sensor.

Autor: Hauke B. (sattelschwein25)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen, ersteinmal schonmal vielen Dank an Alle, die fleißig 
geantwortet haben, ihr bringt echt super Ideen und Lösungen mit und 
viele Aspekte, an die ich so nicht gedacht habe, aber mit denen ich noch 
zu kämpfen gehabt hätte.

@Rufus T. Firefly
Mit der Stromversorgung übers Netz ist eigentlich eine sehr gute Sache, 
da der Kühlschrank ja auch übers Netz versorgt werden sollte. Einziges 
Problem ist die Möglichkeit des Stromausfalls, da müsste dann ein Akku 
o.ä. einspringen und noch ein Signal absetzen. Allerdings ist bei einem 
Stromausfall auch nicht mehr viel mit Internet, was die Sache dann 
natürlich nicht leichter macht. Aber generell wäre es machbar das Gerät 
per Netz zu versorgen und einen Akku als Reserve vorzusehen? Ich werde 
versuchen meinen Prof. von dem Netzbetrieb zu überzeugen. - Vielleicht 
habe ich mich ein wenig unpräzise ausgedrückt, aber der Plan sah vor, 
das Gerät von draußen an der Kühlschranktür zu befestigen mit Magneten 
o.ä. und dann den Temperatursensor durch die Dichtung in den Kühlschrank 
zu führen. Laut Thomas G. sollte es ja mit normaler Verkabelung klappen, 
falls nicht ist ein Folienleiter eine interessante Alternative.

@Kolja
Damit steht der DS18B20 also schonmal fest! ;) Auf einem ESP mit 
ArduinoIDE zu programmieren klingt schonmal sehr gut, da dieses ja weit 
verbreitet zu sein scheint und vieles im Web zu finden ist. Das Display 
ist halt so eine Sache, ja es ist irgendwie Spielkram, aber auf der 
anderen Seite wäre es halt in Verbinung mit einem Poti zum Steuern eine 
gute Lösung, um "normalen Mitarbeitern" vor Ort die Handhabung zu 
vereinfachen, sodass nicht für jede Einstellung ein PC-Anschluss oder 
Zugriff übers Netz notwendig ist. Also im Kühlschrank wäre der Akku oder 
die Batterie ja nicht, also wäre das Problem mit der Kapazitätsänderung 
ja nicht da. Dein Vorschlag mit der NodeMCU klingt echt gut, das Teil 
würde es definitiv einfacher und günstiger machen. Ich werde mir, wie 
von dir empfohlen, im Vorfeld schonmal eine NodeMCU, den DS18B20 und 
einen 4,7kOhm Widerstand zulegen und ein wenig Erfahrung sammeln.

@_Gast
Haha, man gut es ist ein irrealer Kunde und den Rest der Beteiligten 
beläuft sich auf meine Person.. ;)

@Max MMM
Ich werde es wohl erstmal mit der ArduinoIDE versuchen, wegen der oben 
genannten Gründe. Das mit der Akkuladestand-Überprüfung per ADC-Pin 
werde ich im Auge behalten, sofern es möglich ist den Akku inkl. 
Netzversorgung zu betreiben bzw. es auf eine reine Akkuversorgung 
hinauslaufen sollte. Der Weg mit dem HTTP ins Web und per Ajax eine 
Mail-Steuerung klingt bestens, das ist genau das was ich brauche. Die 
Option mit dem Datalogging finde ich richtig gut, das werde ich, sofern 
ich die Zeit habe als zusätzliches Feature definitiv versuchen 
umzusetzen. Den Sleep-Modus müsste ich verwenden, sollte ich eine reine 
Akkuversion machen, dafür gut zu wissen, für den Netzbetrieb aber nicht 
zwingend nötig.

@someone
Die 50€ wurden leider vom Prof. gesetzt und geben unser Budget an, wir 
können natürlich alles verwenden was wir durch unsere Unternehmen oder 
durch Sponsoring in die Finger bekommen. Kleinere Bauteile wie einige 
Widerstände, Verkabelung, Layouts etc. werden aber auch von der Uni 
teilweise gestellt. Es muss also nur für die groben Hauptbestandteile 
reichen. Ziel ist natürlich auch mit dem Budget hinzukommen, eine 
Kernaufgabe angehender Wirtschaftsingenieure. Also generell ist es ja 
kein Gerät was eine Tatsächliche Verwendung finden soll, deswegen sind 
Sachen wie die Temperatur und die Differenz nach oben und unten "quasi" 
frei bestimmbar, sollten aber natürlich schon ansatzweise realistisch 
sein. Insofern ist auch die Temperaturempfindlichkeit von Medikamenten, 
die ja eh enorm unterschiedlich ist, nicht der ausschlaggebenste Faktor. 
Zur Umsetzung tendiere ich dank eurer wunderbaren Beiträge mitlerweile 
zwischen zwei Varianten, einer kleinen schlanken per Akku betriebenen 
Version ohne viel Schnickschnack, die sehr effizient nur das sendet, was 
es soll. Auf der anderen Seite der wie von dir beschriebene konservative 
fette Kasten mit allem Möglichen an Spielkram, wie Display etc.. 
Weiteres werde ich aber in Kürze mit meinem Prof besprechen. Für erstere 
Variante wäre die Energiesparbauteile natürlich gut. Genauso die 
Anpassung der Messungshäufigkeit. Es ist ja so oder so totaler Quatsch 
jede Sekunde eine Messung vorzunehmen, alle 20-30 sek reicht theoretisch 
völlig. Evtl. sogar noch größere Intervalle, ja nach Empfindlichkeit des 
'theoretischen Medikamentes'.. ;) Sich zusätzlich mit den Zonen zu 
beschäftigen ist wahrscheinlich keine so schlechte Idee, da finde ich 
die Praxis-Tipps von Thomas G. sehr hilfreich.

@Thomas G.
Wie gerade schon genannt ist deine Praxiserfahrung sehr hilfreich, dass 
das Gefälle mit bedacht werden muss und deine einfache Umsetzung mit dem 
trägen Wärmeverlust mancher Stoffe ist sehr gut. Theoretisch ja sowohl 
für den Sensor als auch für die Medikamente umsetzbar, das würde auch 
nicht nur bei der Messung die Öffnung des Kühlschrankes egalisieren.

Also nochmals Vielen Dank an Alle, das war schon äußerst hilfreich!!! 
Ich werde jetzt erstmal mit meinem Prof. die weitere Vorgehensweise 
besprechen, sprich reiner Akkubetrieb und eher downsizing oder Netz+Akku 
und 'konservativer Klotz'. Zusätzlich werde ich mir schonal den Tipp von 
Kolja zu Herzen nehmen und mit den oben genannten Bauteilen schonmal 
fleißig programmieren üben! :) Wenn es weitere Ideen, Tipps, Kritik oder 
Meinungen gibt, lasst es raus, ich bin für jeden Beitrag der meinen 
Horizont erweitert, verfestigt oder auch vernebelt dankbar, um tiefer in 
das Projekt einzusteigen. Wahnsinnig gut wäre eine Meinung, wie am 
besten der Netzbetrieb +Reserveakku für Stromausfälle o.ä. umzusetzen 
wäre.

Vielen Dank und freundliche Grüße, Hauke

Autor: zu meiner zeit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß ja nicht, wie es heute ist....aber zu meiner Zeit haben wir uns 
nicht vom "Internet" helfen lassen, sondern diese Arbeiten als 
Gruppenarbeit SELBSTSTÄNDIG bearbeitet und das Resultat war dann reine 
EIGENLEISTUNG...ist das heute nicht mehr gewünscht?


Btw: "zu meiner Zeit" war vor 6 Jahren....ist also noch kein 
Generationenwandel...

Autor: Max MMM (maxmicr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu meiner zeit schrieb:
> aber zu meiner Zeit haben wir uns
> nicht vom "Internet" helfen lassen,

Habt ihr zu eurer Zeit keine Bücher gelesen, ich mein, da stehen ja auch 
Informationen drinnen? Irgendwoher muss man die Infos doch bekommen.

Autor: zu meiner zeit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bücher über Projektmanagement und Elektronik zu lesen ist das eine.
Seine Ideen mit hunderten Forenusern im Internet zu diskutieren etwas 
anderes. Anstatt, dass ihr in eurer Projektgruppe besprecht, wie 
Sinnvoll oder dämlich bestimmte Ideen sind, besprecht ihr das mit 
"vielen, vielen Leuten" Das ist dann keine Eigenleistung mehr

Autor: zu meiner zeit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Irgendwoher muss man die Infos doch bekommen.

JA, SELBST ERARBEITEN.

Seid ihr von Copy&Paste schon so verwöhnt, dass ihr das nicht mehr auf 
die Reihe bekommt?

Autor: Max MMM (maxmicr)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hauke B. schrieb:
> Wenn es weitere Ideen, Tipps, Kritik oder
> Meinungen gibt, lasst es raus, ich bin für jeden Beitrag der meinen
> Horizont erweitert, verfestigt oder auch vernebelt dankbar, um tiefer in
> das Projekt einzusteigen.

Hast du dir schon überlegt, ob du eine Platine designen & fertigen 
lassen willst? Benutzt du den reinen ESP8266 oder eine Trägerplatine wie 
das NodeMCU?

Autor: Hauke B. (sattelschwein25)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu meiner zeit schrieb:
> Ich weiß ja nicht, wie es heute ist....aber zu meiner Zeit haben wir uns
> nicht vom "Internet" helfen lassen, sondern diese Arbeiten als
> Gruppenarbeit SELBSTSTÄNDIG bearbeitet und das Resultat war dann reine
> EIGENLEISTUNG...ist das heute nicht mehr gewünscht?
>
> Btw: "zu meiner Zeit" war vor 6 Jahren....ist also noch kein
> Generationenwandel...

Die Idee hinter der Sache ist eine ganz Spezielle. Wir sollen mit einer 
groben Elektrotechnikausbildung (1 Modul: Elektrotechnik) in der man 
natürlich in die Materie eingeführt wird, aber nicht mal im Ansatz so 
tief wie hierfür notwenidig, ein Projekt "alleine" bearbeiten. Die 
Aufgabe ist, dass wir ein Semester erstmal recherchieren, die 
Produktidee entwickeln, die technische Umsetzung theoretisch oder 
teilweise experimentell umsetzen und uns in die Materie einarbeiten. 
Dazu ist es ausdrücklich erwünscht uns Hilfe, Ideen und Tipps bei 
Experten zu holen oder bei Leuten die etwas von der Materie verstehen. 
Viele meiner Komilitonen haben in ihren Firmen eine eigene Elektronik- 
oder IT-Abteilung die i.d.R. sehr hilfsbereit sind, mein Unternehmen 
beschäftigt sich ausschließlich mit dem Metallbau und hat nichtmal ein 
bisschen mit diesem Themenbereich zu tun. Daher hab ich erstmal versucht 
durch die Recherche einen Ansatzpunkt zu finden und will die Idee mit 
eurer Hilfe und der von Bekannten, sowie der des Professors entwickeln 
und umsetzen. Wir werden Wirtschaftsingenieure, d.h. wir haben nur 
bedingt später im Beruf mit solchen Sachen kontakt, daher steht die 
Projektarbeit an sich, wie Zeitrahmen, Budget, Zeitplanung, Recherche, 
technische Planung, evtl. weitere Finanzierung und die Präsentation eher 
im Fokus als die eigentliche Umsetzung. Wichtig ist vor allem wie man 
sich verhält, mit einer herausfordernden Aufgabe, von deren Materie man 
nicht wirkich eine Ahnung hat. Dazu ist also zwingend notwendig in 
kurzer Zeit möglichst breit gefächerte und gute Optionen zu haben, aus 
denen man sich heraussucht, was man seiner Ansicht nach am ehesten 
benötigt. - Natürlich soll ich kein fertiges Produkt kaufen, es nur nach 
einer Anleitung zusammenbauen oder es von Anderen fertigen lassen. Aber 
die Ideenfindung und theoretische Umsetzung mit Leuten, die was von der 
Materie verstehen, zu besprechen und sich helfen zu lassen ist erstens 
auf jeden Fall legitim und zweitens meiner Ansicht nach auch sehr 
fruchtbar. Und wie gesagt, ich werde Wirtschaftsingenieur und kein 
Elektroingenieur o.ä.!

Mit freundlichen Grüßen, Hauke

Nachtrag:
Es wird auch ein Projekt geben in der mehrere Leute sich ein größeres 
Projekt vornehmen und bearbeiten, aber auch da ist eine vernünftige 
Ausarbeitung mit fremder Hilfe gern gesehen. In diesem Projekt arbeite 
ich alleine und kann mir selbstverständlich Hilfe suchen, wo ich möchte. 
Der Bau und die Programmierung wird von mir ausgeführt. Bei der 
Umsetzung kann man sich natürlich auch helfen lassen, solange man keine 
Fertiglösung nimmt oder nur Copy and Paste benutzt.

: Bearbeitet durch User
Autor: Hauke B. (sattelschwein25)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max M. schrieb:
> Hast du dir schon überlegt, ob du eine Platine designen & fertigen
> lassen willst? Benutzt du den reinen ESP8266 oder eine Trägerplatine wie
> das NodeMCU?

NodeMCU ist der momentane Plan. Platine designen und fertigen zu lassen 
ist mal abgesehen von den zusätzlichen Kosten eher keine Option, da das 
Projekt ja nur funktionieren soll. Es muss keine bestimmte Größe haben, 
es hat keine Vorgabe für die Optik oder die technische Eleganz. Ich muss 
es halt umsetzen können, das ist das primäre Ziel. Je nachdem wie groß 
es ist, kann ich es dann noch schick verpacken, aber wie es dann drinnen 
aussieht ist nicht relevant.

Vielen Dank und mit freundlichen Grüßen, Hauke

Autor: someone (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Auch wenn es dich vielleicht jetzt ein wenig stört, dass ich wieder so 
herumnörgle: Du vergisst etwas Wesentliches.
Gerade, weil du vielleicht im Laufe deines Studiums nicht so zu dieser 
Einsicht kommen wirst, weil ihr nie in eine Situation gebracht werdet, 
in der das klar wird, will ich dir einen Tip geben. Zur Entwicklung 
gehört erstmal extrem viel Planung. Einen Teil dieser Planung 
beherrschst du, ein anderer ist aber noch viel wichtiger (jaja, sorry!): 
Die Anforderungsanalyse. Ohne Anforderungsanalyse kein Projekt, das was 
wird. Anforderungsanalysen sind teuer und aufwändig, weshalb du 
natürlich aktuell auch keine Lust darauf hast. Das ist verständlich, 
aber beachte es in Zukunft, wenn es mal wieder nicht schnell genug geht.
Wie kommst du nun zu deiner Anforderungsanalyse? Wenngleich es sich um 
ein hypothetisches Projekt handelt, rate ich dir, zumindest eine 
oberflächliche Anforderungsanalyse durchzuführen. Dazu musst du erstmal 
wissen, was die Konzepte aus der Anwendungsdomäne sind. Hier geht es um 
Medikamente, die gekühlt werden müssen. Also gehst du in die nächstbeste 
Apotheke, erklärst dein Projekt und fragst die Leute dort, welche 
Medikamente denn gekühlt werden müssen, wie warm und wie kalt die werden 
dürfen, wie groß die Packungen sind, ob es Flüssigkeiten, Tabletten oder 
sonstwas ist, gegen was die eingesetzt werden und welche Leute 
üblicherweise damit zu tun haben (Endanwender, medizinisch geschultes 
Personal, Ärzte), etc. Schreib das alles auf, ist auch für die 
Projektdokumentation wichtig. Mit diesen Informationen kannst du dann 
einige Parameter deines Systems ermitteln, auch was absolute 
Temperaturgenauigkeit (ist ja immer vom Sensor abhängig!) anbelangt. Das 
beeindruckt auch deinen Professor, weil es eine strukturierte, 
ingenieurhafte Herangehensweise an das Problem zeigt. Du wirst sicher 
auch feststellen, dass es einige Medikamente gibt, die gekühlt werden 
müssen und die Endanwender selbst einnehmen dürfen. Hierbei stellt sich 
dann sofort die Frage nach der Bedienbarkeit des Systems. Insbesondere 
muss man sich die Frage stellen, ob die Zieltemperatur bzw. die 
Warnintervalle einfach so umgestellt werden sollen. Wenn ja, wie kann 
man das System gegen versehentliches Verstellen schützen? Wie kann man 
es gegen absichtliches Verstellen durch unbefugte Personen schützen? Die 
Alternative wäre eine feste Temperatur. Wie wird diese eingestellt?

Ich will dir nur Anregungen geben und nicht schon alle Fragen 
beantworten, letztendlich ist es ja dein Projekt. Aber es ist wichtig, 
dass du dich zuerst mal mit den Medikamenten beschäftigst, bevor du hier 
Hardware spezifizierst und dir großartige Gedanken machst. Das Projekt 
ist ja nichtmal ein Prototyp, insofern spielt die Hardwareauswahl kaum 
eine Rolle--die Sache ist auf den ersten Blick "einfach" genug, damit 
man da mit relativ kostengünstiger Hardware zurechtkommt.

Autor: Hauke B. (sattelschwein25)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@someone
Vielen Dank für deinen Rat mit einer vernünftigen und ordentlichen 
Anforderungsanalyse. Ich werde deinen Tipp auf jeden Fall beherzigen und 
Infos 'vor Ort' einholen, die mir helfen, meine Anforderungen und 
Parameter genauer zu bestimmen. Schließlich ist eine gute Dokumentation 
und Argumentation meiner Entscheidungen ein wesentlicher Bestandteil des 
Projektes.

Parallel werde ich auch mit meinem Prof. nochmal genau über das Thema 
sprechen, inwieweit er sich das vorstellt, da die Projektidee von ihm 
kommt und ich daher natürlich auch seinen Vorstellungen ein wenig Platz 
geben möchte.

Nichtsdestotrotz werde ich mir schonmal einen Teil der Hardware 
(NodeMCU, DS18B20 und 4,7kOhm Widerstand) zulegen, um einfach schonmal 
mit kleinen Programmen anzufangen. Dann kann man noch mit LED's, 
akkustischen Signalen etc. erweitern und weiter ausprobieren. Vor der 
Programmierung habe ich mit am meisten Respekt und will da lieber 
schnell eine gute Grundlage schaffen, sodass wenn ich in ca. 6-7 
Monaten, wenn ich mit der Umsetzung beschäftigt bin, die wesentlichsten 
Sachen gut beherrsche.

Zusätzlich muss ich natürlich in Erfahrung bringen ob die mir 
vorschwebenden Ideen technisch umsetzbar sind, sodass ich nicht am Ende 
merke, dass da was nicht funktionieren kann.

Vielen Dank und mit freundlichen Grüßen, Hauke

Autor: Ben B. (Firma: Funkenflug Industries) (stromkraft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Projekt an der Uni - Kühlschrankwächter
Seit wann haben Studenten denn einen Kühlschrank?

Autor: Kuckst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du hier: http://www.pearl.de/a-NC3912-3043.shtml?query=k%C3...
only 19,90! Web-cam vor das Display und ab mit den Daten ins WLAN

Autor: someone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sobald du mit der Programmierung anfängst, wirst du feststellen, dass es 
eher "zu einfach" geht. ;)
NodeMCU ist für solche "Spielereien" wirklich gut geeignet, da die 
beliebten Funktionen gut nutzbar sind. In der tatsächlichen Anwendung 
würde man das natürlich anders machen, nicht zuletzt aus Gründen der 
Zuverlässigkeit und aus Kostengründen. Aber für einen 
Ideen-Demonstrator, wie du ihn baust, spielt das alles keine Rolle. Da 
ist das schon eine sehr gute Lösung.

Autor: Frank K. (fchk)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hauke B. schrieb:
> *Daraus resultierende Anforderungen*
> - möglichst energiesparend
> - W-LAN fähig
> - möglichst genaue Temperaturmessung
> - regelmäßige Temperaturmessung
> - Einhaltung des Budgets von 50€ (für Hauptbestandteile)

WLAN und stromsparend passt nicht zusammen. Das kannst Du recht einfach 
selber überprüfen: Smartfon mit ausgeschaltetem Mobilfunk, aber aktivem 
WLAN in eine Ecke mit WLAN-Empfang packen und liegen lassen. Die 
Laufzeit wird sich eher in Tagen messen als in Wochen oder Monaten. Für 
eine Studie ok, für eine echte Produktentwicklung (und das ist ja wohl 
der Lernzweck) völlig daneben.

Die üblichen Heimautomatisierungslösungen arbeiten entweder im 433/868 
MHz ISM-Bereich oder mit einer 2.4 GHz Kurzsteckenfunklösung wie IEEE 
802.15.4 oder darauf aufbauenden Standards wie Zigbee oder 6LoWpan etc.

> *Temperatursensor*
> - DS18B20 (digitales Signal, günstig, 1-wire, mit 12bit sehr genau, bei
> Bedarf erweiterbar auf mehrere Sensoren mit IP-Bezug ohne großen
> Aufwand)

für ein Produkt im 50€-Bereich viel zu teuer. In der Industrie würdest 
Du dafür gevierteilt werden. Hier würde man eher einen Thermistor oder 
einen PTC/NTC einsetzen. Dieses Zeugs liegt im Centbereich.

> *Microcontroller mit W-LAN-Modul*
> - ESP8266 geflasht (aufwendig (flashen etc.), stromsparend, günstig,
> fähig??)
> - Arduino Nano mit ESP8266 als W-LAN-Modul (teuer, mehr Strom, USB-Port
> inklusive, fähiger??, einfacher zu programmieren??)
> *Display*

Ein kleiner Tip: schau mal, was in diesen steuerbaren LED-Lampen von 
Philips oder Osram oder so drin ist. Was hier verbaut wird, ist günstig 
und in Massen zu haben. Wireless MCUs von TI werden sehr gerne genommen, 
und ab und an werden auch Atmel 128/256RF... Chips gefunden.

Auf YouTube gibt es Teardowns von diesem Zeugs. Dabei kannst Du was 
lernen.

Youtube-Video "Philips HUE (2016)  LED Bulb Teardown"
Youtube-Video "Cree Connected LED Bulb Teardown"

> - OLED 128x64 Display (einiges darstellbar (Temp. und Akkustand))
> - Einfacheres Display?

Zu teuer und zu batteriefressend. In der Industrie werden sehr gerne 
segmentierte LCD_Gläser verwendet, wenn die Anforderungen es zulassen.

Beispiel: 
Ebay-Artikel Nr. 391491642141
Das wurde wohl für einen Hersteller von Heizungen/Warmwassererzeuger/... 
gefertigt, und da sind jetzt wohl Restposten über. Im Einkauf in großen 
Stückzahlen kosten die nur einige 10 Cent, und vom 
Stromverbrauchsgesichtspunkt gibt es nichts sparsameres. Da fließen nur 
µA, wenn überhaupt. Ab 1000 Stück bekommst Du ein LCD-Glas 
kundenspezifisch nach Deinem Design.

Außerdem haben OLEDs eine beschränkte Lebensdauer.
Auch hier gilt: für ein Uni-Projekt ok, im echten Leben unbrauchbar.

> *Akku oder Batterie*
> - 9V Blockbatterie o.ä. käuflich gut erwerbbare Akku’s/Batterien
> (günstig, schnell zu besorgen, Spannung muss umgewandelt werden)
> - 5V LiPo (teurer, nicht so gut zu besorgen, ideale Spannung)
> *Volt Regulator*

Im echten Leben wird es auf 2-4 AAA-Zellen hinauslaufen. Das sollte Dir 
klar sein. Du willst keine 5V-Komponenten, weil die zu viel Leistung 
ziehen. Ein kleiner Schaltregler kostet nichts.

Schau Dir mal das hier an:

https://www.amazon.de/OSRAM-LIGHTIFY-Starter-Gatew...?

Zwischen Lampe und Gateway wird wohl 802.15.4 eingesetzt werden, erst 
das Gateway macht daraus WLAN. Da das Gateway an/in der Steckdose sitzt, 
ist das auch ok so.

Dieses Produkt liegt in etwa in dem gleichen Preisrahmen, der für Dein 
Projekt vorgegeben ist. Was Du Dir merken kannst: Bei einem 
Endverbraucherpreis von x € wird der Herstellungspreis maximal (x/3)€ 
sein. Bei diesem Osram-Zeug sind das 20€. Unter diesem Gesichtspunkt 
werden meine Kommentare zu Deiner Bauteileauswahl wohl eher 
verständlich.

Zum Lernen: Kauf Dir einfach mal so ein Set zum Zerlegen und Aufsägen, 
und schau nach, was darin verbaut ist. Sei aber vorsichtig. Es könnte 
nämlich sein, dass das gesamte WLAN-Gateway auf Netzpotential liegt, 
weil man sich aus Kostengründen die galvanische Trennung gespart hat. 
Die ist ja auch nicht notwendig, solange die Einheit komplett isolierend 
gekapselt ist.

fchk

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Meinung zum Thema Display ja/nein und der Meinung: "Display ist 
doch Oldschool, geh mit der Zeit nutze die App!"

Völliger Schwachsinn! Als reine Sichtkontrolle, und wenn es unbewusst im 
Vorbeilaufen ist, ist eine optische Anzeige am Kühlschrank 
unentbehrlich. Es sind zwei Punkte: die Sicherheit die es einem gibt 
etwas "mit einem Blick" zu sehen ist tausendmal zufriedenstellender als 
der Schleichende Gedanke "Läuft es noch? Wie hoch wird wohl die 
Temperatur sein?" Und der zweite Punkt: jedesmal ein Handy rauszuholen 
wenn ich vor dem Kühlschrank stehe, es zu entsperren, die Webseite/App 
zu öffnen um die aktuelle Temperatur zu sehen (und um die Nerven zu 
beruhigen) würde mir ja sowas von auf die Nüsse gehen mit der Zeit!

Ich habe zwei 7seg LED Anzeigen an meinem Gerät, eine für den 
Kühlschrank und eine für den Gefrierschrank und ich möchte diese nicht 
missen wollen, auch wenn ich bequem vom Sessel darauf zugreifen kann / 
könnte.

Man muss daran auch nichts umstellen können, warum auch, dazu kann man 
dann die App / Webseite nutzen. Es dient lediglich zur Anzeige.

Sollte der Strombedarf wirklich auf Batteriebasis bleiben, würde ich 
allerdings auch zu LCD oder COG Displays greifen. Bei Netzbetrieb 
definitiv zu 7seg Anzeige, alleine schon wegen der Leuchtkraft, die 
einfache Ablesung und kein unnötiger Schnitzel. Das Ding soll in ein 
Labor und nicht auf den Laufsteg!

Autor: F. Fo (foldi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hauke B. schrieb:
> Einziges
> Problem ist die Möglichkeit des Stromausfalls, da müsste dann ein Akku
> o.ä. einspringen und noch ein Signal absetzen. Allerdings ist bei einem
> Stromausfall auch nicht mehr viel mit Internet, was die Sache dann
> natürlich nicht leichter macht. Aber generell wäre es machbar das Gerät
> per Netz zu versorgen und einen Akku als Reserve vorzusehen?

Auf den Bildern ist auch eine Temperaturüberwachung und -regelung zu 
sehen. Die Led zeigt an, dass Spannung vorhanden ist und sollte der 
Lüfter ausfallen oder die Temperatur aus anderem Grunde zu hoch sein, 
ist da noch der Piepser. Natürlich über einen DS18B20 überwacht.

Hintergrund des "gestrickten Aufbaus": Die FB wurde mal einen Sommer zu 
heiß und sie hatte noch Garantie, sodass ich sie nicht verbasteln 
wollte.
Programm war im Grunde, bis auf kleine Änderungen schon so fertig und 
das war dann eben in einer Stunde so zusammen gebaut. Läuft schon so 
seit einigen Jahren.

Klar!
Um diese eine Nachricht abzusetzen, reicht ein Goldcap dicke aus.
Display? Tut es nicht eine rot/grün Led? Temperatur in Ordnung, grün, 
wenn nicht, dann rot.

@Moderator

Leider wurde der Upload nicht korrekt angezeigt. Bitte überflüssige 
Bilder löschen. Danke!

: Bearbeitet durch User
Autor: F. Fo (foldi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach noch eine Idee zum WLAN, wenn man ganz auf Pufferbatterie verzichten 
will.
Du sendest in einem regelmäßigen Abstand ein "OK Signal" an deine App. 
Bleibt dieses länger aus, reagiert deine App mit einem Alarm.

Autor: Hauke B. (sattelschwein25)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag zusammen,

vielen Dank nochmal für die reichlichen Tipps und Ideen die ihr mir 
gegeben habt, die haben mir sehr geholfen.

Mittlerweile bin ich mitten in dem Projekt und bin auch schon relativ 
weit gekommen. Verwendet habe ich einen ESP-8266 in Form eines NodeMCU's 
und drei DS18B20 Temperatursensoren sowie ein standart SD-Modul, 
OLED-Display, Pieper und LED.

Fast alles funktioniert nun auch so, wie es funktionieren soll. Die 
Temperatur wird auf dem Display angezeigt. Es kommt eine Fehlermeldung, 
wenn ein Sensor zu heiß oder zu kalt wird. Wenn eine bestimmte 
Temperatur über- oder unterschritten wird, dann wird ein Alarm ausgelöst 
über Piepser und LED. Alle Werte werden mit Zeitstempel auf einer 
SD-Karte gespeichert. Die Zeit wird aus dem Internet von einem 
NTP-Server bezogen.

Ein paar Probleme sind allerdings noch zu lösen:

1. Die Zeit wird aus der NTP-Zeit errechnet. Diese wird auf der SD-Karte 
mit gespeichert (s.Anhang und Code). Das ist natürlich unnötig und nicht 
so schön anzusehen, bzw. stört auch die Auswertung und erhöht den 
Speicherbedarf. Da ich leider noch sehr wenig Programmierkenntnisse 
besitze, erkenne ich meinen Fehler nicht.

2. Im Falle eines Stromausfalls könnte natürlich auch die 
Internetverbindung betroffen sein, insofern wäre es gut, wenn man die 
letzte zur Verfügung stehende Zeit aufgreifen könnte und in etwa manuell 
weiterführt, bis das Internet wieder da ist.

3. Versenden einer Warnnachricht bei Temperaturüber-/-unterschreitung 
wird bei mir per Telegram nachricht und entsprechendem Bot ausgeführt. 
Dazu muss nur ein Link aufgerufen werden. Genau dies ist aber noch ein 
Problem für mich, da die normale Bridge.h-Library für den Arduino vom 
ESP nicht unterstützt wird und die ESP-Bridge Library von GitHub bei mir 
nicht erkannt wird, wenn ich die ZIP einbinde. Habt ihr da eine Idee, 
wie ich das alternativ bewerkstelligen kann? Bzw. wie ich eine 
ESP-kompatible Bridge-Library bekomme?

4. Es gab ja noch das Problem mit der Stromversorgung für den Fall eines 
Stromausfalls. Ideal wäre ein Akku der etwas länger hält, da die Daten 
weiterhin auf der SD-Karte gespeichert werden sollen. Die 
Stromversorgung soll auch nach wie vor über den Micro-USB Eingang 
erfolgen, da der D0 Port nicht ansprechbar ist, wenn auf dem NodeMCU die 
Stromversorgung über V-IN erfolgt. Ich würde gerne das Netzgerät mit 
einem Akku und entsprechenden Dioden so schalten, dass das Netzgerät den 
NodeMCU mit Strom versorgt und den Akku läd. Bei einem Stromausfall soll 
dann der Akku das System versorgen. Ich bin mir nicht so sicher, 
inwieweit die Spannung schwanken darf. Über VIN kann die Spannung 
theoretisch bis zu 10V betragen, beim Micro-USB Eingang muss das aber 
schon relativ genau sein oder? Ich favorisiere 4x 1,2V AA-Akkus = 4,8V 
oder 5x 1,2V AA-Akkus = 6V. Würde da eine Möglichkeit funktionieren bzw. 
habt ihr da vielleicht andere Anregungen oder Ideen?


Allgemein lässt sich noch sagen, dass das momentane Programm nicht 
spezielle auf einen Kühlschrank eingestellt ist, sondern zu testzwecken 
auf die Umgebungstemperatur, sodass die Alarme auf (25°C < temp > 20°C) 
gesetzt sind. Auch das Intervall ist mit ~1 sec viel zu schnell, zum 
testen aber gut geeignet.

Im Anhang ist ein Foto vom System und der SD-Werte.
Der Arduino-Code befindet sich am Ende.

Vielen Dank schonmal im Vorraus!
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SD.h>
#include <NTPtimeESP.h>
//#include <ESP8266HTTPClient.h>
//#include <Bridge.h>
//#include <HttpClient.h>

/*  
static const uint8_t SDA = 4;
static const uint8_t SCL = 5;

static const uint8_t LED_BUILTIN = 16;
static const uint8_t BUILTIN_LED = 16;

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = 0;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t D9   = 3;
static const uint8_t D10  = 1;
*/

#define OLED_RESET LED_BUILTIN 
#define DS18B20_PIN D4 
#define DEBUG_ON
const int chipSelect = D8; // use D8 
File myFile;
OneWire oneWire(DS18B20_PIN);  
DallasTemperature sensors(&oneWire);  
NTPtime NTPch("de.pool.ntp.org");
char *ssid      = "XXXXXXXXXXXXXXXXXXXX";
char *password  = "XXXXXXXXXXX";
strDateTime dateTime;
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2


#define LOGO16_GLCD_HEIGHT 16 
#define LOGO16_GLCD_WIDTH  16 
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000 };

void setup()   {    
  pinMode(D3, OUTPUT);
  pinMode(D0, OUTPUT);
              
  Serial.begin(9600);
  sensors.begin();

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);

  digitalWrite(D0, LOW);
  digitalWrite(D3, HIGH);

  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(25,11);
  display.println();
  display.println("Connecting to WiFi:");
  display.display();
  WiFi.mode(WIFI_STA);
  WiFi.begin (ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    display.print(".");
    display.display();
    delay(500);
  }
  display.display();
  display.println();
  display.println("Connected to WiFi!");
  display.display();
  delay(1000);
  display.clearDisplay();

//  HTTPClient http;
//  http.begin("Internetseite, die das PHP-Protokoll ausführt!");
 
 // HttpClient client;
 // client.get("Internetseite, die das PHP-Protokoll ausführt!");
  }

void loop() {
 dispTemp();
 display.clearDisplay();
}

void dispTemp (void){  
  
float T1 = sensors.getTempCByIndex(0);
float T2 = sensors.getTempCByIndex(1);
float T3 = sensors.getTempCByIndex(2);

pinMode(D3, OUTPUT);
pinMode(D0, OUTPUT);

dateTime = NTPch.getNTPtime(1.0, 1);

sensors.requestTemperatures();
SD.begin(chipSelect);
myFile = SD.open("templogg.txt", FILE_WRITE);

if (T1<(T2+1)&&T1>(T2-1)&&T1<(T3+1)&&T1>(T3-1))
{
  float temp = ((T1+T2+T3)/3);

  if(temp >25 || temp <20){
    digitalWrite(D3, LOW);
    digitalWrite(D0, HIGH);
    delay(1000);
    digitalWrite(D3, HIGH);
    digitalWrite(D0, LOW);
  }
 
  display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
  display.setTextColor(WHITE);   
  display.setTextSize(1);       
  display.setCursor(104,3);
  display.print("o");           
  display.setTextSize(2);
  display.setCursor(112,10);    
  display.print("C"); 
  display.setCursor(10,10);
  display.setTextSize(3);
  display.print(temp);
  display.display();
  
  myFile.print("Datum: ");
  myFile.print(dateTime.day);
  myFile.print(".");
  myFile.print(dateTime.month);
  myFile.print(".");
  myFile.print(dateTime.year); 
  myFile.print("  -  ");
  myFile.print("Uhrzeit: ");
  myFile.print(dateTime.hour); 
  myFile.print(":");
  myFile.print(dateTime.minute);  
  myFile.print(":");
  myFile.print(dateTime.second);  
  myFile.print("  -  ");
  myFile.print("Temperatur: ");
  myFile.print(temp);
  myFile.println(" °C");
  myFile.close();
 }




  else
{
  if (T1>(T2+1)&&T1>(T3+1))
  {
    float temp = ((T2+T3)/2);

    if(temp >25 || temp <20){
      digitalWrite(D3, LOW);
      digitalWrite(D0, HIGH);
      delay(1000);
      digitalWrite(D3, HIGH);
      digitalWrite(D0, LOW);
    }

    display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
    display.setTextColor(WHITE);   
    display.setTextSize(1);       
    display.setCursor(104,3);
    display.print("o");           
    display.setTextSize(2);
    display.setCursor(112,10);    
    display.print("C");      
    display.setCursor(10,10);
    display.setTextSize(3);
    display.println(temp);
    display.setTextSize(1); 
    display.println(" ");
    display.println("       DEFEKT!");
    display.println("   Sensor 1 zu warm!");
    display.display();
    myFile.print(temp);
    myFile.println(" °C  -  DEFEKT! Sensor 1 zu warm!");
    myFile.close();
    }
  else
  {
    if (T1<(T2-1)&&T1<(T3-1))
    {
      float temp = ((T2+T3)/2);

      if(temp >25 || temp <20){
        digitalWrite(D3, LOW);
        digitalWrite(D0, HIGH);
        delay(1000);
        digitalWrite(D3, HIGH);
        digitalWrite(D0, LOW);
      }

      display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
      display.setTextColor(WHITE);   
      display.setTextSize(1);       
      display.setCursor(104,3);
      display.print("o");           
      display.setTextSize(2);
      display.setCursor(112,10);    
      display.print("C"); 
      display.setCursor(10,10);  
      display.setTextSize(3);
      display.println(temp);
      display.setTextSize(1); 
      display.println(" ");
      display.println("       DEFEKT!");
      display.println("   Sensor 1 zu kalt!");
      display.display();

      myFile.print("Datum: ");
      myFile.print(dateTime.day);
      myFile.print(".");
      myFile.print(dateTime.month);
      myFile.print(".");
      myFile.print(dateTime.year); 
      myFile.print("  -  ");
      myFile.print("Uhrzeit: ");
      myFile.print(dateTime.hour); 
      myFile.print(":");
      myFile.print(dateTime.minute);  
      myFile.print(":");
      myFile.print(dateTime.second);  
      myFile.print("  -  ");
      myFile.print("Temperatur: ");
      myFile.print(temp);
      myFile.println(" °C  -  DEFEKT! Sensor 1 zu kalt!");
      myFile.close();
    }
    else
    {
      if (T2>(T1+1)&&T2>(T3+1))
      {
        float temp = ((T1+T3)/2);

        if(temp >25 || temp <20){
          digitalWrite(D3, LOW);
          digitalWrite(D0, HIGH);
          delay(1000);
          digitalWrite(D3, HIGH);
          digitalWrite(D0, LOW);
        }

        display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
        display.setTextColor(WHITE);   
        display.setTextSize(1);       
        display.setCursor(104,3);
        display.print("o");           
        display.setTextSize(2);
        display.setCursor(112,10);    
        display.print("C"); 
        display.setCursor(10,10);  
        display.setTextSize(3);
        display.println(temp);
        display.setTextSize(1); 
        display.println(" ");
        display.println("       DEFEKT!");
        display.println("   Sensor 2 zu warm!");
        display.display();

        myFile.print("Datum: ");
        myFile.print(dateTime.day);
        myFile.print(".");
        myFile.print(dateTime.month);
        myFile.print(".");
        myFile.print(dateTime.year); 
        myFile.print("  -  ");
        myFile.print("Uhrzeit: ");
        myFile.print(dateTime.hour); 
        myFile.print(":");
        myFile.print(dateTime.minute);  
        myFile.print(":");
        myFile.print(dateTime.second);  
        myFile.print("  -  ");
        myFile.print("Temperatur: ");
        myFile.print(temp);
        myFile.println(" °C  -  DEFEKT! Sensor 2 zu warm!");
        myFile.close();
      }
      else
      {
        if (T2<(T1-1)&&T2<(T3-1))
        {
          float temp = ((T1+T3)/2);

          if(temp >25 || temp <20){
            digitalWrite(D3, LOW);
            digitalWrite(D0, HIGH);
            delay(1000);
            digitalWrite(D3, HIGH);
            digitalWrite(D0, LOW);
          }

          display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
          display.setTextColor(WHITE);   
          display.setTextSize(1);       
          display.setCursor(104,3);
          display.print("o");           
          display.setTextSize(2);
          display.setCursor(112,10);    
          display.print("C"); 
          display.setCursor(10,10);  
          display.setTextSize(3);
          display.println(temp);
          display.setTextSize(1); 
          display.println(" ");
          display.println("       DEFEKT!");
          display.println("   Sensor 2 zu kalt!");
          display.display();

          myFile.print("Datum: ");
          myFile.print(dateTime.day);
          myFile.print(".");
          myFile.print(dateTime.month);
          myFile.print(".");
          myFile.print(dateTime.year); 
          myFile.print("  -  ");
          myFile.print("Uhrzeit: ");
          myFile.print(dateTime.hour); 
          myFile.print(":");
          myFile.print(dateTime.minute);  
          myFile.print(":");
          myFile.print(dateTime.second);  
          myFile.print("  -  ");
          myFile.print("Temperatur: ");
          myFile.print(temp);
          myFile.println(" °C  -  DEFEKT! Sensor 2 zu kalt!");
          myFile.close();
        }  
        else
        {
          if (T3>(T1+1)&&T3>(T2+1))
          {
            float temp = ((T1+T2)/2);

            if(temp >25 || temp <20){
              digitalWrite(D3, LOW);
              digitalWrite(D0, HIGH);
              delay(1000);
              digitalWrite(D3, HIGH);
              digitalWrite(D0, LOW);
            }

            display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
            display.setTextColor(WHITE);   
            display.setTextSize(1);       
            display.setCursor(104,3);
            display.print("o");           
            display.setTextSize(2);
            display.setCursor(112,10);    
            display.print("C"); 
            display.setCursor(10,10); 
            display.setTextSize(3);
            display.println(temp);
            display.setTextSize(1); 
            display.println(" ");
            display.println("       DEFEKT!");
            display.println("   Sensor 3 zu warm!");
            display.display();

            myFile.print("Datum: ");
            myFile.print(dateTime.day);
            myFile.print(".");
            myFile.print(dateTime.month);
            myFile.print(".");
            myFile.print(dateTime.year); 
            myFile.print("  -  ");
            myFile.print("Uhrzeit: ");
            myFile.print(dateTime.hour); 
            myFile.print(":");
            myFile.print(dateTime.minute);  
            myFile.print(":");
            myFile.print(dateTime.second);  
            myFile.print("  -  ");
            myFile.print("Temperatur: ");
            myFile.print(temp);
            myFile.println(" °C  -  DEFEKT! Sensor 3 zu warm!");
            myFile.close();
          }
          else
          {
            float temp = ((T1+T2)/2);

            if(temp >25 || temp <20){
              digitalWrite(D3, LOW);
              digitalWrite(D0, HIGH);
              delay(1000);
              digitalWrite(D3, HIGH);
              digitalWrite(D0, LOW);
            }

            display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
            display.setTextColor(WHITE);   
            display.setTextSize(1);       
            display.setCursor(104,3);
            display.print("o");           
            display.setTextSize(2);
            display.setCursor(112,10);    
            display.print("C"); 
            display.setCursor(10,10);  
            display.setTextSize(3);
            display.println(temp);
            display.setTextSize(1); 
            display.println(" ");
            display.println("       DEFEKT!");
            display.println("   Sensor 3 zu kalt!");
            display.display();

            myFile.print("Datum: ");
            myFile.print(dateTime.day);
            myFile.print(".");
            myFile.print(dateTime.month);
            myFile.print(".");
            myFile.print(dateTime.year); 
            myFile.print("  -  ");
            myFile.print("Uhrzeit: ");
            myFile.print(dateTime.hour); 
            myFile.print(":");
            myFile.print(dateTime.minute);  
            myFile.print(":");
            myFile.print(dateTime.second);  
            myFile.print("  -  ");
            myFile.print("Temperatur: ");
            myFile.print(temp);
            myFile.println(" °C  -  DEFEKT! Sensor 3 zu kalt!");
            myFile.close();
          }
        }
      }
    }
  }
}

 delay(1000);
 display.clearDisplay();

}


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.