ORP / pH / temperatuur datalogger (4 / 5 stap)

Stap 4: Arduino, Code en Data manipulatie


ik ben zeker niet een zeer ervaren coder.  De bijgevoegde pdf van het Wetboek, ook geplakt hieronder, werd ontwikkeld met behulp van wetenschappelijke Atlas code voor zowel hun pH en ORP schakelingen; één-draads temperatuur sensor code uit Hacktronics (http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html); en andere stukjes en beetjes die verkregen wordt uit een groot aantal chat boards en andere internet-berichten.  Danken goedheid voor de open sourcegemeenschap!  Aarzel niet om commentaar op hoe het best om het schoon te maken en maken het meer functioneel.  Het is belangrijk om te gaan naar de Hacktronics leerprogramma op het vinden van het adres voor uw bijzondere temperatuursensor, op. Ga vervolgens de code en vervang het adres dat ik heb daar met de ene voor uw sensor ertoe brengen om correct te werken.  Dat tutorial kan worden gevonden hier - http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html .

Zoals geschreven, vindt het instrument een ph, ORP en temperatuurmetingen iedere 12 seconden; dat tijdsinterval is gemakkelijk aangepast worden door het veranderen van de vertraging in het programma op lijn 95.  De lezingen worden weergegeven op het LCD-scherm, en het zal de gegevens loggen naar de SD-kaart in een tekstbestand met de naam datalog.  Als ik klaar logboekgegevens, ik open het bestand in Word, en het lijkt alsof de afbeelding.  Vervolgens heb ik een zoekopdracht en vervangen voor "^ p," (dat is een alineamarkering en een komma) en vervangen door een "^ t" (dat is een tabteken) door tabs gescheiden gegevens op te halen.  Ik sla het bestand en open het met Excel als een door tabs gescheiden tekstbestand.  Dit geeft mij een spreadsheet met de verstreken tijd sinds het begin van het programma, in milliseconden, in de eerste kolom; de pH in de tweede kolom; de ORP in de derde kolom; en de temperatuur in graden Celsius in de vierde kolom.  Als u de tijd die het programma begon, dan kunt u berekenen met behulp van Excel bijhouden van de tijd elke lezing werd genomen.  Instructies voor het manipuleren van het gegevensbestand worden gegeven in meer detail in het bijgevoegde bestand.

Code:
Bibliotheken
#include < LiquidCrystal.h > //LCD bibliotheek
#include < SoftwareSerial.h > //SoftwareSerial bibliotheek
#include < OneWire.h >
#include < DallasTemperature.h >
#include < SPI.h > //SPI bibliotheek voor SD-kaart
#include < SD.h > //SD-kaart bibliotheek

Seriële poorten
#define orprx 2 //define welke pin orp rx is gonna be
#define orptx 3 //define wat pin orp Tx is gonna be
SoftwareSerial orpserial (orprx, orptx); definieert u de ORP zachte seriële poort
#define phrx 14 //define wat pin pH rx is gonna be
#define phtx 15 //define welke pin pH Tx is gonna be
SoftwareSerial phserial (phrx, phtx);    definieert u de pH zacht seriële poort

Temperatuur sonde setup
#define ONE_WIRE_BUS 19 / / gegevens draad 19 pin op de Arduino is aangesloten
Privacy oneWire(ONE_WIRE_BUS);           Opstelling van een exemplaar van de privacy om te communiceren met alle apparaten privacy
DallasTemperature sensoren (& Privacy);     Onze privacy verwijzing naar Dallas temperatuur doorgeeft.
DeviceAddress insideThermometer = {0x28, 0xB4, 0x6B, 0xC8, 0x04, 0x00, 0x00, 0x1F};     De adressen van uw 1-Wire temperatuur sensoren moet toewijzen.

ORP variabelen definiëren
char orp_data [20];                    20 byte karakter array ORP gegevens over uw
char orp_computerdata [20];            20 byte karakter array voor binnenkomende gegevens vanaf een pc
byte orp_received_from_computer = 0;    We willen weten hoeveel teken zijn ontvangen.
byte orp_received_from_sensor = 0;      We willen weten hoeveel teken zijn ontvangen.
byte orp_startup = 0;                   gebruikt om te controleren of neemt de arduino controle van het Circuit van ORP goed.
ORP zweven = 0;                          bestemd is voor een drijvende komma thats de ORP
byte orp_string_received = 0;           gebruikt om te bepalen wanneer we een tekenreeks hebben ontvangen in het circuit van ORP

pH-servervariabelen definiëren
char ph_data [20];                    20 byte karakter array te houden inkomende pH
char ph_computerdata [20];            20 byte karakter array voor binnenkomende gegevens vanaf een pc
byte pc_debug = 0;                   Als u de pH Circuit via de seriële monitor(pc/mac/other) debug willen zou. Zoniet zet dit op 0.
byte ph_received_from_computer = 0;    We willen weten hoeveel tekens zijn ontvangen van computer
byte ph_received_from_sensor = 0;      We willen weten hoeveel tekens hebben ontvangen pH sensor
byte ph_startup = 0;                   gebruikt om te controleren of neemt de arduino controle over de pH Circuit goed.
zweven ph = 0;                          bestemd is voor een drijvende komma thats de pH.
byte ph_string_received = 0;           gebruikt om te bepalen wanneer we een string van het pH-circuit hebben ontvangen.

LCD instellen
LiquidCrystal lcd (8, 9, 4, 5, 6, 7); Selecteer de pinnen gebruikt op het LCD-scherm

VOID Setup {}
Serial.begin(38400);        de hardware seriële poort inschakelen
orpserial.begin(38400);     de software seriële poort inschakelen
phserial.begin(38400);      de software seriële poort inschakelen
sensors.begin();            opstarten van temp sonde bibliotheek
sensors.setResolution (insideThermometer, 10);       Stel de temp sonde resolutie 10 bit
LCD.begin (16, 2);           Start van de LCD-bibliotheek
SD.begin(16);
pinMode (10, OUTPUT);
}

void loop {}
sensors.requestTemperatures();         Lees Temp sonde
printTemperature(insideThermometer);

orpserial.listen();
delay(100);
if(orpserial.available() > 0) {//if we zien dat het ORP Circuit een teken heeft gestuurd.
orp_received_from_sensor=orpserial.readBytesUntil(13,orp_data,20); We lezen de gegevens die worden verzonden vanaf ORP Circuit totdat we zien een < CR >. We rekenen ook hoeveel teken geweest recived.
orp_data [orp_received_from_sensor] = 0; voegen we een 0 aan de plek in de matrix net na het laatste teken wij recived. Dit zal ons weerhouden transmiting onjuiste gegevens die in de buffer kan hebben gelaten.
orp_string_received = 1;                een vlag gebruikt wanneer de arduino is het regelen van het ORP Circuit te laten weten dat er een volledige tekenreeks zijn ontvangen.
}
phserial.listen();
delay(100);
if(phserial.available() > 0) {//if we zien dat de pH Circuit een teken heeft gestuurd.
ph_received_from_sensor=phserial.readBytesUntil(13,ph_data,20); We lezen de gegevens verzonden van ph Circuit totdat we zien een < CR >. We rekenen ook hoeveel teken geweest recived.
ph_data [ph_received_from_sensor] = 0; voegen we een 0 aan de plek in de matrix net na het laatste teken wij recived. Dit zal ons weerhouden transmiting onjuiste gegevens die in de buffer kan hebben gelaten.
ph_string_received = 1;               een vlag gebruikt wanneer de arduino is het regelen van de pH Circuit te laten weten dat er een volledige tekenreeks zijn ontvangen.
}
}
VOID printTemperature(DeviceAddress deviceAddress)
{
int decPlaces = 0;     set temp decimalen op 0
zweven tempC = sensors.getTempC(deviceAddress);
Als (tempC ==-127.00) {}
LCD.Print ("Error getting temperatuur");
} else {}
lcd.setCursor(0,0);   positie instellen op LCD-scherm voor pH
LCD.Print("pH:");
LCD.Print (ph, 1);     pH verzenden lcd
lcd.setCursor(7,0);   positie instellen op LCD-scherm voor ORP
LCD.Print("ORP:");
LCD.Print (ORP, 0);    ORP verzenden lcd
lcd.setCursor(0,1);   positie instellen op LCD-scherm voor Temp
LCD.Print("temp:");
LCD.Print ("C");
LCD.Print(tempC,decPlaces);     Temp display in celsius
LCD.Print ("F");
LCD.Print(DallasTemperature::toFahrenheit(tempC),decPlaces);  celsius converteren naar Fahrenheit
delay(10000);          zullen wij een lezing ooit 10000ms

orpserial.Print("R\r");                     Stuur het de opdracht om een enkele lezing.
if(orp_string_received==1) {//did we krijgen gegevens terug uit het ORP Circuit?
ORP=Atof(orp_data);                    orp_data tekenreeks omzetten ORP float
Als (ORP > 800){Serial.println("high\r");} //This is het bewijs dat het is omgezet in een tekenreeks.
Als (ORP < 800){Serial.println("low\r");}  Dit is het bewijs dat het is omgezet in een tekenreeks.
orp_string_received = 0;}                Reset de tekenreeks ontvangen vlag.

phserial.Print("R\r");                      Stuur het de opdracht om een enkele lezing.
if(ph_string_received==1) {//did we gegevens terug te krijgen van de ph Circuit?
pH=Atof(ph_data);                      ph_data tekenreeks omzetten in ph float
Als (ph > = 7.5){Serial.println("high\r");} //This is het bewijs dat het is omgezet in een tekenreeks.
Als (ph < 7.5){Serial.println("low\r");}   Dit is het bewijs dat het is omgezet in een tekenreeks.
ph_string_received = 0;}                 Reset de tekenreeks ontvangen vlag.
}

lange currentTime = millis();                                Krijgen van de huidige tijd in ms (keer sinds het programma starten)
Bestand dataFile = SD.open ("datalog.txt", FILE_WRITE);         Open het bestand
Als (dataFile) {/ / als het bestand beschikbaar is, schrijven:
dataFile.println(currentTime);                         registreert de tijd in milliseconden sinds het programma is gestart
dataFile.print(",");                                   Hiermee voegt u een komma
dataFile.println(ph);                                  registreert de pH
dataFile.print(",");                                   Hiermee voegt u een komma
dataFile.println(ORP);                                 Logboeken de ORP
dataFile.print(",");                                   Hiermee voegt u een komma
dataFile.println(tempC);                               registreert de temperatuur in graden C
dataFile.print("\r");                                  Hiermee voegt u een return-teken
dataFile.close();
}
}

Gerelateerde Artikelen

ESP8266 - WIFI temperatuur datalogger - MCP9808

ESP8266 - WIFI temperatuur datalogger - MCP9808

In dit project bouwen we een eenvoudige, hoge precisie, WIFI temperatuur datalogger gebaseerd op ESP8266 module en de MCP9808-chip, een ±0, 5 ° C Maximum nauwkeurigheid digitale temperatuursensor.Functies• Nauwkeurigheid:-±0.25 (typische) van-40 ° C
Maak jezelf USB temperatuur datalogger met ATMEGA128

Maak jezelf USB temperatuur datalogger met ATMEGA128

Hallo jongens,Ik wil mijn weekend-project het met behulp van ATMEGA128 introducerenIn dit project die zullen we gebruiken draad RTC, LCD, USART, FT232RL en USB man tot manStap 1: Voorbereiden van alle onderdelen die we nodig hebt 1. ATMEGA128A2. PCB
Temperatuur datalogger

Temperatuur datalogger

een datalogger is elk apparaat dat kan worden gebruikt voor het opslaan van gegevens. Het gaat hierbij om veel data acquisitie-apparaten zoals plug-in boards of seriële communicatiesystemen die gebruik maken van een computer als een real-time systeem
Low-cost WIFI-datalogger voor temperatuur (DS18B20) gebaseerd op ESP8266 met aansluitmogelijkheden voor thingspeak.com

Low-cost WIFI-datalogger voor temperatuur (DS18B20) gebaseerd op ESP8266 met aansluitmogelijkheden voor thingspeak.com

Temperatuur datalogger gebaseerd op ESP8266 en DS18B20 1-Wire temperatuursensor.Alleen maar $5 ESP-01 bestuur en de DS18B20 sensor.Software is geschreven in LUA taal en rechtstreeks in de ESP8266 wordt uitgevoerd.Geen andere MCU nodig!Stap 1: Deel li
Leuk met de vergadering van de PIC - aflevering 8

Leuk met de vergadering van de PIC - aflevering 8

Ik heb enkele interessante temperatuurveranderingen meegemaakt in mijn leven met inbegrip van slechts een paar jaar geleden waar wij Stel een recordhoogte eendaagse en stel vervolgens een recordminimum de volgende dag. De meest interessante ervoer ik
Vak Arduino Project

Vak Arduino Project

Ik ben voortdurend spelen in Arduino land werken met nieuwe acne, displays, en sensoren. Onlangs, had ik oproep tot het bouwen van een temperatuur datalogger temperaturen van 16 verschillende locaties binnenkant van een grote elektrische vergadering
Temperatuur en vocht Datalogger + Webserver

Temperatuur en vocht Datalogger + Webserver

In dit instructable (mijn eerste instructable) zullen we het creëren van een temperatuur en vocht datalogger de posibility voor toegang tot de gegevens door web toe te voegen.De nieuwe arduino ethernet maakt alles zo makkelijk dat het lijkt alsof de
Temperatuur en licht Sensor datalogger

Temperatuur en licht Sensor datalogger

In deze tutorial maak ik een temperatuur en lichtsensor datalogger met een Arduino zodat ik verschillende locaties voor planten of plaatsen om te slapen testen kan buiten in de zomer die niet te veel zon krijgenStap 1: Dingen die je zal nodig1 Arduin
Analog-Style temperatuur meter en DataLogger met Intel Edison

Analog-Style temperatuur meter en DataLogger met Intel Edison

In dit instructable leert u hoe gegevens uit diverse sensoren en hen aanmelden met een SD-kaart, en vervolgens het weergeven van de huidige temperatuur op een analoge stijl servo gestuurde meter. Huge dankzij Intel, Instructables en Grove voor naar d
Draadloze USB-temperatuur & vocht Datalogger

Draadloze USB-temperatuur & vocht Datalogger

delen------------------------------------------------------------------------------------------------------------------------------------------------------------U-EG6 USB Emulator Debugger bronRF - 2410M source1 / source2RF-2410U- source1/ source2SHT
Arduino Rocket datalogger

Arduino Rocket datalogger

Heb je ooit wilde onderzoeken van elk aspect van uw model raketten vlucht voor slechts £15?In dit instructable ik bevatten code en instructies voor een Arduino raket datalogger voor het meten van de hoogte van de raket, versnelling, temperatuur en ro
Bouwen van een 'blackbox' datalogger voor het toevoegen op scherm weergave meters aan uw video's

Bouwen van een 'blackbox' datalogger voor het toevoegen op scherm weergave meters aan uw video's

Dit project bevat instructies over hoe te bouwen van het apparaat, alsmede een link naar de projectcode op github die worden geüpload voor het moeten zullen laten uitvoeren.Een Arduino gebaseerd datalogger met het oog op de synchronisatie van gegeven
Zonne-energie datalogger

Zonne-energie datalogger

Ooit wilde weten hoe veel zonne-energie die u zou kunnen opleveren doordat PV-cellen in een specifieke plaats op of rond uw huis?Dit Instructable toont u hoe te bouwen van een datalogger die is gebaseerd op een Arduino (of waar) Uno met gegevens-logg
Arduino IOT: Temperatuur en luchtvochtigheid (met ESP8266 WiFi)

Arduino IOT: Temperatuur en luchtvochtigheid (met ESP8266 WiFi)

Hallo iedereen! Ik ben Michalis Vasilakis uit www.ardumotive.com en in deze Instructables zal ik u tonen hoe te maken van uw eigen Internet van dingen (IOT) thermometer met behulp van de Arduino uno board.U kunt thuis, op kantoor of ergens is er een