Inhaltsverzeichnis:

SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume - Gunook
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume - Gunook

Video: SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume - Gunook

Video: SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume - Gunook
Video: Visual Basic lebt - der aktuelle Stand am Beispiel von .NET Core 2.0 2024, November
Anonim
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume
SilverLight: Arduino-basierter Umgebungsmonitor für Serverräume

Einmal bekam ich die Aufgabe, einen Umgebungsfühler zur Überwachung der Temperatur im Serverraum meiner Firma zu suchen. Meine erste Idee war: Warum nicht einfach einen Raspberry PI und einen DHT-Sensor verwenden, es ist in weniger als einer Stunde eingerichtet, einschließlich der Installation des Betriebssystems. Dafür bekam ich die kalte Antwort von herrischen Leuten mit verbundenen Augen, dass wir das nicht tun werden, weil es mehr Arbeitsstunden kosten würde, es einzurichten, als ein Gerät zu kaufen. Es war eine Sache, solche engstirnigen Menschen für einen Teil meines Lebens akzeptieren zu müssen, und ich habe bei Ebay etwas EATON-Schrott in Unternehmensqualität bestellt und es genannt, aber ich habe in diesem Moment beschlossen, dass ich für meinen eigenen Serverraum ein komplett Open Source Arduino bauen werde basiertes Gerät, das viel besser sein wird als das, was ich gerade bestellt habe.

Dieses Projekt hat den Codenamen SilverLight, frag mich nicht, woher ich diese Namen habe:) Ich habe mir nur die glänzende halbe Acrylbox angesehen und entschieden, dass dieser Name nichts mit dem Mikrohufprodukt zu tun hat, worüber ich danach herausgefunden habe.

Schritt 1: Hardware-Design

Hardware-Design
Hardware-Design
Hardware-Design
Hardware-Design
Hardware-Design
Hardware-Design

Übersicht über kommerzielle Hardware.

Okay, ich fange noch nicht einmal damit an, wessen großartige Idee es war, einen Umgebungsmonitor in eine USV einzubauen, aber offensichtlich gibt es einen Markt dafür, also sehen wir uns an, was diese tun können:

KOMPATIBILITÄT des Umgebungsüberwachungsgeräts

Das 10/100 Mb Netzwerk-MS, PXGUPS, PXGPDP und PXGMS.

Die 10/100 Mb ConnectUPS-X, ConnectUPS-BD und ConnectUPS-E mit FW V3.01 und höher. ABMESSUNGEN (LXBXH)

2,26 x 1,48 x 1,15 (Zoll) 57,6 x 37,6 x 29,3 (mm) GEWICHT

1,19 oz (34 g)

Das sind sehr nützliche Informationen, nicht wahr? Keine Sorge, denn sie können nicht viel tun. Um überhaupt loslegen zu können, benötigt Ihre USV hierfür eine weitere teure Add-on-Karte, die diese mit dem separat gekauften Umweltsensor verbindet, normalerweise mit einem Standard-CAT5-Kabel (versuchen Sie nicht einmal, etwas an diesen Port anzuschließen, da es keinen Standard gibt.) darüber). Sie behaupten, das Gerät brauche 10 Minuten zum "Aufwärmen", was in Wirklichkeit Stunden waren, und sobald es voila war, wurde es in ihrer langsam aktualisierten Java-Schnittstelle angezeigt und wir haben Temperatur und Luftfeuchtigkeit. Das Einrichten von auf Warnungen basierenden Bedingungen war von diesem Punkt an einfach, aber wen kümmert es, lassen Sie uns etwas Besseres bauen.

Dieses Projekt ist eine Verbindung mehrerer meiner Projekte: Natalia Wetterstation, Shadow of Phoenix. Die Box kann die folgenden Umgebungsbedingungen überwachen:

  • Temperatur/Feuchtigkeit/Hitzeindex
  • LPG-, Rauch-, Alkohol-, Propan-, Wasserstoff-, Methan- und Kohlenmonoxidkonzentrationen in der Luft (MQ2)
  • Sonnenempfindlichkeit (ist das Licht im Serverraum an?)
  • Bewegungs-PIR-Sensor (Sie können das Licht dank des Bewegungssensors sogar ab sofort automatisch ein- / ausschalten, wenn jemand den Raum betritt)

Alle diese Daten werden schön auf einem LCD-Bildschirm angezeigt und gleichzeitig an einen Computer (Orange PI Zero) zur weiteren Verarbeitung und Warnung weitergeleitet. Obwohl es möglich wäre, digitale Sensoren wie das DHT und den digitalen Pin des MQ2 direkt an den OrangePI anzuschließen, bevorzuge ich immer dedizierte Mikros für diese Aufgaben und wenn Sie auch das LCD aktualisieren und andere Low-Level-Vorgänge durchführen müssen Sachen der Arduino ist einfach unschlagbar und kann viele Jahre lang zuverlässig nonstop laufen (tatsächlich ist bei mir noch kein einziger Arduino, der 24/7 läuft, versagt). Der OrangePI mit seinen Mängeln (seien wir ehrlich, es ist ein 10-Dollar-Computer) wie unbrauchbar für hohe Arbeitsbelastung, keine bsd-Unterstützung, integriertes WLAN ist aufgebläht usw.

Dies ist ein sehr einfaches Projekt, das die folgenden Komponenten erfordert:

  • Arduino PRO Micro
  • LCD-Bildschirm 2x16 Zeichen RGB
  • AC-DC-Trennschalter-Leistungsmodul 220V bis 5V HLK-5M05 (diese sind sehr gut für Arduino / ESP-Projekte), dies ist die 5V / 5W-Version!
  • 2x300 Ohm Widerstände
  • 2x LEDs (rot/grün)
  • PIR-Bewegungssensor
  • MQ2-Sensor
  • DHT22
  • LDR
  • 2X10Kohm Widerstand
  • Summer
  • Orange PI Null
  • Mini-USB-Datenkabel

Ich habe mir nicht einmal die Mühe gemacht, eine Platine für dieses nur normale Steckbrett herzustellen, da die Komponenten einfach mit dem Arduino verbunden werden können (siehe Bilder im Anhang):

-DHT22 erfordert einen 10K-Pullup auf VCC (digital)

-LDR erfordert einen 10K-Pulldown auf GND (analog)

-MQ2 kann direkt an jeden analogen Pin (analog) angeschlossen werden < bevorzuge die Verwendung von analog, denn warum nicht, wenn wir eine MCU mit analogen Pins haben, wo wir den genauen Wert erhalten können, anstatt einen Pot auf der Rückseite des Geräts einzustellen, um HIGH zu erhalten oder LOW raus, aufgrund der Verklebung in meinem Design, die sowieso unzugänglich ist. Überprüfen Sie:

-PIR kann direkt an jeden Pin angeschlossen werden (digital)

-LCD: kann mit 4 Pins angesteuert werden, kann an jeden Pin angeschlossen werden (digital) benötigt +2 RS/E (digital)

-Summer: kann direkt an beliebige Arduino-Pins angeschlossen werden (digital)

Die von mir verwendete Pinbelegung ist im Code zu sehen. Danach alles miteinander zu verbinden ist ziemlich einfach, Sie können sie auch einzeln machen. Stellen Sie sicher, dass 1 Sensor einwandfrei funktioniert, und fahren Sie dann mit dem nächsten fort /gnd für einen Sensor, dies hat bisher noch nie eines meiner Geräte getötet). Was ich hier anmerken würde, dass für mich zu viele VCC und GNDs gestapelt waren, ich konnte sie nicht durch eine Klemmleiste drücken, also lötete ich sie alle.

Auch über die DHTs aus meinen anderen Projekten nicht vergessen: Wenn Sie die DHT-Bibliothek in Ihren Code einfügen und der DHT-Sensor nicht angeschlossen ist oder ein falsches DHT angeschlossen ist (zB 11 in Code definiert, verwenden Sie 22), kann dies zum Programm führen am Anfang für immer hängen.

Über die PIR-Bewegungserkennungssensoren, wie Sie auf meinem Bild sehen können, gibt es Tonnen von gefälschten Fälschungen davon, tatsächlich würde ich es sogar schwer finden, ein echtes bei Ebay zu kaufen. Die Fälschungen funktionieren auch auf Dauer genauso gut, aber sie haben ihre Schaltung gespiegelt, was dazu führt, dass die + und - Pins vertauscht sind, auch diese sind leicht zu erkennen: kommen mit blauer Platine nicht dem üblichen Grün, fehlen die Beschriftungen für die Potmeter. Ich hatte das Glück, eine echte in meiner Box zu finden, sonst würde eine Änderung der Position die 2 LEDs für mich abdecken. Ich habe festgestellt, dass beide Potis auf halbem Weg für mich funktionieren. Dadurch haben Sie auch bei Bewegung eine ausreichende Reichweite, um das digitale Bein etwa eine Minute lang in der HIGH-Position zu halten, sodass Sie dies nicht im Code nachholen müssen. Bei den Fälschungen kann man leicht feststellen, auf welcher Seite die - und + schauen Sie sich einfach die entsprechenden Beine für die Elektrolytkappen an, die mit den Stiften verbunden sind.

Zum Schneiden der Box habe ich einen Diamant-Dremel-Kopf (der ein Overkill war, aber großartig funktionierte) und eine normale Bohrmaschine verwendet. Diese Anschlussdosen sind einfach zu handhaben und obwohl ich nicht gerne klebe, hatte ich beim Bauen keine Schrauben und Bolzen zur Hand, also habe ich den Preis, Dinge zusammenzukleben (die man später auch leicht wieder erhitzen und auseinandernehmen kann, indem man die gleiche Klebepistole ohne Füllung darin).

Schritt 2: Softwaredesign

Software-Design
Software-Design
Software-Design
Software-Design

Der Arduino-Code ist ebenfalls einfach, er zieht im Grunde alle Sensormesswerte zu Beginn jeder Schleife. Schaltet die LEDs bei Bewegung oder Rauch ein und spielt bei Rauch auch einen Alarmton auf dem Summer ab (dies ist der einzige Sperrcode, daher habe ich es kurz gemacht), zeigt dann die Daten auf dem LCD an und sendet sie schließlich über den PC mit einer Haltezeit von 10 Sekunden, um den Port nicht zu fluten.

Dieses Projekt verwendet eine Einweg-Kommunikation von Arduino->OrangePI, es sind keine Befehle jeglicher Art implementiert. Obwohl dies durchaus möglich wäre, wie ich es in einem meiner anderen Projekte getan habe, wo der Computer LCD_PRINT1 oder LCD_PRINT2 senden kann, um eine Zeile des LCD-Bildschirms mit seiner eigenen Nachricht zu überschreiben (zB: IP-Adresse, Betriebszeit, Systemdatum, CPU-Auslastung) ist die Bildschirmfläche für die Anzeige von Daten von 3 Sensoren so klein, dass ich mich nicht darum gekümmert habe. Die SOL- und SMK-Werte können beide bis zu 4 Stellen 0000-1023 haben und nehmen bereits 8 wertvolle Zeichen auf dem Bildschirm ein.

Beim LCD kann man einen kleinen Trick im Code bemerken, dass nach jedem Messwert ein Aufdruck von Leerzeichen (" ") aufgebracht wird, dann bewege ich den Cursor auf feste Positionen, um die neuen Icons und Daten zu platzieren. Diese sind da, weil das LCD nicht so schlau ist, um Zahlen zu verstehen, es zeichnet nur, was es bekommt, und wenn Sie beispielsweise einen Sonnenwert von 525 hatten, der plötzlich auf 3 gesunken ist, wird 325 angezeigt, und der alte Müll bleibt auf dem Bildschirm zurück dort.

Ein C-Steuercode, der auf dem OrangePI ausgeführt wird und die Umweltdaten protokolliert und bei Bedarf E-Mail-Benachrichtigungen sendet.

Auf dem OrangePI läuft Armbian (das zum Zeitpunkt des Schreibens auf Debian Stretch basiert). Ich werde dies in den Softwareteil aufnehmen, da es ein HW-Problem war, das es gelöst hat. Hier ist die durchschnittliche Leistungsaufnahme des Geräts:

0,17 A - nur Arduino + Sensoren

0,5-0,62 A - OrangePI-Booten

0,31 A - Orange PI im Leerlauf

0,29 A - Orange PI ausgeschaltet (kann es nicht wirklich herunterfahren, es hat kein ACPI oder ähnliches)

0,60 A - Stresstest 100 % CPU-Auslastung auf 4 Kernen

Ich hatte diesen OrangePI schon lange in einer Box. Mit dem alten Kernel hat das Gerät so viel Strom verbraucht (wie das Messgerät sagte, es war ein Spitzenwert von etwa 0,63 A), was das Netzteil wahrscheinlich nicht liefern konnte, dass es einfach nicht bootete, der Bootvorgang stecken blieb und ich die 2 Ethernet-LEDs aufleuchten ließ ständig und nichts tun.

Das ist ärgerlich, da der HLK-5M05 behauptet, dass er 5 W bei 5 V leisten kann, wodurch er 1 Ampere liefern kann, aber bei diesen Geräten, die aus China kommen, weiß man einfach nie, dass der Spitzenwert von 0,63 A viel niedriger war als der Nennwert Wert. Also habe ich einfache Neustarttests ausgeführt, von 10 Neustarts würde der OrangePI nur zweimal erfolgreich hochfahren, was mich fast dazu gebracht hätte, ihn aus dem Projekt zu werfen, da ich kein fehlerhaftes inkonsistentes Verhalten in Schaltkreisen mag. Also fing ich an herum zu googeln, vielleicht gibt es eine Möglichkeit, den Stromverbrauch beim Booten von Software zu senken (da es damals nur ein Problem war) und fand einen Artikel über die Optimierung der script.bin, aber es war für den Orange PI PC und die Dateien fehlten im Speicher, also habe ich als letzten Ausweg das magische "Apt-Upgrade" durchgeführt, um die Firmware, den Kernel und alles andere zu aktualisieren, in der Hoffnung, dass es weniger verbraucht und das Gerät booten kann und:

Linux Silverlight 4.14.18-sunxi #24 SMP Fr 9. Feb 16:24:32 CET 2018 armv7l GNU/Linux

Linux Silverlight 4.19.62-sunxi #5.92 SMP Mi 31. Juli 22:07:23 CEST 2019 armv7l GNU/Linux

Es funktionierte! Hardware auf ein Softwareproblem zu werfen ist normalerweise der faule Java-Entwickler, aber in diesem Fall haben wir ein Hardwareproblem mit Software gelöst, was für ein großer Erfolg. Ich habe 20 weitere Neustarttests durchgeführt, bei denen das Gerät in jedem einzelnen Fall gestartet wurde. Ich würde immer noch anmerken, dass der Stromstoß beim Einschalten des Opi (Anschließen / Trennen) so groß ist, dass das Arduino jederzeit zurückgesetzt wird (ein einfacher Neustart flackert nur das LCD, verursacht jedoch keine weiteren Probleme), aber dieses Problem bleibt bestehen versteckt, da die 2 zusammen gebootet werden.

Ich habe mir auch die Kernelmodule angeschaut:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils TTM sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer snd sun8i_ths sound cpufreq_dt uio_pdrv_genirq uio thermal_sys pwrseq_simple

Was brauchen wir wirklich von diesen? Ok, die pwr und thermal könnten nützlich sein, aber Sound, serieller Port, WLAN (hw bereits defekt) wir brauchen nicht alle diese können auf die schwarze Liste gesetzt werden. Ich werde später auch einen benutzerdefinierten Kernel erstellen, der nur die notwendigen Module enthält.

Was wir brauchen und standardmäßig nicht geladen ist, ist das CDC ACM, um mit dem Arduino zu kommunizieren, aktivieren Sie es mit:

echo "cdc-acm" >> /etc/modules

Danach können Sie die Verbindung bereits testen mit:

Bildschirm /dev/ttyACM0 9600

Sie sollten sehen, dass alle 10 Sekunden die Statusdaten gesendet werden.

Warnungen und Überwachung

Bei Warnungen habe ich nur system()-Aufrufe in den C-Steuerungscode eingefügt, der die Daten von der Serie empfängt, sodass keine externen Tools erforderlich sind. Einige Beispielwarnungen:

- Temperatur geht über 30 C

- Luftfeuchtigkeit geht über 70 % (nicht gesund für die Server)

- Bewegung im Raum erkannt (dies kann ärgerlich sein, wenn Sie in Ihrem Serverraum weitergehen)

- Rauch oder Gas erkannt (Alarme über 100 können ernst genommen werden, ich habe mit diesem Sensor herumgespielt und er schaltet sich für viele Dinge ein, zum Beispiel Rauchentwicklung neben dem Sensor mit Lötkolben ergab etwas über 50 beim Rauchen einer Zigarette als nächstes o es stieg auf bis zu 500 an, es erkannte sogar Gas von normalen Deos aus der Ferne)

Für die Aufbewahrung historischer Daten habe ich mir nicht die Mühe gemacht, ein Tool zu entwickeln, denn warum sollte man das Rad neu erfinden, wenn es hervorragende Monitoring-Frameworks gibt. Ich zeige ein Beispiel, wie man dies in meinen persönlichen Favoriten Zabbix integrieren kann:

apt-get install zabbix-agent

Am Ende von: /etc/zabbix/zabbix_agentd.conf. hinzufügen

UserParameter=silverlight.hum, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $1 }'

UserParameter=silverlight.tmp, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $2 }' UserParameter=silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $4 }' UserParameter=silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $5 }' UserParameter=silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $6 }'

Das Ausführen von zabbix_agentd -p sollte jetzt die richtigen Werte zurückgeben:

silberlicht.hum [t|41]

silverlight.tmp [t|23] silverlight.sol [t|144] silverlight.mot [t|0] silverlight.smk [t|19]

Der Hitzeindex, ich sammle ihn, sehe aber keinen praktischen Nutzen davon, also wird er nur protokolliert. Im C-Steuercode habe ich 2 Protokollierungsfunktionen implementiert, die erste protokolliert alle Daten in einem benutzerfreundlichen Format:

[SILVERLIGHT] Daten empfangen am 2019-09-10 23:36:08 => Luftfeuchtigkeit: 44, Temp: 22, Hi: 25, Solar: 0, Bewegung: 0, Rauch: 21

[SILVERLIGHT] Daten empfangen am 2019-09-10 23:36:18 => Luftfeuchtigkeit: 44, Temp: 22, Hi: 25, Solar: 0, Bewegung: 0, Rauch: 21 [SILVERLIGHT] Daten empfangen am 2019-09 -10 23:36:29 => Luftfeuchtigkeit: 44, Temp: 22, Hi: 25, Solar: 0, Bewegung: 0, Rauch: 22 [SILBERLICHT] Daten empfangen am 2019-09-10 23:36:39 => Luftfeuchtigkeit: 44, Temp: 22, Hi: 25, Solar: 0, Bewegung: 0, Rauch: 21

Der zweite:

void logger2(char *text) {

DATEI *f = fopen("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) { printf("Fehler beim Öffnen der Speicherprotokolldatei!\n"); Rückkehr; } fprintf(f, "%s", Text); fclose(f); Rückkehr; }

Dadurch wird ein 1-Liner-Protokoll im Speicher abgelegt (beseitigt unnötige rw-Operationen auf der SD-Karte), das beim nächsten Mal immer überschrieben wird. Dieses Protokoll enthält nur die 6 Datenspalten und keinen Zeitstempel, es ist für Zabbix leicht lesbar.

Als letzten Bonus: Wie Sie den Arduino direkt vom OrangePI aus programmieren, damit Sie nicht jedes Mal zum Gerät gehen und Ihren Laptop anschließen müssen.

Es gibt 2 Möglichkeiten:

-Einfacher Weg: Installieren Sie die vollständige Arduino-IDE und Bibliotheken verwenden Sie einen Remote-Desktop wie X11 mit Weiterleitung, Xrdp, Xvnc, Nxserver usw

-Auf die harte Tour: Installieren Sie die Arduino IDE und verwenden Sie die Befehlszeile

Wir werden es diesmal auf die harte Tour machen, da ich X11 nicht gerne auf Servern installiere. Dazu benötigen Sie 6 Komponenten:

1, Arduino IDE für ARM 32 Bit ->

2, Python seriell -> apt-get install python-serial

3, Arduino Makefile-Projekt -> Git-Klon

4, DHT-Bibliothek

5, Sparkfun-Board-Definitionen

6, SilverLight.ino, Hauptcode

Um es einfacher zu machen, habe ich die benötigten Dateien für die letzten 4 Punkte (sketchbook.tgz) gebündelt, sodass Sie nur die ersten 2 benötigen

Zuerst erstellen Sie am besten einen regulären Benutzer, der rw-Zugriff auf den USB-Port hat:

adduser silber

usermod -a -G dialout silber

SCP die sketchbook.tgz auf das Gerät im Home-Verzeichnis des neu erstellten Benutzers und entpacke sie direkt dort:

cd /home/silber

tar xvzf sketchbook.tgz

Um ein wenig zu verstehen, was unter der Haube vor sich geht, wenn Sie die grafische IDE verwenden:

Der Build-Workflow zum Erstellen einer Arduino-Skizze bei Verwendung der Arduino-IDE wird auf der Arduino-Website https://www.arduino.cc/en/Hacking/BuildProcess und ausführlicher hier beschrieben: https://www.arduino.cc/ de/Hacking/BuildProcess

Im Allgemeinen ist der Standard-Bauprozess von Arduino:

Kombinieren Sie.ino-Dateien in die Hauptskizzendatei. Transformation der Hauptskizzendatei: Fügen Sie die #include-Anweisung hinzu; Erstellen Sie Funktionsdeklarationen (Prototypen) aller Funktionen in der Hauptskizzendatei; Hängen Sie den Inhalt der Datei main.cxx des Ziels an die Hauptskizzendatei an. Kompilieren Sie den Code in Objektdateien. Verknüpfen Sie die Objektdateien, um eine.hex-Datei zu erstellen, die zum Hochladen auf den Arduino bereit ist.

Es gibt einige geringfügige Unterschiede zwischen dem Arduino-Standard-Build-Prozess und dem Build-Prozess mit Arduino-Makefile:

Es wird nur eine.ino-Datei unterstützt. Funktionsdeklarationen werden nicht automatisch in der.ino-Datei erstellt. Der Benutzer muss dafür sorgen, dass die korrekten Funktionsdeklarationen erstellt werden.

Das Herzstück des Build-Prozesses ist das Makefile. Keine Sorge, alles ist für Sie vorbereitet, bei nicht standardmäßigen Boards wie der SparkFun-Serie ist es etwas komplizierter, auf diese Weise zu kompilieren.

BOARD_TAG = promikro

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT = /dev/ttyACM0 USER_LIB_PATH = /home/silver/sketchbook/libraries ARDUINO_DIR = /opt/arduino-1.8.9 include /home/silver/sketchbook/Arduino-Make

Und alles, was Sie eingeben müssen, ist ein: make upload (das zuerst die.hex-Dateien erstellt und dann avrdude verwendet, um sie hochzuladen), es endet mit etwas wie:

mkdir -p build-promicro-16MHzatmega32U4

make reset make[1]: Verzeichnis '/home/silver/sketchbook' betreten /home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina /dev/ttyACM0 make[1]: Verzeichnis verlassen ' /home/silver/sketchbook' make do_upload make[1]: Verzeichnis '/home/silver/sketchbook' eingeben /opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P /dev/ttyACM0 / -U flash:w:build-promicro-16MHzatmega32U4/sketchbook. hex:i Verbindung zum Programmierer:. Programmierer gefunden: Id = "CATERIN"; Typ = S Softwareversion = 1.0; Keine Hardwareversion angegeben. Der Programmierer unterstützt das automatische Inkrementieren der Adresse. Programmierer unterstützt gepufferten Speicherzugriff mit Puffergröße=128 Bytes. Programmer unterstützt folgende Geräte: Gerätecode: 0x44 avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4) avrdude: Eingabedatei "build-promicro-16MHzatmega32U4/sketchbook.hex" lesen avrdude: Flash schreiben (11580 Byte): avrdude: 11580 Byte Flash geschrieben avrdude: Safemode: Sicherungen OK (E:CB, H:D8, L:FF) avrdude fertig. Dankeschön.

Nun, danke avrdude, und jetzt ist unser Arduino zurückgesetzt und mit dem neuen Code programmiert, den Sie einfach mit vi oder Ihrem bevorzugten Editor lokal bearbeiten können, keine IDEs erforderlich. Ich möchte darauf hinweisen, dass Sie beim Hochladen sowohl das C-Steuerungsprogramm, den Bildschirm oder alles andere schließen sollten, das auf das Arduino zugreift, da sonst der Port nach dem Zurücksetzen als /dev/ttyACM1 zurückgegeben wird.

Schritt 3: Abschluss- und Todo-Liste

Abschluss- und Todo-Liste
Abschluss- und Todo-Liste
Abschluss- und Todo-Liste
Abschluss- und Todo-Liste
Abschluss- und Todo-Liste
Abschluss- und Todo-Liste

Obwohl ich diese Umweltsensorbox für Serverräume entwickelt habe, können Sie sie für Chemie- / Elektroniklabore, Lagerhallen, normale Räume und alles andere verwenden. Und ja, da es TCP/IP verwendet, ist es ein IoT-Gerät, G, das hätte ich auch in den Titel aufnehmen sollen, um es unternehmerischer zu machen:)

Sie können sowohl die Hard- als auch die Software einfach modifizieren, um auch das Licht im Raum automatisch einschalten zu können. Schauen Sie sich mein anderes Projekt an: Shadow of Phoenix Wie funktioniert das für die Lichtsteuerung? Zeitdauer, wenn es wieder Bewegung gibt, wird ein Timer hochgefahren).

Wenn OrangePI ein Full-Stack-Armbian ausführt, sind die Möglichkeiten grenzenlos. Sie können ein lokales Webinterface erstellen, das von Grund auf in PHP geschrieben wurde, um historische Daten in Diagrammen anzuzeigen. Ist das nicht schon besser, wenn Sie ein komplett Open Source-Gerät haben, das Ihren Serverraum überwacht, auf das Sie stolz sein können, wenn Sie es selbst bauen!

Empfohlen: