Home > Technologie > WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

0
Advertisement

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

Sind Sie mit Arduino vertraut, suchen aber noch ein wenig mehr Konnektivität in Ihren Projekten? Diese Instructable geht über eine neue (und billig) Wireless-Modul, das die eingebettete Welt hart getroffen hat - die ESP8266. Dieses kleine Modul ist eine perfekte Möglichkeit, Ihr Arduino Projekt in Ihr WiFi zu haken. Was Sie damit machen, ist ganz Ihrer Phantasie gewachsen. Dieses Projekt demonstriert, wie man in die WeatherUnderground API bindet und Wetterdaten für Ihr Gebiet erhält (oder irgendwo in der Welt, die Sie wählen).

Dinge, die Sie für diese Anleitung benötigen:

- Arduino oder andere Mikrocontroller und eine gute Kenntnis davon ( UNO - Klon für $ 12.19USD oder MEGA für $ 22.94USD)

- Ein ESP8266 Modul ( hier für $ 2.42USD)

- Steckbrett

- Steckbrücken

- Startseite WiFi

- Wunderground API - Schlüssel (kostenlos erhältlich hier für nicht-kommerzielle Nutzung)

Dinge, die Sie haben sollten:

- Eine unabhängige 3,3 V Stromversorgung (für den ESP8266)
- Ein 5V bis 3,3V Logikpegelschieber

Schritt 1: Schritt 1: Der ESP8266

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

Dieses kleine Modul ist das ESP8266. Es bietet viel mehr Funktionalität als nur WiFi; Es ist ein vollständiges SoC, das zum Ausführen von Code fähig ist. Für die Zwecke dieser Instructable werden wir es nur für seine WiFi-Fähigkeiten verwenden.

Der ESP8266 verwendet ein 3,3 V Netzteil. Manche Leute haben es angeblich auf 5V laufen lassen, aber riskieren Sie es nicht. Dies bedeutet, dass, um "richtig" verwenden Sie es mit einem Arduino müssen Sie einen Logik-Level-Shifter verwenden. Ich habe es ohne eine für die letzten paar Monate ohne negative Auswirkungen, aber das bedeutet nicht, dass das Gerät konnte nicht potenziell Schaden an einem gewissen Punkt. Außerdem kann der aktive Übertragungsstrom ziemlich hoch sein. Ich schlage vor, dies ausgeschaltet eine externe Stromversorgung statt USB. Manchmal wird der Strom spike und das Gerät wird es versäumen, vollständig zu schalten, werden die Daten über beschädigt kommen oder andere unerwartete Nebenwirkungen auftreten.

Eine weitere Sache zu beachten, mit diesem Gerät ist die CH_PD Pin. Dieser Pin muss hoch angetrieben werden, damit das Gerät eingeschaltet wird. Ich übersah dies für eine lange Zeit und es verursacht zahlreiche Kopfschmerzen.

Wenn Sie nicht allzu vertraut mit der Embedded - Welt sind noch, sollten Sie ein wenig auf lesen , AT - Befehle . Diese erleichtern unsere Fähigkeit, mit dem ESP8266 zu sprechen. Sobald Sie Ihr Modul sollten Sie wahrscheinlich testen Sie es mit einem USB to TTL-Konverter, um herauszufinden, wie alles funktioniert, oder Sie können nur warten und versuchen, laufen Code auf Ihrem Arduino. Eine vollständige Liste der Befehle für dieses Modul sind verfügbar hier . Ich fand diese Seite sehr hilfreich beim Lernen über dieses Modul.

Sobald Sie mehr erfahren mit der Verwendung dieses Moduls können Sie tatsächlich laden Code, um die GPIO Pins an Bord zu kontrollieren. Dies ist über den Rahmen dieses Projekts hinaus, aber es bedeutet nicht, dass Sie nicht entwickeln können, etwas völlig cool alle auf eigene Faust mit ihm.

Wichtig:

Nicht alle ESP8266 werden gleich gemacht. Stellen Sie sicher, überprüfen Sie die Baud von Ihnen. Mine war 115200 Baud, aber andere Benutzer berichten unterschiedliche Raten.

Schritt 2: Schritt 2: Der Arduino

WiFi aktiviert Arduino - Anbindung an Web-APIs

Dies sollte ein bekanntes Gerät für die meisten von Ihnen sein. Das ist das Arduino. Es ist ein ausgezeichnetes Werkzeug für die Einführung in die embedded Welt. Der Uno wird wohl der bekannteste Anblick sein. Es wird von der Atmel ATMega328 MCU angetrieben. Die oben gezeigte ist die Arduino Mega, die die ATMega2560 verwendet. I HIGHLY empfehlen die Mega, da es einige zusätzliche serielle Anschlüsse bietet, so können Sie eine Verbindung zu einem Programm wie Putty und mehrere andere serielle Geräte zur gleichen Zeit. Ich verwendete das Mega für Testzwecke, lief dann das Endprodukt auf einem Uno, das I2C verwendet, um an ein FPGA anzuschließen

Wenn du noch nie einen Arduino benutzt hast, spiel mit ihm ein bisschen. Die Kenntnisse des Arduino werden Ihnen dabei helfen, dieses Projekt an Ihre Bedürfnisse anzupassen.

Wenn Sie einen anderen Mikrocontroller, dass Sie mehr (TI Launchpad oder PIC32 zum Beispiel) haben, die gleichen Grundsätze gelten für die Verwendung von ihnen.

Schritt 3: Schritt 3: Die Wunderground API

WiFi aktiviert Arduino - Anbindung an Web-APIs

Das ist die wirkliche Macht hinter unserem Projekt. Weather Underground ist eine tolle Website, die eine API für lokale Wetterdaten für Projekte wie diese! Stellen Sie sicher, dass Sie nicht über ihr Limit für API-Anrufe gehen, könnten Sie aber in Rechnung gestellt werden. Ich wählte diese API aus zwei Gründen:

1. Es ist super einfach zu bedienen. In kürzester Zeit werden Sie greifen das Wetter und zeigt es in kühlen LED-powered Möglichkeiten.

2. Es hat eine AUTOIP-Funktion. Die API wird automatisch Ihren Standort auf der Grundlage Ihrer öffentlichen IP, so dass, solange Sie nicht Routing durch einen Proxy werden Sie nicht müssen die API-Aufrufe überhaupt ändern.

Diese API bietet eine Fülle von Informationen, die Sie für Ihr Projekt verwenden können. Es gibt Ihnen Stadt Name, lat / long Koordinaten, Epoche Zeit, Zeitzone, und alle Wetterinformationen, die Sie jemals hoffen könnte. Mein Projekt konzentriert sich auf das aktuelle Wetter und Temperatur, aber ich bin sicher, Sie alle können kommen mit kreativen Möglichkeiten, um alle Informationen zu nutzen.

Wenn Sie sich für Wunderground anmelden, erhalten Sie einen eindeutigen Schlüssel. Auf diese Weise können Sie auf die Daten zugreifen, die Weather Underground bereitstellt. Sobald Sie den Schlüssel haben, müssen Sie wissen, wie die Daten zu sehen. Ein Aufruf dieser API ist eine einfache HTTP GET-Anfrage, so dass Sie nur eine URL in Ihren Browser und sehen, was Sie bekommen können!

Schauen wir uns den API-Aufruf an.
http://api.wunderground.com/api/ Schlüssel hier> /conditions/q/autoip.json Vergewissern Sie sich mit Ihrem eigentlichen Schlüssel ersetzen !!!


Dies ist der Grundaufruf für Daten. Setzen Sie den Schlüssel in die URL und schießen Sie weg. Die API gibt eine .json-Datei mit Informationen über das Wetter in Ihrer Region zurück. Mine ist die wunderground.txt am Ende dieses Schritts. Durchsehen Sie es schnell. Sehen Sie, wie viel Daten sie bereitstellen? Tonnen. Sie können die Zeichenfolge anpassen, um unterschiedliche Daten zu erhalten. Prognosen, Verlauf, ändern Sie den Standort. Es ist alles wirklich an Ihnen. Dieser einfache Anruf ist wirklich alles, was wir für dieses Projekt brauchen, also gehen wir weiter zum Arduino-Code.

Eine nette Idee zu berücksichtigen - Befestigen Sie ein Bluetooth-Modul an Ihrem IoT-duino und schreiben Sie eine kleine Android / IOS App, mit der Sie den Speicherort in der API-get-Zeichenkette ändern können. Jetzt können Sie das Wetter überall auf der Welt sehen!

Schritt 4: Schritt 4: Der Code

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

So bin ich sicher, an diesem Punkt die meisten von Ihnen sind vertraut mit der Arduino IDE. Wir werden das verwenden, um unseren Wetter-Getter-Code zum Arduino hochzuladen. Ich habe eine saubere und dokumentierte Version des Codes zu diesem Schritt angebracht, aber wir gehen über es ein bisschen hier (nicht mühsam, gerade genug, damit Sie verstehen, was los ist).

Der erste Teil des Codes ist unsere #defines, nur um das Leben ein wenig einfacher zu machen. Wir haben auch ein paar Variable an der Spitze, die uns helfen, analysieren die Daten ein wenig einfacher.

Setup () Funktion

Hier gehen wir, so verbinden wir unsere ESP mit unserem Arduino. Ich reservierte etwas Platz an der Spitze für die Zeichenfolge Antwort. Dies ist ein Hold-over aus einer früheren Iteration von Code, der wiederholte Stapel Abstürze hatte, weil die .JSON nur meine kleine Mikro überwältigt. Sie können wahrscheinlich werfen diese Zeile von Code aus, hielt ich es. Danach sehen Sie, ich starte eine I2C (TWI, Wire, SMB, was auch immer ...) Verbindung. Dies ist, wo meine Daten tatsächlich geht. Als nächstes kommt das Serial. Dies ist die Verbindung zum ESP, beachten Sie die 115200 Baud. Das ist SUPER wichtig, um richtig zu erhalten, sonst spricht Ihr Arduino Englisch und die ESP spricht Kantonesisch und jeder ist verwirrt. Sie werden feststellen, die AT-Befehle sind zurück, ich sagte Ihnen, sie wäre wichtig! Zuerst überprüft unser Code, um sicherzustellen, dass das Gerät bereit ist, indem er ein Software-Reset durchführt und darauf wartet, dass der ESP reagiert. Danach stellen wir den ESP auf den Stationsmodus und ermöglichen mehrere Verbindungen. Wir können eine Verbindung zu mehreren APs herstellen, aber für unseren Gebrauch verwenden wir nur eine der Verbindungen. Im Anschluss daran ist ein Versuch, eine Verbindung zum WiFi (nächste Funktion, die wir betrachten). Sobald wir erfolgreich (hoffentlich) mit dem WiFi verbunden sind, drücken wir auf und verbinden uns mit unserem Host (in diesem Fall Wunderground).

ConnectWiFi () - Funktion

Diese Funktion ist das Fleisch und Kartoffeln unseres Codes. So was wir hier haben, ist ein Befehl (AT + CWJAP), der unserem ESP erklärt, einem Zugangspunkt zu verbinden. Es wird von der AP-SSID und dem Passwort gefolgt. Wenn der ESP "OK" zurückgibt, sind wir dem AP erfolgreich beigetreten. Wenn nicht, ist die Verbindung fehlgeschlagen. Wenn Sie einen MEGA oder einen anderen Multi-Seriell-Mikrocontroller verwenden, können Sie ihn so einstellen, dass er die PC-Nachrichten von dem abgibt, was vor sich geht. Ich schicke meine Daten über I2C zu einem FPGA, so dass ich nur warf die Antworten.

Loop () Funktion

Dies ist der letzte Hauptteil des Codes. Dieser Bereich verbindet sich mit der Weather Underground API und lädt die Daten herunter. Sobald der ESP beginnt, Daten zurück zu senden, schieben wir ihn in die Antwort-String-Variable, die wir früher deklariert haben. Ich fing die Daten Zeile für Zeile (beginnend mit "und endend mit) und suchte nach den Daten, die ich brauchte (temp_f und Wetter) .Dies hält die Menge an Daten, die der Arduino versucht, zu speichern / parsen auf einmal auf ein Minimum .

Weitere Funktionen

Die meisten dieser Code ist ziemlich gut dokumentiert, so sollten Sie in der Lage sein, herauszufinden, was los ist in den Rest des it. Ich gehe durch und suche nach temp_f und Wetter. Ich wandle dann diese Werte in Bytes um an meine FPGA zu senden (wobei die Größe minimal gehalten wird). Ich habe das Wetter in einen 1-Byte-Wert umgewandelt. Das gibt mir bis zu 256 verschiedene Wettercodes. Ich habe dann eine einfache Methode, um die Temperatur in Binärcoded Decimal umwandeln und senden, dass die FPGA in 2 1-Byte-Pakete (4 Ziffern insgesamt auf einer sieben-Segment-Display).

Kredite

Dieser Code kam teilweise aus meiner eigenen Arbeit und teilweise aus der von anderen. Ich kann mich nicht erinnern, alle Quellen, die ich Ideen und Code aus, aber wenn jemand von euch auf andere Arbeit, die wie folgt aussieht, lass es mich wissen. Ich würde gerne die Gutschrift geben, wo es fällig ist.

Schritt 5: Schritt 5: Die Schaltung

WiFi aktiviert Arduino - Anbindung an Web-APIs

WiFi aktiviert Arduino - Anbindung an Web-APIs

Dieser Teil ist ziemlich einfach. Wenn Sie wie ich sind und nicht über die logische Ebene Shifter besorgt sind, nur verbinden Sie die beiden zusammen. Stellen Sie sicher, dass Sie den RX des ESP in den TX des Arduino und den TX des ESP in den RX des Arduino anschließen. Wenn Sie nicht die ESP und die Arduino werden beide schreien einander, aber niemand wird zuhören. Verbinden Sie Ihre VCC-Pin mit 3.3V und Ihre GND auf, gut, Masse. Der einzige Sneaky Pin hier ist der CH_PD Pin. Dies ist der Chip Powerdown Pin. Wenn dieser Pin niedrig ist, wird der ESP8266 mit Strom versorgt. Wenn Sie die enge Kontrolle über die ESP binden wollen, binden Sie diese in einen der GPIO-Pins auf dem Arduino ein, ansonsten verbinden Sie sie einfach mit 3.3V, so dass der ESP immer eingeschaltet ist. Für noch mehr Kontrolle die RST-Pin auf dem ESP in den Arduino zu. Auf diese Weise können Sie ggf. einen vollständigen Hardware-Reset auf dem ESP durchführen.

--------- Verbindungen ---------
--Arduino --- | --- ESP8266 ---
TX | RX
RX | TX
3,3 V | VCC
3,3 V | CH_PD
GND | GND

------Optional----------------
GPIO | RST
GPIO | CH_PD

Schritt 6: Schritt 6: Das Ende

Jetzt ist das Ende in Sicht. Sie haben den Code, die Schaltung und den Schlüssel. Führen Sie es aus und sehen Sie, was passiert! Wenn es nicht tun, was Sie das allererste Mal erwartet, nicht frustriert. Nehmen Sie einen Schritt zurück und schauen Sie es Teil für Teil. Wenn Sie meinen Code genau verwenden, benötigen Sie ein anderes Gerät mit I2C, um die Daten vom Arduino zu erhalten. Eine weitere gute Methode zum Debuggen (wenn Sie eine MEGA haben) ist, einige Serial.print () -Anweisungen in Ihrem Code einzufügen, um zu sehen, was los ist. Kein eingebettetes Projekt arbeitet zum allerersten Mal. Ich bin in der Schule für diese und es dauerte immer noch 2-Wochen-Wochen, um diese alle eingerichtet und läuft so, wie ich wollte.

Jetzt haben Sie ein IoT-Gerät, was Sie damit machen, liegt ganz bei Ihnen und Ihrer Phantasie. Dieses Projekt würde für eine schöne kleine Wetterstation machen, wenn Sie einen LCD-Bildschirm an den Arduino anschließen und ihn in ein Gehäuse einschließen. Mit wenigen Modifikationen können Sie damit Daten überall auslesen und über das Internet versenden, wo immer Sie es brauchen (Temperatur- / Feuchtesensoren in Gewächshäusern?). Möchten Sie eine Webseite präsentieren? Tweak einige mehr und das wird es tun. Der Spaß mit eingebetteten Projekten ist es der Himmel ist nicht einmal die Grenze, können Sie sie in den Weltraum.

Ich hoffe, dies war eine hilfreiche Demonstration auf dem ESP8266 und wie man es benutzt. Es ist ein lustiges kleines Gerät mit einem guten Preis, mit dem Sie auf einem IoT-Projekt rollen. Gehet hin und macht!

PS - Ich bin einbinden dieses Projekt in einem anderen, ein Hardware-driven LED Word Clock (Ich verwende ein FPGA als Backbone des Gerätes). Sobald das Projekt abgeschlossen ist, werde ich ein Instructable für es auch hochladen.

Schritt 7: Weitere Überlegungen

Eine weitere Option zu prüfen ist Arduino auf Breadboard. Die UNO wird von einem ATMega328, die auf amazon für rund $ 5USD. Dies reduziert nicht nur die Kosten, sondern auch die Größe. Dieser Chip führt den Arduino-Bootloader aus, so dass Sie ihn mit der Arduino IDE unter Verwendung eines anderen UNO als ISP programmieren können. Willst du noch weiter gehen? Download Eagle Cadsoft und spin oben Ihr eigenes kundenspezifisches Brett mit einigen oberflächenmontierten Bestandteilen für sogar grössere eingebettete Energie. Es ist ein wenig beängstigend auf den ersten, aber mit ein wenig Übung können Sie auch eine professionelle Platine Designer werden. Das Internet ist voll von Leuten, die bereit sind, Ihnen alles zu lehren, was Sie über Elektronik erfahren möchten. Halten Sie einfach ein Google-Tab auf und Ihr Geist offen und es gibt nichts, was Sie nicht tun können. Glückliches Gebäude!

Related Reading