Stap 6: Sketch Setup
Ik gebruikte versie van de Arduino 1.0.3.
De volgende bibliotheken moeten worden toegevoegd. Ze zijn in een zip-bestand:
Adafruit_GFX LCD5110
Adafruit_PCD8544 LCD5110
DallasTemperature DS18B20
Één draad DS18B20
Narcoleptic Atmega328 slaap
RF24Master NRF24L01 +
RF24NetworkMaster NRF24L01 +
DS18B20 adres
Elke DS18B20 sensor heeft een uniek adres. U moet weten dat adres, zodat u met het praten kunt.
Ik zou adviseren dat u elke DS18B20 op een breadboard test en haar adres krijgt.
Als u dit niet hebt gedaan of kan me niet herinneren, is hier een manier om het te vinden nadat het al geïnstalleerd op een van deze PCB's.
De TemperatureLCD5110 PCB's of RemoteTemperature PCB verbinden met uw PC met een USB adapter. Ik gebruik een PL2303 module, maar u kunt ook een USB-BUB.
Waarschuwing: Aangezien de RemoteTemperature PCB's niet krijg spanning van de USB, moet u een 18650 batterij verbinden met hen zelfs te laden van een schets van de Arduino.
In de omgeving van de Arduino, Controleer of dat de juiste seriële poort is geselecteerd. Controleer of dat het juiste bord is geselecteerd:
TemperatureLCD5110 PCB Arduino UNO
RemoteTemperature PCB Arduino Pro of Pro Mini (3,3 v, 8 MHz) w / ATmega328
Onder 'Bestand' 'voorbeelden' Ga naar privacy en selecteer
DS18x20_Temperature
In de sketch over acht lijnen naar beneden ziet u dit
Privacy ds(10); op pin 10 (een 4.7K weerstand is nodig)
10 is de digitale pen gebruikt in het voorbeeld. Verander het naar:
Privacy ds(4); op pin 10 (een 4.7K weerstand is nodig)
Het uploaden van het programma. Open uw seriële Monitor en stel voor 9600 baud. U ziet iets als het volgende beeld.
De eerste regel toont het adres: 28 6B 88 B4 4 0 0 D1
FYI, dit is in de hexadecimale notatie. Schrijf het op of zet het in een database.
Als u het milieu afsluit, moet u niet de wijzigingen op te slaan.
NRF24L01 adres:
De modules NRF24L01 + heb ook een adres, maar in tegenstelling tot de DS18B20 zijn ze niet uniek voor de fysieke module. De adressering gebeurt in software.
Nu, ik gebruik ManiacBug van netwerk adressering, RF24NetworkMaster die een uitbreiding van zijn RF24 bibliotheek is.
Voor deze versie, het kanaal is 90, knooppunt 0 is de PCB van de TemperatureLCD5110 en de RemoteTemperature-PCB's zijn knooppunten 1 – 5. Deze sketch zal geen ondersteuning voor de PCB's meer dan 5 RemoteTemperature.
TemperatureLCD5110 PCB schets setup:
De TemperatureLCD5110-PCB schets moet worden opgezet voor uw specifieke situatie. Eerst de DS18B20 adres moet overeenkomen met de sensor.
Met behulp van een teksteditor (ik gebruik Notepad ++ maar Kladblok of Wordpad zal werken), open LCD5110Receive.ino.
Zoek de regel vergelijkbaar met deze:
DeviceAddress Therm1 = {0x28, 0x6B, 0x88, 0xB4, 0x04, 0x00, 0x00, 0xD1};
Het zodanig wijzigen dat de hexadecimale getallen overeenkomen met het adres dat u op uw DS18B20 gevonden. (Opmerking: dat elk nummer wordt voorafgegaan door 0 x, zodat het wordt geïdentificeerd als hexadecimale. 0x0 of 0x00 zou moeten werken)
Vervolgens moet u selecteert u het aantal RemoteTemperature PCB's die u wilt gebruiken:
Aantal temperatuursensoren
#define NumNodes 3
Wijzig deze zo nodig (maximaal vijf)
Een andere regel die u wilt wijzigen is het contrast van LCD5110:
display.setContrast(55); Beste contrast kiezen
Dit is onder void setup {}
Probeer verschillende waarden en beslissen over uw voorkeur.
Fahrenheit of Celsius:
Als u Celsius in plaats van Fahrenheit wilt, wijzigen:
BOOL heeft = false;
Aan:
BOOL heeft = true;
RemoteTemperature PCB schets setup:
Opmerking in de foto ik een rood getal in de lagere juiste hoek. Dit geeft de PCB RemoteTemperature.
Ik kon geweest zijn slim en elegant en misschien module specifieke informatie opgeslagen in de EEPROM maar ik ben lui dus ik schreef enkel individuele schetsen voor elke module. Wat ik zou suggereren is kopie van de directory van de TempTransmit1 naar TempTransmit2 en het Ino bestand wijzigen in TempTransmit2 en breng de volgende wijzigingen aan alle. Herhaal voor de andere modules.
Één, u moet zetten in het juiste DS18B20 adres als hierboven:
DeviceAddress Therm1 = {0x28, 0x6B, 0x88, 0xB4, 0x04, 0x00, 0x00, 0xD1};
De 0 x voorvoegsel comverts het naar een hexadecimaal getal.
Twee, u moet zetten in het juiste node adres
Adres van onze knooppunt
Const uint16_t this_node = 1;
Verander het naar het nummer dat u hebt gemarkeerd op de PCB. Opstarten met 1 en volgorde.
U kunt ook de sleepDelay wijzigen.
int sleepDelay = 10000; in milliseconden
Dit is de lengte van de tijd (10 seconden), de AtMega slaapt tussen het verzenden van de monsters. Ik ben er tamelijk zeker van dat is beperkt tot een maximum van ongeveer 32 seconden. Als u de sleepDelay te verhogen, betekent het dat de batterij duurt een beetje langer tussen lasten.