Stap 4: Arduino code met behulp van (ATMEL shield)
Arduino IDE te installeren:
U wilt installeren van de Arduino IDE: https://www.arduino.cc/en/Main/Software
Kies uw OS, het downloaden en installeren.
Haal de broncode:
U kunt de broncode op Github downloaden: https://github.com/luisomoreau/sigfox_talking_plant_atmel
Basiskennis van de programmering van Arduino:
Voordat u begint elk programma, we beginnen met twee "base" functies: void setup en void loop.
- VOID Setup wordt uitgevoerd in eerste. Het wordt gebruikt voor het initialiseren van de kaart.
- void loop is uitgevoerd oneindig (zolang kracht wordt geleverd)
Meer info op arduino.cc
Ons programma:
Open het bestand sigfox_talking_plant_atmel.ino in de Arduino IDE. U zult zien dat zowel loop als Setup functies aanwezig zijn. Twee andere functies zijn ook aanwezig, sensorActivity() en sendValues().
Nu moeten we definiëren de input, de variabelen en de slapende tijd:
Bij het begin van het programma, zult u het volgende zien:
- #define TIMEINTERVALL 3600000; Dit is het interval tussen elke sensor-waardes lezen. 3600000 komt overeen met een uur in milliseconden (60 min x 60 seconden x 1000)
- #define photores A0; We definiëren de pin A0 te zijn aan de waarden van de fotocel leest de input vastmaken.
- #define vocht a1 worden verkregen; We definiëren de pin A1 als de invoer pin te lezen van de waarden van de vochtigheid sensor.
- niet-ondertekende lange timer;
- unsigned int lum;
- unsigned int vochtig;
Laten we eens een diepere blik in de functies:
- Setup:
In deze functie, de kaart is geïnitialiseerd, wij controleren dat het schild aanwezig is, wij het activeren en we de ID en het nummer van de PAC van het schild krijgen. Wij stel het in haar slaap modus en initialiseren van de timer.
- loop:
Er zijn twee opties beschikbaar om de sensorActivity-functie te activeren. U kunt op de knop drukken of wachten voor de vertraging die is gedefinieerd met de TIMEINTERVALL-waarde.
- sensorActivity():
Deze functie zal worden gebruikt om de waarden van de sensoren lezen en roept u vervolgens de functie sendValues. Voor de helderheid en vocht sensoren, worden deze niet geïntegreerd met de bibliotheek van het schild. Daarom moeten wij de analogRead functie gebruiken om de invoerwaarde.
Ik heb een kaart-functie gebruikt om te zetten in percentage en kalibreren van de ingang.
Voor de temperatuur, we ue de librairie, dus wij moeten activeren het schild met behulp van SIGsh.SIGFOXon() en SIGsh.readTemp() gebruiken om de temperatuur.
Tenslotte vragen wij de functie van de sendValues() met de vocht, de helderheid en de temperatuur als parameters.
In de verstrekte code is de macht ook opgenomen
- sendValues():
In eerste instantie maken we een buffer als de verkregen waarden wilt optellen.
Zoals Sigfox zeer kleine gegevens gebruikt, die we willen optimaliseren. Dit is de reden waarom we alleen de lagere byte van de integer-waarden nemen.
Uitleg: unsigned int het gewicht is 16 bits (2 bytes) op Atmega gebaseerde boards. Sigfox kunt verzenden maximaal 12 bytes. Als de waarden die we krijgen tussen 0 en 100 worden, is 1 byte genoeg om hen te slaan.
Meer info over de gehele getallen gewichten hier.
Dan sturen we de buffer en de lengte met behulp van de meegeleverde bibliotheek (SIGsh.sendMessage)
Voer de code:
Probeer nu te compileren van de code met behulp van de knop controleren op de upper-left hoek en uploaden met behulp van de knop net naast. (Vergeet niet om toe te voegen de seriële poort is het niet automatisch wordt gedetecteerd: Tools > seriële poort > uw arduino-poort).
Open de seriële monitor en druk op de knop. Als alles prima werkt. U krijgt de status 'OK' op je console.
Volgende stap is het activeren van uw kaart.