Clone
46
Home
Martin edited this page 2026-03-30 21:55:28 +02:00

Dies ist das Wiki von Aquamaniac Home Control System (AqHomeControl).

Worum geht es beim Aquamaniac Home Control System?

Das Projekt ist in erster Linie ein Hobby. Ich verfolge keine kommerziellen Zwecke, ich interessiere mich einfach nur seit meiner Jugend für Elektronik und Programmieren (insbesondere C und Assembler), insbesondere auch für die Entwicklung von Lösungen unter einschränkenden Bedingungen.

Ich brauche daher auch keine Mails, in denen mir erklärt wird, daß es heutzutage ja ganz tolle Boards gibt, die schon alles können einschließlich WLAN und Bluetooth (z.B. die ESP32-Familie). Das ist nicht der Punkt. Ich will ja gerade mit den begrenzten Möglichkeiten kleinerer Mikrokontroller arbeiten. Verbesserungsvorschläge, neue Ideen oder Korrekturen nehme ich aber sehr gerne an!

In zweiter Linie ist es ein Aufruf an andere, einfach selbst Elektronik-Ideen umzusetzen, selbst wenn man nicht "vom Fach" ist. Im Prinzip kann jeder kleine Elektronik-Projekte aufbauen, anhand derer man nach und nach die notwendigen Schritte erlernt und verfeinert.

Aus meiner Sicht das wichtigste ist: Einfach machen! Wenn man nicht gerade mit Hochfrequenz-Schaltungen anfängt, funktionieren eigene Schaltungen meistens doch schon beim ersten Versuch, selbst wenn man bei den ersten Lötversuchen nicht gleich die schönsten Lötstellen erzeugt (siehe z.B. "Stop Worrying and Make Your First PCB" auf youtube). Bei der zweiten Platine werden die Lötverbindungen schon wesentlich besser sein.

Wo informieren?

Ich lese gerne in Foren, in denen es um Mikrokontroller im allgemeinen geht. Für die AVR-Belange schaue ich mir aber auch Arduino-Seiten und Foren an, und wenn es um Treiber für gängige Sensoren oder Displays geht, ist github immer ein sehr guter Anlaufpunkt.

Laßt Euch nicht vom teilweise recht rauhen Ton gerade in deutschsprachigen Mikrokontroller- oder Elektronikforen entmutigen. Man kann aus diesen Foren auch gut lernen, wenn man selbst keine Fragen stellt, da hier oft auch gute Kompendien und Grundlageninformationen zu finden sind.

Falls man aber doch Fragen stellt, ist der Ablauf leider viel zu häufig dieser (z.B. auf einem deutschsprachigen Forum, das sich mit Mikrokontrollern beschäftigt):

  • Frage zu einem geplanten oder in Arbeit befindlichen Projekt
  • die ersten 2-3 Antworten bezweifeln, das das Projekt Sinn macht und fragen, warum man das unbedingt so machen will
  • dann kommen manchmal Kommentare (in der Regel von Gastaccounts), die kritisieren, dass der OP nicht die korrekten Fachtermini benutzt (andererseits: Wenn man selbst Elektrotechnik-Ingenieur wäre, bräuchte man ja nicht zu fragen)
  • zwischendrin kommen einzelne hilfreiche Antworten
  • dann beginnt meist eine "Diskussion", in der sich die Schreiber gegenseitig die Kompetenz absprechen und teilweise beleidigen

Projekteintwicklung

Der Ablauf bei meinen eigenen DIY Elektronik-Projekten ist:

  • Entstehen einer Idee für eine Schaltung (z.B. Temperatur- und Luftfeuchtigkeits-Überwachung, Lüftersteuerung)
  • Entwickeln eines einfachen Schaltplanes
  • erste Umsetzung des Schaltplanes auf einem Breadboard
  • Programmieren der Software (zu Beginn eher einfach, im Laufe der Entwicklung zunehmende Komplexizität)
  • Entwickeln einer Platine, Routen zuerst vielleicht mit Autorouting, später dann zunehmend von Hand
  • Bestellen bei einem Platinenservice
  • Löten der Platine (zunächst normale Komponenten, später dann auch SMD)
  • Planen und entwickeln eines Gehäuses (zu Beginn erst mal Anpassung der Platine an bestehende Gehäuse)

Verwendete Tools

Unter anderem diese Tools verwende ich z.B. für meine Projekte:

  • avrasm (AVR assembler)
  • avrdude (Flash-Programm um den Code auf den Mikrokontroller zu übertragen)
  • EasyEDA (hiermit angefangen, da kostenlos und trotzdem mit Autorouting, inzwischen route ich aber manuell)
  • KICAD (ich versuche langsam, mich hier einzuarbeiten, da Open-Source, aber recht steile Lernkurve)
  • OpenSCAD (für die Gehäuse-Entwicklung, einfach ein geniales OpenSource-System!)

Was ist das Aquamaniac Home Control System?

AqHomeControl ist ein System bestehend aus den folgenden Komponenten:

  • Netzwerk aus Mikrokontrollern, kabelgebunden
  • Zentrale Server-Anwendungen:
    • zum Datenaustausch mit Mikrokontrollern über eine PC-UART-Brücke (aqhome-nodes)
    • zum Datenaustausch mit einem MQTT Server, z.B. für Tasmota Steckdosen und anderes über WLAN (aqhome-mqttlog)
    • zur Speicherung und Herausgabe der gesammelten Daten (aqhome-data)
    • zur Integration und Auswertung der Daten (aqhome-react)
  • Webserver-Integration zur Präsentation der Daten in einem Webbrowser (aqhome-cgi)

Mikrokontroller

Das Projekt enthält Assembler Code für Mikrokontroller, die zusammen mit Sensoren auf kleinen Platinen betrieben werden und über ein 4-Draht-Protokoll (5V, GND, DATA, CLOCK) miteinander kommunizieren. Bisher verwendet werden ATtiny 84, ATtiny 85, ATtiny 841 sowie ATmega 324 und ATmega 664 (alles erste-Generation-Mikrokontroller) .

Enthalten sind Module für:

  • Two-Wire-Bus (AKA I2C)
  • One-Wire-Bus
  • SPI-Bus
  • UART

sowie Treiber-Module für (u.a.):

  • DS18b20 (Temperatursensor)
  • SI7021 (Temperatur- und Luftfeuchtigkeitssensor)
  • SGP30 (CO2-Sensor)
  • CCS811 (CO2-Sensor)
  • SK6812 (LED-Module in LED-Streifen)
  • I2C-Displays
  • SPI-Displays

Warum ATtiny (8-Bit-Kontroller)?

  • verfügbar in DIP-Packages, damit sind selbst für Anfänger einfache Schaltungen auf Breadboards möglich
  • benötigen kaum externe Komponenten zum Betrieb, was für erste Testschaltungen extrem hilfreich ist
  • klein und preiswert
  • leistungsstark genug zum Betrieb moderner Umwelt-Sensoren (Temperatur, Luftfeuchtigkeit, CO2)
  • viele Informationen und Tutorials verfügbar
  • freie Assembler und Compiler verfügbar
  • sehr tolerant bezüglich der benötigten Spannung (3.3V, 5V)
  • viele Peripherie-Geräte bereits enthalten (z.B. Timer, ADC)
  • Selbst-Flash-fähig, d.h. man kann später im Feld neue Firmware aus der Ferne aufspielen

Warum gerade diese alte Generation von AVR Kontrollern?

  • gerade für Anfänger gut geeignet weil nicht zu kompliziert in der Handhabung/Programmierung
  • trotzdem genügend Peripherie (Timer, ADC, USART)
  • viele und langjährig getestete, reife Flash-Geräte auf dem Markt
  • auch in nicht-SMD-Technik verfügbar (gerade für noch nicht so erfahrene Löter)

Warum Assembler-Code für die Mikrokontroller?

  • eine persönliche Leidenschaft von mir seit der Jugend, früher vornehmlich in Z80-Assembler (damals unverzichtbar für leistungsfähige Projekte auf meinem damaligen Rechner, ein Schneider CPC 464), später in x86-Assembler
  • Code mit vorhersehbarer Größe und Geschwindigkeit, gerade auch wichtig, wenn man bestimmte Busse wie I2C, SPI und andere implementieren möchte
  • geringer Speicherplatz
  • insgesamt das genaue Gegenteil der modernen Programmierweise, in der man Megabytes von Code und Bilbiotheken einbindet, ohne genau zu wissen was dieser Code tut und was der noch alles einbindet, weil es aufgrund von Komplexizität und Zeitmangel einfach nicht mehr zu durchschauen ist

Warum Kabelgebunden?

  • vor allem wegen der höheren Zuverlässigkeit (Kabel ist weniger störanfällig und angreifbar als Funk und stört selbst weniger andere)
  • größere Protokollfreiheit (ich kann selbst festlegen, wie die Nodes miteinander kommunizieren)
  • WLAN und Bluetooth geht nur mit komplexeren Systemen mit vertretbarem Aufwand (z.B. ESP32), aber die wollte ich ja gerade vermeiden
  • andere funkbasierte Lösungen (z.B. 433 MHz etc.) arbeiten entweder in bereits stark beanspruchten Funkbändern oder unterliegen strengen Regulierungen (z.B. bzgl. der Sendezeiten)

Weiterführende Seiten