WiFi aktiverat Arduino - gränssnitt med webb-API: erna (4 / 7 steg)
Steg 4: Steg 4: koden
Så är jag säker på denna punkt de flesta av er är bekanta med Arduino IDE. Vi kommer att använda som att ladda upp vår väder get kod till Arduino. Jag har bifogat en rengjord och dokumenterade version av koden till detta steg, men vi kommer att gå över den lite här (inte mödosamt, bara tillräckligt så du förstår vad som pågår).
Den första delen av koden är vår #defines, bara för att göra livet lite lättare. Vi har också några variabel i toppen som hjälper oss att tolka data lite lättare.
Setup() funktion
Här går vi, detta är hur vi ansluta vår ESP till våra Arduino. Jag reserverat utrymme överst för sträng svar. Detta är en håll-över från en tidigare iteration av kod som hade upprepat stack kraschar eftersom den. JSON överväldigade bara min lilla micro. Du kan förmodligen kasta denna kodrad ut, jag höll det. Efter som du ser jag starta upp en I2C (TWI, Wire, SMB, oavsett...) anslutning. Det är där min data faktiskt kommer. Därefter kommer följetongen. Detta är anslutningen till ESP, märka den 115200 baud. Det är SUPER viktigt att få rätt, annars din Arduino talar engelska och ESP talar kantonesiska och alla är förvirrad. Du kommer att märka de AT-kommandona är tillbaka, jag sa de skulle vara viktigt! Vår kod kontrollerar först se till att enheten är klar genom att utföra en programvara återställning och väntar på ESP att svara. Efter att vi inställd station läge ESP och tillåta flera anslutningar. Vi kan ansluta till flera APs, men för vår användning nu vi endast kommer att använda en av anslutningarna. Efter det är ett försök att ansluta till WiFi (nästa funktion vi tittar på). När vi har framgångsrikt (förhoppningsvis) ansluten till WiFi vi trycker och ansluta till vår värd (i detta fall Wunderground).
connectWiFi() funktion
Denna funktion är kött och potatis i vår kod. Så är vad vi har här ett kommando (AT + CWJAP) som säger att vår ESP att gå med en åtkomstpunkt. Den följs av AP SSID och lösenord. Om ESP returnerar "OK" sedan vi har gått med AP. Om inte, anslutningen misslyckades. Om du använder en MEGA eller andra flera seriella mikrokontroller som du kan ställa in den skicka PC meddelanden som om vad händer. Jag skickar mina data över I2C till en FPGA, så jag bara kastade bort Svaren.
loop() funktion
Detta är den sista största delen av koden. Detta område ansluter till Weather Underground API och hämtar data. När ESP börjar skicka data tillbaka vi driva det i variabeln svar sträng vi förklarat tidigare. Jag fångade data rad för rad (börjar med "och slutar med), och såg för uppgifterna jag behövde (temp_f och väder). Detta håller mängden data Arduino försöker butik/parse en gång ner till ett minimum.
Andra funktioner
De flesta av denna kod är ganska väl dokumenterat, så du bör kunna räkna ut vad som händer i resten av den. Jag går igenom och leta efter temp_f och väder. Jag sedan konvertera dessa värden till byte att skicka till min FPGA (hålla storleken minimal). Jag konverterade vädret till en 1 byte-värde. Detta ger mig upp till 256 olika väder koder. Jag använde sedan en enkel metod att omvandla temperatur till Binary Coded Decimal och skicka det till FPGA i 2 1-byte paket (4 siffror totalt på en sju segment display).
Krediter
Denna kod kom delvis från mitt eget arbete och delvis från andras. Jag minns inte alla de källor som jag utläsa idéer och koden från, men om någon av er hända på andra arbete som ser ut så här, låt mig veta. Jag skulle älska att ge kredit där det ska betalas.