WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

7 Schritt:Schritt 1: Schritt 1: Der ESP8266 Schritt 2: Schritt 2: Der Arduino Schritt 3: Schritt 3: Der Wunderground API Schritt 4: Schritt 4: Der Kodex Schritt 5: Schritt 5: Der Circuit Schritt 6: Schritt 6: Das Ende Schritt 7: Weitere Überlegungen

WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

Sind Sie mit Arduino vertraut, sind aber für ein wenig mehr Konnektivität in Ihre Projekte suchen? Diese Instructable geht über eine neue (und billig) Wireless-Modul, das die embedded world schwer getroffen hat - das ESP8266. Dieses kleine Modul ist eine perfekte Weise, Ihren Arduino-Projekt in Ihre WiFi Haken. Was Sie damit machen, liegt ganz bei Ihrer Phantasie. Dieses Projekt zeigt, wie man in die Weather API zu binden und zu Wetterdaten für Ihr Gebiet (oder irgendwo in der Welt, die Sie wählen).
Dinge, die Sie für dieses Instructable benötigen:
- Arduino oder andere Mikrocontroller und eine gute Kenntnis davon ( UNO -Klon für € 12.19USD oder MEGA für € 22.94USD)
- An ESP8266 Modul ( Hier für € 2.42USD)
- Brotschneidebrett
- Jumper Drähte
- Startseite WiFi
- Wunderground-API-Schlüssel (kostenlos erhältlich hier für nicht-kommerzielle Nutzung)
Dinge, die Sie haben:
- Eine unabhängige 3.3V Stromversorgung (für die ESP8266)
- A 5 V bis 3,3 V Logikpegelumsetzer

Schritt 1: Schritt 1: Der ESP8266

  1. WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    Dieses kleine Modul ist das ESP8266. Es bietet viel mehr Funktionen als nur WiFi; Es ist ein Full-SoC in der Lage, die Ausführung von Code. Für die Zwecke dieser Instructable werden wir rein ihn für seine WiFi-Funktionen though.
    Die ESP8266 verwendet eine 3,3 V Stromversorgung. Manche Menschen haben angeblich führen Sie es auf 5V, aber nicht riskieren. Das bedeutet, dass, um "richtig" verwenden Sie es mit einem Arduino Sie brauchen, um einen logischen Pegelumsetzer verwenden werden. Ich benutze es, ohne eine für die letzten paar Monate ohne Folgen, aber das bedeutet nicht, dass das Gerät nicht potenziell Schaden irgendwann leiden. Außerdem können aktive Sendestrom ziemlich hoch sein. Ich schlage vor, sondern hinter diesem aus eine externe Stromversorgung ist als USB. Manchmal wird der Strom Spike und das Gerät nicht zu voll Macht, werden Daten über beschädigte kommen, oder andere unerwartete Nebenwirkungen auftreten.
    Eine andere Sache, mit diesem Gerät beachten ist die CH_PD Stift. Dieser Stift muss hoch für das Gerät an die Macht herauf gefahren werden. Ich übersehen dies für eine lange Zeit und es zahlreiche Kopfschmerzen verursacht.
    Wenn Sie noch nicht allzu vertraut mit der embedded world, sollten Sie lesen ein wenig über AT-Befehle . Diese sind, was zu erleichtern unsere Fähigkeit, auf die ESP8266 sprechen. Sobald Sie Ihr Modul haben, sollten Sie wahrscheinlich testen Sie es mit einem USB-zu-TTL-Konverter, um herauszufinden, wie alles funktioniert, oder Sie gerade warten können und versuchen Sie, Code auf Ihrer Arduino. Eine vollständige Liste der Befehle für dieses Modul zur Verfügung hier . Ich fand diese Webseite sehr hilfreich beim Lernen über dieses Modul.
    Sobald Sie mit der Bearbeitung dieses Moduls erhalten mehr Erfahrung können Sie tatsächlich Code, um es zu laden, um die GPIO-Pins an Bord zu kontrollieren. Dies würde den Rahmen dieses Projekts, aber es bedeutet nicht, Sie können nicht etwas total geil auf eigene Faust mit ihm zu entwickeln.
    Wichtig:
    Nicht alle ESP8266s gleich gemacht werden. Stellen Sie sicher, dass Sie die Baudrate von Ihnen zu überprüfen. Meins war 115200 Baud, aber auch andere Nutzer berichten unterschiedlichen Geschwindigkeiten.

Schritt 2: Schritt 2: Der Arduino

  1. WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    Dies sollte eine bekannte Einrichtung, die meisten von euch sein. Dies ist der Arduino. Es ist ein ausgezeichnetes Werkzeug für die Einführung in die embedded world. Die Uno wird wahrscheinlich die bekannteste Sicht. Es wird von der Atmel hergestellt ATMega328 MCU betrieben. Das oben gezeigte ist der Arduino Mega, die die ATmega2560 verwendet. Ich sehr empfehlen die Mega da sie einige zusätzliche serielle Schnittstellen, so dass Sie zu einem Programm wie Putty und mehrere andere serielle Geräte gleichzeitig angeschlossen werden. Ich habe die Mega zu Testzwecken, dann lief das Endprodukt auf einer Uno mit I2C auf einem FPGA anschließen
    Wenn Sie noch nie ein Arduino, bevor jetzt verwendet wird, spielen Sie mit ihm ein wenig. Ausreichende Kenntnisse der Arduino Ihnen immens helfen bei der Anpassung dieses Projekt, um Ihre Anwendungen.
    Wenn Sie einen anderen Mikrocontroller, dass Sie mehr (TI Launchpad oder PIC32 zum Beispiel) wie haben die gleichen Prinzipien werden mit ihnen gelten.

Schritt 3: Schritt 3: Der Wunderground API

  1. WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    Das ist die wahre Macht hinter unserem Projekt. Weather Underground ist eine wunderbare Website, die eine API bietet, um lokale Wetterdaten für Projekte wie dieses! Stellen Sie sicher, dass Sie nicht über die Grenze für API gehen fordert aber, Ihnen in Rechnung gestellt bekommen könnten. Ich wählte dieses API für zwei Hauptgründe:
    1. Es ist super einfach zu bedienen. In kürzester Zeit werden Sie packte das Wetter und der Anzeige in kühlen LED-angetriebene Weise.
    2. Es hat eine AUTOIP Funktion. Die API erhalten automatisch Ihren Standort Sie Ihre öffentliche IP-basiert, so dass, solange Sie nicht über einen Proxy-Routing Sie nicht haben, um die API zu ändern Anrufe überhaupt.
    Diese API bietet eine Fülle von Informationen, die Sie für Ihr Projekt verwenden können. Es gibt Ihnen den Namen der Stadt, lat / long Koordinaten, Epoche Uhrzeit, Zeitzone und alle Wetterinformationen Sie jemals hoffen konnte. Mein Projekt konzentriert sich auf das aktuelle Wetter und Temperatur, aber ich bin sicher, Sie alle können mit kreativen Möglichkeiten, um alle Daten zu verwenden sind.
    Wenn Sie sich für Wunderground Du eine einzigartige Schlüssel angegeben werden. Dies ist, was können Sie die Daten, die Weather Underground bietet Zugriff. Sobald Sie Ihren Schlüssel haben müssen Sie wissen, wie die Daten zu sehen. Ein Aufruf dieser API ist eine einfache HTTP GET-Anforderung, so können Sie einfach eine URL in Ihren Browser eingeben und sehen, was Sie erhalten!
    Lassen Sie uns an den API-Aufruf.
    http://api.wunderground.com/api/ Schlüssel hier> /conditions/q/autoip.json Achten Sie darauf, mit Ihrer eigentlichen Schlüssel zu ersetzen !!!

    Dies ist die grundlegende Forderung nach Daten. Setzen Sie Ihre Schlüssel in der URL und Feuer weg. Die API wird eine .json Datei mit Informationen über das Wetter in Ihrer Region zurückzugeben. Mein ist das wunderground.txt an der Unterseite dieses Schrittes. Schauen Sie durch es ganz schnell. Sehen Sie, wie viele Daten sie bieten? Tonnen. Sie können die Zeichenfolge anpassen, um verschiedene Daten zu erhalten. Prognosen, Geschichte, ändern Sie den Speicherort. Es ist alles wirklich an Ihnen. Diese einfachen Anruf ist wirklich alles, was wir brauchen für dieses Projekt, so machen wir weiter auf die Arduino-Code.
    Eine nette Idee zu prüfen - Bringen Sie ein Bluetooth-Modul, um Ihre IoT-Duino und einen kleinen Android / iOS-App, die Sie die Position in der API zu ändern bekommen String lässt. Jetzt können Sie das Wetter auf der ganzen Welt zu sehen!

Schritt 4: Schritt 4: Der Kodex

  1. WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    So bin ich an dieser Stelle die meisten von Ihnen mit der Arduino IDE vertraut sind sicher. Wir würden uns mit, dass unsere Wetter Getter Code in die Arduino hochladen. Ich habe eine gereinigt und dokumentiert Version des Codes zu diesem Schritt angeschlossen, aber wir werden mehr als es ein bisschen hier zu gehen (nicht mühsam, gerade genug, damit Sie verstehen, was los ist).
    Der erste Teil des Codes ist unser # definiert, nur um das Leben ein wenig leichter. Wir haben auch ein paar Variable an der Spitze, die uns zu analysieren die Daten ein wenig leichter zu helfen.
    setup () Funktion
    Hier gehen wir, das ist, wie wir verbinden unsere ESP unsere Arduino. Ich etwas Platz an der Spitze für die Zeichenfolge Antwort vorbehalten. Dies ist eine Hold-over aus einer vorherigen Iteration des Codes, Stapel stürzt wiederholt hatte, weil die .json nur meine kleine Mikro überwältigt. Sie können sich wahrscheinlich werfen Sie diese Codezeile aus, ich hielt es. Danach können Sie sehen, ich starten einen I2C (TWI, Draht, SMB, was auch immer ...) Verbindung. Dies ist, wo meine Daten eigentlich vor sich geht. Als nächstes kommt die Serien. Das ist die Verbindung mit dem ESP, bemerken die 115200 Baud. Das ist super wichtig, richtig zu machen, sonst wird Ihre Arduino spricht Englisch und die ESP spricht Kantonesisch und jeder ist verwirrt. Sie werden die AT-Befehle sind wieder feststellen, ich sagte Ihnen, sie würden von Bedeutung sein! Zunächst unseren Code überprüft, ob das Gerät bereit ist, indem eine Software-Reset und wartet auf das ESP zu reagieren. Danach setzen wir die ESP zu Station-Modus und ermöglicht mehrere Verbindungen. Wir können mehrere APs zu verbinden, aber für unseren Gebrauch jetzt haben wir nur verwenden werden, eine der Verbindungen. Im Anschluss daran ist ein Versuch, in die WiFi (nächste Funktion wir uns) zu verbinden. Sobald wir erfolgreich haben (hoffentlich) auf die WiFi schieben wir auf und verbinden Sie unser Gastgeber (in diesem Fall Wunderground) verbunden ist.
    connectWiFi () Funktion
    Diese Funktion ist das Fleisch und Kartoffeln von unseren Code. Also, was wir hier haben, ist ein Befehl (AT + CWJAP), die erzählt wird unser ESP, einen Zugangspunkt zu verbinden. Es wird von der AP SSID und das Kennwort gefolgt. Wenn das ESP zurück "OK" dann haben wir erfolgreich trat der AP. Wenn nicht, wird die Verbindung fehlgeschlagen. Wenn Sie mit einem MEGA oder andere Multi-Serien Mikrocontroller sind, können Sie es einrichten, um die PC-Meldungen von, was los schicken. Ich meine das Senden von Daten über I2C zu einem FPGA, so warf ich einfach weg antwortet.
    Schleife () Funktion
    Dies ist das letzte Hauptteil des Codes. Dieser Bereich verbindet sich mit dem Weather Underground API und die Daten herunterlädt. Sobald das ESP beginnt, Daten zu senden zurück wir schieben Sie es in der Antwort String-Variable wir zuvor erklärt. Ich eroberte die Daten Zeile für Zeile (beginnend mit "und endend mit,) und sah für die Daten, die ich brauchte (temp_f und Wetter). Das hält die Datenmenge, die Arduino versucht, zu speichern / zu analysieren auf einmal auf ein Minimum .
    Weitere Funktionen
    Die meisten dieser Code ist ziemlich gut dokumentiert, so dass Sie sollten in der Lage, um herauszufinden, was los ist in den Rest davon zu sein. Ich gehe durch und suchen nach temp_f und Wetter. I dann wandeln diese Werte in Byte, um zu meinem FPGA senden (wobei die Größe minimal). I überführt das Wetter in einen 1-Byte-Wert. Das gibt mir bis zu 256 verschiedene Wetter-Codes. Ich habe dann eine einfache Methode, um die Temperatur in Binary Coded Decimal zu konvertieren und senden, dass auf den FPGA in 2 1-Byte-Pakete (4 Ziffern insgesamt auf einem Sieben-Segment-Anzeige).
    Credits
    Dieser Code kam teilweise aus meiner eigenen Arbeit und teilweise von der des anderen. Ich erinnere mich nicht alle Quellen, die ich aufgelesen Ideen und Code aus, aber wenn einer von euch auf andere Arbeiten, die so aussieht passieren, lassen Sie mich wissen. Ich würde gerne die Ehre, wem Ehre gebührt.

Schritt 5: Schritt 5: Der Circuit

  1. WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    WiFi-fähigen Arduino - Schnittstellen zu Web-APIs

    Dieser Teil ist ziemlich einfach. Wenn Sie wie ich sind und nicht super besorgt über die Logikpegelumsetzer, schließen Sie einfach die beiden zusammen. Achten Sie darauf, den RX des ESP in den TX der Arduino und der TX des ESP in die RX des Arduino verbinden. Wenn Sie nicht das ESP und die Arduino werden beide einander an zu schreien, aber niemand zuhören. Verbinden Sie Ihren Pin VCC bis 3,3 V und GND, um Ihr, na ja, Boden. Die einzige hinterhältig Stift ist hier die CH_PD Stift. Dies ist der Chip Powerdown-Pin. Wenn dieses Pin niedrig es erzählt die ESP8266 sich ausschaltet. Wenn Sie eine genaue Kontrolle des ESP binden diese in eine Ihrer GPIO-Pins auf dem Arduino, sonst wollen verbinden Sie es nur bis 3,3 V, so dass die ESP ist immer an. Für eine noch größere Kontrolle Krawatte auf dem ESP die RST-Stift in die Arduino zu. Auf diese Weise, wenn es sein muss, können Sie eine vollständige Hardware-Reset des ESP durchführen.
    --------- --------- Connections
    --Arduino --- | --- ESP8266 ---
    TX | RX
    RX | TX
    3,3 | VCC
    3,3 | CH_PD
    GND | GND
    ------ Optional ----------------
    GPIO | RST
    GPIO | CH_PD

Schritt 6: Schritt 6: Das Ende


  1. Jetzt ist das Ende in Sicht. Sie haben den Code, den Stromkreis und den Schlüssel bekam. Führen Sie es und sehen, was passiert! Wenn sie nicht tun, was Sie das erste Mal zu erwarten, nicht frustriert. Machen Sie einen Schritt zurück und schauen Sie es Teil für Teil. Wenn Sie mit meinem Code exakt, werden Sie ein anderes Gerät müssen mit I2C, um die Daten aus dem Arduino zu bekommen. Eine weitere gute Methode der Fehlersuche (wenn Sie eine MEGA haben) ist es, einige Serial.print () Aussagen im gesamten Code einfügen, um zu sehen, was los ist. Keine eingebetteten Projekt arbeitet das erste Mal. Ich bin in der Schule für dieses und es hat mich noch 2-ish Wochen, diese alle in Betrieb gesetzt, wie ich wollte.
    Jetzt haben Sie eine IoT-Gerät, was Sie damit machen, liegt ganz bei Ihnen und Ihrer Phantasie. Dieses Projekt würde eine nette kleine Wetterstation machen, wenn Sie einen LCD-Bildschirm angeschlossen an die Arduino und wickelte es in ein Gehäuse. Mit ein wenig Modifikation können Sie diese verwenden, um Daten von fast überall zu lesen und senden Sie es über das Internet, um überall dort, wo Sie es brauchen (Temperatur / Feuchte-Sensoren in Gewächshäusern?). Willst du eine Webseite zu präsentieren? Zwicken etwas mehr, und das wird es tun. Der Spaß mit eingebetteten Projekte es der Himmel ist nicht einmal die Grenze, können Sie sie, um Platz zu nehmen.
    Ich hoffe, das war ein hilfs Demonstration auf der ESP8266 und wie man es benutzt. Es ist ein lustiges kleines Gerät mit einem guten Preis, die Ihnen den Rollen auf einer IoT-Projekt. Gehen Sie weiter und machen!

    PS - Ich bin das Einbetten dieses Projekt in eine andere, eine Hardware-angetriebenen LED Word Clock (ich benutze ein FPGA als das Rückgrat des Gerätes). Sobald das Projekt abgeschlossen ist werde ich das Hochladen eines Instructable für sie als gut.

Schritt 7: Weitere Überlegungen


  1. Eine weitere Möglichkeit zu prüfen, ist Arduino auf Steckbrett. Die UNO wird von einem ATMega328, die rund € 5USD auf Amazon ist mit Strom versorgt. Das spart nicht nur Kosten, sondern auch Größe. Dieser Chip wird den Arduino Bootloader ausführen, damit Sie es mit der Arduino IDE mit einem anderen UNO als ISP programmieren. Wollen Sie noch weiter gehen? Laden Adler Cadsoft und Spin up Ihre eigenen Vorstand mit einigen oberflächenmontierbaren Komponenten für noch mehr Embedded-Power. Es ist auf den ersten ein wenig beängstigend, aber mit ein wenig Übung können auch Sie eine professionelle Platine Designer. Das Internet ist voll von Menschen, die bereit sind, Ihnen alles, was Sie über Elektronik lernen lehren. Halten Sie einfach ein Google Registerkarte und Ihren Geist offen und es gibt nichts, was Sie nicht tun können. Glückliche Gebäude!