File: /~heha/basteln/PC/SHT11/SHT11-HID-USB.zip/SHT11/liesmich.txt

Firmware für ATtiny45 (im Muster für ATtiny85) mit V-USB,
um aus einem (inzwischen veralteten) Temperatur- und Feuchtesensor SHT11
einen HID-basierten Plug-and-Play-USB-Sensor zu machen.

Eigenschaften des SHT11
═══════════════════════
	Verkorkstes I²C als Schnittstelle
	Messbereich: -40 .. 120 °C, 0..100 % rH
	Auflösung: 14 bit (Temperatur), 12 bit (Feuchte)
	Genauigkeit: ± 0,4 K (Temperatur), ± 3 % (Feuchte) im mittleren Messbereich
	Zeitkonstante: 5..30 s (Temperatur), 8 s (Feuchte)
	Speisespannung: 2,4 .. 5,5 V @ 3 mW

Schaltplan
══════════                  LP2950ACZ-3,3╔═════╗
               ┌──┬────────────────────┬─╢3,3 V╟─────┬──────┐
               │  │2,2 µF              │ ╚══╤══╝     │      │
               │ ═╧═       ATtiny45    │    └──────┐ │      │
 ╔═════════╗Udd│ ═╤═   1╔═════╗╔═════╗8│ ╔═════╗   │ ▼ LED  │ ╔══
 ║         ╟───┘  │   x─╢RESET╚╝  Ucc╟─┴─╢1,5kΩ╟─┐ │ ┬ gelb └─╢ 5P (1) (rt)
 ║         ║SCK   │    2║            ║7  ╠═════╣ │ │ │        ║
 ║         ╟──────┼─────╢PB3      PB2╟───╢ 68 Ω╟─┴─┼─┼────────╢ D- (2) (ws)
 ║         ║DATA  │    3║            ║6  ╠═════╣   │ │        ║
 ║  ╔═══╗  ╟──────┼─────╢PB4      PB1╟───╢ 68 Ω╟───┼─┼────────╢ D+ (3) (gn)
 ║  ╚═══╝  ║GND   │    4║            ║5  ╠═════╣   │ │        ║
 ║  SHT21  ╟───┐  ├─────╢GND      PB0╟───╢1,5kΩ╟───┼─┘      ┌─╢ 00 (4) (sw)
 ╚═════════╝   │  │     ╚════════════╝   ╚═════╝   │        │ ╚══
               └──┴────────────────────────────────┴────────┘
┌──────────┐		┌───────────────┐			┌───────────┐
│Sensorchip│		│Mikrocontroller│			│USB-Stecker│
└──────────┘		└───────────────┘			└───────────┘

Besonderheiten der Firmware
═══════════════════════════
* HID-Geräteklasse, keine Treiberinstallation erforderlich
* Mit Seriennummer; Geräteadresse unabhängig vom USB-Anschluss
* PnPSA-kompatibel mit viel Selbstbeschreibung, auch für die Flag-Bits
* Zweisprachige String-Deskriptoren deutsch/englisch
* Data-Pull per Feature-Request und Data-Push per Interrupt-Pipe nutzbar
* LED, leuchtet auf beim Abholen eines Messwertes
* Inverse LED-Operation wenn fokussiert (s.u.)

Die Fokus-LED
═════════════
Beim Einsatz mehrerer gleicher Sensoren kommt es im Kabelwirrwarr
oft vor, dass man nicht weiß, welcher Sensor wo ist.
(Jedem Sensor GPS zu verpassen wäre wohl Overkill.)
Daher schreibt der PnPSA-„Standard“ vor, dass Sensoren grundsätzlich
sich zu erkennen geben müssen, wenn der Anwender damit gerade arbeitet.
Da bietet es sich für USB (Single Master) an, diese Funktion mit dem
Fokussieren (= bekommt Tastatureingabe) des Messwerts im Anzeigeprogramm
zu verknüpfen. Bei meinem Ausleseprogramm SHT11.exe, welches pro Instanz
nur mit genau einem Sensor sprechen kann, ist es einfach: Wenn das Fenster
in den Vordergrund kommt, leuchtet auch die LED.

Was ist PnPSA?
══════════════
Der zu schaffende Standard für einfach anwendbare Mess- und Sensortechnik
mit folgenden grundlegenden Eigenschaften:
* Echtes Plug-and-Play, durchgehend intelligente Sensoren und Aktoren
* Komplette Selbstbeschreibung (viel mehr als TEDS)
* Gegenseitige Synchronisation (ohne Extra-Kabel natürlich!)
* Durchgehender Abtastraten-Bereich bis einige MSa/s
* Latenz (für Regelungen) im ms-Bereich, Minimum (wahrscheinlich) 125 µs
* Verteilte Intelligenz mit der Möglichkeit der (analogen) Sensorkaskadierung
* billig oder auch teuer, etwa mit kryptografisch sicherem Kalibrierzertifikat
* Single-Master-Konzept (erleichtert die Anwendung)
* plattformunabhängig → Primäranwendung ist Windows
* busübergreifend → Primärbus ist USB, langsame Sensoren mit HID-Geräteklasse
* mit Kabel oder drahtlos → primär mit Kupfer (erspart Batterieprobleme)
* Standard für Verkabelung, Signalisierung und Interprozesskommunikation
* feldfähig durch USB (Notebook!) und Strom sparende intelligente Sensoren
* Konzentratoren (Gegenstück zu Vielfachmessverstärkern) und Buskonverter
* Gesonderte Konzentratoren mit betriebssystemunabhängiger Regeltechnik
* Sensoren mit Mehrfachschnittstelle (etwa USB und RS485 auf gleichen Leitungen)
* eingebaute Mehrsprachen-Unterstützung → primäre Kodierung: UTF-8
* offen, evolutionär, nicht firmenspezifisch

Grenzen dieser Schaltung
════════════════════════
Der Schaltplan und die Firmware sind für SHT11 und kompatible gemacht.
Für den Nachfolgetypen SHT21 ist ein 3,3-V-Spannungsregler Pflicht.
Außerdem sind einige Deskriptoren anzupassen.
Das kommt dann im nächsten Projekt.

Der Firmware fehlen noch Deskriptoren für Zeitkonstante und Genauigkeiten.
Diese sind von mir noch nicht so recht definiert.

Anwendung
═════════
Solange es noch nicht die eierlegende Wollmichsau-Software für PnPSA gibt,
tut es eine aktualisierte Version von SHT11.exe, um die Messwerte anzuzeigen.
Das Programm berechnet nebenbei Taupunkt und absolute Feuchte,
stellt ein DDE-Interface zwecks Automatisierung zur Verfügung,
und soll in einer künftigen Version auch selbst Daten loggen sowie
grafisch den Verlauf anzeigen.

Quelltext
═════════
Dieses Projekt benutzt V-USB, allerdings eine ältere Version mit eigenen
Patches (siehe Changelog.txt).
Aus Platzgründen sind nicht zur Recompilierung benötigte Dateien
nicht in diesem Archiv (Lizenz-Textdateien, Quelltexte für andere
Frequenzen als 16,5 MHz).

Da Webseiten kurzlebig sind, hier ein paar Suchmaschinen-Stichwörter
für weitere Informationen:
Sensirion sht11 sht11.exe site:tu-chemnitz.de PnPSA V-USB obdev.at ATtiny45

Henrik Haftmann, Chemnitz, 130729
Detected encoding: ASCII (7 bit)8