Inhaltsverzeichnis:
- Schritt 1: Softwarelogik: Systemarchitektur
- Schritt 2: Schritt 1: Hardwareverkabelung
- Schritt 3: Schritt 2: Arduino
- Schritt 4: Schritt 3: NodeJS
- Schritt 5: Schritt 4: das Webinterface
- Schritt 6: Ergebnis
Video: Arduino-Projekt: Steuerung von Elektronik über das Internet mit Nodejs + SQL-Datenbank und Website. - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Projekt von: Mahmed.tech
Erstellungsdatum: 14. Juli 2017
Schwierigkeitsgrad: Anfänger mit einigen Programmierkenntnissen.
Hardware-Anforderung:
- Arduino Uno, Nano, Mega (ich denke, die meisten MCUs mit der seriellen Verbindung werden funktionieren)
- Einzelne LED & Strombegrenzungswiderstand. Verwenden Sie diesen Rechner, wenn Sie sich nicht sicher sind: Rechner für das Ohmsche Gesetz
- 10K Potentiometer.
Software-Anforderung:
- Arduino-IDE
- Node. JS (dies ist eine Software auf einem Computer, sehr einfach zu installieren)
- MySQL Server (der einfachste Weg, den ich gefunden habe, ist ein billiges Webhosting zu verwenden. Sie können auch kostenlose Domainnamen erhalten)
Verwendete Programmier- und Skriptsprache:
Arduino (modifiziertes C/C++), JavaScript (Nodejs), PHP, HTML & CSS
EinführungDieses Projekt in Kürze: Steuerung eines Arduino-Mikrocontrollers über ein Webinterface. Steuern Sie daher jedes elektrische Gerät von überall mit Internet. Ich wollte mein Verständnis von Programmierung und Webentwicklung erweitern und was gibt es besseres, als ein einfaches, aber effektives Projekt durchzuführen. Die Hardware ist minimal gehalten, damit ich mich mehr auf die Software konzentrieren kann. Daher ging ich mit einem einfachen LED-Pot-Setup. Der Topf sendet Daten und die LED empfängt (PWM-Helligkeit). Mit NodeJS wurden die seriellen Daten gelesen (Potentiometerwert) und geschrieben (LED-Helligkeit). Der schwierige Teil dieses Projekts bestand darin, Eingabedaten von einem entfernten Standort (Webserver) zu erhalten.
Schritt 1: Softwarelogik: Systemarchitektur
Potentiometerdaten:
Dies beginnt beim Arduino, der gelesene Pot-Wert ist ein serieller Druck. Dieses Mal verwenden wir jedoch Node. JS, um den Wert zu lesen. NodeJS öffnet die serielle Kommunikation mit dem gleichen Port, mit dem das Arduino verbunden ist, und liest den gedruckten Pot-Wert. NodeJS lädt dann die Daten in eine entfernte SQL-Datenbank hoch, dies geschieht jedes Mal, wenn ein neuer Pot-Wert gedruckt wird. Eine Webseite stellt eine Verbindung zum eingestellten Intervall der SQL-Datenbank her und ruft den Potentiometerwert ab. Diese wird dann auf der Webseite angezeigt.
Geführte Daten:
Für die LED wird die PWM-Helligkeit vom Benutzer auf einer Remote-Webseite eingestellt, sodass ihre Reise am entgegengesetzten Ende des Spektrums beginnt. Die Eingabedaten werden in einer SQL-Datenbank gespeichert, in jedem eingestellten Intervall wird die Datenbank auf eine Änderung der LED-PWM überprüft, dies wird von NodeJS durchgeführt. Wenn der Wert vom vorherigen Wert abweicht, wird der neue Wert über einen seriellen Bus an den Arduino gesendet. Der Arduino ändert den Ausgangs-PWM-Wert der LED, um ihre Helligkeit zu ändern.
Der Ohmsche Gesetzrechner verwendet die Formeln V = IR und P = IV = I²R = V²/R Für dieses Projekt verwende ich eine blaue LED. Dies ist wichtig, da mit steigender Lichtfrequenz auch der Spannungsabfall zunimmt. Da blaues Licht eine höhere Frequenz hat als so etwas wie eine rote LED. Dies bedeutet eine höhere Durchlassspannung. Je nach Fabrikat, Typ und Größe variiert der Arbeitsbereich. Für mein Setup habe ich einen 220--Widerstand in Reihe geschaltet, negativ zu Masse und positiv zu einem PWM-Pin auf einem Arduino. Der Topf wurde mit einem analogen Pin verbunden. Mit 5VCC ein Ende GND, das andere und der mittlere Pin mit einem analogen Pin verbunden (in meinem Fall A0).
Schritt 2: Schritt 1: Hardwareverkabelung
Dies ist ganz einfach: Schließen Sie einfach Ihren Strombegrenzungswiderstand in Reihe mit der LED an und stellen Sie sicher, dass Sie richtig herum geführt werden. Ein Punkt geht an GND, während ein anderes Ende an den Arduino-Pin geht. Für mein Setup habe ich Pin 12 für LED und A7 für Pot verwendet. Ich habe keinen Schaltplan, da es sich um eine sehr einfache Schaltung handelt. Ich habe dies jedoch online gefunden (Bild)
Schritt 3: Schritt 2: Arduino
Zuerst wurden die LED und der Topf überprüft, ob sie wie erwartet funktionierten. Dies wurde durch ein einfaches Programm erledigt, bei dem der Pot-Wert die LED steuert. Ich habe die Einschränkungsfunktion verwendet, um den Pot-Bereich von 0 bis 1023 auf 0 bis 255 zu ändern, aber ein einfaches /4 funktioniert auch. Der Pot-Wert wurde geglättet, indem der Mittelwert von 10 aufeinanderfolgenden Messwerten genommen wurde, um Spitzen zu entfernen. (Diese Glättung verursachte jedoch Probleme mit NodeJS, daher wurde dies später im Projekt entfernt - mehr dazu)
Arduino-Code
Seriell lesen / schreibenDer nächste Schritt besteht darin, Benutzereingaben über die von der Arduino-IDE bereitgestellten seriellen Monitorfenster vorzunehmen, um die Helligkeit einzustellen. Dazu wird serial.parseInt() verwendet, das einen Integer-Wert annimmt und Strings ignoriert. Außerdem wird dem Code eine Fehlerprüfung hinzugefügt. Der gültige Bereich eines PWM-Wertes ist 0 - 255, wenn ein Benutzer >255 eingibt, weist er den Wert 255 zu und wenn der Benutzer einen Wert oder < +/-5 eingibt, habe ich dies getan, um den Messwert stabiler zu machen, da es sich um Schwankungen handelte. Warum dies ein großes Problem im Zusammenhang mit der SQL-Aktualisierung ist, dazu später mehr.
Schritt 4: Schritt 3: NodeJS
Ich werde Ihnen nicht zeigen, wie Sie einen SQL-Server erhalten oder einrichten. Es gibt Unmengen von Tutorials da draußen.
Es gibt 3 Hauptaspekte des NodeJS-Programms:
Serielle Daten lesen
Serielle Daten schreiben
SQL-Datenbank aktualisieren
Um eine serielle Verbindung innerhalb von NodeJS herzustellen, muss ein Modul namens serialport heruntergeladen werden, was mit dem npm-Befehl möglich ist. Öffnen Sie CMD in dem Ordner, in dem das NodeJS-Programm gespeichert wird, installieren Sie es mit: npm install serialport Auch das SQL-Modul muss installiert sein, um eine Verbindung zur SQL-Datenbank herstellen zu können: npm install mysql NodeJS - Serial Port Mein erster Schritt mit dem NodeJS Programm war es, die gedruckten Daten zu lesen und die PWM-Helligkeit an den Arduino zu senden. Dies wurde durch Öffnen der seriellen Verbindung mit der gleichen Bradrate und dem gleichen Port durchgeführt. Sobald die Verbindung hergestellt war, las ich eingehende Nachrichten und druckte sie auf das Konsolenfenster. Problem trat auf, als ich versuchte, den PWM-Wert zu schreiben, um die Helligkeit zu steuern.
Es gab immer wieder Fehler: Port Not Open, meine ursprüngliche Lösung bestand darin, die Schreibfunktion aufzurufen, wenn Daten ankommen. Dies war jedoch eine schlechte Lösung und ich war mit der Lösung ziemlich unzufrieden, obwohl sie funktionierte, wurde sie nur gesendet, wenn der Pot-Wert geändert wurde. Der Beispielcode für das serielle Modul würde auch nicht funktionieren und denselben Fehler auslösen. Später fand ich heraus, dass das Programm versuchte, die Schreibfunktion auszuführen, ohne den Port zu öffnen, was zu diesem Fehler führte. Ich habe dieses Problem mit der Funktion setInterval() umgangen
NodeJS - MySQLDie MySQL-Bibliothek wurde verwendet (npm install MySQL), um eine Verbindung zur SQL-Datenbank herzustellen, da der Server an einem entfernten Standort die IP-Adresse des Servers anstelle von localhost verwendet wurde.
var con enthält die Verbindungsinformationen im JSON-Format, nach erfolgreichem Verbindungsaufbau kann die Datenbank abgefragt werden. Es wurden 2 Funktionen erstellt, eine zum Aktualisieren der Tabelle, andere zur Auswahl mit Parametern, die die SQL-Abfrage aufnehmen. Die Aktualisierungstabelle wird aufgerufen, wenn ein neuer Topfwert empfangen wird und die Abfrage zur Helligkeitsprüfung wird periodisch ausgeführt.
NodeJSCode-Link
Schritt 5: Schritt 4: das Webinterface
Webinterface
Die Hauptwebseite wurde in PHP geschrieben, da ich bereits einige Erfahrungen mit meinen CO323-Datenbanken und dem Webmodul an der Universität gesammelt hatte. Html-Tabelle & Formular wurde verwendet, um die SQL-Daten anzuzeigen.
PHP SQL-Zugriffscode: Link Scrollen Sie zum Abschnitt der Webschnittstelle.
HTML & CSS * Javascript Webseiten-Code: Link Nach unten scrollen
Endgültige Webseite