Hier möchte ich gerne den Nachbau des Universalsensors von Dirk beschreiben. Der Sensor existiert in 2 Varianten:
- Innensensor ( HB-UW-Sen-THPL-I )
- Aussensensor (HB-UW-Sen-THPL-O)
Innensensor
Auf dem Innensensor kann man 3 Fühler installieren:
- SHT10 für Temperatur und Feuchtigkeit
- BMP180 für Luftdruck
- TSL2561 für Helligkeit oder bei RS-Online.
Weitere spezielle Bauteile sind
- Atmega328
- MAX1724EZK33 oder http://de.rs-online.com/web/p/dc-dc-wandler/7833532/
- Drosselspule
Die Links bei Aliexpress, sind nur Beispiele. Leider kommt es immer wieder vor, das falsche Bauteile geliefert werden. Den BMP180 hab ich von einem günstigem Breakoutboard gelötet.
Der Innensensor kann erweitert werden für 1-wire erweitert werden. Ich habe das nicht benutzt und den Platz für 2 AAA Batterien verwendet.
Die Platine ist für das Gehäuse SUPERTRONIC BOX-SENS-WHITE entwickelt worden.
Aussensensor
Der Aussensensor unterscheidet sich nur geringfügig vom Innensensor. Er enthält Platz für:
- Temperatur / Luftdruck (BMP180)
- Helligkeit (TSL2561)
Weitere Sensoren können über einen I2C Bus angesteuert werden.
Aufbau
- Drosselspule und Max1724 + C6 und C7 löten und die Spannung von 3,3V messen.
- Atmega und restlichen Widerstände, Kondensatoren, Konfigschalter und LED löten.
- Steckerleiste anlöten
Nun kann der Atmega mit dem Bootloader geflasht werden.
Bootloader für OTA (Over the Air)
Asksin OTA Bootloader hier herrunterladen: https://github.com/kc-GitHub/Asksin_OTA_Bootloader
In der Datei devices/HB-UW-Sen-THPL.h sind der Typ, die Serialnumber (z.B. UWS7475150) und die HM-ID zu ändern:
#define HM_TYPE 0xF1, 0x01 // DIY (HB-UW-Sen-THPL-I)
#define HM_SERIAL 'U','W','S','7','4','7','5','1','5','0'
#define HM_ID 0xEA, 0xD5, 0xC9
dann:
make clean HB_UW_Sen_THPL
und ein Bootloader-AskSin-OTA-HB_UW_Sen_THPL.hex wird erstellt.
Der Sensor wird wie ein Arduino Pro Mini angeschlossen:
Jetzt kann bereits der Bootloader installiert werden:
sudo bin/avrdude -Cbin/avrdude.conf -p m328p -P gpio -c gpio -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m -e -Uflash:w:Bootloader-AskSin-OTA-HB_UW_Sen_THPL.hex:i
Ist der Bootloader erfolgreich installiert, leuchtet die Diode 8 mal.
Arduino Bootloader
Alternativ kann auch ein Ardunino Bootloader eingespiel werden. Dazu wird eine der 3 Möglichkeiten gewählt. Ich bevorzuge die Variante mit meinem Raspberry Pi, da ich dort komfortable Scripte abfahren kann.
Für den Betrieb ohne externen Oszillator verwende ich diese Settings:
bin/avrdude -Cbin/avrdude.conf -p m328p -P gpio -c gpio -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m -e -Uflash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex:i
Danach verbinde ich den Sensor mit einem FTDI-USB-Connector und spiele die Firmware mit der Arduino-IDE ein.
Firmware
Zum Einspielen der Firmware verwende ich einen NanoCUL. Damit kann ich OTA das Update einspielen.
Der nanoCUL ist mit dem Rasperry Pi verbunden. Mit dem Kommando:
sudo flash-ota -c /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03VVGB-if00-port0 -f $FILE_NAME.eq3 -s UWS7475150
startet der Updatevorgang.