Inhaltsverzeichnis:

Erstellen Sie ein Helligkeitsmodul mit AtHome - Gunook
Erstellen Sie ein Helligkeitsmodul mit AtHome - Gunook

Video: Erstellen Sie ein Helligkeitsmodul mit AtHome - Gunook

Video: Erstellen Sie ein Helligkeitsmodul mit AtHome - Gunook
Video: 17 Tricks zur Steigerung der Produktattraktivität in Werbeanzeigen + andere coole Telefontipps 2024, November
Anonim
Erstellen Sie ein Helligkeitsmodul mit AtHome
Erstellen Sie ein Helligkeitsmodul mit AtHome

AtHome ist ein vollständig OpenSource- und Openhardware-Studentenprojekt der Gruppe AtHome von Epitech, das darauf abzielt, eine verbundene Lösung aus mehreren einzelnen Sensormodulen zu entwickeln, die mit einer selbst gehosteten Datenbank kommunizieren und eine API bereitstellen, die zum Füttern einer Smartphone-Anwendung und einer Webanwendung verwendet wird. Die Module überwachen die Innenumgebung eines Hauses und sind in der Lage, dem Benutzer ein visuelles Feedback zu geben, das von grün (gut) auf rot (schlecht) wechselt und die übertragenen Daten sind für den Benutzer durch die serielle Kommunikation eines Moduls oder auf. sichtbar unsere Anwendungen, wenn Sie diese verwenden.

Auch wenn sich dieses Projekt noch in einer aktiven Entwicklung befindet, sind die Grundfunktionalitäten unserer Module nun fertig und vermeintlich einfach zu bedienen, um kundenspezifische Module zu entwickeln. Deshalb schlage ich Ihnen vor, zu sehen, wie Sie mit diesem Beispiel für ein Helligkeitsmodul Ihr eigenes einfaches Modul erstellen können.

Diese Module sind grundsätzlich mit einem Arduino-kompatiblen Board aufgebaut (ein partieller Arduino-Kern sollte ausreichen, solange er Stream, Wire und einen UART-Stream unterstützt), eine LED (rot oder RGB), die im Problemfall rot wird, a Sensor, ein Netzteil (Steckernetzteil oder Batterie) und ein lasergeschnittenes Gehäuse.

Ja, es ist definitiv nicht neu, es gibt viele Sensorprojekte, aber wir hoffen, dass Ihnen andere Funktionen wie die Erkennung von Gesundheitsproblemen, die Kommunikation und Speicherung von Informationen auf einem selbst gehosteten Server und eine Visualisierungsanwendung helfen. Oder wenn Sie nur Ihr Haus überwachen möchten, einfache Projekte oder nicht weniger interessant:)

Schritt 1: Komponenten sammeln

Sammeln von Komponenten
Sammeln von Komponenten

Für dieses Projekt benötigen Sie einige Komponenten, um Ihr AtHome-Modul zu erstellen:

  • 1x Arduino-kompatibles Board: Hier verwende ich ein Arduino UNO (aber es funktioniert auch mit anderen Boards wie TI Launchpads und ESP8266 Boards)
  • 1x Sensor: Ich verwende einen TSL2561 Helligkeitssensor (die Liste der unterstützten Sensoren finden Sie in der Dokumentation unserer Bibliothek)
  • 1x LED: Ich werde hier eine Grove Chainable RGB LED verwenden (es kann aber auch eine einfache rote LED oder ein NeoPixel sein)
  • Dupont-Drähte

Die Liste der kompatiblen Komponenten finden Sie in der Dokumentation unseres Projekts.

Schritt 2: Installieren unserer Bibliothek

Installieren unserer Bibliothek
Installieren unserer Bibliothek
Installieren unserer Bibliothek
Installieren unserer Bibliothek

Um unsere Bibliothek zu installieren, müssen Sie sie aus unserem Repository herunterladen (wir werden sie später auf der Arduino IDE-Liste und PlatformIO veröffentlichen) mit diesem Link:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Gehen Sie dann in die Arduino IDE und wählen Sie "Skizze> Bibliothek einschließen>. ZIP-Bibliothek hinzufügen …". Wählen Sie dann die Zip-Datei mit dem Namen "artifacts.zip" aus und klicken Sie auf "OK".

Schritt 3: Erforderliche Bibliotheken installieren

Erforderliche Bibliotheken installieren
Erforderliche Bibliotheken installieren
Erforderliche Bibliotheken installieren
Erforderliche Bibliotheken installieren
Erforderliche Bibliotheken installieren
Erforderliche Bibliotheken installieren

Damit unsere Bibliothek funktioniert, müssen einige andere Bibliotheken auf Ihrem Computer installiert sein:

  • Arkhipenko TaskScheduler-Bibliothek
  • SEEED Studio Grove Digitale Lichtsensorbibliothek
  • SEEED Studio Grove Verkettbare RGB-LED-Bibliothek
  • Adafruit NeoPixel-Bibliothek

Sie können sie über den Bibliotheksmanager der Arduino IDE installieren, indem Sie auf "Skizze" > "Bibliothek einschließen" > "Bibliotheken verwalten …" klicken.

Geben Sie im neuen Fenster, das sich öffnet, in die weiße Suchleiste den Namen der Bibliothek ein, die Sie installieren möchten, und klicken Sie dann auf deren Block. Eine Schaltfläche "Installieren" wird angezeigt, Sie müssen nur darauf klicken und die IDE lädt sie herunter und installiert sie für Sie.

Schritt 4: Zusammenbau des Moduls

Zusammenbau des Moduls
Zusammenbau des Moduls

Wir beginnen mit dem Sensor. Verbinden Sie über ein Kabel den VCC-Pin des TSL2561 mit dem 5V-Pin des Arduino, den GND-Pin des Sensors mit einem der GND-Pins des Arduino und die SDA- und SCL-Pins des Sensors mit den SDA- und SCL-Pins des Arduino. Jetzt bist du fertig!

Verbinden Sie nun den VCC-Pin der Grove Chainable RGB-LED mit dem 5V-Pin des Arduino und den GND-Pin der LED mit dem zweiten GND des Arduino. Wenn Sie Arduino als nur einen 5V-Pin haben, können Sie ein Steckbrett verwenden, um die 5V des Arduino mit einer + Reihe des Steckbretts zu verbinden und alle Ihre Komponenten 5V-Pins darauf zu verbinden, oder sie auf einem Stück Stripboard zusammenlöten oder Verwenden Sie Wago-Anschlüsse oder was auch immer Sie bevorzugen. Verbinden Sie nun den CI-Pin Ihrer LED mit dem Pin 7 Ihres Arduino und den DI-Pin Ihrer LED mit dem Pin 8 Ihres Arduino. Wenn Sie keine solche LED haben, machen Sie sich keine Sorgen, es ist möglich, die eingebaute LED Ihres Arduino-Boards oder eine klassische mit nur einer kleinen Änderung im Code zu verwenden.

Schritt 5: Schreiben der Luminosity Module Sketch

Schreiben der Helligkeitsmodul-Skizze
Schreiben der Helligkeitsmodul-Skizze

Lassen Sie uns eine neue Skizze erstellen und den Code für unser Modul schreiben.

Wenn Sie die Erläuterung der Skizze nicht interessiert, können Sie sie einfach kopieren und in Ihre Arduino-IDE einfügen:

#enthalten

mit LightModule = AtHomeModule; Stream *streams = {&Serial, nullptr}; GroveChainableLED::Pins grovePins = {7, 8}; GroveChainableLED LED(&grovePins); LightModule *module = LightModule::getInstance(); Void setup () { // Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen: Serial.begin (9600); module->setStreams(streams); GroveDigitalLightSensor *lightSensor = neuer GroveDigitalLightSensor(); Modul->setSensor (Lichtsensor); module->setDisplay(&led); Modul->Setup(); } void loop() { // füge deinen Hauptcode hier ein, um ihn wiederholt auszuführen: module->run(); }

Wenn Sie alles verstehen möchten, was dieser Code macht, können Sie Folgendes lesen oder, wenn Sie nicht interessiert sind, direkt zum nächsten Schritt springen.

Um zu beginnen, müssen wir unsere Bibliothek in unsere Skizze aufnehmen, indem wir diese Zeile oben in die Skizze schreiben:

#enthalten

Jetzt müssen wir einen Alias für das Modulobjekt erstellen, das wir verwenden werden. Sie können es als eine Box mit mehreren Schaltflächen sehen, die verwendet werden, um seine Komponenten zu ändern, zu starten, zu stoppen usw. Da es sich um eine Box handelt, die von einer Vorlage erstellt wurde (wie die übliche Vorlage, die wir für Projekte als Menschen verwenden, hat sie eine Starterbasis und der Compiler von Arduino erstellt den endgültigen Code basierend auf Parametern, die wir ihm geben) und definiert den Typ, der einen Sensorwert darstellt, und die Anzahl der Sensorwerte, die wir im Speicher halten möchten, ist im Namen angegeben und sollte normalerweise jedes Mal wiederholt werden, wenn wir ihn verwenden möchten. Was etwas nervig ist, deshalb werden wir dem vollständigen Namen dieser Box einen neuen Namen, einen Alias, zuordnen.

Nehmen wir zum Beispiel an, ich möchte, dass diese Box "LightModule" heißt, da sie verwendet wird, um ein Helligkeitsüberwachungsmodul zu implementieren, und ich möchte nur 1 Wert gleichzeitig behalten. Die Leuchtkraft wird von unserem TSL2561-Sensor in Lux als integraler Typ dargestellt, der von Computern als uint16_t dargestellt wird. Unser Alias sieht dann so aus:

mit LightModule = AtHomeModule;

Das Schlüsselwort "using" bedeutet, dass wir einen Alias erstellen, und der Name, den wir ihm direkt hinterlegen, entspricht der Sequenz nach dem Zeichen "=".

"AtHomeModule" ist der richtige Name dieser Box, wir geben einen neuen Namen, und die Parameter, die die Wertdarstellung und die Anzahl der im Speicher gehaltenen Werte definieren, sind zwischen "" aufgeführt.

Wenn wir später den Namen "AtHomeModule" verwenden, weiß Arduino, dass es sich auf den vollständigen Namen "AtHomeModule" bezieht.

Wenn Sie möchten, dass Ihre Box 5 statt 1 Werte im Speicher behält, müssen Sie nur die "1" durch "5" ersetzen und Arduino generiert für Sie eine andere Art von Box, die in der Lage ist, das zu tun, was Sie wollen. Beachten Sie jedoch, dass, wenn das Modul so programmiert ist, dass es seine Werte sendet, bevor es die Zeit hat, 5 Werte des Sensors effektiv zu messen, Sie nie sehen werden, dass 5 davon gesendet werden, da es nur die neuen Werte seit dem letzten Upload sendet.

Als nächstes müssen wir ein Array von Zeigern erstellen, die Zeiger auf Arduino-Streams enthalten, die vom Modul zur Kommunikation verwendet werden und immer mit dem keyworkd "nullptr" abgeschlossen werden. Hier verwende ich nur den "seriellen" Stream des Arduino, der über den USB-Port mit dem Computer kommuniziert, also sieht das Array so aus:

Stream *streams = {&Serial, nullptr};

Das Zeichen "*" bedeutet, dass der Typ ein Zeiger ist (die Position des Elements, nicht das Element selbst) und die Klammern "" bedeuten in Arduino, dass es sich um ein Array handelt, sodass wir mehrere Werte eingeben können.

Als nächstes müssen wir unsere LED erstellen. Dazu müssen wir die folgenden zwei Zeilen schreiben;

GroveChainableLED::Pins grovePins = {7, 8};

GroveChainableLED LED(&grovePins);

Wenn Sie keine Grove RGB-LED haben, aber dennoch ein visuelles Feedback wünschen, können Sie dies mit einer einfachen Änderung in der Skizze tun. Ersetzen Sie die beiden vorherigen Zeilen durch diese Zeile:

Monochromatische LED-LED (LED_BUILTIN);

In dieser Konfiguration leuchtet die grüne integrierte LED, solange der überwachte Wert für den Zustand in Ordnung ist, und erlischt, wenn er nicht mehr verbunden ist. Wenn Sie es vorziehen, es einzuschalten, wenn es nicht verbunden ist (weil Sie beispielsweise eine rote LED anstelle der grünen an Pin 13 verwenden), können Sie stattdessen diese Zeile verwenden:

Monochromatische LED-LED (LED_BUILTIN, wahr);

Der nächste Schritt besteht darin, unser Modul selbst zu erstellen. Dies geschieht beim ersten Abrufen des Speicherorts im Speicher durch Aufrufen der Methode "getInstance" wie folgt:

LightModule *module = LightModule::getInstance();

Dann müssen wir die Parameter in der Funktion "setup()" von Arduino einstellen, beginnend mit der Initialisierung des "Serial"-Ports wie in Arduino-Skizzen üblich:

Serial.begin (9600);

Wir erstellen den Lichtsensor, indem wir diese Zeile schreiben:

GroveDigitalLightSensor *lightSensor = neuer GroveDigitalLightSensor();

Dann weisen wir unser Modul an, unser Array von Zeigern auf Arduino Stream zu verwenden, um über sie zu kommunizieren:

module->setStreams(streams);

Wir weisen unser Modul auch an, unseren Lichtsensor zu verwenden, um die Lichtintensität dort zu überwachen, wo sich das Modul befindet:

Modul->setSensor (Lichtsensor);

Wir weisen unser Modul an, unsere LED zu verwenden, um uns ein visuelles Feedback zu geben:

module->setDisplay(&led);

Schließlich teilen wir unserem Modul mit, dass es bereit ist, alle erforderlichen internen Konfigurationen vorzunehmen, indem wir seine eigene "Setup" -Funktion aufrufen:

Modul->Setup();

Unser letzter Schritt besteht nun darin, die Funktion "run()" unseres Moduls aufzurufen, die so konzipiert ist, dass sie bei jeder Iteration der Funktion "loop" von Arduino aufgerufen wird, indem Sie diese Zeile in die Funktion "loop" schreiben:

Modul->run();

Jetzt ist unsere Skizze endlich bereit, auf den Arduino hochzuladen und unser Modul zu testen!

Schritt 6: Testen unseres AtHome-Moduls

Testen unseres AtHome-Moduls
Testen unseres AtHome-Moduls
Testen unseres AtHome-Moduls
Testen unseres AtHome-Moduls

Um die Skizze auf das Arduino hochzuladen, wählen Sie Ihr Arduino UNO-Board aus, indem Sie auf "Tools"> "Port"> "[COMx or /dev/x] (Arduino/Genuino UNO)" gehen.

Als letztes klicken Sie einfach auf den "Upload"-Button (der Kreis-Button mit einem nach rechts zeigenden Pfeil, das zweite Symbol der Symbolleiste), um die Skizze in Ihr Board hochzuladen.

Es ist fertig! Jetzt sollte Ihr Modul funktionieren und Werte an Ihren Computer senden, die im seriellen Monitor von Arduino sichtbar sind. Sie können es überprüfen, indem Sie den "Serial Monitor" von Arduino im Menü "Tools" öffnen und Sie sollten eine Ausgabe haben, die wie das zweite Titelbild dieses Schritts aussieht:)

Schritt 7: Erstellen eines Gehäuses für das Modul

Aufbau eines Gehäuses für das Modul
Aufbau eines Gehäuses für das Modul

Sie können ein einfaches Kastengehäuse für Ihr Modul bauen, indem Sie es in eine 3 mm Sperrholzplatte laserschneiden.

Für die Herstellung unserer Boxcases verwenden wir makercase, um eine Vorlage in den gewünschten Abmessungen vorzubereiten, die wir später anpassen. Sie finden die SVG-Datei des Luminosity-Moduls, die diesem Schritt beigefügt ist.

Dann kleben Sie einfach die Gesichter mit Ausnahme einer zusammen, damit Sie sie später öffnen können, legen Sie Ihre Schaltung hinein und kleben Sie die LED in das Loch des Gehäuses (wir verwenden transparentes Klebeband, um das Loch zu füllen und das Licht zu streuen, um die LED vorne zu kleben davon).

Fügen Sie jetzt einfach eine Batterie hinzu, um Ihr Arduino mit Strom zu versorgen, schließen Sie das Gehäuse und Ihr Modul ist fertig und sollte gut aussehen:)

Empfohlen: