Eto ikojọpọ data adase agbegbe

Ile-iṣẹ naa ra awọn ifiweranṣẹ ibojuwo NEKST-M, ti a ṣe ni ile nipasẹ Awọn Imọ-ẹrọ Next. Lati rii daju iworan ti iṣẹ ti awọn ẹya fifa,
ina ati awọn itaniji aabo, wiwa foliteji ni awọn ibẹrẹ, iwọn otutu yara, ipele omi pajawiri. Ọkàn NEKST-M jẹ ATMEGA 1280 ati pe otitọ yii jẹ iwuri ni awọn ofin ti o ṣeeṣe ti ṣiṣẹda ohun elo tirẹ fun awọn iwulo pato.

A ṣeto iṣẹ-ṣiṣe naa lati ṣẹda eto fifiranṣẹ agbegbe adase ni kikun fun awọn iwulo kan pato ni akoko to kuru ju ati ni idiyele kekere. Ipilẹ jẹ microcontroller. Idagbasoke, iṣelọpọ, ti a ṣẹda nipasẹ awọn oṣiṣẹ funrararẹ.

Eto naa gbọdọ ṣiṣẹ laisi igbẹkẹle lori awọn nẹtiwọọki cellular, awọn olupin, Intanẹẹti ati eto iwe-aṣẹ fun lilo awọn orisun igbohunsafẹfẹ redio, maṣe lo awọn kọnputa ni iṣẹ ti eto ibojuwo ati iṣakoso tabi, ni pupọ julọ, lo awọn kọnputa agbeka lorekore, laisi iwọle si awọn nkan fun igba pipẹ (awọn oṣu 6-9). Iṣeto nẹtiwọọki naa ni eto radial kan. A gba data ni aaye kan lẹhinna firanṣẹ fun sisẹ nipasẹ awọn ikanni ibaraẹnisọrọ deede tabi bi ẹda lile.

Eto naa gbọdọ pese:

  • mimojuto awọn isẹ ti fifa sipo
  • adaṣiṣẹ imo
  • aabo lati awọn abajade ti awọn ipo pajawiri
  • pajawiri ifihan agbara
  • iṣiro akoko iṣẹ
  • ṣe iṣiro iye ina mọnamọna ti o jẹ
  • ẹrọ otutu iṣakoso
  • aabo ati ina itaniji
  • igbakọọkan latọna gbigbasilẹ ti alaye
  • aimọ ojo iwaju awọn ibeere

Awọn ipo iṣẹ:

  • agbegbe agbegbe 1 sq.
  • taara hihan laarin awọn ohun
  • iwọn otutu lati +50 si -50C
  • ọriniinitutu to 100%
  • awọn ohun idogo ti nṣiṣe lọwọ biologically (m, awọn kokoro arun ti o dinku imi-ọjọ)
  • gbigbọn, ko si siwaju sii, ti awọn ẹrọ ti awọn kilasi 1-2 ni ibamu si GOST ISO 10816-1-97
  • Ayika eletiriki - yiyi awọn ẹrọ ina mọnamọna pẹlu awọn olutọpa KT 6053, ohun elo ibẹrẹ asọ RVS-DN, ohun elo iṣakoso SIEMENS MICROMASTER PID, itankalẹ ni ISM ati sakani GSM ni ibamu si awọn ibeere fun awọn ẹrọ wọnyi, alurinmorin arc ọwọ lori aaye
  • foliteji nẹtiwọọki ti o pọ ju, awọn idalọwọduro igba kukuru ni ipese agbara, awọn iwọn ina mọnamọna, aiṣedeede alakoso nigbati okun waya ti o wa loke ba fọ ni awọn nẹtiwọọki pinpin 6-10 kV.

Pelu iru awọn ibeere lile, imuse jẹ ohun rọrun nigbati o ba yanju iṣoro naa ni igbese nipasẹ igbese.

Gbigba ohun gbogbo sinu iroyin, igbimọ "Arduino Nano 3.0" di "ọpọlọ" ti ero naa. Igbimọ robotdyn ni oludari ATMEGA 328, amuduro foliteji 3,3V pataki fun
lọwọlọwọ 800 mA ati oluyipada si CH340G UART-USB.

Ni akọkọ, awọn iṣiro awọn wakati iṣẹ ni a ṣẹda bi awọn ti o ṣe imudojuiwọn julọ julọ. Awọn mita ile-iṣẹ ti a lo ni iṣaaju ti o pejọ lori awọn PIC pẹlu Circuit ipese agbara ti ko ni iyipada kuna nitori awọn iwọn foliteji laarin ọdun kan ti iṣẹ. Awọn ti o sopọ nikan ni lilo awọn ipese agbara 5V ti ile ni o wa titi. Lati titẹ soke fifi sori ati versatility ti asopọ, a ifihan agbara nipa awọn ipinle ti awọn sipo ti wa ni ya lati awọn ebute oko ti awọn ẹrọ iyipada, i.e. iforukọsilẹ ti wiwa ti foliteji alakoso 1st pẹlu ipese agbara-alakoso mẹta ti 380V. Lati ipoidojuko pẹlu oluṣakoso, isọdọtun agbedemeji pẹlu yiyi 220V tabi optocoupler kan ti o jẹ LED ati GL5516 photoresistor tabi PC817 optocoupler ti lo. Gbogbo awọn aṣayan ni idanwo. LED naa ni agbara nipasẹ foliteji ti a ṣe atunṣe pẹlu aropin lọwọlọwọ nipa lilo awọn capacitors SVV22 meji ti a ṣe apẹrẹ fun foliteji ti 630V ti a ti sopọ ni jara fun ailewu lakoko idanwo lairotẹlẹ ti awọn iyika pẹlu megohmmeter kan.
Kika awọn kika akoko iṣẹ ni lilo iboju ST7735S LCD, gbigbe data akoko gidi nipasẹ redio nipa lilo module E01-ML01DP05 ni igbohunsafẹfẹ ti 2,4 MHz. Ẹrọ yii ni chirún nRF24L01+ ati atagba RFX2401C / gbigba ampilifaya,
o wu soke to 100 mW. Awọn eriali Helical ti a ṣe apẹrẹ fun iwọn ti o fẹ ninu ẹrọ iṣiro ori ayelujara ojúlé náà. Yiyan iru eriali jẹ ipinnu nipasẹ iyasoto ti gbigba ti awọn igbi ti o tan imọlẹ nikan lati awọn ẹya irin agbegbe. Awọn ẹya eriali ti wa ni titẹ lori itẹwe 3D kan. Ipo lọwọlọwọ ti awọn iṣiro ti wa ni ipamọ ni EEPROM ti oludari ara rẹ ati pe a tun pada ni iṣẹlẹ ti ijade agbara airotẹlẹ. Awọn aaye arin akoko fun kika ni a pese nipasẹ chirún RTC DS3231 ni irisi module pẹlu batiri afẹyinti. Ipese agbara naa nlo awọn modulu 3, orisun pulse gangan 220/5V HLK-PM01 600mA, oluyipada lati 1-5V si 5V HW-553 и 03962A - batiri oludari pẹlu eto Idaabobo lodi si kukuru Circuit, overdischarge ati overcharge. Gbogbo awọn paati ni a ra lori oju opo wẹẹbu Aliexpress.

Akara ọkọEto ikojọpọ data adase agbegbe
4-ikanni ounka. Awọn asẹ LC wa ni awọn igbewọle lati daabobo lodi si kikọlu lori laini ibaraẹnisọrọ alayipo. Awọn data lori ipo awọn nkan iṣakoso jẹ kika nigbagbogbo ni ẹẹkan fun iṣẹju-aaya ati han ni awọ lori LCD. Awọn kika ti ni imudojuiwọn ati gbasilẹ ni iranti ti kii ṣe iyipada ni gbogbo iṣẹju-aaya 1. Awọn aaya 36 jẹ 36/1 ti wakati kan, eyi ni ọna kika eyiti o nilo data naa. Ni gbogbo iṣẹju-aaya 100. alaye ti wa ni zqwq nipa awọn nọmba ti aaya ti isẹ fun kọọkan Iṣakoso kuro. Iranti EEPROM ni nọmba to lopin ti awọn iyipo kikọ-pada, ni ibamu si olupese, awọn akoko 12. Aṣayan ti o buru julọ ni nigbati o kere ju sẹẹli kan ti wa ni imudojuiwọn nigbagbogbo. Awọn iwọn didun ti awọn 100000st counter ni 1 baiti, yi ni a gun kika nọmba, 4 counter, lapapọ 4 baiti wa ni ti tẹdo nipasẹ ọkan gba. Gigun ti iranti chirún jẹ awọn baiti 16; lẹhin awọn titẹ sii 1024 ti awọn iṣiro 64, gbigbasilẹ yoo bẹrẹ lẹẹkansi. Ninu ile-ikawe EEPROM, ọna EEPROM.put ko kọ; ti iye sẹẹli ati alaye ti a kọ ba baamu, kii yoo si ibajẹ awọn sẹẹli naa. Bi abajade, akoko iṣiṣẹ iranti idaniloju yoo jẹ diẹ sii ju ọdun 4 lọ. Akoko ti o ṣeeṣe ṣugbọn kii ṣe iṣeduro iṣẹ le jẹ pipẹ pupọ.

Circuit aworan atọkaEto ikojọpọ data adase agbegbe
Eto ni Arduino IDE//12 baiti (328%)

#pẹlu // Mojuto eya ìkàwé
#pẹlu // Hardware-kan pato ìkàwé
# pẹlu
#pẹlu
# pẹlu
#pẹlu
#pẹlu
redio RF24 (9, 10); // ohun redio fun ṣiṣẹ pẹlu ile-ikawe RF24,
// ati awọn nọmba pin nRF24L01+ (CE, CSN)
#pẹlu
DS3231 rtc (SDA, SCL);
Akoko t;

//# ṣe alaye TFT_CS 10
# ṣe asọye TFT_CS 8
#define TFT_RST -1 // o tun le so eyi pọ si atunto Arduino
// ninu ọran wo, ṣeto #define pin si -1!
//#define TFT_DC 9 // DC=RS=A0 - awọn aṣayan yiyan fun yiyan aṣẹ tabi iforukọsilẹ data.
# asọye TFT_DC 3

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

// Aṣayan 2: lo awọn pinni eyikeyi ṣugbọn o lọra diẹ!
#define TFT_SCLK 13 // ṣeto iwọnyi lati jẹ awọn pinni eyikeyi ti o fẹ!
# asọye TFT_MOSI 11 // ṣeto iwọnyi lati jẹ awọn pinni eyikeyi ti o fẹ!
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#pẹlu

baiti naficula = 52;
baiti pinState;
fifa gigun ti a ko fowo si [4];// orun pẹlu awọn iye iṣiro iṣẹju-aaya 4
leefofo m = 3600.0;
adiresi int ti ko wọle = 0;
int rc;// oniyipada fun awọn iṣiro
aifọwọsi gun sumprim = 0;
unsigned gun sumsec = 0;
baiti i = 0;
baiti k = 34;
aifọwọsi int z = 0;
baiti b = B00000001;
baiti pumrcounter[4]; // orun fun titoju ohun ipinle, 1 - pa, 0 - lori.
int ibere = 0; //

eto ofo () {

rtc.begin ();
radio.begin (); // Bẹrẹ iṣẹ nRF24L01+
radio.setChannel (120); // ikanni data (lati 0 si 127).
radio.setDataRate (RF24_250KBPS); // Iwọn gbigbe data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel (RF24_PA_MAX); // Agbara atagba (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe (0xAABBCCDD11LL); // Ṣii paipu pẹlu idamo fun gbigbe data

// Lati ṣeto awọn akoko, uncomment awọn pataki ila
//rtc.setDOW (1); // Ojo ti awọn ọsẹ
//rtc.setTime (21, 20, 0); // Aago, ni 24 wakati kika.
//rtc.setDate (29, 10, 2018); // Ọjọ, Oṣu Kẹwa Ọjọ 29, Ọdun 2018

tft.initR (INITR_BLACKTAB); // initialize a ST7735S ërún, dudu taabu
// Lo olupilẹṣẹ ibẹrẹ (aisi asọye) ti o ba nlo 1.44” TFT kan
//tft.initR(INITR_144GREENTAB); // initialize a ST7735S ërún, RED rcB taabu
tft.setTextWrap (èké); // Gba ọrọ laaye lati ṣiṣẹ kuro ni eti ọtun
tft.setRotation ( 2 ); // fun BLACK PCB ati RED tft.setRotation (0) tabi rara.
tft.fillScreen (ST7735_BLACK); // ko iboju

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // wiwọ sọfitiwia n ṣiṣẹ, ipele giga -
// dari ohun "ko sise", "4" ti kọ si gbogbo 1 oga ebute oko D, ko si kika waye.

fun (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + ayipada); // ifihan awọn nọmba ipo ti awọn nkan iṣakoso
tft.print (rc + 1);
}

tft.setCursor (12, 0); // o wu 3 ila ti ọrọ
tft.println ("Awọn olupilẹṣẹ & Kọ"); // lati yìn ara rẹ awọn ayanfẹ
tft.setCursor (24, 10); // tabi ibi aṣẹ
tft.print (" Olùgbéejáde MM ");
tft.setCursor (28, 20);
tft.print ("BUILD-ER DD");

//data imularada///////////////////////////////// /////////

fun (z = 0; z <1023; z += 16) {// Iterates nipasẹ gbogbo awọn sẹẹli ti ile-iṣẹ naa
// ati ki o Levin si ohun orun ti 4 fifa oniyipada, 4 baiti fun kọọkan counter, nitori
// unsigned gun oniyipada. Awọn iṣiro 4 wa, igbasilẹ kan ti gbogbo 4 gba 16 baiti.
EEPROM.get (z, fifa [0]); // bẹ, laisi fun lupu, kere si iwọn didun
EEPROM.get (z+4, fifa [1]);
EEPROM.get (z+8, fifa [2]);
EEPROM.get (z+12, fifa [3]);

// sọtọ a titun tókàn iye fun awọn apao ti 4 ounka
sumprim = (fifa [0] + fifa [1] + fifa [2] + fifa [3]);

// ṣe afiwe iye tuntun ti apao awọn iṣiro 4 ni oniyipada sumprim pẹlu iye iṣaaju ninu oniyipada
// sumsec ati ti o ba ti tẹlẹ apao kere ju tabi dogba si awọn titun apao, titun tobi tabi dogba ti wa ni sọtọ
// sumsec iye.

ti o ba jẹ ( sumsec <= sumprim ) {
sumsec = sumprim; //

// ati pe iye ti isiyi z ti pin si oniyipada adirẹsi, z jẹ adirẹsi ti ibẹrẹ ti bulọọki 16-baiti ti awọn iye 4
// awọn iṣiro ti o gbasilẹ ni akoko kanna (niwon igbati o ba n dibo ibudo kan, gbogbo awọn ege 8 rẹ ni a kọ ni akoko kanna,
// pẹlu pataki wa 4 die-die ti ibudo D).
adirẹsi = z;
}
}

// lekan si iraye si iranti eeprom ni adirẹsi ti ibẹrẹ ti bulọọki ti awọn baiti 16 ti awọn iye iṣiro 4 ti o gbasilẹ
// kẹhin, i.e. awọn iye ṣaaju pipade tabi atunbere nitori didi. Gbigbasilẹ titun
// awọn iye counter sinu titobi ti fifa awọn oniyipada 4.

EEPROM.get (adirẹsi, fifa [0]);
EEPROM.get (adirẹsi + 4, fifa [1]);
EEPROM.get (adirẹsi + 8, fifa [2]);
EEPROM.get (adirẹsi + 12, fifa [3]);

adirẹsi += 16; // jijẹ adirẹsi fun kikọ nigbamii ti Àkọsílẹ lai ìkọlélórí awọn data ti awọn ti o kẹhin gba

//opin imularada data////////////////////////////// ////////////////

attachInterrupt (0, kika, RISING); // pin D2, mu awọn idilọwọ ṣiṣẹ, wa ni gbogbo iṣẹju-aaya
// polusi lati RTC DS3231 lati SQW o wu

wdt_enable(WDTO_8S); // bẹrẹ aago oluṣọ, tun atunbere oludari ni ọran didi, akoko,
// fun eyiti o nilo lati fun aṣẹ atunto aago wdt_reset (ki o yago fun atunbere lakoko iṣẹ deede - 8 iṣẹju-aaya.
// fun awọn idanwo ko ṣe iṣeduro lati ṣeto iye si kere ju awọn aaya 8. Ni idi eyi, aago ti wa ni atunṣe daradara daradara.
// jerking, ati awọn ti o ṣẹlẹ gbogbo keji.

}

ofo ni lilu () {
// sofo ọmọ, nibi nibẹ ni yio je Iṣakoso lori awọn ìmọ-alakoso isẹ ti awọn ina motor
}

iye ofo() {

tft.setTextColor (ST7735_WHITE); // ṣeto awọn font awọ
t = rtc.getTime (); // akoko kika
tft.setCursor (5, 120); // ṣeto awọn kọsọ ipo
tft.fillRect (5, 120, 50, 7, ST7735_BLACK); // aferi agbegbe o wu akoko
tft.print (rtc.getTimeStr ()); // o wu aago kika

wdt_reset (); // tun ajafitafita tunto ni gbogbo igba, ie iṣẹju-aaya

fun (rc = 0; rc <4; rc ++) // ibẹrẹ ti awọn ọmọ fun yiyewo awọn ibamu ti awọn igbewọle ipinle
// ibudo die-die si išaaju ka ipinle ti ibudo D die-die
{
pinState = (PIND >> 4) & ( b << rc );

ti (pumrcounter [rc]! = pinState) {// ati pe ti ko ba baramu, lẹhinna
pumrcounter [rc] = pinState; // sọtọ ibudo bit ipo ayípadà a titun iye 1/0
}
// itọkasi ipo ti awọn nkan iṣakoso awọ
// BLUE jẹ glitch kekere ti iboju ti o wa tẹlẹ (tabi ile-ikawe?), RGB ati BGR ti dapọ.
ti o ba jẹ (pinState == ( b << rc )) {
tft.fillRect (15, (rc * 10 + ayipada)), 7, 7, ST7735_BLUE); // fun kekere ipele kika ayipada GREEN to bulu
} miran {
tft.fillRect (15, (rc * 10 + ayipada)), 7, 7, ST7735_GREEN); // fun kekere ipele kika ayipada bulu to GREEN
fifa soke [rc] += 1; // fi 1 iṣẹju kun si counter akoko iṣẹ
}
}

k++;
ti (k == 36) {
k = 0;

tft.fillRect (30, ayipada, 97, 40, ST7735_BLACK); // aferi agbegbe ifihan akoko iṣẹ
tft.fillRect (60, 120, 73, 7, ST7735_BLACK); // ati awọn ọjọ

tft.setCursor (60, 120); // ṣeto awọn kọsọ ipo
tft.print (rtc.getDateStr ()); // àpapọ ọjọ on LCD iboju

fun (rc = 0; rc <4; rc ++) //jade awọn wakati iṣẹ ni odidi, idamẹwa ati
{
tft.setCursor (30, rc * 10 + ayipada); // awọn ọgọọgọrun wakati kan pẹlu iyipada iboju si isalẹ nipasẹ awọn piksẹli 10
tft.println (fifa [rc] / m);
}

// kikọ awọn iye awọn wakati iṣẹ “aise” (ni iṣẹju-aaya) si EEPROM /////////////////////////////

fun (rc = 0; rc <4; rc++)
{
EEPROM.put (adirẹsi, fifa [rc]);
adirẹsi += iwọn (leefofo); // ṣe alekun oniyipada adirẹsi kikọ
}
}

// firanṣẹ data lori ikanni redio lati data ti o nfihan iye awọn baiti yẹ ki o firanṣẹ.
ti ( (k == 6 ) || (k == 18 ) || (k == 30 )) {

data gigun ti a ko wọle;

radio.write (& ibere, sizeof (bẹrẹ));

fun (i = 0; i <4; i++) {
data = fifa [i];
radio.write ( & data, sizeof (data));
}
}
}

Awọn akọsilẹ diẹ ni ipari. Iṣiro waye ni ipele ọgbọn kekere ni awọn igbewọle.

Awọn resistance ti o fa soke R2-R5 jẹ 36 kOhm fun aṣayan pẹlu photoresistors GL5516. Ninu ọran ti optocoupler phototransistor ati yiyi, ṣeto si 4,7-5,1 kOhm. Arduino Nano v3.0 bootloader ti rọpo pẹlu Arduino Uno nipa lilo oluṣeto TL866A fun iṣẹ deede ti aago iṣọ. A ṣe atunṣe awọn fiusi lati ṣiṣẹ ni awọn foliteji loke 4,3 V. Circuit atunto ita R6 C3 ko lo. Ninu eto apẹẹrẹ, igbohunsafẹfẹ atagba ko ni ibamu si sakani ti ko ni iwe-aṣẹ; iwọn 2,4 MHz ni opin si awọn igbohunsafẹfẹ 2400.0-2483.5 MHz.

Iwọn ti E01-ML01DP05 atagba jẹ 2400-2525 MHz. Bandiwidi ti ikanni kan jẹ 1 MHz, nigbati o ba ṣeto iyara bi “RF24_2MBPS” ikanni redio ti a sọ pato.setChannel (120) ati atẹle yoo gba, ie. iye yoo jẹ 2 MHz.

orisun: www.habr.com

Fi ọrọìwòye kun