Stap 4: Laden en uitvoeren van de Software
Eerste installatie
Om te communiceren met het bestuur van Nucleo, moeten we eerst de USB-stuurprogramma's gevonden hierinstalleren. Hierdoor kunnen de software downloaden naar de Raad van bestuur, alsmede het ontvangen van gegevens via seriële. Terwijl optioneel, het is ook aanbevolen dat u download en installeer firmware-updates voor het bord, gevonden hier. Zodra de Raad van bestuur is aangesloten, moet u een nieuwe opslagapparaat. Als u wilt overbrengen en installeren ieder opkomend software voor de Nucleo, gewoon opslaan of kopieer het programma naar deze nieuwe opslag moeten media, en u zien van de board lichten knipperen. Merk op dat het bestand eenmaal hebt gekopieerd, uit het apparaat verdwijnen zal. Echter, zolang de lichten knipperde en op groen eindigde, loopt de Raad van bestuur voortdurend de laatste gedownloade software.
Om te debuggen goed de software, is het aanbevolen dat u een seriële poortverbinding met de Nucleo instellen. Terwijl een verscheidenheid van programma's kan worden gebruikt, op Windows, gebruikten we de Arduino softwarepakket. Als u verbinding de Nucleo maakt en klik op de knop "Serial Port Monitor" (een klein vergrootglas in de hoek van het scherm), zal tonen alle informatie verzonden van het bord. Het gaat hierbij om sommige informatieve print verklaringen opgenomen in onze versie van de code.
De Code instellen
De volledige code kan worden gevonden hier. De gemakkelijkste manier om te beginnen met het uitvoeren van het project is met behulp van de meegeleverde online compiler vinden op https://www.developer.mbed.org. Aangezien de server de gegevens naar te verzenden verschillend voor elke persoon is, hoeft je te doen een kleine hoeveelheid wijzigingen om de software uit te voeren. Eerst, ga naar het bestand "main.h", en verander de regel #3 zodat het zegt:
#define URL "Your_URL"
Waar Your_URL de URL die is wilt u de gegevens worden verzonden naar. Merk op dat u moet de URL tussen de aanhalingstekens zetten. De beste site die we vonden voor het verzenden van gegevens is RequestBin. Eenvoudig maken van een RequestBin, de "Bin URL kopiëren" (van de vorm "http://requestb.in/19lz95m1") naar het Your_URL-veld, en vernieuw de pagina. De pagina zal het display de gegevens verzonden naar het door de Raad van bestuur van Nucleo. Merk op dat de gegevens weergeven, voeg de regel "? inspecteren" aan het einde van de URL.
Zodra u het bestand "main.h" hebt gewijzigd in de mbed-compiler, klikt u op de compile-knop aan de bovenkant. Het zal dan een ".bin" bestand downloaden. Kopieer dat bestand naar de Nucleo bestuur, en start u het programma uitvoert.
De Code wijzigen
Er zijn een aantal eenvoudige wijzigingen die u in de code aanbrengen kunt of de lay-out van de hardware wijzigen, wijzigen van de SIM card maatschappij (het is T-Mobile standaard), wijzigen van het aantal lezingen per verzenden en de frequentie van het nemen van een lezing. Al deze wijzigingen plaatsvinden in het bestand "main.h".
Eerst, als u wilt wijzigen van de lay-out van de hardware, kunt u de poort die is gegeven door de specifieke sensor gewoon wijzigen. Dus, bijvoorbeeld, als je de GPS TX-pin wijzigen van de standaard D6 wilde te zeggen PC_10, zou u lijn 13 te zeggen:
#define GPS_TX PC_10
Merk op dat dit niet een geldige pin verandering is, zoals we de pH sensor van TX pin op PC_10 hebben. Verder zijn alleen specifieke pinnen TX, terwijl anderen RX zijn, en velen niet zijn. Je moet kijken naar de pinout Nucleo hier om te bepalen welke pinnen zijn geldig.
Als u wilt wijzigen de APN-URL, kunt u gewoon verandering lijn 4 naar
#define NETWORK_APN "Your_network_apn"
Merk op dat net als bij de URL in het voorafgaande lid, moet u aanhalingstekens rond het netwerk APN opnemen.
Ofwel het aantal lezingen te sturen of de frequentie van het nemen van een lezing wilt wijzigen, kunnen we lijnen 6 en 7 wijzigen. Lijn 6 definieert het aantal lezingen te verzamelen alvorens te verzenden. Het aanbevolen bereik ligt tussen 1 en 100. Lijn 7 definieert u het aantal seconden tussen elke lezing voor slapen. De standaardinstelling is 360, en dus het duurt een lezing elke 6 minuten (dus 10 per uur). Dit kan worden gewijzigd in bijna elk positief getal, maar zeer grote aantallen zullen hebben undefined gedrag.
Deze zijn waarschijnlijk het primaire bewerkingen die u zou willen veranderen, maar meer geavanceerde bewerkingen zijn opgenomen in de volgende sectie.
Wijzigen van de Code (Geavanceerd)
De belangrijkste "Geavanceerd" bewerken die we ons richten op is het toevoegen van een sensor. Dit vereist een behoorlijke hoeveelheid wijzigingen, maar is niet vreselijk ingewikkeld. Ten eerste, je moet omvatten van de sensor-bibliotheek in de map Full-Project in de mbed-compiler en voeg de juiste opnemen regel in "main.cpp" (bijvoorbeeld #include "Custom_Sensor.h"). Vervolgens moeten we veranderen de lezing struct in "main.h" door het toevoegen van de regel (s) voor welke sensor u wilt opnemen. Bijvoorbeeld, als u opnemen van integer lezen wilt, hebt u de regel "int customSensorReading" toevoegen aan de struct. Terug naar "main.cpp" moeten we een globale exemplaar van de sensor toevoegen, maar deze wordt geïnitialiseerd. We kunnen dan gewoon de sensor toevoegen aan elk van de betrokken functies (Setup, enterSleep(), read(), enz.) te krijgen om te functioneren. De laatste belangrijke bewerking nodig is in de send() functie. Wij stellen vast dat de aanroep van "sprintf" alle velden uit de lezing struct omvat. Wij hebben zowel een geformatteerde string regel (bijvoorbeeld %d voor integer) en het bijbehorende gegevensveld (data[i].customSensorReading) op de oproep van sprintf toe te voegen. Tot slot moeten wij wijzigen de SIZE_OF_ENTRY definiëren op lijn 28 door het toevoegen van de grootte van wat gegevensstructuur die u hebt toegevoegd aan de lezing struct plus één. Dit is een beetje ingewikkelder, aangezien het moet de grootte van de structuur toegevoegd aan sprintf. Dus, als we toegevoegd een float en % 10f in sprintf genoemd, zouden we moeten toevoegen 10 + 1 = 11 tot en met de SIZE_OF_ENTRY definiëren (zoals de 10% 10f aangeeft dat u wilt kopiëren van 10 bytes aan informatie aan de sprintf tekenreeks).