Sigfox talar växten (4 / 9 steg)
Steg 4: Arduino kod med (ATMEL sköld)
Installera Arduino IDE:
Du måste installera Arduino IDE: https://www.arduino.cc/en/Main/Software
Välj ditt OS, ladda ner den och installera den.
Få tag på källkoden:
Du kan hämta källkod på Github: https://github.com/luisomoreau/sigfox_talking_plant_atmel
Grundläggande förståelse för Arduino programmering:
Innan du börjar varje program, vi börjar med två "base" funktioner: ogiltigförklara setup() och Tom loop().
- void setup() utförs i första. Det används för att initiera kortet.
- void loop() körs oändligt (så länge power tillhandahålls)
Se mer på arduino.cc
Vårt program:
Öppna filen sigfox_talking_plant_atmel.ino i Arduino IDE. Du kommer att se att både setup() och loop() funktioner är närvarande. Två andra funktioner är också närvarande, sensorActivity() och sendValues().
Nu måste vi definiera indata, variabler och sovande tid:
I början av programmet ser du:
- #define TIMEINTERVALL 3600000; Detta är tidsintervallet mellan varje sensor värderar läsning. 3600000 motsvarar en timme i millisekunder (60 min x 60 sekunder x 1000)
- #define photores A0; Vi definierar pin A0 vara ingångsstift att läsa värden från fotocellen.
- #define fukt A1; Vi definierar pin A1 vara ingångsstift att läsa värden från fukt sensor.
- osignerade långa timer;
- unsigned int lum;
- unsigned int fuktig;
Låt oss ha en djupare titt in funktioner:
- Setup():
I denna funktion, kortet är påbörjas, kontrollerar vi att skölden är närvarande, vi aktivera den och vi får ID och PAC numret från skölden. Sedan vi satte det i sovande läge och starta timern.
- loop():
Det finns två alternativ att aktivera funktionen sensorActivity. Du kan antingen trycka på knappen eller vänta för förseningen definieras med TIMEINTERVALL värde.
- sensorActivity():
Denna funktion kommer att användas att läsa värdena från sensorer och sedan anropa funktionen sendValues. För ljusstyrka och fukt sensorer, är de inte integrerade med sköld biblioteket. Vi måste därför använda funktionen analogRead för att få indatavärdet.
Jag använde en kartfunktion kan du konvertera det i procent och kalibrera indata.
För temperaturen, vi ue librairie, alltså måste vi aktivera sköld med SIGsh.SIGFOXon() och använda SIGsh.readTemp() för att få temperaturen.
Slutligen, vi anropar funktionen sendValues() med fukt, luminositet och temperatur som parametrar.
I koden ingår makt också
- sendValues():
Först skapar vi en buffert för att lägga till de erhållna värdena.
Som Sigfox använder mycket liten data, måste vi optimera den. Det är därför vi bara ta den lägre byten av heltalsvärden.
Förklaring: unsigned int vikt är 16 bitar (2 byte) på Atmega-baserade styrelser. Sigfox kan skicka upp till 12 byte. Som de värden vi får kommer att vara mellan 0 och 100, är 1 byte nog att lagra dem.
Se mer om heltal vikter här.
Då vi sända bufferten och längd med hjälp av medföljande biblioteket (SIGsh.sendMessage)
Kör koden:
Nu försök kompilera koden med knappen check i det övre vänstra hörnet och ladda upp den med hjälp av knappen bara nästa. (Glöm inte att lägga till den seriella porten är det identifieras inte automatiskt: Verktyg > Serial Port > din arduino port).
Öppna den seriella monitorn och tryck på knappen. Om allt fungerar bra. Du kommer att få status "OK" på konsolen.
Nästa steg är att aktivera ditt kort.