Wie kann ich über WLAN eine Verbindung zu einem Arduino herstellen?

27

Ich arbeite am Bau einer solarbetriebenen Wetterstation auf Arduino-Basis. Die Wetterstation besteht aus einem Temperatursensor und einem Fotowiderstand, und ich plane, in Zukunft ein Anemometer hinzuzufügen. Ich möchte die Wetterstation mit meinem drahtlosen Netzwerk verbinden, damit ich die Sensordaten von meinem Computer abrufen kann, ohne Kabel verlegen zu müssen (ich wohne in einem Mietobjekt).

Was sind die verschiedenen Optionen für die Verbindung des Arduino mit WiFi? Ich habe mir Ethernet-Shields, WiFi-Shields und etwas namens Xbee angesehen, aber ich verstehe nicht, wofür die beiden gedacht sind.

Ich habe auch einen drahtlosen Heimrouter, den ich verwenden könnte. Ist es möglich, meinen Arduino Uno über das Ethernet oder den USB-Port des Routers mit dem Router zu verbinden und dann Daten von meinem Heimnetzwerk zu empfangen und Befehle an den Arduino zu senden? Wenn ja, wie würde dies erreicht werden?

Ich habe derzeit einen nackten Arduino Uno.

jlbnjmn
quelle
4
Haben Sie eine Ethernet-Abschirmung?
jfpoilpret
3
Sie müssen Ihre Frage klären: Was bedeutet "damit kommunizieren"? Skizzen hochladen? Befehle an eine Skizze senden? Daten aus einer Skizze abrufen?
jfpoilpret
Ich habe versucht, der Frage Details und Zusammenhänge hinzuzufügen. Ich habe derzeit keine Schilde.
Jlbnjmn
Ich glaube nicht, dass eine Revision der offiziellen Uno einen Ethernet-Port hat. Ich nehme an, Sie müssen ein Arduino-Ethernet (das ähnlich ist) oder vielleicht einen inoffiziellen Klon haben?
Peter Bloomfield
Ich habe die Frage bearbeitet, um den Ethernet-Port des WLAN-Routers anzugeben. Die Frage ist also: [Arduino +? + (WLAN-Router ODER?) = Arduino sendet Daten über mein WLAN].
Jlbnjmn

Antworten:

24

Sie haben einige Möglichkeiten, Ihren Arduino mit dem Netzwerk / Internet zu verbinden.

Ethernet

So etwas wie das Arduino Ethernet Shield ermöglicht es Ihnen, ein Ethernet-Kabel von der Wand oder dem Router in Ihr Arduino einzustecken. Die Hauptbeschränkung ist natürlich, dass Ihr Gerät jetzt über das Kabel angeschlossen ist. Für den Außenbereich würde ich das nicht tun.

W-lan

Mit dem Arduino WiFi Shield können Sie eine Verbindung zu Ihrem Heim-WiFi-Netzwerk herstellen. Dies ist genau wie beim Ethernet, nur dass es jetzt drahtlos ist.

Der ESP8266 ist eine billigere Alternative, die mit der Standardfirmware die gleiche Funktionalität wie der WiFi-Schutz hat. Achten Sie darauf, dass Sie es mit 3,3 V und nicht mit 5 V wie den Rest des Arduino versorgen. Es werden auch 3,3-V-Logikpegel verwendet. Verbinden Sie daher den TX-Pin des Arduino nicht direkt mit dem RX-Pin des ESP. Verwenden Sie einen Spannungsteiler.

RF

Wenn Sie viele Sensoren oder andere Geräte haben, die miteinander kommunizieren müssen, ist in der Regel ein HF-Modul die beste Option. Sie haben hier viele Möglichkeiten, darunter auch XBee. Im Sparkfun XBee Buying Guide finden Sie alle verfügbaren Optionen. Und das ist nur XBee. Es gibt viele andere drahtlose Optionen zu allen möglichen Preisen.

Die Sache mit RF ist, dass keiner von diesen eine Verbindung zum Internet herstellen wird. Sie müssen alle Ihre Geräte miteinander oder mit einer Basisstation kommunizieren, die dann entweder über ein WLAN- oder ein Ethernet-Modul mit dem Netzwerk verbunden wird.

Wireless Router Serial

Je nachdem, welche Art von WLAN-Router Sie verwenden, kann der Arduino direkt mit ihm kommunizieren und dies als Verbindung zu einem Netzwerk verwenden.

Sachleen
quelle
1
Für die "RF" -Kommunikation können Sie auch die beliebten nRF24L01 + -Module verwenden. Hierfür gibt es einige gute Bibliotheken. Das Problem mit der RF-Verbindung ist, dass Sie einen anderen Arduino oder Raspberry Pi usw. als "Empfänger" ausführen müssen, der dann mit Ihrem Computer verbunden ist, auf dem Sie die Daten speichern / anzeigen / analysieren möchten. Für Wifi gibt es jetzt auch CC3000 Shields adafruit.com/products/1534
Mike WP
Bei der Suche nach den von Ihnen angebotenen Optionen bin ich auf das Yun gestoßen. Wäre das eine einfachere Option? Vielen Dank.
jlbnjmn
Vielleicht. Ich habe es nie benutzt. Die Schilde sind nicht schwer zu verbinden und möglicherweise billiger.
Sachleen
4

Heirate OpenWrt und deinen Arduino

Besorgen Sie sich einen kleinen OpenWrt-fähigen Router wie "TP-Link TL-WR703N", flashen Sie ihn mit der aktuellen stabilen Version von OpenWrt und verbinden Sie Ihren Arduino mit dem USB-Port des Routers.

Diese Lösung ist die Hälfte oder weniger der Kosten für WiFi-Abschirmungen und hat weitaus mehr Leistung.

... und billiger als ein Jahr.

Der mit Arduino verbundene Smart Home Automation-Webserver auf dem OpenWRT-Router WR703N im Vergleich zu Raspberry Pi und Ubuntu ist möglicherweise ein Ausgangspunkt, um dies zu lesen, und Ihre Lieblingssuchmaschine wird noch viele weitere Links zum Heiraten von WR703N und Arduinos finden ...

(!) Siehe auch https://arduino.stackexchange.com/a/1754/653 ....

Weg
quelle
4

ESP8266 ist ein günstiges 5-Dollar-WLAN-Modul mit UART- und SPI-Konnektivität. Dies kann nahtlos in Arduino integriert werden, entweder über die Standardfirmware mithilfe von AT-Befehlen oder durch Schreiben einer benutzerdefinierten Firmware mithilfe des bereitgestellten SDK und der verfügbaren GIPO. Weitere Informationen finden Sie unter http://www.esp8266.com/

Suneesh
quelle
3

Ich arbeite jetzt seit ein paar Monaten mit xbee am Arduino und Himbeer-Pi. Obwohl es Probleme und Macken hat, ist es ein großartiges Werkzeug in der Kommunikationskette. Es ist nicht perfekt, aber angesichts der Netzseite reicht es für mich weiter als mein WLAN und kann sogar zuverlässiger sein (mein Himbeer-Pi mit WLAN fällt gelegentlich aus, aber das verbundene xbee funktioniert weiterhin im Hintergrund.

Speziell in meinem Fall ermöglicht es eine serielle Verbindung zwischen meinen Geräten (bestehend aus mehreren Arduinos, einem Himbeer-Pi (Koordinator) und meinem Mac (hauptsächlich zum Überwachen, aber auch gelegentlich zum Einspeisen serieller Daten). In diesem Fall ist es perfekt. Es erlaubt keinen Internetzugang oder Zugriff über das xbee-Framework hinaus, aber das passt perfekt zu mir, da die Implementierung so einfach wie Serial.print und Serial.read ist und kein Ethernet-Overhead entsteht.

Madivad
quelle
2

Ich verwende Spark Core , eine sehr einfach zu bedienende Arduino-Programmierplattform. Diese Plattform basiert auf dem Grundsatz, dass WiFi einfach zu bedienen und kostengünstig sein sollte. Kann den Spark Core sogar von überall und jederzeit programmieren.

Aaron Klap
quelle
Wie verhält es sich zu XBee in Bezug auf: Preis (einschließlich Arduino-Verbindungsmaterial wie ein Schild), Entfernungsbereich, Programmierung (auf Arduino)?
jfpoilpret
2

Sie könnten ein Arduino Yun ausprobieren, es ist wie ein Uno, aber es hat ein WiFi direkt auf der Platine.

In der "Anleitung zum Arduino Yún" mit dem Titel "Konfigurieren des integrierten WLAN" wird beschrieben, wie Sie das WLAN konfigurieren.

Johan
quelle
1
Hallo, könntest du deine Antwort mit ein paar weiteren Informationen bearbeiten? OP kennt das Yun bereits, daher wäre Ihre Antwort nützlicher, wenn Sie beispielsweise erfahren würden, wie man den WiFi-Chip darauf verwendet.
Sachleen
1

Was Sie wollen, ist ziemlich einfach zu tun, und der Code existiert bereits. Aber so wie ich es mir vorstelle, werden Sie den Sensor Arduino nicht mit Ihrem WLAN verbinden. Stattdessen verwenden Sie ein anderes Arduino als Gateway:

Sensor Arduino: Befindet sich außerhalb, verbunden mit Temperatursensor, Windgeschwindigkeit, Regenmesser?

Gateway Arduino: Befindet sich im Inneren mit Wiznet 5001-Ethernet-Abschirmung

Der Sensor Arduino und das Gateway Arduino kommunizieren über einen SEHR benutzerfreundlichen drahtlosen Transceiver, nRF24L01 +, miteinander. Die Funkmodule kosten jeweils 3 US-Dollar, und die Bibliothek ist sehr ausgereift. Über diese Bibliothek können alle Sensordaten einfach an das Gateway übertragen werden.

Das Gateway Arduino mit dem Ethernet fungiert als Webserver und ermöglicht jedem Computer in Ihrem lokalen Netzwerk, eine Seite zu öffnen und die aktuellen Bedingungen anzuzeigen. Suchen Sie auf dieser Seite nach dem Arduino-Code: http://arduino.cc/en/Tutorial/WebServer

Sie möchten auch historische Temperatur- / Windgeschwindigkeitsinformationen speichern, oder? Das ist der beste Teil! Das Gateway Arduino kann Daten an einen Dienst wie Xively senden, einen kostenlosen webbasierten Datenerfassungsdienst, mit dem Sie Ihre Daten auf raffinierte Weise visualisieren / grafisch darstellen können. Bei der Verwendung des Wiznet zusammen mit dem nRF24L01-Modul gibt es ein kleines Problem. Das Wireless-Modul und der Ethernet-Shield kommunizieren über denselben Bus. In diesem Blog erfahren Sie, wie Sie beide gleichzeitig verwenden können:

http://www.heald.ca/content/arduino-ethernet-nrf24l01-and-pachubecosmxively

Mit Xively können Sie diese Daten auch öffentlich oder privat machen, sodass Sie Ihre Wetterstationsdaten in die Community einbringen können.

Einige andere Anmerkungen: Ich mag nRF24L01 + Module, weil sie spottbillig sind. Xbee-Module kosten mehr als die Arduinos selbst. Sobald Sie ein Gateway eingerichtet haben, können Sie im ganzen Haus weitere nRF24L01 + -Module hinzufügen. Das gleiche Kostenproblem besteht mit WiFi-Schild - teuer.

user851
quelle
1

Wenn Sie eine günstigere Alternative zum Hinzufügen von WiFi-Funktionen zu Arduino suchen, schauen Sie sich ESP WiFi Shield an .

Es funktioniert gut mit WiFiEsp-Bibliothek . Das Programmiermodell ist genau das gleiche wie bei Arduino WiFi Shield

Twim
quelle
0

Überprüfen Sie das WLAN-Modul ESP8266. Es ist ein billiges Modul und kann mit jedem Mikrocontroller über AT-Befehle gesteuert werden. Außerdem ist es Soc, sodass Sie es als eigenständiges Modul verwenden können.

suxing
quelle
0

Die Verwendung des AT-Befehlssatzes ESP8266 ist schwierig und fehleranfällig. Schlagen Sie vor, den ESP8266-01 als UART-WiFi-Bridge neu zu installieren, wie hier beschrieben. ESP8266 Wifi Add on für Arduino Made Simple

Beachten Sie, dass Sie mit dem Setup auch Ihre WLAN-Einstellungen neu konfigurieren können, ohne den ESP8266-01 neu programmieren zu müssen

drmpf
quelle
0

Die Verwendung des ESP8266-Schilds ist fehleranfällig, erfordert ein Update, das geflasht werden muss, erfordert etwas Löten und ist für eine Produktionsumgebung nicht geeignet. Außerdem gibt es Probleme mit der Stromversorgung, da Sie eine separate 3,3-V-Stromversorgung benötigen . Es ist 2016 (!) Und es gibt eine Reihe weiterer Optionen zur Verfügung.

"Das UNO WiFi Board ist das Arduino UNO mit integriertem WiFi." http://www.arduino.org/products/boards/arduino-uno-wifi

und

"Das Star Otto ist das erste Arduino-Board mit dem STM32F469-Prozessor mit WiFi." http://www.arduino.org/products/boards/arduino-star-otto (Ab Oktober ist "Coming Soon" noch nicht verfügbar).

Bitte beachten Sie, dass diese beiden Boards von der Organisation OTHER Arduino stammen.

Chiwda
quelle
0

Nach mehreren Versuchen und Fehlern in meinem IoT-Projekt würde ich empfehlen, an ESP32 über ESP8266 (und auch Arduino Uno & Nano) zu arbeiten, es sei denn, Sie kennen den Umfang Ihres Projekts sehr gut.

Vorteile von ESP32 gegenüber ESP8266:

  1. Größerer RAM, ESP8266: 32-KB-Anweisung und 80-KB-Benutzerdaten, ESP32: 520 KB

Ich arbeite an einem IoT-Projekt und versuche, das Gerät mithilfe eines Zertifikats bei GCP zu authentifizieren. Das Stammzertifikat von GCP ist bereits ca. 120 KB groß und passt daher nicht in ESP8266. Es gibt Alternativen, aber das erschwert die Sache.

  1. ESP32 hat Bluetooth und ESP8266 nicht

Nun, irgendwann in Ihrem IoT-Projekt möchten Sie vielleicht Bluetooth, um Ihr Gerät mit Ihrem Telefon zu verbinden ...

  1. Einige Versionen von ESP32 verfügen über integrierte Anschlüsse für die Kamera (ESP32-CAM suchen)

Mit ESP8266 können Sie sicher eine Kamera verwenden, aber das erfordert mehr Kodierung und Verkabelung und möglicherweise eine schlechtere Leistung.

Und schließlich habe ich versucht, einen WLAN-Chip mit Arduino Uno & Nano zu verbinden, aber ich habe einige Fehler und Probleme mit den AT-Befehlen festgestellt. Somit bin ich jetzt ganz zufrieden mit ESP32, da alles integriert ist.

Lewen
quelle