
Orodha ya maudhui:
- Hatua ya 1:
- Hatua ya 2: Nunua Sehemu Zifuatazo:
- Hatua ya 3: Wiring
- Hatua ya 4: Andaa PH, Fanya Mizunguko, Kadi ya SD
- Hatua ya 5: Andaa Programu
- Hatua ya 6: Anza kuweka alama
- Hatua ya 7: Matokeo juu ya Wiring (inaweza Kuboresha) na Uonyesho wa LCD
- Hatua ya 8: Ingiza Takwimu na Unda Grafu
- Hatua ya 9: Upimaji
- Hatua ya 10: Wiring sana?
- Hatua ya 11: Kukubali:
2025 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2025-01-23 15:11



Malengo:
- Tengeneza kumbukumbu ya data kwa $ 500. Inahifadhi data ya joto, pH, na DO na muhuri wa wakati na kutumia mawasiliano ya I2C.
- Kwa nini I2C (Mzunguko uliojumuishwa)? Mtu anaweza kujifunga sensorer nyingi katika mstari huo kutokana na kwamba kila mmoja wao ana anwani ya kipekee.
Hatua ya 1:
Hatua ya 2: Nunua Sehemu Zifuatazo:

- Arduino MEGA 2560, $ 35,
- Adapta ya umeme kwa bodi ya Arduino, $ 5.98,
- Moduli ya LCD I2C (onyesha), $ 8.99,
- Kuzuka kwa Saa ya Saa (RTC), $ 7.5,
- Bodi ya kuzuka kwa kadi ya MicroSD, $ 7.5,
- Kadi ya SD ya 4GB, $ 6.98,
- Sensor ya Dijitali ya DS18B20 isiyo na maji, $ 9.95,
- uchunguzi wa pH + Kits + bafa za kawaida, $ 149.15,
- Fanya uchunguzi + Kits + bafa za kawaida, $ 247.45,
- Bodi ya mkate, kebo ya kuruka, $ 7.98,
- (Hiari) Voltage Isolator, $ 24,
Jumla: $ 510.48
* Sehemu zingine (kama bodi ya generic) zinaweza kununuliwa kutoka kwa wauzaji wengine (eBay, muuzaji wa Wachina) kwa bei ya chini. uchunguzi wa pH na DO unapendekezwa kuzipata kutoka kwa Atlas Scientific.
* Multimeter inashauriwa kuangalia conductivity na voltage. Inagharimu karibu $ 10-15 (https://goo.gl/iAMDJo)
Hatua ya 3: Wiring

- Tumia nyaya za jumper / DuPont kuunganisha sehemu kama inavyoonyeshwa kwenye mchoro hapa chini.
- Tumia multimeter kuangalia upitishaji.
- Angalia Chanya-Voltage Supply (VCC) na Ground (GND) (ni rahisi kutatanisha ikiwa haujui mzunguko)
- Chomeka adapta ya umeme na angalia kiashiria cha nguvu katika kila sehemu. Unapokuwa na mashaka, tumia mita nyingi kuangalia voltage kati ya VCC na GND kuwa (5V)
Hatua ya 4: Andaa PH, Fanya Mizunguko, Kadi ya SD

- Badilisha kwa I2C kwa mizunguko ya pH na DO
- Kuvunjika kwa pH na DO kunasafirishwa na mawasiliano ya Serial kama hali ya default Peleka / Pokea (TX / RX). Ili kutumia laini ya saa ya I2C (SCL), na laini ya Takwimu (SDA), badilisha hali na (1): un-plug nyaya za VCC, TX, RX, (2): ruka TX kwa Ground for Probe, PGND (sio GND), (3) kuziba VCC kwa mzunguko, (4): subiri LED ibadilike kutoka Kijani hadi Bluu. Maelezo zaidi angalia ukurasa wa 39 (Jedwali la mzunguko wa pH,
- Fanya hatua sawa na mzunguko wa DO
- (ikiwa unajua kupakia nambari ya mfano kwenye ubao, unaweza kuifanya kupitia mfuatiliaji wa serial)
- Umbiza kadi ya SD kwa muundo wa FAT
Hatua ya 5: Andaa Programu




- Pakua Mazingira ya Maendeleo ya Jumuishi ya Arduino (IDE),
- Sakinisha maktaba kwa Arduino IDE:
- Wengi wao huja na programu ya Arduino. LiquidCrystal_I2C.h inapatikana kupitia GitHub
- Sakinisha dereva kwa USB. Kwa Arduino halisi, huenda hauitaji kusanikisha moja. Kwa generic, unahitaji kufunga dereva wa CH340 (GitHub:
- Angalia ikiwa unaunganisha bodi kwa usahihi kwa kutumia jaribio la kupepesa la LED
- Jinsi ya kupata anwani ya MAC ya joto la dijiti la 18B20. Kutumia kiolezo cha skana cha I2C katika Arduino IDE na uchunguzi umeingizwa. Kila kifaa kina anwani ya kipekee ya MAC, kwa hivyo unaweza kutumia uchunguzi wa joto nyingi na laini moja iliyoshirikiwa (# 9). 18B20 hutumia waya moja I2C, kwa hivyo ni kesi maalum ya njia ya mawasiliano ya I2C. Chini ni njia moja ya kupata MAC - Udhibiti wa Upataji wa Matibabu ("ROM" unapoendesha utaratibu hapa chini).
Hatua ya 6: Anza kuweka alama

- Nakili kubandika nambari hapa chini kwa Arduino IDE:
- Au pakua nambari (.ino) na dirisha jipya linapaswa kutokea katika Arduino IDE.
/*
Mafunzo ya kumbukumbu:
1. Joto, ORP, pH logger: https://www.instructables.com/id/ORP-pH-Temperatur ……
2. Kinga ya Dijitali Iliyohifadhiwa (SD): https://learn.adafruit.com/adafruit-micro-sd-brea …….
Nambari hii itatoa data kwa mfuatiliaji wa mfululizo wa Arduino. Chapa amri kwenye mfuatiliaji wa mfululizo wa Arduino kudhibiti Mzunguko wa EZO pH katika hali ya I2C.
Imebadilishwa kutoka kwa mafunzo yaliyotajwa hapo juu, haswa kutoka kwa nambari ya I2C na Atlas-Scientific
Ilisasishwa mwisho: Julai 26, 2017 na Binh Nguyen
*/
# pamoja na // kuwezesha I2C.
#fafanua pH_adress 99 99 nambari ya kitambulisho ya I2C chaguo-msingi kwa Mzunguko wa EZO pH.
#fafanua DO_kushughulikia 97 // nambari chaguomsingi ya I2C kwa Mzunguko wa EZO DO.
# pamoja na "RTClib.h" // Tarehe na kazi za saa kutumia DS1307 RTC iliyounganishwa kupitia I2C na Wire lib
RTC_DS1307 rtc;
# pamoja # kwa maktaba ya SD
# pamoja na // kadi ya SD kuhifadhi data
const int chip Chagua = 53; // haja ya kujua kuzuka kwa Adafruit SD //
// DO = MISO, DI = MOSI, kwenye pini ya ATmega # 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)
char logFileName = "dataLT.txt"; // rekebisha logFileName kutambua jaribio lako, kwa Modele PBR_01_02, datalog1
kitambulisho kirefu = 1; // nambari ya kitambulisho kuingiza agizo la kumbukumbu
# pamoja
LiquidCrystal_I2C LCD (0x27, 20, 4);
# pamoja
# pamoja
#fafanua ON_WIRE_BUS 9 // fafanua pini # ya uchunguzi wa joto
Njia moja moja (ONE_WIRE_BUS);
Sensorer za Joto la Dallas (& OneWire);
ProbeP ya Kifaa = = 0x28, 0xC2, 0xE8, 0x37, 0x07, 0x00, 0x00, 0xBF}; // Anwani ya MAC, ya kipekee kwa kila uchunguzi
Data ya KambaKamba; // lahaja kuu ya kuhifadhi data zote
Data ya kambaString2; // lahaja ya muda ya kuhifadhi Joto / pH / DO ili kuchapishwa
char computerdata [20]; // maagizo kutoka kwa Atlas Sayansi: tunatengeneza safu ya herufi 20 kushikilia data zinazoingia kutoka kwa pc / mac / nyingine.
byte imepokea_kutoka_kompyuta = 0; // tunahitaji kujua ni wahusika wangapi wamepokelewa.
byte serial_event = 0; // bendera kuashiria wakati data imepokelewa kutoka kwa pc / mac / nyingine.
nambari ya baiti = 0; // ilitumika kushikilia nambari ya majibu ya I2C.
char pH_data [20]; // tunatengeneza safu ya herufi 20 kushikilia data zinazoingia kutoka kwa mzunguko wa pH.
byte in_char = 0; // kutumika kama bafa 1 ya baiti kuhifadhia ka zilizofungwa kutoka Mzunguko wa pH.
baiti i = 0; // counter inayotumika kwa safu ya ph_data.
wakati_ = 1800; // ilitumika kubadilisha ucheleweshaji unaohitajika kulingana na amri iliyotumwa kwa Mzunguko wa Darasa la pH la EZO.
kuelea pH_float; // kuelea var kutumika kushikilia thamani ya kuelea ya pH.
char DO_data [20];
// kuelea temp_C;
kuanzisha batili () // uanzishaji wa vifaa.
{
Serial. Kuanza (9600); // wezesha bandari ya serial.
Waya.anza (pH_adress); // kuwezesha bandari ya I2C kwa uchunguzi wa pH
Anzisha waya. Anza (DO_ anwani);
lcd.init ();
lcd kuanza (20, 4);
lcd taa ya nyuma ();
lcd.home ();
lcd.print ("Hello PBR!");
lcd.setCursor (0, 1);
lcd.print ("Inaanzisha…");
Serial.print ("RTC ni…");
ikiwa (! rtc. anza ())
{
Serial.println ("RTC: Saa ya saa halisi… HAIJAPATIKANA");
(1);
}
Serial.println ("INAENDESHA");
Serial.print ("Saa halisi ya Wakati…");
ikiwa (! rtc.isrunning ())
{rtc.rekebisha (Tarehe ya Wakati (F (_ DATE_), F (_ TIME_)));
}
Serial.println ("KUFANYA KAZI");
lcd.setCursor (0, 0);
lcd.println ("RTC: OK");
Serial.print ("kadi ya SD…"); // angalia ikiwa kadi iko na inaweza kuanza:
ikiwa (! SD. anza (Chip Chagua))
{Serial.println ("Imeshindwa"); // usifanye chochote zaidi:
kurudi;
}
Serial.println ("Sawa");
lcd.setCursor (0, 1);
lcd.println ("Kadi ya SD: Sawa");
Serial.print ("Log File:");
Serial.print (logFileName);
Serial.print ("…");
File logFile = SD.open (logFileName, FILE_WRITE); // kufungua faili. "orodha" na chapisha kichwa
ikiwa (logFile)
{
logFile.println (",,,"); // onyesha kulikuwa na data katika kukimbia hapo awali
Kichwa cha kichwa = "Tarehe -Time, Temp (C), pH, DO";
logFile.println (kichwa);
logFile. karibu ();
Serial.println ("TAYARI");
//Serial.println (dataString); // chapisha kwenye bandari ya serial pia:
}
mwingine {Serial.println ("kosa la kufungua orodha"); } // ikiwa faili haijafunguliwa, toa hitilafu:
lcd.setCursor (0, 2);
lcd.print ("Ingia faili:");
lcd.println (logFileName);
kuchelewesha (1000);
sensorer kuanza ();
sensorer. Usuluhishi (ProbeP, 10); // 10 ndio azimio (10bit)
lcd wazi ();
id = 0;
}
kitanzi batili ()
{// kitanzi kuu.
dataString = Kamba (id);
dataString = Kamba (',');
DateTime sasa = rtc.now ();
dataString = Kamba (sasa mwaka (), DEC);
dataString + = Kamba ('/');
dataString + = Kamba (sasa. mwezi (), DEC);
dataString + = Kamba ('/');
dataString + = Kamba (sasa.day (), DEC);
dataString + = Kamba ( );
dataString + = Kamba (sasa.hour (), DEC);
dataString + = Kamba (':');
dataString + = Kamba (sasa.minute (), DEC);
dataString + = Kamba (':');
dataString + = Kamba (sasa. ya pili (), DEC);
lcd.home ();
lcd.print (dataString);
sensorer.ombi ombi Joto ();
kuonyesha Joto (ProbeP);
Uwasilishaji wa waya (pH_adress); // piga mzunguko kwa nambari yake ya kitambulisho
Andika waya ('r'); // nambari ngumu r kusoma kila wakati
Uwasilishaji wa waya (); // kumaliza usambazaji wa data ya I2C.
kuchelewesha (muda_); // subiri wakati sahihi wa mzunguko kukamilisha maagizo yake.
Ombi la Waya.kutoka (pH_adress, 20, 1); // piga mzunguko na uombe ka 20 (hii inaweza kuwa zaidi ya tunayohitaji)
wakati (Wire.available ()) // kuna baiti za kupokea
{
in_char = Wire.read (); // pokea baiti.
ikiwa ((in_char> 31) && (in_char <127)) // angalia ikiwa char inaweza kutumika (inaweza kuchapishwa)
{
pH_data = katika_char; // pakia baiti hii katika safu yetu.
i + = 1;
}
ikiwa (in_char == 0) // ikiwa tunaona kuwa tumetumwa amri isiyo na maana.
{
i = 0; // kuweka upya kaunta i kwa 0.
Uwasilishaji wa waya (); // kumaliza usambazaji wa data ya I2C.
kuvunja; // toka kitanzi cha wakati.
}
}
serial_event = 0; // kuweka upya bendera ya tukio la serial.
dataString2 + = ",";
dataString2 + = Kamba (pH_data);
Wire.beginUwasilishaji (DO_adress); // piga mzunguko kwa nambari yake ya kitambulisho
Andika waya ('r');
Uwasilishaji wa waya (); // kumaliza usambazaji wa data ya I2C
kuchelewesha (muda_); // subiri wakati sahihi wa mzunguko kukamilisha maagizo yake
Ombi la Wire. Toka (DO_ anwani, 20, 1); // piga mzunguko na uombe ka 20
wakati (Wire.available ()) // kuna baiti za kupokea.
{
in_char = Wire.read (); // pokea baiti.
ikiwa ((in_char> 31) && (in_char <127)) // angalia ikiwa char inaweza kutumika (inaweza kuchapishwa), vinginevyo in_char ina ishara mwanzoni kwenye faili ya.txt
{DO_data = katika_char; // pakia baiti hii katika safu yetu
i + = 1; // kuingiza kaunta kwa kipengee cha safu
}
ikiwa (in_char == 0)
{// ikiwa tunaona kuwa tumetumiwa amri batili
i = 0; // weka kaunta i hadi 0.
Uwasilishaji wa waya (); // kumaliza usambazaji wa data ya I2C.
kuvunja; // toka kitanzi cha wakati.
}
}
serial_event = 0; // kuweka upya bendera ya tukio la serial
pH_float = atof (pH_data);
dataString2 + = ",";
dataString2 + = Kamba (DO_data);
lcd.setCursor (0, 1);
lcd.print ("Joto / pH / DO");
lcd.setCursor (0, 2);
lcd.print (dataString2);
dataString + = ',';
dataString + = dataString2;
Faili ya dataFile = SD. Kufungua (logFileName, FILE_WRITE); // kufungua faili. kumbuka kuwa faili moja tu inaweza kuwa wazi kwa wakati mmoja, kwa hivyo lazima uifunge hii kabla ya kufungua nyingine.
ikiwa (dataFile) // ikiwa faili inapatikana, andika:
{
dataFile.println (dataString);
dataFile. karibu ();
Serial.println (dataString); // chapisha kwenye bandari ya serial pia:
}
mwingine {Serial.println ("kosa la kufungua faili ya orodha"); } // ikiwa faili haijafunguliwa, toa hitilafu:
lcd.setCursor (0, 3);
lcd.print ("Mbio (x5m):");
lcd.set Mshale (15, 3);
lcd.print (id);
kitambulisho ++; // ongeza kitambulisho kimoja ijayo
dataString = "";
kuchelewesha (300000); // kuchelewesha mintues 5 = 5 * 60 * 1000 ms
lcd wazi ();
} // kumaliza kitanzi kuu
onyesha batili Joto (KifaaAddress kifaaAdress)
{
kuelea tempC = sensorer.getTempC (kifaaAddress);
ikiwa (tempC == -127.00) lcd.print ("Kosa la Joto");
dataString2 = Kamba (tempC);
} // nambari inaishia hapa
- Chagua bandari sahihi ya COM kupitia Arduino IDE chini ya Zana / Bandari
- Chagua bodi ya Arduino inayofaa. Nilitumia Mega 2560 kwa sababu ina kumbukumbu zaidi ya ndani. Arduino Nano au Uno inafanya kazi vizuri na usanidi huu.
- Angalia na nambari na upakie nambari
Hatua ya 7: Matokeo juu ya Wiring (inaweza Kuboresha) na Uonyesho wa LCD




- Tazama: Nilipata kelele kutoka kwa uchunguzi wa DO hadi uchunguzi wa pH baada ya miezi 2-3 ya operesheni endelevu. Kulingana na Atlas Scientific, kipato cha ndani cha voltage kinapendekezwa wakati pH, uchunguzi wa conductivity unafanya kazi pamoja. Maelezo zaidi yako kwenye ukurasa wa 9 (https://goo.gl/d62Rqv)
- Takwimu zilizoingia (ya kwanza ina herufi ambazo hazijachapishwa kabla ya data ya pH na DO). Nilichuja msimbo kwa kuruhusu herufi zinazoweza kuchapishwa tu.
Hatua ya 8: Ingiza Takwimu na Unda Grafu



- Ingiza data kutoka kwa maandishi chini ya kichupo cha DATA (Excel 2013)
- Tenga data na koma (ndio sababu kuwa na koma baada ya kila pembejeo ya data inasaidia)
- Panga data. Kila data hapa chini ina alama kama 1700. Muda wa kupima ni dakika 5 (inayoweza kubadilishwa). Kima cha chini cha mizunguko ya DO na pH kusoma data ni sekunde 1.8.
Hatua ya 9: Upimaji

- Sensorer ya joto la dijiti (18B20) inaweza kupimwa kwa kurekebisha tofauti moja kwa moja kwa. Vinginevyo, ikiwa fidia na mteremko unahitajika usawa, unaweza kufanya kwa kubadilisha maadili kwenye laini # 453, DallasTemperature.cpp kwenye folda ya / maktaba / DallasTemperature.
- Kwa uchunguzi wa pH na DO, unaweza kusawazisha uchunguzi na suluhisho zinazoambatana. Lazima utumie nambari ya sampuli na Atlas Scientific na ufuate maagizo ya faili hii.
- Tafadhali fuata kurasa za 26 na 50 za uchunguzi wa pH (https://goo.gl/d62Rqv) kwa usuluhishi na fidia ya joto, na pia kurasa, 7-8 na 50 kwa uchunguzi wa DO (https://goo.gl/mA32mp). Kwanza, tafadhali pakia tena nambari ya generic iliyotolewa na Atlas, fungua Monitor Monitor na ufunguo kwa amri sahihi.
Hatua ya 10: Wiring sana?
- Unaweza kuondoa kadi ya SD na moduli ya saa halisi kwa kutumia Dragino Yun Shield kwa bodi za Arduino (https://goo.gl/J9PBTH). Nambari hiyo inahitajika kubadilishwa ili kufanya kazi na Yun Shield. Hapa kuna mahali pazuri pa kuanza (https://goo.gl/c1x8Dm)
- Wiring nyingi sana: Sayansi ya Atlas ilitengeneza mwongozo wa nyaya zao za EZO (https://goo.gl/dGyb12) na bodi isiyo na waya (https://goo.gl/uWF51n). Kuunganisha joto la dijiti la 18B20 liko hapa (https://goo.gl/ATcnGd). Unahitaji kufahamiana na maagizo kwenye Raspbian (toleo la Debian Linux) inayoendesha Raspberry Pi (https://goo.gl/549xvk)
Hatua ya 11: Kukubali:
Huu ni mradi wangu wa kando wakati wa utafiti wangu wa baada ya kazi ambao nilifanya kazi kwa mtaalam wa picha za mapema kulima microalgae. Kwa hivyo nilidhani ni muhimu kutoa mkopo kwa vyama vimetoa masharti ya kufanikisha hili. Kwanza, msaada, DE-EE00070993: "Uboreshaji wa Anga na Utoaji wa Anga (ACED)," kutoka Idara ya Nishati ya Amerika, Ofisi ya Ufanisi wa Nishati na Nishati Mbadala Inalenga Biofueli ya Algal na Bioproducts. Ninamshukuru Dk. Bruce E. Rittmann katika Kituo cha Biodesign Swette cha Bioteknolojia ya Mazingira, Chuo Kikuu cha Arizona State kwa kunipa nafasi ya kutafakari umeme na Arduino. Nilifundishwa uhandisi wa mazingira, haswa kemia, kidogo ya microbiology.
Ilipendekeza:
Jinsi ya Kuongeza Oksijeni iliyoyeyuka kwa Mita ya Hydroponics ya WiFi: Hatua 6

Jinsi ya Kuongeza Oksijeni iliyoyeyuka kwa Mita ya Hydroponics ya WiFi: Mafunzo haya yataonyesha jinsi ya kuongeza mzunguko wa EZO D.O na uchunguzi kwenye Kitengo cha Hydroponics cha WiFi kutoka kwa Sayansi ya Atlas. Inachukuliwa kuwa mtumiaji ana wifi hydroponics kit inafanya kazi na sasa yuko tayari kuongeza oksijeni iliyofutwa.MAONYO: Atlas Sci
Jinsi ya Kutengeneza Unyevu na Joto Kirekodi cha Takwimu ya Wakati wa kweli na Arduino UNO na SD-Kadi - Uigaji wa data-logger ya DHT11 katika Proteus: Hatua 5

Jinsi ya Kutengeneza Unyevu na Joto Kirekodi cha Takwimu ya Wakati wa kweli na Arduino UNO na SD-Kadi | Uigaji wa data-logger ya DHT11 katika Proteus: Utangulizi: hi, huyu ndiye Muundaji wa Liono, hii hapa ni kiungo cha YouTube. Tunatengeneza mradi wa ubunifu na Arduino na tunafanya kazi kwenye mifumo iliyoingia.Data-Logger: Logger ya data (pia data-logger au kinasa data) ni kifaa cha elektroniki ambacho hurekodi data kwa muda w
Jinsi ya kutumia Sensor ya Joto la DHT11 na Arduino na Joto la Uchapishaji wa Joto na Unyevu: Hatua 5

Jinsi ya Kutumia Sensorer ya Joto la DHT11 Na Arduino na Joto la Uchapishaji Joto na Unyevu: Sura ya DHT11 hutumiwa kupima joto na unyevu. Unyevu wa DHT11 na sensorer ya joto hufanya iwe rahisi sana kuongeza data ya unyevu na joto kwenye miradi yako ya elektroniki ya DIY. Ni kwa kila
Joto la joto la ESP32 NTP Kuchunguza Thermometer na Sauti ya Steinhart-Hart na Alarm ya Joto.: Hatua 7 (na Picha)

Joto la kupima joto la ESP32 NTP na Thermometer ya kupikia ya joto na Alarm ya Steinhart-Hart na Alarm ya joto. ni ya kufundisha inayoonyesha jinsi ninavyoongeza uchunguzi wa joto la NTP, piezo b
Joto -Joto La Kudhibitiwa la Joto La joto: Hatua 6

Joto -Joto La Kutabasamu La Kudhibiti Joto: ******************************************* ************************************************** +