Stap 4: Stap 4: de Code
Zo ben ik zeker op dit punt de meesten van u bekend bent met de Arduino IDE. We zullen gebruiken die onze weer getter code uploaden naar de Arduino. Ik ben een schoongemaakte en gedocumenteerde versie van de code verbonden aan deze stap, maar we gaan een beetje hier overheen (niet moeizaam, enkel genoeg zo u begrijpen wat er gaande is).
Het eerste deel van de code is onze #defines, gewoon om te leven een beetje makkelijker te maken. We hebben ook een paar variabele aan de top die ons parseren uit de gegevens die een beetje makkelijker helpen.
Setup functie
Hier gaan we, dit is hoe we onze ESP verbinding te maken met onze Arduino. Ik voorbehouden wat ruimte aan de bovenkant voor de reactie van de tekenreeks. Dit is een greep-over van een vorige iteratie van code die had herhaald stack vastlopen omdat de. JSON overweldigd gewoon mijn kleine micro. U kunt waarschijnlijk gooien deze coderegel uit, ik hield het. Na dat u mij voorsprong opwaarts een I2C (TWI, draad, SMB, wat...) verbinding. Dit is waar mijn gegevens eigenlijk gaat. Daarna komt de Serial. Dit is de verbinding met de ESP, merken de 115200 baud. Dat is SUPER belangrijk om goed te krijgen, anders je Arduino spreekt Engels en de ESP is Kantonees spreken en iedereen is verward. U zult merken dat de AT commando's zijn terug, vertelde ik u dat zou men belangrijk! Eerst onze code gecontroleerd om ervoor te zorgen dat het apparaat klaar is door het uitvoeren van een software-reset en wachten op de ESP te reageren. Na dat we de ESP ingesteld op station-modus en meerdere verbindingen toestaan. We kunnen verbinding maken met meerdere APs, maar voor ons gebruik nu we alleen zal worden met behulp van een van de verbindingen. Dat is een poging om te verbinden met WiFi na (volgende functie we kijken). Zodra we hebben met succes (hopelijk) verbonden met de WiFi, wij druk op en maak verbinding met onze gastheer (in dit geval Wunderground).
connectWiFi() functie
Deze functie is het vlees en aardappelen van onze code. Dus is wat we hier hebben een opdracht (AT + CWJAP), dat is onze ESP aan een toegangspunt te vertellen. Het wordt gevolgd door de AP SSID en het wachtwoord. Als de ESP retourneert "OK" hebben we met succes de AP gebundeld. Als dat niet het geval is, wordt de verbinding mislukt. Als u gebruikmaakt van een MEGA of andere multi seriële microcontroller die u tot berichten sturen de PC instellen kunt er van wat gaande is. Ik ben mijn gegevens verzenden via I2C aan een FPGA, dus ik gewoon de reacties gooide.
loop functie
Dit is het laatste grote gedeelte van de code. Dit gebied verbonden met de Weather Underground API en downloadt de gegevens. Zodra de ESP begint om gegevens terug te sturen duw we het in de reactie string-variabele die we eerder verklaard. Ik gevangen de data regel voor regel (beginnend met "en eindigend met), en keek voor de gegevens die ik nodig had (temp_f en weer). Hierdoor blijft de hoeveelheid gegevens die de Arduino probeert te slaan/parse tegelijk tot een minimum beperkt.
Andere functies
De meeste van deze code is vrij goed gedocumenteerd, zodat u in staat om erachter te komen wat is in de rest van het gaande er moet zijn. Ik ga door en kijk voor temp_f en weer. Ik vervolgens converteren deze waarden naar bytes te sturen naar mijn FPGA (houden de grootte minimaal). Ik omgezet het weer in een waarde van 1 byte. Dit geeft mij maximaal 256 verschillende weer codes. Ik gebruikte dan een eenvoudige methode om te zetten van de temperatuur in Binary Coded Decimal en stuur die naar de FPGA in 2 1-byte pakketten (4 cijfers op een 7 segment display totaal).
Credits
Deze code kwam gedeeltelijk vanuit mijn eigen werk en gedeeltelijk van die van anderen. Ik herinner me niet alles wat de bronnen die ik opgedaan ideeën en code uit, maar als iemand van jullie gebeuren op ander werk dat uitziet, laat het me weten. Ik zou graag geven het krediet waar het verschuldigd is.