Inhaltsverzeichnis:
Video: Arduino 1-wire Generic Client/Slave Device (Sensor) - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Bitte lesen Sie die Einführung und Schritt 2 meiner Anleitung zum Erstellen eines Arduino 1-Wire-Displays (144 Zeichen), um weitere Informationen über die Situation und die verfügbaren Bibliotheken zu erhalten. Wie dort erklärt, verwenden wir die OneWire-Hub-Bibliothek (OneWire-Slave-Geräteemulator) von orgua (Achtung, es gibt noch andere Gabeln), um generische 1-Wire-Geräte (z. B. Sensoren) mit einem Arduino zu bauen.
Schritt 1: Software
Das Wichtigste ist, ein Gerät zu bauen, das auf einfache Weise im Grunde jede Art von Wert zurückgeben kann. Dies bedeutet, dass alle Werte direkt mit Standardsoftware gelesen werden können (keine Konversation oder binäre Manipulation erforderlich). Dafür brauchen wir ein sehr einfaches 1-Wire-Standardgerät, das Floats zurückgeben kann und weithin unterstützt wird. Die einzige mir bekannte Wahl ist das DS18B20 Thermometer (der DS2438 Batteriemonitor ist auch interessant und nützlich, aber ziemlich komplex und daher unter anderen Nachteilen langsam). Die OneWire-Hub-Bibliothek enthält ein Beispiel namens DS18B20_asInterface, das genau das tut, was wir brauchen. Es erstellt eine Reihe von DS18B20, von denen jeder einen Float-Wert darstellt, den wir von unseren Sensoren zurückgeben möchten. Die Einschränkungen sind hier die Auflösung und die Werte müssen im Bereich -55, 0 … 125, 0 liegen. Das lässt sich leicht erreichen – im schlimmsten Fall durch Umskalieren – und ist eigentlich besser als die Werte, die z. B. die DS2438-Werte (1,5 bis 10V). Alternativ kann ein größerer Wertebereich eingestellt werden mit:
setTemperatureRaw(static_cast(Wert * 16.0f));
Das Lesen und Verarbeiten dieser Werte wird jedoch möglicherweise nicht von jeder Software unterstützt, da dies außerhalb der Spezifikationen liegt.
Zu beachten ist, dass die maximale Anzahl der Slaves zunächst auf 8 beschränkt ist, aber in "OneWireHub_config.h" durch Erhöhen von HUB_SLAVE_LIMIT auf bis zu 32 geändert werden kann. Außerdem müssen Sie darauf achten, ONEWIRE_TIME_MSG_HIGH_TIMEOUT bei Bedarf zu übernehmen 1-Draht-Netzwerk (zB x10), wie in Schritt 2 von Arduino 1-Draht-Display (144 Chars) erklärt. Und um die IDE-Version >= 1.8.3 zu verwenden, um den Code zu kompilieren und auf Ihr Arduino hochzuladen.
Hier als Beispiel der Code des Gerätes, das ich vor kurzem gebaut habe. Da ich davon ausgegangen bin, dass Sie nicht die gleiche Kombination von Sensoren verwenden wie ich, werde ich hier nicht weiter auf Details eingehen, den Code überprüfen und Fragen stellen, wenn Sie Hilfe benötigen.
Schritt 2: Hardware
Grundsätzlich kann alles, was Sie an einen Arduino anschließen können, als Sensor Ihrer Wahl verwendet werden. Die einzige Einschränkung besteht darin, dass das Lesen des Sensors so schnell wie möglich erfolgen sollte, um genügend Zeit für die 1-Draht-Kommunikation zu haben (siehe Schritt 2 meiner Anleitung über Arduino 1-Draht-Display (144 Zeichen) in der Reihenfolge um ein Beispiel zu bekommen).
Ein Beispiel für mögliche Hardware könnte eine Wetterstation sein wie z. B.:
https://shop.boxtec.ch/wetter-messer-p-41289.html
Zusätzlich oder stattdessen möchten Sie vielleicht nur das Arduino selbst als Sensor verwenden. Sie können mehr darüber in meinem anweisbaren über die Arduino Lesser Known Features lesen - mögliche Werte sind die Quellenspannung und die Innentemperatur.
Hier als Beispiel ein Bild des Gerätes, das ich vor kurzem gebaut habe. Da ich davon ausgegangen bin, dass Sie nicht die gleiche Kombination von Sensoren verwenden wie ich, werde ich hier nicht weiter auf Details eingehen, den Code überprüfen und Fragen stellen, wenn Sie Hilfe benötigen.
Schritt 3: Testen Sie das Gerät
Verbinden Sie es mit Ihrem Netzwerk und überprüfen Sie Ihre Software auf vorhandene ROM-IDs und die Werte, die sie als Temperatur zurückgeben.
Schritt 4: Anhang: ATtiny85
Einzelne Geräte (Speicherbegrenzung) können auch auf einem ATtiny85 durchgeführt werden. Dies erfordert ein paar Schritte, da wir den ATtiny85 mit Arduino Uno als ISP mit Hilfe der Arduino IDE programmieren:
-
Links
- https://playground.boxtec.ch/doku.php/arduino/att…
- https://sebastian.expert/could-not-find-usbtiny-d…
- https://learn.sparkfun.com/tutorials/tiny-avr-pro…
- https://forum.arduino.cc/index.php?topic=425532.0
- https://forum.arduino.cc/index.php?topic=128963.0
- Arduino-IDE verwenden >=1.8.3
-
Installieren Sie die ATtiny-Option in der IDE
- Datei > Einstellungen > Zusätzliche Boards-Manager-URLs:
- Werkzeuge > Brett: ??? > Vorstandsmanager…
- suche nach: "winzig" und installiere
-
ISP-Skizze auf ein Uno hochladen
Datei > Beispiele > ArduinoISP > ArduinoISP
-
Stecken Sie ATtiny85 in die Programmierbuchse (Nullkraft) und verdrahten Sie es:
- Arduino Pin MOSI D11 auf ATtiny Pin 5
- Arduino Pin MISO D12 auf ATtiny Pin 6
- Arduino Pin SCK D13 auf ATtiny Pin 7
- Arduino Pin Reset D10 auf ATtiny Pin 1
- Arduino Pin GND zu ATtiny Pin 4
- Arduino Pin VCC zu ATtiny Pin 8
- (> = 10uF Kappe auf Arduino Uno RESET-Pin möglicherweise erforderlich)
-
wählen Sie ATtiny85 (siehe Bild):
- Tafel: "ATtiny25/45/85"
- Timer 1 Uhr: "CPU"
- B. O. D.: "B. O. D. deaktiviert"
- LTO (nur 1.6.11 +): "Deaktiviert"
- Chip: "ATtiny85"
- Takt: "8 MHz (intern)" (ATtiny85 und ATtiny84 kompatibel)
- Takt: "16 MHz (PLL)" (alternative Einstellung nur für ATtiny85)
- Hafen: ???
-
Programmierer auswählen:
Tools > Programmierer: "Arduino als ISP" (NICHT "ArduinoISP" !)
-
Sicherungseinstellungen (Uhr usw.) einstellen:
Tools > Bootloader brennen
- Laden Sie diesen Code hoch (Programmiererfehler-LED muss aus sein, sonst setzen Sie ihn zurück)
-
ATtinyX5-Pin-Layout (ATtiny85):
- Pin 1: PB5 (RST)
- Pin 2: PB3 (A3) - optional über 220 Ohm an 1<-TX. angeschlossen
- Pin 3: PB4 (A2) - verbunden mit 1-Draht DATA
- Pin 4: GND - verbunden mit GND
- Pin 5: PB0 (PWM) - verbunden mit Sensor I2C SDA
- Pin 6: PB1 (PWM) - verbunden mit LED mit 4.7k auf GND
- Pin 7: PB2 (A1) - verbunden mit Sensor I2C SCL
- Pin 8: VCC - verbunden mit 5V
Die Arbeit mit ATTiny85 erfordert etwas mehr Arbeit, da Sie zusätzliche Bibliotheken für die I2C-Kommunikation (adafruit/TinyWireM) und die serielle Ausgabe (TinyDebugSerial) benötigen. Da der Speicher sehr begrenzt ist, möchten Sie vielleicht viel mit #define arbeiten, z. B. um das serielle Debugging zu entfernen. Im Beispiel sieht man das alles zusammengewürfelt.
Zum Testen ist der erste Schritt zu prüfen, ob die LED mit der richtigen Frequenz von 0,5 Hz blinkt. Verbinden Sie es dann mit dem 1wire-Bus und suchen Sie nach dem neuen Gerät.
Empfohlen:
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: 9 Schritte
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: Este proyecto consiste en a alarma básica que Detecta presencia, activa una sirena de 108dB y visa al usuario mediante un SMS (opcional). Permite también el control remoto básico por parte del usuario a través de SMS (encendido, apagado, reinicio
So verwenden Sie einen PIR-Sensor und ein Summermodul - Visuino-Tutorial: 6 Schritte
So verwenden Sie einen PIR-Sensor und ein Summermodul - Visuino-Tutorial: In diesem Tutorial lernen wir, wie Sie einen PIR-Sensor und ein Summermodul verwenden, um jedes Mal, wenn ein PIR-Sensor eine Bewegung erkennt, ein Geräusch zu erzeugen. Sehen Sie sich ein Demonstrationsvideo an
Beide Modi ESP8266 (AP- und Client-Modus): 3 Schritte
Sowohl ESP8266-Modus (AP- als auch Client-Modus): Im vorherigen Artikel habe ich ein Tutorial zum Einstellen des Modus auf ESP8266 erstellt, das als Access Point oder WLAN-Station und als WLAN-Client dient. In diesem Artikel zeige ich Ihnen, wie um den ESP8266-Modus auf beide Modi einzustellen. Das heißt, in diesem Modus kann ESP8266
IOT123 - SENSORNABEN ZUSAMMENSETZEN: ICOS10 GENERIC SHELL (ANSCHLUSSKABEL) Montage: 4 Schritte
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) Montage: UPDATE Wir empfehlen die Verwendung der IDC-Schaltung (nicht HOOKUP) für mehr Zuverlässigkeit. Diese HOOKUP-Baugruppe ist für nicht geschäftskritischen Betrieb geeignet, wenn Sie Zeit haben, den Stromkreis zu überprüfen. Ich fand einige Drähte (obere Schicht der Paneele: rot/gelb) nicht lang genug
ESP8266/ESP-12 Arduino Powered SmartThings DS18B20 Temp. Sensor: 4 Schritte (mit Bildern)
ESP8266/ESP-12 Arduino Powered SmartThings DS18B20 Temp. Sensor: Wir alle möchten gerne wissen, wie die aktuelle Raumtemperatur ist und manchmal auch die Temperatur in einem anderen Raum oder vielleicht sogar in Ihrem Ferienhaus am anderen Ende der Welt. Vielleicht möchten Sie die Temperatur im Haus Ihres Haustiers Eidechse überwachen