Sistemụ nnakọta data nke mpaghara kwụụrụ onwe ya

Ụlọ ọrụ ahụ zụtara ọkwa nleba anya NEKST-M, nke Teknụzụ Na-esote mepụtara n'ime ụlọ. Iji hụ na ọhụhụ nke ọrụ nke nkeji mgbapụta,
ọkụ na mkpuchi mkpuchi, ọnụnọ voltaji na mmalite, okpomọkụ ụlọ, ọkwa mmiri mberede. Obi NEKST-M bụ ATMEGA 1280 na eziokwu a na-agba ume n'ihe gbasara ike ịmepụta ngwa nke gị maka mkpa ụfọdụ.

Edebere ọrụ a ka imepụta usoro izipu mpaghara zuru oke maka mkpa ụfọdụ n'ime obere oge enwere ike yana ọnụ ahịa pere mpe. Ihe ndabere bụ microcontroller. Mmepe, nrụpụta, nke ndị ọrụ n'onwe ha kere.

Usoro ahụ ga-arụ ọrụ na-enweghị ịdabere na netwọk ekwentị, sava, ịntanetị na usoro ikikere maka iji akụrụngwa redio ugboro ugboro, ọ bụghị iji kọmpụta na-arụ ọrụ nke usoro nlekota na njikwa ma ọ bụ, na ọtụtụ, na-eji laptọọpụ kwa oge, na-enweghị ohere ịnweta. ihe maka ogologo oge (ọnwa 6-9). Nhazi netwọk nwere usoro radial. A na-anakọta data n'otu oge wee zigara ya maka nhazi site na ọwa nkwurịta okwu mgbe niile ma ọ bụ dị ka nnomi siri ike.

Sistemu kwesịrị ịgụnye:

  • nlekota oru nke pumping nkeji
  • akpaaka teknụzụ
  • nchebe pụọ na nsonaazụ nke ọnọdụ mberede
  • akara mberede
  • ngụkọta oge ọrụ
  • na-agbakọ ọnụ ọgụgụ ọkụ eletrik na-eri
  • akụrụngwa okpomọkụ akara
  • nche na ọkụ mkpu
  • Ndekọ ozi dịpụrụ adịpụ nke oge
  • amaghị ọdịnihu chọrọ

Ọnọdụ ọrụ:

  • ebe mkpuchi 1 sq. km.
  • visibiliti ozugbo n'etiti ihe
  • okpomọkụ site na +50 ruo -50C
  • iru mmiri ruru 100%
  • ihe nkwụnye ego na-arụ ọrụ ndụ (ebu, nje bacteria na-ebelata sulfate)
  • ịma jijiji, enweghịzi, nke igwe nke klaasị 1-2 dị ka GOST ISO 10816-1-97
  • gburugburu elektrọnik - mgbanwe nke igwe eletriki na ndị kọntaktị KT 6053, akụrụngwa mmalite RVS-DN dị nro, ngwa njikwa SIEMENS MICROMASTER PID, radieshon na mpaghara ISM na GSM dị ka ihe achọrọ maka ngwaọrụ ndị a, ịgbado ọkụ akwụkwọ ntuziaka na saịtị.
  • voltaji netwọk gabigara ókè, nkwụsịtụ obere oge na ọkụ ọkụ, oke ọkụ, enweghị ahaghị nhata nke oge mgbe eriri elu na-agbaji na netwọk nkesa 6-10 kV.

N'agbanyeghị ihe ndị dị otú ahụ siri ike chọrọ, mmejuputa iwu dị mfe mgbe a na-edozi nsogbu ahụ site na nzọụkwụ.

N'iburu ihe niile n'uche, ụlọ ọrụ "Arduino Nano 3.0" ghọrọ "ụbụrụ" nke atụmatụ ahụ. bọọdụ robotdyn nwere ATMEGA 328 njikwa, ihe dị mkpa 3,3V voltaji stabilizer maka
800mA dị ugbu a na onye ntụgharị na CH340G UART-USB.

Nke mbụ, a na-emepụta counter hour ọrụ ka ndị kacha ọhụrụ. Mita ụlọ ọrụ ejigoro na mbụ gbakọtara na PIC nwere sekit ọkụ na-enye ọkụ na-enweghị mgbanwe dara n'ihi mmụba voltaji n'ime otu afọ ọrụ. Naanị ndị ejikọrọ na-eji ọkụ ọkụ 5V arụrụ n'ụlọ ka adịkwaghị. Iji mee ka ntinye ngwa ngwa na ịdị ngwa nke njikọ, a na-ewepụ ihe mgbaàmà gbasara ọnọdụ nke nkeji site na njedebe nke ngwaọrụ ndị na-agbanwe agbanwe, ya bụ. ndebanye aha nke ọnụnọ nke voltaji nke 1st na ike ọkụ atọ nke 380V. Iji jikọta ya na onye na-ahụ maka njikwa, a na-eji nfefe etiti nwere ikuku 220V ma ọ bụ optocoupler nke LED na GL5516 photoresistor ma ọ bụ PC817 optocoupler mejupụtara. A nwalere nhọrọ niile. A na-akwado LED ahụ site na voltaji agbaziri yana mmachi dị ugbu a site na iji ihe abụọ SVV22 emebere maka voltaji nke 630V ejikọtara n'usoro maka nchekwa n'oge nnwale mberede nke sekit na megohmmeter.
Ịgụ oge na-arụ ọrụ site na iji ihuenyo ST7735S LCD, nnyefe data ozugbo site na redio site na iji modul E01-ML01DP05 na ugboro nke 2,4 MHz. Ngwaọrụ a nwere mgbawa nRF24L01+ yana RFX2401C na-ebufe/nata ampilifaya,
ike mmepụta ruo 100mW. Antenna Helical emebere maka oke achọrọ na mgbako ịntanetị saịtị. A na-ekpebi nhọrọ nke ụdị antenna site na mwepu nke nnabata nke ebili mmiri na-egosipụta naanị site na ihe owuwu ọla gbara ya gburugburu. A na-ebipụta akụkụ antenna na ngwa nbipute 3D. A na-echekwa ọnọdụ nke counters ugbu a na EEPROM nke onye njikwa n'onwe ya ma weghachi ya ma ọ bụrụ na ọkụ ọkụ na-atụghị anya ya. Ọkpụkpụ RTC DS3231 na-enye oge maka ịgụta ọnụ n'ụdị modul nwere batrị ndabere. Ọkụ ọkụ ahụ na-eji modul 3, ezigbo pulse isi iyi 220/5V HLK-PM01 600mA, onye ntụgharị sitere na 1-5V ruo 5V HW-553 и 03962A - batrị njikwa na atụmatụ nchebe megide mkpirisi sekit, nfefe na oke ụgwọ. A zụtara akụrụngwa niile na webụsaịtị Aliexpress.

Mpekere achịchaSistemụ nnakọta data nke mpaghara kwụụrụ onwe ya
4-channel counter. Enwere ihe nzacha LC na ntinye iji kpuchido nnyonye anya n'elu ahịrị nkwukọrịta ụzọ gbagọrọ agbagọ. A na-agụ data na steeti ihe njikwa mgbe niile otu ugboro kwa sekọnd wee gosipụta ya na agba na LCD. A na-emelite agụmagụ ma dekọọ ya na ebe nchekwa na-adịghị agbanwe agbanwe kwa sekọnd 1 ọ bụla. Sekọnd 36 bụ 36/1 nke elekere, nke a bụ usoro achọrọ data. Kwa nkeji iri na abụọ. A na-ekesa ozi gbasara ọnụọgụ nke sekọnd nke ọrụ maka ngalaba njikwa ọ bụla. Ebe nchekwa EEPROM nwere obere okirikiri ide-ehichapụ, dịka onye nrụpụta siri kwuo, ugboro 100. Nhọrọ kachasị njọ bụ ma ọ dịkarịa ala otu cell na-emelite mgbe niile. Olu nke 12st counter bụ 100000 bytes, nke a bụ ogologo usoro nọmba, 1 counters, ngụkọta nke 4 bytes na-eji otu ndekọ. Ogologo ebe nchekwa mgbawa bụ 4 bytes; mgbe ntinye 16 nke counter 1024 gachara, ndekọ ga-amalite ọzọ. N'ọbá akwụkwọ EEPROM, usoro EEPROM.put adịghị ede; ọ bụrụ na uru nke cell na ozi a na-ede na-adaba, a gaghị enwe mmebi nke mkpụrụ ndụ. N'ihi ya, oge ọrụ nchekwa na-ekwe nkwa ga-abụ ihe karịrị afọ 64. Oge enwere ike mana ọrụ anaghị ekwe ya nkwa nwere ike ịdị ogologo ogologo.

eserese sekitSistemụ nnakọta data nke mpaghara kwụụrụ onwe ya
Mmemme na Arduino IDE//12 bytes (328%)

#gụnye // Isi ọbá akwụkwọ eserese
#gụnye // Ọbá akwụkwọ akọwapụtara ngwaike
#gụnye
#gụnye
# tinye
#gụnye
#gụnye
RF24 redio (9, 10); // ihe redio maka ịrụ ọrụ na ọba akwụkwọ RF24,
// na nọmba pin nRF24L01+ (CE, CSN)
#gụnye
DS3231 rtc (SDA, SCL);
Oge t;

//# kọwaa TFT_CS 10
# kọwapụta TFT_CS 8
# kọwaa TFT_RST -1 // ị nwekwara ike jikọọ nke a na nrụpụta Arduino
// na nke a, tinye nke a #define pin ka -1!
//# kọwaa TFT_DC 9 // DC=RS=A0 - nhọrọ nhọpụta maka ịhọrọ iwu ma ọ bụ ndekọ data.
# kọwaa TFT_DC 3

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// Nhọrọ 2: jiri ntụtụ ọ bụla mana jiri nwayọ nwayọ!
# kọwaa TFT_SCLK 13 // tọọ ndị a ka ọ bụrụ ntụtụ ọ bụla masịrị gị!
# kọwaa TFT_MOSI 11 // tọọ ndị a ka ọ bụrụ ntụtụ ọ bụla masịrị gị!
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#gụnye

mgbanwe byte = 52;
byte pinState;
Mgbapu ogologo na-edeghị aha [4];// n'usoro nwere ụkpụrụ counter 4 sekọnd
sere n'elu m = 3600.0;
Adreesị int na-edeghị akwụkwọ = 0;
int rc;// mgbanwe maka counters
ogologo sumprim enweghị akara = 0;
ogologo sumsec enweghị akara = 0;
byte i = 0;
byte k = 34;
enweghị akara int z = 0;
byte b = B00000001;
onye na-agbapụta byte[4]; // nhazi maka ịchekwa steeti ihe, 1 - gbanyụọ, 0 - on.
int mmalite = 0; //

abaghị uru ntọlite ​​() {

rtc.bido ();
redio.mmalite (); // Bido ọrụ nRF24L01+
radio.setChannel(120); // ọwa data (site na 0 ruo 127).
radio.setDataRate(RF24_250KBPS); // Ọnụego mbufe data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // ike nnyefe (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Mepee ọkpọkọ nwere ihe nchọpụta maka ịnyefe data

// Iji tọọ oge, degharịa ahịrị ndị dị mkpa
//rtc.setDOW(1); // Ụbọchị nke izu
//rtc.setTime (21, 20, 0); // Oge, na usoro awa 24.
//rtc.setDate (29, 10, 2018); // Ụbọchị, Ọktoba 29, 2018

tft.initR(INITR_BLACKTAB); // bido mgbawa ST7735S, taabụ ojii
// Jiri mmalite nke a (enweghị nkwupụta) ma ọ bụrụ na ị na-eji 1.44" TFT
//tft.initR(INITR_144GREENTAB); // bido mgbawa ST7735S, taabụ RED rcB
tft.setTextWrap(ụgha); // Kwe ka ederede gaa n'akụkụ aka nri
tft.setRotation ( 2 ); // maka PCB BLACK na RED tft.setRotation(0) ma ọ bụ na ọ bụghị.
tft.fillScreen(ST7735_BLACK); // ihuenyo doro anya

DDR = DDR | B00000000;
PORTD = PORTD | B11110000; // software tightening na-arụ ọrụ, ọkwa dị elu -
// Ihe a na-achịkwa "anaghị arụ ọrụ", "4" ka edere n'ọdụ ụgbọ mmiri 1 niile D, enweghị ọnụ ọgụgụ na-eme.

maka (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + mgbanwe); // na-egosipụta ọnụọgụ ọnọdụ nke ihe nchịkwa
tft.print (rc + 1);
}

tft.setCursor (12, 0); // wepụta ahịrị ederede 3
tft.println ("Ndị mmepe & wuo"); // iji too onwe gị ndị ị hụrụ n'anya
tft.setCursor (24, 10); // ma ọ bụ ajọ nwebisiinka
tft.print ("Onye Mmepụta MM");
tft.setCursor (28, 20);
tft.print ("BUILD-ER DD");

//data mgbake///////////////////////////// /////////

maka (z = 0; z <1023; z += 16) {// Na-agafe na sel niile nke ụlọ ọrụ ahụ.
// na-edekwa n'usoro nke 4 mgbapụta variables, 4 bytes maka onye ọ bụla counter, n'ihi na
// ogologo agbanwe agbanweghị. Enwere counter 4, otu ndekọ nke 4 niile na-ewe 16 bytes.
EEPROM.get (z, mgbapụta [0]); // yabụ, na-enweghị maka loop, obere olu
EEPROM.get(z+4, mgbapụta [1]);
EEPROM.get(z+8, mgbapụta [2]);
EEPROM.get(z+12, mgbapụta [3]);

// na-ekenye uru na-esote ọhụrụ maka nchikota nke 4 counters
sumprim = (mgbapụta [0] + mgbapụta [1] + mgbapụta [2] + mgbapụta [3]);

// atụnyere uru ọhụrụ nke nchikota nke 4 counters na sumprim variable na uru gara aga na mgbanwe.
// sumsec ma ọ bụrụ na nchikota gara aga erughị ma ọ bụ hà nhata na nchikota ọhụrụ, a na-ekenye nke ọhụrụ ma ọ bụ nha nhata
// sumsec uru.

ọ bụrụ ( sumsec <= sumprim ) {
sumsec = sumprim; //

// na uru dị ugbu a z ka ekenye ya na mgbanwe adreesị, z bụ adreesị mmalite nke 16-byte ngọngọ nke 4 ụkpụrụ.
// counters na-edekọ n'otu oge (ebe ọ bụ na mgbe a na-eme ntuli aka n'ọdụ ụgbọ mmiri, a na-ede ihe niile 8 n'ime ya n'otu oge,
// gụnyere anyị dị mkpa dị elu 4 ibe n'ọdụ ụgbọ mmiri D).
adreesị = z;
}
}

// ọzọ na-enweta eeprom ebe nchekwa na adreesị nke mmalite nke ngọngọ nke 16 bytes nke 4 e dekọrọ counter ụkpụrụ.
// ikpeazụ, i.e. ụkpụrụ tupu emechi ma ọ bụ rebooting n'ihi kefriza. Na-edekọ kacha ọhụrụ
// counter ụkpụrụ n'ime n'usoro nke 4 variables mgbapụta.

EEPROM.get (adreesị, mgbapụta [0]);
EEPROM.get (adreesị + 4, mgbapụta [1]);
EEPROM.get (adreesị + 8, mgbapụta [2]);
EEPROM.get (adreesị + 12, mgbapụta [3]);

adreesị += 16; // na-abawanye adreesị maka ide ngọngọ na-esote na-enweghị idegharị data nke ndekọ ikpeazụ

//Nkwụsị data mgbake////////////////////////////// ////////////////

nkwụnye nkwụsị (0, ọnụ, ịrị elu); // pin D2, mee ka nkwụsịtụ, bịa kwa sekọnd
// pulses sitere na RTC DS3231 sitere na mmepụta SQW

wdt_enable(WDTO_8S); // bido ngụ oge nche, malitegharịa onye njikwa ma ọ bụrụ na ọ dị oyi, oge,
// nke ịkwesịrị ịnye iwu nrụpụta ngụ oge wdt_reset (ma zere ịmalitegharị n'oge ọrụ nkịtị - 8 sec.
// maka ule, a naghị atụ aro ka ịtọ uru na ihe na-erughị sekọnd 8. N'okwu a, a na-emegharị ngụ oge ka mma.
// na-ama jijiji, ọ na-eme kwa sekọnd ọ bụla.

}

cha cha aka () {
// okirikiri efu, ebe a ga-enwe njikwa na-emeghe-phase ọrụ nke electric moto
}

ọnụ ọgụgụ efu() {

tft.setTextColor(ST7735_WHITE); // tọọ agba font
t = rtc.getTime (); // oge ịgụ
tft.setCursor (5, 120); // ịtọ ntọala cursor
tft.fillRect (5, 120, 50, 7, ST7735_BLACK); // na-ekpochapụ mpaghara mmepụta oge
tft.print (rtc.getTimeStr()); // agụ elekere mmepụta

wdt_reset(); // tọgharịa onye nche okirikiri ọ bụla, ya bụ nke abụọ

maka (rc = 0; rc <4; rc ++) // mmalite nke okirikiri maka ịlele nnabata nke steeti ntinye.
// ọdụ ụgbọ mmiri na ọdụ ụgbọ mmiri D ibe agụ gara aga
{
pinState = (PIND >> 4) & ( b << rc );

ọ bụrụ (pumrcounter [rc]! = pinState) {// ma ọ bụrụ na ọ dabara, mgbe ahụ
pumrcounter[rc] = pinState; // na-ekenye ọnọdụ bit ọdụ ụgbọ mmiri na-agbanwe uru ọhụrụ 1/0
}
// na-egosi ọnọdụ nke ihe njikwa agba
// BLUE bụ obere glitch nke ihuenyo dị ugbu a (ma ọ bụ ọba akwụkwọ?), RGB na BGR agwakọtara.
ọ bụrụ (pinState == ( b << rc )) {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // maka ọnụ ọgụgụ dị ala gbanwere GREEN gaa na-acha anụnụ anụnụ
} Ọzọ {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // maka ọnụ ọgụgụ dị ala gbanwere BLUE ka GREEN
mgbapụta [rc] += 1; // tinye 1 sekọnd na counter oge ọrụ
}
}

k++;
ọ bụrụ (k = 36) {
k = 0;

tft.fillRect (30, mgbanwe, 97, 40, ST7735_BLACK); // na-ekpochapụ ebe ngosi oge ọrụ
tft.fillRect (60, 120, 73, 7, ST7735_BLACK); // na ụbọchị

tft.setCursor (60, 120); // ịtọ ntọala cursor
tft.print (rtc.getDateStr()); // gosi ụbọchị na ihuenyo LCD

maka (rc = 0; rc <4; rc ++) // mmepụta oge ọrụ n'ozuzu, ụzọ iri na
{
tft.setCursor (30, rc * 10 + mgbanwe); // narị otu narị elekere na ihuenyo agbada site na 10 pikselụ
tft.println (mgbapụta [rc] / m);
}

// na-ede ụkpụrụ elekere ọrụ “raw” (na sekọnd) na EEPROM /////////////////////////////

maka (rc = 0; rc <4; rc++)
{
EEPROM.put (adreesị, mgbapụta [rc]);
adreesị += sizeof (ese n'elu); // mekwuo mgbanwe adreesị ederede
}
}

// zipu data na ọwa redio site na data na-egosi ọnụọgụ bytes kwesịrị iziga.
ọ bụrụ ( (k == 6 ) || (k == 18 ) || (k == 30 )) {

ogologo data enweghị akara;

radio.write (&mmalite, sizeof(mmalite));

maka (i = 0; i <4; i++) {
data = mgbapụta [i];
radio.write ( &data, sizeof(data));
}
}
}

Ihe ndetu ole na ole na njedebe. Ngụkọ na-apụta n'ogo ezi uche dị ala na ntinye.

Nkwụghachi azụ R2-R5 bụ 36 kOhm maka nhọrọ nwere fotoresistors GL5516. N'ihe banyere fototransistor optocoupler na relay, setịpụrụ na 4,7-5,1 kOhm. Ejiri Arduino Uno dochie Arduino Nano v3.0 bootloader site na iji mmemme TL866A maka ịrụ ọrụ ziri ezi nke ngụ oge nche. A na-edozi fuses ka ọ rụọ ọrụ na voltaji n'elu 4,3 V. Emeghị ihe nrụpụta nrụpụta mpụga R6 C3. N'ime mmemme ihe atụ, oge nnyefe anaghị adabara oke enweghị ikike; oke 2,4 MHz nwere oke ugboro 2400.0-2483.5 MHz.

Oke nke nnyefe E01-ML01DP05 bụ 2400-2525 MHz. bandwidth nke otu ọwa bụ 1 MHz, mgbe ị na-etinye ọsọ dị ka “RF24_2MBPS” ọwa redio akọwapụtara.setChannel (120) na nke na-esote ga-anọ, ya bụ. band ga-abụ 2 MHz.

isi: www.habr.com

Tinye a comment