Мазмұны:
- 1 -қадам:
- 2 -қадам: Бөлшектерді төменде сатып алыңыз:
- 3 -қадам: Сымдарды жалғау
- 4 -қадам: PH, DO схемаларын, SD картасын дайындаңыз
- 5 -қадам: Бағдарламалық жасақтаманы дайындаңыз
- 6 -қадам: кодтауды бастаңыз
- 7 -қадам: Сымдарды (жақсартуға болады) және СКД дисплейіндегі нәтижелер
- 8 -қадам: Деректерді импорттау және график құру
- 9 -қадам: калибрлеу
- 10 -қадам: Сым тым көп пе?
- 11 -қадам: растау:
Бейне: Температура, PH және еріген оттегі бойынша деректерді тіркеушіні қалай жасауға болады: 11 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Мақсаттары:
- $ 500 үшін деректерді тіркеуші жасаңыз. Ол температура, рН және DO туралы деректерді уақыт белгісімен және I2C байланысын қолдана отырып сақтайды.
- Неліктен I2C (интегралды схема)? Бір сенсорды бір жолға жинауға болады, егер олардың әрқайсысының бірегей мекен -жайы болса.
1 -қадам:
2 -қадам: Бөлшектерді төменде сатып алыңыз:
- Arduino MEGA 2560, $ 35,
- Arduino тақтасына арналған қуат адаптері, $ 5.98,
- LCD модулі I2C (дисплей), $ 8.99,
- Нақты уақыттағы сағат (RTC) үзілуі, $ 7.5,
- MicroSD картасы, $ 7.5,
- 4 ГБ SD картасы, $ 6.98,
- Су өткізбейтін DS18B20 сандық сенсоры, $ 9.95,
- pH зонд + жиынтықтар + стандартты буферлер, $ 149.15,
- DO probe + Kits + Standard буферлері, $ 247,45,
- Нан тақтасы, секіргіш кабель, $ 7.98,
- (Қосымша) кернеу изоляторы, $ 24,
Барлығы: $ 510,48
* Кейбір бөлшектерді (жалпы тақта сияқты) басқа сатушылардан (eBay, қытайлық сатушы) төмен бағаға сатып алуға болады. pH және DO зондтары оларды Atlas Scientific -тен алу үшін ұсынылады.
* Өткізгіштік пен кернеуді тексеру үшін мультиметр ұсынылады. Бұл шамамен 10-15 доллар тұрады (https://goo.gl/iAMDJo)
3 -қадам: Сымдарды жалғау
- Бөлшектерді төмендегі эскизде көрсетілгендей қосу үшін қосқыш/DuPont кабельдерін қолданыңыз.
- Өткізуді тексеру үшін мультиметрді қолданыңыз.
- Позитивті кернеуді (VCC) және жерге қосуды (GND) тексеріңіз (егер сіз схеманы білмесеңіз, шатастыру оңай)
- Қуат адаптерін қосыңыз және әр бөліктегі қуат индикаторын тексеріңіз. Егер күмәндансаңыз, VCC пен GND арасындағы кернеуді тексеру үшін мультиметрді қолданыңыз (5V)
4 -қадам: PH, DO схемаларын, SD картасын дайындаңыз
- РН және DO тізбектері үшін I2C -ке ауысыңыз
- РН мен DO үзілістері жіберу/алу (TX/RX) әдепкі режимі ретінде сериялық байланыспен жеткізіледі. I2C режимін пайдалану Clock line (SCL) және Data line (SDA) режимін пайдалану үшін (1): VCC, TX, RX кабельдерін ажыратпаңыз, (2): TX-ті Жерге зонд, PGND (GND емес)), (3) VCC тізбегіне қосыңыз, (4): жарық диоды жасылдан көк түске ауысқанша күтіңіз. Толығырақ 39 -беттен қараңыз (рН тізбегінің деректер кестесі,
- DO тізбегімен бірдей қадамды жасаңыз
- (егер сіз кодты тақтаға қалай жүктеу керектігін білсеңіз, оны сериялық монитор арқылы жасауға болады)
- SD картасын FAT форматына пішімдеу
5 -қадам: Бағдарламалық жасақтаманы дайындаңыз
- Arduino интеграцияланған даму ортасын (IDE) жүктеп алыңыз,
- Кітапхананы Arduino IDE -ге орнатыңыз:
- Олардың көпшілігі Arduino бағдарламалық жасақтамасымен келеді. LiquidCrystal_I2C.h GitHub арқылы қол жетімді
- USB үшін драйверді орнатыңыз. Шынайы Arduino үшін сізге біреуін орнатудың қажеті жоқ шығар. Жалпы нұсқа үшін CH340 драйверін орнату қажет (GitHub:
- Жыпылықтайтын диодты тексеру арқылы тақтаны дұрыс қосқаныңызды тексеріңіз
- 18B20 цифрлық температурасының MAC адресін қалай табуға болады. I2C сканерінің үлгісін Arduino IDE -де зонд қосылған кезде пайдалану. Әр құрылғыда бірегей MAC -адрес бар, сондықтан сіз бір ортақ сызықпен (#9) көптеген температуралық зондтарды пайдалана аласыз. 18B20 бір сымды I2C пайдаланады, сондықтан бұл I2C байланыс әдісінің ерекше жағдайы. Төменде MAC - Медициналық қатынауды бақылаудың бір әдісі (төмендегі процедураны орындаған кезде «ROM») берілген.
6 -қадам: кодтауды бастаңыз
- Төмендегі кодты Arduino IDE қойыңыз:
- Немесе кодты (.ino) жүктеңіз және Arduino IDE -де жаңа терезе пайда болады.
/*
Анықтамалық оқулықтар:
1. Температура, ORP, рН тіркеуші:
2. Қауіпсіз сандық (SD) қалқан:
Бұл код деректерді Arduino сериялық мониторына шығарады. I2C режимінде EZO рН тізбегін басқару үшін Arduino сериялық мониторына пәрмендерді енгізіңіз.
Жоғарыда келтірілген оқулықтардан, негізінен Atlas-Scientific I2C кодынан өзгертілген
Соңғы рет жаңартылған: 2017 жылдың 26 шілдесі Бинх Нгуен
*/
#қосу // I2C қосыңыз.
#pH_adress 99 анықтаңыз // EZO pH тізбегі үшін әдепкі I2C ID нөмірі.
#define DO_address 97 // EZO DO схемасы үшін әдепкі I2C ID нөмірі.
#include «RTClib.h» // I2C және Wire lib арқылы қосылған DS1307 RTC көмегімен күн мен уақыт функциялары
RTC_DS1307 rtc;
#қосу // SD либерарийі үшін
#қосу // деректерді сақтау үшін SD картасы
const int chipSelect = 53; // Adafruit SD-тің үзілуін анықтау керек //
// DO = MISO, DI = MOSI, ATmega pin#: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)
char logFileName = «dataLT.txt»; // тәжірибені анықтау үшін logFileName өзгертіңіз, мысалы PBR_01_02, datalog1
ұзын id = 1; // журнал ретін енгізу үшін идентификатор нөмірі
#қосу
LiquidCrystal_I2C LCD (0x27, 20, 4);
#қосу
#қосу
ON_WIRE_BUS 9 анықтаңыз // температура датчигі үшін түйреуішті # анықтаңыз
OneWire oneWire (ONE_WIRE_BUS);
DallasTemature температура сенсорлары (& oneWire);
DeviceAddress ProbeP = {0x28, 0xC2, 0xE8, 0x37, 0x07, 0x00, 0x00, 0xBF}; // MAC -адрес, әр зондқа тән
String dataString; // барлық деректерді сақтаудың негізгі нұсқасы
String dataString2; // басып шығару үшін Temperature/pH/DO сақтаудың уақытша нұсқасы
char компьютерлік деректері [20]; // Atlas Scientific -тен нұсқаулық: біз компьютерден/mac/басқасынан кіретін деректерді сақтау үшін 20 байтты таңбалық массив жасаймыз.
алынған байт_компьютерден = 0; // қанша таңба алынғанын білуіміз керек.
байт serial_event = 0; // компьютерден/mac/басқа компьютерден деректер алынған кезде сигнал беретін жалауша.
байт коды = 0; // I2C жауап кодын ұстау үшін пайдаланылады.
pH pH_мәліметтері [20]; // біз рН тізбегінен кіріс мәліметтерін ұстап тұру үшін 20 байтты таңбалар массивін жасаймыз.
байт in_char = 0; // рН тізбегінен байттарда сақтау үшін 1 байтты буфер ретінде қолданылады.
байт i = 0; // есептегіш ph_data массиві үшін пайдаланылады.
int time_ = 1800; // EZO класс рН тізбегіне жіберілген командаға байланысты қажетті кідірісті өзгерту үшін қолданылады.
pH_float қалқыма; // float var рН өзгермелі мәнін ұстау үшін қолданылады.
char DO_data [20];
// өзгермелі temp_C;
void setup () // аппараттық инициализация.
{
Serial.begin (9600); // сериялық портты қосу.
Wire.begin (pH_adress); // рН зондының I2C портын қосыңыз
Wire.begin (DO_adress);
lcd.init ();
lcd.begin (20, 4);
lcd.backlight ();
lcd.home ();
lcd.print («Сәлем PBR!»);
lcd.setCursor (0, 1);
lcd.print («Басталуда…»);
Serial.print («RTC - бұл …»);
егер (! rtc.begin ())
{
Serial.println («RTC: Нақты уақыттағы сағат… ТАБЫЛМАДЫ»);
while (1); // (Serial.println («RTC: Нақты уақыттағы сағат… ТАБЫЛҒАН»));
}
Serial.println («ЖҮРГІЗУ»);
Serial.print («Нақты уақыттағы сағат …»);
егер (! rtc.isrunning ())
{rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))));
}
Serial.println («ЖҰМЫС»);
lcd.setCursor (0, 0);
lcd.println («RTC: OK»);
Serial.print («SD картасы …»); // картаның бар -жоғын және инициализациялауға болатынын қараңыз:
егер (! SD.begin (chipSelect))
{Serial.println («Сәтсіз»); // артық ештеңе жасамаңыз:
қайтару;
}
Serial.println («Жарайды»);
lcd.setCursor (0, 1);
lcd.println («SD картасы: жарайды»);
Serial.print («Журнал файлы:»);
Serial.print (logFileName);
Serial.print («…»);
Файл logFile = SD.open (logFileName, FILE_WRITE); // файлды ашыңыз. «деректер тізімі» және тақырыпты басып шығарыңыз
егер (logFile)
{
logFile.println («,,,»); // алдыңғы орында деректер бар екенін көрсетеді
Жол тақырыбы = «Date -Time, Temp (C), pH, DO»;
logFile.println (тақырып);
logFile.close ();
Serial.println («ДАЙЫН»);
//Serial.println(dataString); // сериялық портқа да басып шығарыңыз:
}
else {Serial.println («деректер каталогын ашу қатесі»); } // егер файл ашық болмаса, қатені шығарыңыз:
lcd.setCursor (0, 2);
lcd.print («Журнал файлы:»);
lcd.println (logFileName);
кешіктіру (1000);
сенсорлар.begin ();
sensors.setResolution (ProbeP, 10); // 10 - рұқсат (10 биттік)
lcd.clear ();
id = 0;
}
бос цикл ()
{// негізгі цикл.
dataString = Жол (id);
dataString = Жол (',');
DateTime now = rtc.now ();
dataString = Жол (now.year (), DEC);
dataString += Жол ('/');
dataString += Жол (now.month (), DEC);
dataString += Жол ('/');
dataString += Жол (now.day (), DEC);
dataString += Жол ('');
dataString += Жол (now.hour (), DEC);
dataString += Жол (':');
dataString += Жол (now.minute (), DEC);
dataString += Жол (':');
dataString += Жол (now.second (), DEC);
lcd.home ();
lcd.print (dataString);
sensors.requestTemperatures ();
displayTemperature (ProbeP);
Wire.beginTransmission (pH_adress); // тізбекті оның ID нөмірі бойынша шақырыңыз
Wire.write ('r'); // r кодын үнемі оқу керек
Wire.endTransmission (); // I2C деректерді беруді тоқтату.
кешіктіру (уақыт_); // схема нұсқаулықты аяқтағанша дұрыс уақытты күтіңіз.
Wire.requestFrom (pH_адресі, 20, 1); // тізбеге қоңырау шалыңыз және 20 байтты сұраңыз (бұл бізге қажет мөлшерден көп болуы мүмкін)
while (Wire.available ()) // алуға болатын байттар бар ма?
{
in_char = Wire.read (); // байт алу.
if ((in_char> 31) && (in_char <127)) // таңбаның қолдануға болатынын тексеріңіз (басып шығаруға болады)
{
pH_мәліметтері = in_char; // бұл байтты массивке жүктеңіз.
i+= 1;
}
if (in_char == 0) // егер бізге нөлдік пәрмен жіберілгенін көрсек.
{
i = 0; // i есептегішін 0 қалпына келтіріңіз.
Wire.endTransmission (); // I2C деректерді беруді тоқтату.
үзіліс; // while циклінен шығу.
}
}
serial_event = 0; // сериялық оқиға жалаушасын қалпына келтіру.
dataString2 += «,»;
dataString2 += Жол (pH_мәліметтері);
Wire.beginTransmission (DO_address); // тізбекті оның ID нөмірі бойынша шақырыңыз
Wire.write ('r');
Wire.endTransmission (); // I2C деректерді беруді тоқтату
кідіріс (уақыт_); // тізбек нұсқаулықты аяқтағанша дұрыс уақытты күтіңіз
Wire.requestFrom (DO_адресс, 20, 1); // тізбекті шақырыңыз және 20 байтты сұраңыз
while (Wire.available ()) // алуға болатын байттар бар ма?
{
in_char = Wire.read (); // байт алу.
if ((in_char> 31) && (in_char <127)) // таңбаның қолдануға болатынын тексеріңіз (басып шығаруға болады), әйтпесе in_char.txt файлының басында символды қамтиды
{DO_data = in_char; // бұл байтты массивке жүктеңіз
i+= 1; // массив элементінің есептегішін шығарады
}
егер (in_char == 0)
{// егер бізге нөлдік пәрмен жіберілгенін көрсек
i = 0; // i есептегішін 0 қалпына келтіріңіз.
Wire.endTransmission (); // I2C деректерді беруді тоқтату.
үзіліс; // while циклінен шығу.
}
}
serial_event = 0; // сериялық оқиға жалаушасын қалпына келтіру
pH_float = atof (pH_data);
dataString2 += «,»;
dataString2 += Жол (DO_data);
lcd.setCursor (0, 1);
lcd.print («Температура/ pH/ DO»);
lcd.setCursor (0, 2);
lcd.print (dataString2);
dataString += ',';
dataString += dataString2;
Файл dataFile = SD.open (logFileName, FILE_WRITE); // файлды ашыңыз. Назар аударыңыз, бір уақытта тек бір файлды ашуға болады, сондықтан екіншісін ашпас бұрын оны жабу керек.
if (dataFile) // егер файл қол жетімді болса, оған жазыңыз:
{
dataFile.println (dataString);
dataFile.close ();
Serial.println (dataString); // сериялық портқа да басып шығарыңыз:
}
else {Serial.println («деректер каталогын ашу қатесі»); } // егер файл ашық болмаса, қатені шығарыңыз:
lcd.setCursor (0, 3);
lcd.print («Жүгіру (x5м):»);
lcd.setCursor (15, 3);
lcd.print (id);
id ++; // келесі итерацияны бір идентификаторды көбейту
dataString = «»;
кешіктіру (300000); // кешігу 5 минут = 5*60*1000 мс
lcd.clear ();
} // негізгі циклды аяқтаңыз
void display Температура (DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC (deviceAddress);
if (tempC == -127.00) lcd.print («Температура қатесі»);
else dataString2 = Жол (tempC);
} // код осында аяқталады
- Құралдар/Порт астындағы Arduino IDE арқылы дұрыс COM портын таңдаңыз
- Ардуино тақтасын таңдаңыз. Мен Mega 2560 қолдандым, себебі оның ішкі жады көбірек. Arduino Nano немесе Uno бұл орнатумен жақсы жұмыс істейді.
- Тексеріңіз, кодтаңыз және кодты жүктеңіз
7 -қадам: Сымдарды (жақсартуға болады) және СКД дисплейіндегі нәтижелер
- Ескерту: 2-3 ай үздіксіз жұмыс істегеннен кейін мен DO зондынан рН зондына дейін шу таптым. Atlas Scientific мәліметтері бойынша, рН, өткізгіштік зондтары бірге жұмыс істегенде желідегі кернеу изоляторы ұсынылады. Толығырақ 9 -бетте (https://goo.gl/d62Rqv)
- Журналға енгізілген деректер (біріншісінде pH мен DO деректерінің алдында басылмаған таңбалар бар). Мен кодты тек басып шығарылатын таңбаларға рұқсат беру арқылы сүздім.
8 -қадам: Деректерді импорттау және график құру
- Деректер қойындысы астындағы мәтіннен деректерді импорттау (Excel 2013)
- Деректерді үтірмен бөліңіз (сондықтан әр енгізілгеннен кейін үтір қою пайдалы)
- Деректерді сызыңыз. Төмендегі әрбір деректерде шамамен 1700 нүкте бар. Өлшеу аралығы - 5 минут (реттелетін). DO және рН тізбектері үшін деректерді оқу үшін ең төменгі мән 1,8 сек.
9 -қадам: калибрлеу
- Сандық температура сенсоры (18В20) айырмашылықты тікелей температураға реттеу арқылы калибрленуі мүмкін. Әйтпесе, егер өтемақы мен көлбеу калибрлеуді қажет етсе, / libraries / DallasTemperature қалтасындағы DallasTemperature.cpp #453 жолындағы мәндерді өзгерту арқылы жасауға болады.
- РН және DO зондтары үшін зондтарды ілеспе ерітінділермен калибрлеуге болады. Сіз Atlas Scientific кодының үлгісін қолданып, осы файлдың нұсқауларын орындауыңыз керек.
- Калибрлеу мен температураны өтеу үшін рН зондының (https://goo.gl/d62Rqv) 26 және 50 беттерін, сонымен қатар DO зондының 7-8 және 50 беттерін (https://goo.gl/mA32mp) орындаңыз. Алдымен, Atlas ұсынған жалпы кодты қайта жүктеңіз, сериялық мониторды ашып, тиісті пәрменді енгізіңіз.
10 -қадам: Сым тым көп пе?
- Сіз SD картасы мен нақты уақыт модулін Arduino тақталарына арналған Dragino Yun Shield көмегімен жоя аласыз (https://goo.gl/J9PBTH). Юн Шилдпен жұмыс істеу үшін кодты өзгерту қажет болды. Міне бастау үшін жақсы жер (https://goo.gl/c1x8Dm)
- Электр сымдары тым көп: Atlas Scientific EZO тізбектері үшін нұсқаулық жасады (https://goo.gl/dGyb12) және дәнекерленген тақта (https://goo.gl/uWF51n). 18B20 цифрлық температурасын біріктіру мына жерде (https://goo.gl/ATcnGd). Сіз Raspberry Pi -де жұмыс істейтін Raspbian (Debian Linux нұсқасы) командаларымен таныс болуыңыз керек (https://goo.gl/549xvk)
11 -қадам: растау:
Бұл менің микробалдырларды өсіру үшін фотобиореактормен жұмыс жасаған постдокторлық зерттеулер кезіндегі қосалқы жобам. Менің ойымша, тараптар мұны жүзеге асыру үшін жағдай жасады деп есептеймін. Біріншіден, DE-EE0007093 гранты: «СО2 атмосферасын байыту және жеткізу (ACED)», АҚШ Энергетика департаменті, Энергия тиімділігі және жаңартылатын энергия басқармасы балдырларға арналған биоотындар мен биологиялық өнімдер. Мен электроника мен Arduino -мен жұмыс жасауға мүмкіндік бергені үшін Аризона штатының университетінің Biodesign Swette орталық биотехнология орталығында доктор Брюс Э. Риттманға алғыс айтамын. Мен экологиялық инженерия бойынша оқыдым, негізінен химия, микробиология.
Ұсынылған:
WiFi гидропоникалық есептегішке еріген оттегін қалай қосуға болады: 6 қадам
WiFi гидропоникалық есептегішке еріген оттегіні қалай қосуға болады: Бұл оқулық EZO D.O схемасын және зондты WiFi Hydroponics жиынтығына Atlas Scientific -тен қалай қосуға болатынын көрсетеді. Пайдаланушыда wifi гидропоникалық жиынтығы бар және еріген оттегін қосуға дайын деп есептеледі. ЕСКЕРТУ: Atlas Sci
Ылғалдылық пен температураны нақты уақыт режимінде Arduino UNO және SD-карта көмегімен қалай жасауға болады - DHT11 Proteus-та деректерді тіркеуші модельдеу: 5 қадам
Ылғалдылық пен температураны нақты уақыт режимінде Arduino UNO және SD-карта көмегімен қалай жасауға болады | DHT11 Proteus-та деректерді тіркеуші модельдеу: Кіріспе: сәлем, бұл Liono Maker, міне YouTube сілтемесі. Біз Arduino-мен шығармашылық жоба жасаймыз және енгізілген жүйелерде жұмыс жасаймыз. Деректерді тіркеуші: Деректерді тіркеуші (сонымен қатар деректерді тіркеуші немесе деректерді тіркеуші)-бұл уақыт бойынша деректерді жазатын электрондық құрылғы
Скретч бойынша платформерді қалай жасауға болады: 6 қадам (суреттермен)
Scratch -те платформерді қалай жасауға болады: Scratch - бұл адамдар жұмыс алаңына апарып тастайтын алдын ала дайындалған блоктардың көмегімен ойындар мен басқа бағдарламалар жасайтын веб -сайт. Бүгін мен сізге платформалық ойынды нөлден қалай жасау керектігін көрсетемін
Excel -де макросты қалай жасауға болады және деректерді жеңіл түрде көшіру: 4 қадам
Excel -де макросты қалай жасау керек және деректерді қарапайым түрде қалай көшіру керек?: Сәлеметсіз бе, бұл нұсқаулық сізге макросты мысал ретінде көрсететін деректерді көшіру мен қоюдың оңай және жақсы жолымен жасауды үйретеді
Температура мен ылғалдылықтың дисплейі және Arduino және өңдеу көмегімен деректерді жинау: 13 қадам (суреттермен)
Температура мен ылғалдылықтың дисплейі және Arduino мен өңдеумен мәліметтерді жинау: Кіріспе: Бұл жоба Arduino тақтасын, сенсорды (DHT11), Windows компьютерін және өңдеу (тегін жүктелетін) бағдарламасын пайдаланып, температураны, ылғалдылықты сандық және бар диаграмма формасы, уақыт пен күнді көрсету және санау уақытын іске қосу