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


von Hauke B. (sattelschwein25)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Kolja (Gast)


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.

von _Gast (Gast)


Lesenswert?


von Max M. (maxmicr)


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
von someone (Gast)


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.

von Thomas G. (blasebalg)


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.

von Hauke B. (sattelschwein25)


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

von zu meiner zeit (Gast)


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...

von Max M. (maxmicr)


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.

von zu meiner zeit (Gast)


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

von zu meiner zeit (Gast)


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?

von Max M. (maxmicr)


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?

von Hauke B. (sattelschwein25)


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
von Hauke B. (sattelschwein25)


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

von someone (Gast)


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.

von Hauke B. (sattelschwein25)


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

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

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

von Kuckst (Gast)


Lesenswert?

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

von someone (Gast)


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.

von Frank K. (fchk)


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.

https://www.youtube.com/watch?v=4L1ZqvQ2qVU
https://www.youtube.com/watch?v=q-hLMCeCnj0

> - 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: 
http://www.ebay.de/itm/GLS-Neu-customized-LCD-88-88-icons-LCD-AV-CBS106B00-HKW-R-with-TP-heating-/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-Gateway-Remote-Schnittstelle/dp/B00JDJC4GM/ref=sr_1_6?

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

von Draco (Gast)


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!

von F. F. (foldi)


Angehängte Dateien:

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
von F. F. (foldi)


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.

von Hauke B. (sattelschwein25)


Angehängte Dateien:

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!
1
#include <SPI.h>
2
#include <Wire.h>
3
#include <Adafruit_GFX.h>
4
#include <Adafruit_SSD1306.h>
5
#include <OneWire.h>
6
#include <DallasTemperature.h>
7
#include <SD.h>
8
#include <NTPtimeESP.h>
9
//#include <ESP8266HTTPClient.h>
10
//#include <Bridge.h>
11
//#include <HttpClient.h>
12
13
/*  
14
static const uint8_t SDA = 4;
15
static const uint8_t SCL = 5;
16
17
static const uint8_t LED_BUILTIN = 16;
18
static const uint8_t BUILTIN_LED = 16;
19
20
static const uint8_t D0   = 16;
21
static const uint8_t D1   = 5;
22
static const uint8_t D2   = 4;
23
static const uint8_t D3   = 0;
24
static const uint8_t D4   = 2;
25
static const uint8_t D5   = 14;
26
static const uint8_t D6   = 12;
27
static const uint8_t D7   = 13;
28
static const uint8_t D8   = 15;
29
static const uint8_t D9   = 3;
30
static const uint8_t D10  = 1;
31
*/
32
33
#define OLED_RESET LED_BUILTIN 
34
#define DS18B20_PIN D4 
35
#define DEBUG_ON
36
const int chipSelect = D8; // use D8 
37
File myFile;
38
OneWire oneWire(DS18B20_PIN);  
39
DallasTemperature sensors(&oneWire);  
40
NTPtime NTPch("de.pool.ntp.org");
41
char *ssid      = "XXXXXXXXXXXXXXXXXXXX";
42
char *password  = "XXXXXXXXXXX";
43
strDateTime dateTime;
44
Adafruit_SSD1306 display(OLED_RESET);
45
46
#define NUMFLAKES 10
47
#define XPOS 0
48
#define YPOS 1
49
#define DELTAY 2
50
51
52
#define LOGO16_GLCD_HEIGHT 16 
53
#define LOGO16_GLCD_WIDTH  16 
54
static const unsigned char PROGMEM logo16_glcd_bmp[] =
55
{ B00000000, B11000000,
56
  B00000001, B11000000,
57
  B00000001, B11000000,
58
  B00000011, B11100000,
59
  B11110011, B11100000,
60
  B11111110, B11111000,
61
  B01111110, B11111111,
62
  B00110011, B10011111,
63
  B00011111, B11111100,
64
  B00001101, B01110000,
65
  B00011011, B10100000,
66
  B00111111, B11100000,
67
  B00111111, B11110000,
68
  B01111100, B11110000,
69
  B01110000, B01110000,
70
  B00000000, B00110000 };
71
72
void setup()   {    
73
  pinMode(D3, OUTPUT);
74
  pinMode(D0, OUTPUT);
75
              
76
  Serial.begin(9600);
77
  sensors.begin();
78
79
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
80
  display.display();
81
  delay(2000);
82
83
  digitalWrite(D0, LOW);
84
  digitalWrite(D3, HIGH);
85
86
  display.clearDisplay();
87
  display.setTextColor(WHITE);
88
  display.setTextSize(1);
89
  display.setCursor(25,11);
90
  display.println();
91
  display.println("Connecting to WiFi:");
92
  display.display();
93
  WiFi.mode(WIFI_STA);
94
  WiFi.begin (ssid, password);
95
  while (WiFi.status() != WL_CONNECTED) {
96
    display.print(".");
97
    display.display();
98
    delay(500);
99
  }
100
  display.display();
101
  display.println();
102
  display.println("Connected to WiFi!");
103
  display.display();
104
  delay(1000);
105
  display.clearDisplay();
106
107
//  HTTPClient http;
108
//  http.begin("Internetseite, die das PHP-Protokoll ausführt!");
109
 
110
 // HttpClient client;
111
 // client.get("Internetseite, die das PHP-Protokoll ausführt!");
112
  }
113
114
void loop() {
115
 dispTemp();
116
 display.clearDisplay();
117
}
118
119
void dispTemp (void){  
120
  
121
float T1 = sensors.getTempCByIndex(0);
122
float T2 = sensors.getTempCByIndex(1);
123
float T3 = sensors.getTempCByIndex(2);
124
125
pinMode(D3, OUTPUT);
126
pinMode(D0, OUTPUT);
127
128
dateTime = NTPch.getNTPtime(1.0, 1);
129
130
sensors.requestTemperatures();
131
SD.begin(chipSelect);
132
myFile = SD.open("templogg.txt", FILE_WRITE);
133
134
if (T1<(T2+1)&&T1>(T2-1)&&T1<(T3+1)&&T1>(T3-1))
135
{
136
  float temp = ((T1+T2+T3)/3);
137
138
  if(temp >25 || temp <20){
139
    digitalWrite(D3, LOW);
140
    digitalWrite(D0, HIGH);
141
    delay(1000);
142
    digitalWrite(D3, HIGH);
143
    digitalWrite(D0, LOW);
144
  }
145
 
146
  display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
147
  display.setTextColor(WHITE);   
148
  display.setTextSize(1);       
149
  display.setCursor(104,3);
150
  display.print("o");           
151
  display.setTextSize(2);
152
  display.setCursor(112,10);    
153
  display.print("C"); 
154
  display.setCursor(10,10);
155
  display.setTextSize(3);
156
  display.print(temp);
157
  display.display();
158
  
159
  myFile.print("Datum: ");
160
  myFile.print(dateTime.day);
161
  myFile.print(".");
162
  myFile.print(dateTime.month);
163
  myFile.print(".");
164
  myFile.print(dateTime.year); 
165
  myFile.print("  -  ");
166
  myFile.print("Uhrzeit: ");
167
  myFile.print(dateTime.hour); 
168
  myFile.print(":");
169
  myFile.print(dateTime.minute);  
170
  myFile.print(":");
171
  myFile.print(dateTime.second);  
172
  myFile.print("  -  ");
173
  myFile.print("Temperatur: ");
174
  myFile.print(temp);
175
  myFile.println(" °C");
176
  myFile.close();
177
 }
178
179
180
181
182
  else
183
{
184
  if (T1>(T2+1)&&T1>(T3+1))
185
  {
186
    float temp = ((T2+T3)/2);
187
188
    if(temp >25 || temp <20){
189
      digitalWrite(D3, LOW);
190
      digitalWrite(D0, HIGH);
191
      delay(1000);
192
      digitalWrite(D3, HIGH);
193
      digitalWrite(D0, LOW);
194
    }
195
196
    display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
197
    display.setTextColor(WHITE);   
198
    display.setTextSize(1);       
199
    display.setCursor(104,3);
200
    display.print("o");           
201
    display.setTextSize(2);
202
    display.setCursor(112,10);    
203
    display.print("C");      
204
    display.setCursor(10,10);
205
    display.setTextSize(3);
206
    display.println(temp);
207
    display.setTextSize(1); 
208
    display.println(" ");
209
    display.println("       DEFEKT!");
210
    display.println("   Sensor 1 zu warm!");
211
    display.display();
212
    myFile.print(temp);
213
    myFile.println(" °C  -  DEFEKT! Sensor 1 zu warm!");
214
    myFile.close();
215
    }
216
  else
217
  {
218
    if (T1<(T2-1)&&T1<(T3-1))
219
    {
220
      float temp = ((T2+T3)/2);
221
222
      if(temp >25 || temp <20){
223
        digitalWrite(D3, LOW);
224
        digitalWrite(D0, HIGH);
225
        delay(1000);
226
        digitalWrite(D3, HIGH);
227
        digitalWrite(D0, LOW);
228
      }
229
230
      display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
231
      display.setTextColor(WHITE);   
232
      display.setTextSize(1);       
233
      display.setCursor(104,3);
234
      display.print("o");           
235
      display.setTextSize(2);
236
      display.setCursor(112,10);    
237
      display.print("C"); 
238
      display.setCursor(10,10);  
239
      display.setTextSize(3);
240
      display.println(temp);
241
      display.setTextSize(1); 
242
      display.println(" ");
243
      display.println("       DEFEKT!");
244
      display.println("   Sensor 1 zu kalt!");
245
      display.display();
246
247
      myFile.print("Datum: ");
248
      myFile.print(dateTime.day);
249
      myFile.print(".");
250
      myFile.print(dateTime.month);
251
      myFile.print(".");
252
      myFile.print(dateTime.year); 
253
      myFile.print("  -  ");
254
      myFile.print("Uhrzeit: ");
255
      myFile.print(dateTime.hour); 
256
      myFile.print(":");
257
      myFile.print(dateTime.minute);  
258
      myFile.print(":");
259
      myFile.print(dateTime.second);  
260
      myFile.print("  -  ");
261
      myFile.print("Temperatur: ");
262
      myFile.print(temp);
263
      myFile.println(" °C  -  DEFEKT! Sensor 1 zu kalt!");
264
      myFile.close();
265
    }
266
    else
267
    {
268
      if (T2>(T1+1)&&T2>(T3+1))
269
      {
270
        float temp = ((T1+T3)/2);
271
272
        if(temp >25 || temp <20){
273
          digitalWrite(D3, LOW);
274
          digitalWrite(D0, HIGH);
275
          delay(1000);
276
          digitalWrite(D3, HIGH);
277
          digitalWrite(D0, LOW);
278
        }
279
280
        display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
281
        display.setTextColor(WHITE);   
282
        display.setTextSize(1);       
283
        display.setCursor(104,3);
284
        display.print("o");           
285
        display.setTextSize(2);
286
        display.setCursor(112,10);    
287
        display.print("C"); 
288
        display.setCursor(10,10);  
289
        display.setTextSize(3);
290
        display.println(temp);
291
        display.setTextSize(1); 
292
        display.println(" ");
293
        display.println("       DEFEKT!");
294
        display.println("   Sensor 2 zu warm!");
295
        display.display();
296
297
        myFile.print("Datum: ");
298
        myFile.print(dateTime.day);
299
        myFile.print(".");
300
        myFile.print(dateTime.month);
301
        myFile.print(".");
302
        myFile.print(dateTime.year); 
303
        myFile.print("  -  ");
304
        myFile.print("Uhrzeit: ");
305
        myFile.print(dateTime.hour); 
306
        myFile.print(":");
307
        myFile.print(dateTime.minute);  
308
        myFile.print(":");
309
        myFile.print(dateTime.second);  
310
        myFile.print("  -  ");
311
        myFile.print("Temperatur: ");
312
        myFile.print(temp);
313
        myFile.println(" °C  -  DEFEKT! Sensor 2 zu warm!");
314
        myFile.close();
315
      }
316
      else
317
      {
318
        if (T2<(T1-1)&&T2<(T3-1))
319
        {
320
          float temp = ((T1+T3)/2);
321
322
          if(temp >25 || temp <20){
323
            digitalWrite(D3, LOW);
324
            digitalWrite(D0, HIGH);
325
            delay(1000);
326
            digitalWrite(D3, HIGH);
327
            digitalWrite(D0, LOW);
328
          }
329
330
          display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
331
          display.setTextColor(WHITE);   
332
          display.setTextSize(1);       
333
          display.setCursor(104,3);
334
          display.print("o");           
335
          display.setTextSize(2);
336
          display.setCursor(112,10);    
337
          display.print("C"); 
338
          display.setCursor(10,10);  
339
          display.setTextSize(3);
340
          display.println(temp);
341
          display.setTextSize(1); 
342
          display.println(" ");
343
          display.println("       DEFEKT!");
344
          display.println("   Sensor 2 zu kalt!");
345
          display.display();
346
347
          myFile.print("Datum: ");
348
          myFile.print(dateTime.day);
349
          myFile.print(".");
350
          myFile.print(dateTime.month);
351
          myFile.print(".");
352
          myFile.print(dateTime.year); 
353
          myFile.print("  -  ");
354
          myFile.print("Uhrzeit: ");
355
          myFile.print(dateTime.hour); 
356
          myFile.print(":");
357
          myFile.print(dateTime.minute);  
358
          myFile.print(":");
359
          myFile.print(dateTime.second);  
360
          myFile.print("  -  ");
361
          myFile.print("Temperatur: ");
362
          myFile.print(temp);
363
          myFile.println(" °C  -  DEFEKT! Sensor 2 zu kalt!");
364
          myFile.close();
365
        }  
366
        else
367
        {
368
          if (T3>(T1+1)&&T3>(T2+1))
369
          {
370
            float temp = ((T1+T2)/2);
371
372
            if(temp >25 || temp <20){
373
              digitalWrite(D3, LOW);
374
              digitalWrite(D0, HIGH);
375
              delay(1000);
376
              digitalWrite(D3, HIGH);
377
              digitalWrite(D0, LOW);
378
            }
379
380
            display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
381
            display.setTextColor(WHITE);   
382
            display.setTextSize(1);       
383
            display.setCursor(104,3);
384
            display.print("o");           
385
            display.setTextSize(2);
386
            display.setCursor(112,10);    
387
            display.print("C"); 
388
            display.setCursor(10,10); 
389
            display.setTextSize(3);
390
            display.println(temp);
391
            display.setTextSize(1); 
392
            display.println(" ");
393
            display.println("       DEFEKT!");
394
            display.println("   Sensor 3 zu warm!");
395
            display.display();
396
397
            myFile.print("Datum: ");
398
            myFile.print(dateTime.day);
399
            myFile.print(".");
400
            myFile.print(dateTime.month);
401
            myFile.print(".");
402
            myFile.print(dateTime.year); 
403
            myFile.print("  -  ");
404
            myFile.print("Uhrzeit: ");
405
            myFile.print(dateTime.hour); 
406
            myFile.print(":");
407
            myFile.print(dateTime.minute);  
408
            myFile.print(":");
409
            myFile.print(dateTime.second);  
410
            myFile.print("  -  ");
411
            myFile.print("Temperatur: ");
412
            myFile.print(temp);
413
            myFile.println(" °C  -  DEFEKT! Sensor 3 zu warm!");
414
            myFile.close();
415
          }
416
          else
417
          {
418
            float temp = ((T1+T2)/2);
419
420
            if(temp >25 || temp <20){
421
              digitalWrite(D3, LOW);
422
              digitalWrite(D0, HIGH);
423
              delay(1000);
424
              digitalWrite(D3, HIGH);
425
              digitalWrite(D0, LOW);
426
            }
427
428
            display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE);
429
            display.setTextColor(WHITE);   
430
            display.setTextSize(1);       
431
            display.setCursor(104,3);
432
            display.print("o");           
433
            display.setTextSize(2);
434
            display.setCursor(112,10);    
435
            display.print("C"); 
436
            display.setCursor(10,10);  
437
            display.setTextSize(3);
438
            display.println(temp);
439
            display.setTextSize(1); 
440
            display.println(" ");
441
            display.println("       DEFEKT!");
442
            display.println("   Sensor 3 zu kalt!");
443
            display.display();
444
445
            myFile.print("Datum: ");
446
            myFile.print(dateTime.day);
447
            myFile.print(".");
448
            myFile.print(dateTime.month);
449
            myFile.print(".");
450
            myFile.print(dateTime.year); 
451
            myFile.print("  -  ");
452
            myFile.print("Uhrzeit: ");
453
            myFile.print(dateTime.hour); 
454
            myFile.print(":");
455
            myFile.print(dateTime.minute);  
456
            myFile.print(":");
457
            myFile.print(dateTime.second);  
458
            myFile.print("  -  ");
459
            myFile.print("Temperatur: ");
460
            myFile.print(temp);
461
            myFile.println(" °C  -  DEFEKT! Sensor 3 zu kalt!");
462
            myFile.close();
463
          }
464
        }
465
      }
466
    }
467
  }
468
}
469
470
 delay(1000);
471
 display.clearDisplay();
472
473
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.