Pretzelboard, Duino, C-Control,iot.fkainka.de, Franzis Verlag, ATmega328,
ca. 30,- Euro
Projektziel: Kellerraum Lüftersteuerung zur Entfeuchtung/Trocknung des Kellers, dazu
2 Temperatur/Feuchtesensoren, einer für Aussen, ein zweiter für Innen, bei senden Ihre Sensorwerte an „Hauptrechner“, dieser verarbeitet die Werte und entscheidet, steuert dadurch den Lüfter. Lüfter dreht in eine Richtung, könnte evtl. auch in Gegenrichtung drehen.
http://iot.fkainka.de/wp-content/uploads/2015/09/Day1_SoftwareSerial.zip
entspricht P01_SoftwareSerial.ino
aus http://iot.fkainka.de/wp-content/uploads/2015/09/IoT-LP.zip /P01_SoftwareSerial
Tools / Board / Arduino Nano w/ ATmega 328
Der serielle Monitor muss außerdem auf CR und NL eingestellt sein.
Serieller Monitor mit welchem COM-PORT, wo hängt unser ATmega328?
python -m serial.tools.list_ports -v
COM4
desc: USB-SERIAL CH340 (COM4) <<<<<<<<<<<<<<
hwid: USB VID:PID=1A86:7523 SNR=5
1 ports found
Folgende AT-Kommandos eignen sich zum ersten Test:
Test Kommando: AT
Reset: AT+RST
Firmware Info’s: AT+GMR
PinBelegung
http://www.mikrocontroller-elektronik.de/wp-content/uploads/2016/02/wifi-Pretzel-Board-Pinbelegung.jpg
Sensor:
Luftfeuchte Messung
BME280-Breakout
http://www.watterott.com/de/BME280-Breakout-Luftfeuchtigkeits-Druck-Tempertursensor
ca. 14,-Euro
Der BME280 ist einer der neuesten Luftfeuchtigkeits-, Druck- und Temperatursensoren von Bosch mit einem digitalen I2C bzw. SPI Interface.
Auf dem Breakout befinden sich ein Spannungsregler und ein Pegelwandler für die I2C/SPI Schnittstelle, daher kann der Sensor von 3V – 5,5V betrieben werden.
https://github.com/watterott/BME280-Breakout
library files
https://github.com/embeddedadventures/BME280
download Zip from GIT and unpack into
C:\Programme\Arduino\libraries\BME280
example sketch
copy the example from libraries/BME280/examples .ino sketch nach your sketchfolder
C:\Users\xxxx\Documents\Arduino\
Achtung: Sketchfolder muss exakt so lauten wie der Sketch Filename.. nur ohne .ino Dateiendung
Sketch benutzt Wire.h Library for I2C / TWI device
https://www.arduino.cc/en/Reference/Wire
also ist das sketch nicht fürs SPI Protocoll
https://github.com/watterott/BME280-Breakout
TWI/I2C Interface (address 0x76 when SDO=0 or 0x77 when SDO=1)
Details zum Verbinden der Pins, siehe:
http://cactus.io/hookups/sensors/barometric/bme280/hookup-arduino-to-bme280-barometric-pressure-sensor
Pretzelboard SDA: A4
Pretzelboard SCL: A5
alternativen Schreibweisen:
SCK = SCL, SDI = SDA
Board SCK A5 an Sensor SCL/SCK
Board SDI A4 an Sensor SDA/SDI
mit dieser Verschaltung Board mit Sensor benutzen wir Sensor Default Adresse 0x77
sketch nutzt 115.200 Baud , also daher den SerialMonitor auch so einstellen.
ChipID 0xFF -> Sensor hat keine Adresse im I2C , ist nicht auffindbar
schwenke um auf
http://cactus.io/hookups/sensors/barometric/bme280/hookup-arduino-to-bme280-barometric-pressure-sensor
http://static.cactus.io/downloads/library/bme280/cactus_io_BME280_I2C.zip
immernoch keine korrekte Funktion
ich entferne das Breadboard und verbinde Pretzelboard mit dem Sensor mit einzelnen Kabeln.. und nun funktionierts prinzipiell, aber wie es sich desweiteren herausstellt, gibt es weitere Fehlerquelle die noch eliminiert werden musste.
veschiedene sketches und libraries probiert.. es funktioniert nicht korrekt..
daher aktuellst Arduino IDE 1.6.13
https://www.arduino.cc/en/Main/Software
vor der Installation den alten Arduino IDE 1.0.5 Ordner sichern/wegkopieren
dann Arduino IDE 1.6.13 installieren inkl. USB Driver, dann noch die Pretzelboard USB Treiber CHE341SER (http://iot.fkainka.de/driver) installieren..
danach das Sketch Wifi-Scanner testen (hat vorher nur 1 und halbe Ausgabezeile ausgeworfen).. liefert nun komplette Liste aller verfügbaren Wifi Netzwerke..
next step: sending values to webserver…
ich habe webspace bei 1blue,
die Sensoren sollen Ihre Messwerte an eine Website senden, alle x Sekunden, am Webserver werden diese Daten gespeichert in einem CSV File appended.
Jeder Sensor liefert seine eigene Kennung mit, somit kann die Website entscheiden, welchem Sensor welche Antwort geliefert wird.
Ein Pretzelboard wird auch für die Steuerung des Lüfters zuständig sein, da Sensor und Lüfter am Kellerfenster/Lichtschacht nah beieinander befinden.
Also next step: send data to webserver website (with no security, no data encryption)
domain / path / file.php ? sensorid = X & humidity = X & temp = X
Zeit muss nicht mitgeliefert werden, das würde auf Pretzelboardseite höheren Aufwand, Einsatz einer RTC RealTimeClock bedeuten, das erledigen wir einfach indem wir die Serverzeit nutzen innerhalb der Website.
http://xxx.de/cgi-bin/xxx/xxx.py?sensorid=1&temp=23,4&humidity=30.6%
1blue python einsetzen, per FTP programm zum webspace connecten, py script im cgi-bin ordner anlegen, Script ausführbar machen, Rechte 744,
erste Zeile weist zum python interpreter
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
your code comes now here, import your libs (standard-libs)
Besonderheit bei 1blue… man muss die ersten 2 print Zeilen wiefolgt ausgeben ansonst gibts 500er Fehler
################
#
print „Content-type: text/html“ # MUSS ohne gibt 500 internal server error!!
print # MUSS ohne gibt 500 internal server error!!
#
################
Daten beider Sensoren A und B werden nun am Webserver geloggt.
Es werden logfiles je Tag geschrieben. Diese können dann per javascript lib chartmäßig ausgegeben werden.
Wenn Sensor A „Daten sendet“ erhält Sensor A Rückantwort, FanOn:0 oder FanOn:1.
Wenn Sensor A Serverantwort auswertet und FanOn:1 vorfindet, soll der Lüft auf max Drehzahl laufen, andernfalls ausgeschaltet sein.
zum Lüfter:
be quiet silent wing 2 140mm, 12V, 0.2A, 1000rpm
kann man per PWM oder per Dauergleichstrom betreiben,
mit PWM kam ich auf 11.48V und 920U/min.., hierbei wurden Arduino und Lüfter gleichzeitig von der selben Stromquelle betrieben.
Statt Arduino PWM demnächst mal per permanent digital ON/High Dauergleichstrom austesten.
Nach ein paar Teststagen fällt ein Problem meines Routers auf, die beiden pretzelboards senden ihre Sensorwerte, aber ich kann per Tablet/PC nicht mehr per WLAN ins Internet… Router Strom aus/anschalten hilft, aber nach X Stunden wieder das selbe.
Bisher connected das pretzelboard einmalig und sendet alle 10 Sekunden Messdaten. Besser, nicht alle 10 sec senden sondern Daten sammeln und dann im Bulk senden, und evtl. pretzelboard vom WLAN disconnecten, und mal nach dem Router schaun.. Firmwareupdates/Einstellungen..