Inhaltsverzeichnis:
- Schritt 1: Einführung
- Schritt 2: Sammeln der Teile und Werkzeuge
- Schritt 3: Installieren der Arduino-IDE
- Schritt 4: Der Code
- Schritt 5: Schaltplan
- Schritt 6: Alles zusammenfügen
- Schritt 7: Fazit
Video: Der künstliche Pflanzen-Emotions-Expressor (A.P.E.X.) - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Aber warten Sie… Es gibt noch mehr!
Schritt 1: Einführung
Was ist APEX?
APEX ist ein intelligentes (ganz zu schweigen von niedlichen) Pflanzenüberwachungsgerät. Schließen Sie es einfach an eine beliebige Pflanze an und es wird das "Glücksniveau" der Pflanze angezeigt! Dies ist eine großartige Erinnerung daran, Ihre Pflanzen zu gießen, wenn Sie die schlechte Angewohnheit haben, das Gießen zu vergessen.
Wie funktioniert es?
Magie. War nur Spaß! APEX verwendet einen Arduino, der an einem Feuchtigkeitssensor befestigt ist, der in den Boden der Pflanze eingeführt wird. Dieser Sensor liest den Feuchtigkeitsgehalt des Bodens und dann berechnet der Arduino, welches Gesicht angezeigt werden soll.
Aber warum?
Warum nicht?
Schritt 2: Sammeln der Teile und Werkzeuge
Lassen Sie uns darauf eingehen! Für dieses Instructable benötigen Sie einige Teile und Werkzeuge. Zum Glück für Sie sind sie alle unten aufgeführt:
Ganz im Sinne des Microcontrollers Contest wurde dieses Projekt komplett aus bei Amazon gekauften Teilen erstellt! (nicht gesponsert)
Liste der Einzelteile:
- Arduino Uno
- 8x8 LED-Anzeige
- Kapazitiver Berührungssensor
- Feuchtigkeitssensor
- 9V Batterieanschluss
- 9V Batterie
Werkzeugliste:
- 22-Gauge-Draht
- Isolierband
- Abisolierzangen
- Lötkolben
- Entlötpumpe
Sobald Sie alle notwendigen Geräte gesammelt haben, ist es Zeit, die Arduino-Software einzurichten!
Schritt 3: Installieren der Arduino-IDE
Damit dieses Projekt funktioniert, müssen wir in der Lage sein, den Arduino zu programmieren. Dies erfordert das Herunterladen und Installieren der Arduino Integrated Development Environment (IDE) auf Ihrem Computer. Es ist eine ziemlich einfache Erklärung, aber ich werde Sie durch den Prozess führen:
1. Besuchen Sie die Arduino-Website
2. Navigieren Sie zur Download-Seite (Software > Downloads)
3. Klicken Sie auf den Download-Link für Ihr Betriebssystem
Randnotiz: Das Programm funktioniert unter Windows, Mac und Linux.
4. Installation unter Windows
- Doppelklicken Sie auf die heruntergeladene Datei, um sie auszuführen
- Klicken Sie auf "Zustimmen", um der Lizenz zuzustimmen
- Folgen Sie den restlichen Anweisungen
- Das Programm sollte jetzt installiert sein!
(Schauen Sie sich die Screenshots an, wenn Sie sich verirren)
5. Installation auf dem Mac
- Klicken Sie auf die heruntergeladene Datei
- Wählen Sie "Öffnen"
- Das Programm wird automatisch installiert und ausgeführt!
(Schauen Sie sich die Screenshots an, wenn Sie verwirrt sind)
6. Das ist es
Und du bist fertig! Sie haben jetzt die Arduino IDE auf Ihr System heruntergeladen!
Schritt 4: Der Code
In diesem Schritt dreht sich alles um den Code. Es ist ein ziemlich kurzes Programm, also werde ich es mit Ihnen durchgehen und erklären, wie es funktioniert. Zuerst ein kurzer Überblick, dann eine ausführliche Erklärung und schließlich, wie man es auf den Arduino bringt!
Die kurze Übersicht
Für diejenigen unter Ihnen, die nicht an der detaillierten Erklärung des Codes interessiert sind, biete ich ein TL;DR-Segment an! Hier ist die grundlegende Erklärung. Der Arduino greift alle paar Sekunden Werte vom Feuchtigkeitssensor ab. Diese Informationen werden dann verwendet, um ein bestimmtes Gesicht zu berechnen und anzuzeigen! Es gibt auch ein bisschen Code am Ende, mit dem der kapazitive Touch-Button das Display ein- und ausschalten kann. Ziemlich einfach oder?
The Nitty Gritty
Dieser Teil des Tutorials ist für diejenigen, die sehr daran interessiert sind, wie das gesamte Programm Zeile für Zeile funktioniert. Ich stelle oben Screenshots zur Verfügung, damit Sie verstehen, wovon ich spreche, und füge einige Codezeilen in diese Beschreibung ein.
Dieses Programm ist in fünf Abschnitte unterteilt:
- Einbinden von Bibliotheken und Erstellen von Variablen
- Die Setup-Funktion
- Funktionen für Gesichtsausdrücke
- Die Write Arduino On Matrix-Funktion
- Die Loop-Funktion
Einbinden von Bibliotheken und Erstellen von Variablen:
Im ersten Abschnitt dieses Codes dreht sich alles um die Variablen und Bibliotheken, die wir verwenden werden.
#include "LedControlMS.h"
#define TouchSensor 7 LedControl lc=LedControl(12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool gestartet = false; bool on = wahr; boolescher Wert gedrückt = LOW;
Die erste Zeile enthält eine Bibliothek namens LedControlMS. Diese Bibliothek wird benötigt, um Werte an die LED-Anzeige senden zu können. Die nächste Zeile ist eine define-Anweisung, die den Pin für den Berührungssensor auf 7 setzt. Danach haben wir drei weitere Variablen, die die Pins für das LED-Display, den Feuchtigkeitssensor und seinen Wert definieren. Die letzten drei Zeilen sind alles boolesche Werte, die den Zustand des Touch-Buttons und des Displays regeln. Danach haben wir unsere Byte-Werte:
Byte Lächeln[4]={B00000100, B00110010, B01100100, B01100000};Byte Überraschung[4]={B00001110, B00001010, B01101110, B10010000}; Byte meh[4]={B00000100, B00100100, B00100100, B00100000}; Byte traurig[4]={B00000010, B01100100, B00110010, B00110000}; Byte tot[6]={B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; Bytefehler[8]={B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; //Böse Gesichter byte esmile[4]={B00000010, B00101010, B01000100, B01000000}; Byte elaugh[4]={B00000010, B00101010, B01100100, B01100000}; Byte-Eplain[4]={B00000010, B00101010, B00100100, B00100000}; Byte-Auge[4]={B0000001, B01101001, B01100010, B01100000}; Byte etalk[4]={B0000001, B00101001, B01100010, B01100000};
Diese Werte repräsentieren alle Gesichter von APEX. Jedes Byte ist ein Array, das mehrere Bits enthält, die den Zustand jedes Pixels in einer gegebenen Zeile bestimmen. "1" und "0" stehen jeweils für Ein/Aus.
Die Setup-Funktion:
Im nächsten Abschnitt haben wir unsere Setup-Funktion.
Void setup () {// MS Serial Output Serial.begin (9600);
pinMode (Berührungssensor, EINGANG);
// LED-Matrix-Setup lc.shutdown (0, false); lc.setIntensity(0, 4); lc.clearDisplay(0); }
Der Name erklärt es sehr gut. Hier „einrichten“wir unseren Touchsensor und das Display. Die ersten beiden Zeilen beginnen unsere serielle Ausgabe (wird zum Debuggen verwendet). Die dritte Zeile setzt den Touchsensor-Pin auf einen Eingang und die letzten vier Zeilen starten das Display.
Funktionen für Gesichtsausdrücke:
Dies ist wahrscheinlich der längste Abschnitt überhaupt, aber es ist alles sehr einfach und wiederholt sich.
Void defekt () {lc.setRow (0, 0, error [0]); lc.setRow(0, 1, Fehler[1]); lc.setRow(0, 2, Fehler [2]); lc.setRow(0, 3, Fehler[3]); lc.setRow(0, 4, Fehler[4]); lc.setRow(0, 5, Fehler[5]); lc.setRow(0, 6, Fehler[6]); lc.setRow(0, 7, Fehler[7]); }
leer glücklich () {
lc.setRow(0, 0, smile[0]); lc.setRow(0, 1, Lächeln[1]); lc.setRow(0, 2, Lächeln [2]); lc.setRow(0, 3, Lächeln [3]); lc.setRow(0, 4, smile[3]); lc.setRow(0, 5, Lächeln [2]); lc.setRow(0, 6, Lächeln[1]); lc.setRow(0, 7, smile[0]); }
Leere Ebene () {
lc.setRow(0, 0, meh[0]); lc.setRow(0, 1, meh[1]); lc.setRow(0, 2, meh[2]); lc.setRow(0, 3, meh[3]); lc.setRow(0, 4, meh[3]); lc.setRow(0, 5, meh[2]); lc.setRow(0, 6, meh[1]); lc.setRow(0, 7, meh[0]); }
Leere überrascht (){
lc.setRow(0, 0, Überraschung[0]); lc.setRow(0, 1, Überraschung[1]); lc.setRow(0, 2, Überraschung [2]); lc.setRow(0, 3, Überraschung[3]); lc.setRow(0, 4, Überraschung[3]); lc.setRow(0, 5, Überraschung [2]); lc.setRow(0, 6, Überraschung[1]); lc.setRow(0, 7, überraschen[0]); }
Leere sterben () {
lc.setRow(0, 0, dead[0]); lc.setRow(0, 1, tot[1]); lc.setRow(0, 2, tot[2]); lc.setRow(0, 3, tot[3]); lc.setRow(0, 4, tot[4]); lc.setRow(0, 5, tot[5]); lc.setRow(0, 6, tot[1]); lc.setRow(0, 7, dead[0]); }
Leere weinen () {
lc.setRow(0, 0, traurig[0]); lc.setRow(0, 1, traurig[1]); lc.setRow(0, 2, traurig [2]); lc.setRow(0, 3, traurig[3]); lc.setRow(0, 4, traurig[3]); lc.setRow(0, 5, traurig [2]); lc.setRow(0, 6, traurig[1]); lc.setRow(0, 7, traurig[0]); }
Leere böses Lächeln () {
lc.setRow(0, 0, esmile[0]); lc.setRow(0, 1, esmile[1]); lc.setRow(0, 2, esmile[2]); lc.setRow(0, 3, esmile[3]); lc.setRow(0, 4, esmile[3]); lc.setRow(0, 5, esmile[2]); lc.setRow(0, 6, esmile[1]); lc.setRow(0, 7, esmile[0]); }
Leere Übellachen () {
lc.setRow(0, 0, elaugh[0]); lc.setRow(0, 1, elaugh[1]); lc.setRow(0, 2, elaugh[2]); lc.setRow(0, 3, elaugh[3]); lc.setRow(0, 4, elaugh[3]); lc.setRow(0, 5, elaugh[2]); lc.setRow(0, 6, elaugh[1]); lc.setRow(0, 7, elaugh[0]); }
Leere Evilplain () {
lc.setRow(0, 0, eplain[0]); lc.setRow(0, 1, eplain[1]); lc.setRow(0, 2, eplain[2]); lc.setRow(0, 3, eplain[3]); lc.setRow(0, 4, eplain[3]); lc.setRow(0, 5, eplain[2]); lc.setRow(0, 6, eplain[1]); lc.setRow(0, 7, eplain[0]); }
Leere Evilyell () {
lc.setRow(0, 0, eyell[0]); lc.setRow(0, 1, eyell[1]); lc.setRow(0, 2, eyell[2]); lc.setRow(0, 3, Auge[3]); lc.setRow(0, 4, Auge[3]); lc.setRow(0, 5, eyell[2]); lc.setRow(0, 6, eyell[1]); lc.setRow(0, 7, eyell[0]); }
Leere böses Gerede () {
lc.setRow(0, 0, etalk[0]); lc.setRow(0, 1, etalk[1]); lc.setRow(0, 2, etalk[2]); lc.setRow(0, 3, etalk[3]); lc.setRow(0, 4, etalk[3]); lc.setRow(0, 5, etalk[2]); lc.setRow(0, 6, etalk[1]); lc.setRow(0, 7, etalk[0]); }
Diese Funktionen werden verwendet, um jeden Gesichtsausdruck mit unseren Byte-Werten aus dem ersten Abschnitt zu definieren. Jede Zeile definiert eine x-Position und Byte-Werte und wendet die Werte dann auf diese Spalte an. Einige Funktionen erfordern mehr Zeilen, da mehr Zeilen verwendet werden, um die Werte dieser Fläche anzuzeigen. Jedes Gesicht ist symmetrisch, weshalb wir die Linien wiederholen.
Die WriteArduinoOnMatrix-Funktion:
Der vierte Abschnitt wird verwendet, um die richtigen Gesichter auf dem LED-Display zu berechnen und zu schreiben. Es besteht aus einer Reihe von else if-Anweisungen, die die Wasserwerte überprüfen und dann die Anzeige einstellen, indem sie verschiedene Funktionen aus dem vorherigen Abschnitt aufrufen.
void writeArduinoOnMatrix() { if(sensorValue > 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) { überrascht (); aufrechtzuerhalten. Sonst { kaputt (); } }
Sie werden vielleicht feststellen, dass wir "kaputte" Gesichter hinzugefügt haben, nur für den Fall, dass der Sensor außerhalb des Arbeitsbereichs liegt. Dies verhindert, dass einige seltsame Nullfehler auftreten, und gibt uns ein besseres visuelles Verständnis dafür, was im Code vor sich geht.
Die Loop-Funktion:
Last but not least ist die Loop-Funktion. Dieser Code macht genau das, was sein Name sagt, er loopt! Obwohl es in dieser Funktion einige Zeilen gibt, ist sie eigentlich ziemlich einfach. Der Code liest zuerst den Tastenzustand und sieht, ob die Anzeige "Ein" ist. Wenn dies zutrifft, wird die Funktion WriteArduinoOnMatrix aufgerufen, die dann ein Gesicht auf APEX zeichnet. Da diese Funktion in einer Schleife ausgeführt wird, wird die Anzeige so oft aktualisiert, wie wir möchten. Diese Verzögerung wird durch die Variable delaytime bestimmt.
Void Schleife () { wenn (gestartet == wahr) { Verzögerungszeit = 3000; } // Lesetaste gedrückt = digitalRead (TouchSensor);
wenn (gedrückt) {
if (on == true) { lc.clearDisplay (0); ein = falsch; Verzögerung (Verzögerungszeit); aufrechtzuerhalten. Sonst { auf = wahr; Verzögerung (Verzögerungszeit); } } sensorValue = analogRead (sensorPin); Verzögerung (Verzögerungszeit); if (on == true) {// Gesichter zeichnen writeArduinoOnMatrix (); }
begonnen = wahr;
}
Das ist alles, was der Code enthält. Hoffentlich haben Sie jetzt ein besseres Verständnis dafür, wie alles funktioniert, und können dieses Wissen nutzen, um es an Ihr Projekt anzupassen!
Den Code auf den Arduino übertragen
Nachdem wir den gesamten Code behandelt haben, ist es an der Zeit, ihn auf das Arduino zu übertragen! Glücklicherweise macht die IDE dies sehr einfach. Alles, was Sie tun müssen, ist, Ihr Arduino mit einem USB-Kabel an Ihren Computer anzuschließen und dann einfach auf den rechten Pfeil oben links in der IDE zu klicken. Lassen Sie den Code pushen, und Sie sollten eine Erfolgsmeldung am unteren Rand des Programms sehen, wenn Sie es richtig gemacht haben!
Schritt 5: Schaltplan
Ähnlich wie der Code ist der Schaltplan nicht zu kompliziert. Es besteht nur aus drei Sensoren und dem Arduino, daher werde ich Ihnen die Pinbelegung für jeden mitteilen, und wenn Sie weitere Hilfe benötigen, beziehen Sie sich einfach auf das obige Diagramm.
Die LED-Anzeige:
- VCC -> 5V
- GRD -> GRD
- DIN -> Stift 12
- CS -> Pin 10
- CLK -> Stift 11
Der Feuchtigkeitssensor:
- Positiv -> 5V
- Negativ -> GRD
- Signal -> A5
Der kapazitive Berührungssensor:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Nicht allzu schwierig, oder? Wenn Sie Probleme mit dieser Pinbelegung haben, sehen Sie sich das Video unten an, in dem ich Sie durch die Verkabelung führe.
Schritt 6: Alles zusammenfügen
Es ist schwer, über Text zu erklären, wie alles zusammenpasst, daher würde ich definitiv vorschlagen, sich das Video für diesen Teil anzusehen. Ich werde nicht genau erklären, wie ich meine zusammenbaue, es ist viel zu schwierig. Aber um die Dinge vage zu erklären, lötete ich die Drahtverbindungen an und wickelte sie um die Rückseite der Platine. Dann positionierte ich die Sensoren und benutzte Isolierband, um alles zusammenzuhalten. Zuletzt habe ich es mit der 9-V-Batterie getestet und dann, als ich wusste, dass es funktioniert, die Batterie auf die Rückseite gelegt und auch diese mit Klebeband befestigt. Wie ich bereits sagte, SCHAUEN SIE SICH DAS VIDEO FÜR DIESEN SCHRITT AN, es hat ein nettes kleines Lötsegment, das beschleunigt wird und Ihnen hilft, die Drähte richtig zu wickeln. Fühlen Sie sich frei, es zu pausieren oder mit halber Geschwindigkeit abzuspielen, wenn Sie sich verlaufen.
Herzliche Glückwünsche! Wenn alles erfolgreich gelaufen ist, sollten Sie jetzt ein voll funktionsfähiges APEX-Gerät haben!
Um Ihr Gerät zu testen, suchen Sie eine bewässerte Pflanze und schließen Sie sie an! Sie sollten feststellen, dass es entweder glücklich oder überrascht ist und das bedeutet, dass es funktionieren sollte!!! Tolle Arbeit für den Abschluss des Projekts!
Schritt 7: Fazit
Und das ist das ganze Instructable! Vielen Dank, dass Sie sich das Projekt angesehen haben! Hinterlassen Sie unten alle Fragen und Kommentare und folgen Sie den Urban Farming Guys für weitere coole Tutorials wie dieses! Wir würden gerne hören, wie Ihr APEX-Build verlaufen ist, und Bilder sind sehr willkommen! Nochmals vielen Dank für Ihren Besuch, haben Sie einen schönen Tag!
(Dieses Instructable wurde von einem älteren Projekt inspiriert, dem Plant Emoji!)
PS Dieses Instructable wird in den Mikrocontroller-Wettbewerb aufgenommen, also vergessen Sie nicht, für uns zu stimmen! Wir wissen es sehr zu schätzen:)
P. P. S. Holen wir uns APEX im Make Magazine! Stimmen Sie hier ab! Vielen Dank:)
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
ESP-01 Programmier-Hack - der Einfache :): 6 Schritte
ESP-01 Programmierer Hack - der Einfache :): Hallo ESPer, In diesem anweisbaren zeige ich Ihnen einen einfachen Hack, um einen Programmierer für ESP-01 / ESP8266-01 / ES-01-Modul zu machen. Die meisten von uns haben ein Arduino-Board oder FTDI USB-TTL-Geräte als Programmierer für dieses Modul verwendet. Beide Methoden funktionieren gut. Aber t
Der Sanity Check: 5 Schritte (mit Bildern)
Der Sanity Check: Bei diesem Projekt dreht sich alles um die Gesundheit oder darum, dass er regelmäßig überprüft wird. Der beste Weg, dies zu erreichen, besteht darin, eine Maske zu bauen, deren Augen zufällig rot leuchten. Oft genug, damit es auffällt, aber spärlich genug, um die Leute zweifeln zu lassen
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir