Pretzelboard – IoT Device

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.

Technische Daten NanoESP & Pretzel Board

Schnellstart Anleitung – NanoESP & Pretzelboard

AT Befehlsliste – NanoESP & Pretzelboard

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

WiFi Board: NanoESP bzw. Pretzel-Board


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