Local autonomous data collection system

Lub tuam txhab yuav NEKST-M saib xyuas cov ntawv, tsim tawm hauv tsev los ntawm Next Technologies. Txhawm rau kom pom kev ua haujlwm ntawm cov twj tso kua mis,
hluav taws thiab kev ruaj ntseg tswb, voltage muaj nyob rau ntawm starters, chav tsev kub, dej kub thaum muaj xwm ceev. Lub plawv ntawm NEKST-M yog ATMEGA 1280 thiab qhov tseeb no txhawb kom muaj peev xwm tsim koj tus kheej cov khoom siv rau cov kev xav tau tshwj xeeb.

Txoj haujlwm tau teeb tsa los tsim kom muaj kev tswj hwm tus kheej hauv zos xa mus rau cov kev xav tau tshwj xeeb hauv lub sijhawm luv tshaj plaws thiab tus nqi tsawg. Lub hauv paus yog microcontroller. Kev tsim kho, tsim khoom, tsim los ntawm cov neeg ua haujlwm lawv tus kheej.

Lub kaw lus yuav tsum ua haujlwm yam tsis muaj kev vam khom ntawm cov xov tooj ntawm tes, cov servers, Internet thiab cov ntawv tso cai rau kev siv xov tooj cua ntau zaus, tsis txhob siv cov khoos phis tawj hauv kev ua haujlwm ntawm kev saib xyuas thiab tswj qhov system lossis, feem ntau, siv lub laptops ib ntus, tsis muaj kev nkag mus. cov khoom rau lub sijhawm ntev (6-9 lub hlis). Lub network configuration muaj cov qauv radial. Cov ntaub ntawv raug sau los ntawm ib qho chaw thiab tom qab ntawd xa mus rau kev ua haujlwm ntawm kev sib txuas lus tsis tu ncua lossis ua ib daim ntawv nyuaj.

Lub system yuav tsum muab:

  • saib xyuas kev ua haujlwm ntawm cov twj tso kua mis
  • tshuab automation
  • tiv thaiv los ntawm qhov tshwm sim ntawm cov xwm txheej kub ntxhov
  • ceeb toom xwm txheej ceev
  • lub sijhawm ua haujlwm suav
  • xam cov nqi hluav taws xob siv
  • khoom tswj qhov kub thiab txias
  • kev ruaj ntseg thiab hluav taws tswb
  • periodic tej thaj chaw deb kaw cov ntaub ntawv
  • tsis paub yav tom ntej yuav tsum tau

Cov xwm txheej ua haujlwm:

  • thaj tsam 1 sq. km.
  • ncaj visibility nruab nrab ntawm cov khoom
  • kub ntawm +50 txog -50C
  • Humidity mus txog 100%
  • cov kab mob lom lom (pwm, sulfate-txo cov kab mob)
  • Kev co, tsis muaj ntxiv, ntawm cov tshuab ntawm chav kawm 1-2 raws li GOST ISO 10816-1-97
  • electromagnetic ib puag ncig - hloov hluav taws xob motors nrog KT 6053 contactors, RVS-DN muag khoom pib, SIEMENS MICROMASTER PID tswj cov cuab yeej, hluav taws xob hauv ISM thiab GSM ntau yam raws li qhov yuav tsum tau muaj rau cov khoom siv no, phau ntawv arc vuam ntawm qhov chaw
  • Lub network voltage ntau dhau, cuam tshuam rau lub sijhawm luv luv hauv cov khoom siv hluav taws xob, xob laim overvoltages, theem tsis sib xws thaum cov kab hluav taws xob siv hluav taws xob tawg hauv 6-10 kV kev faib tawm.

Txawm hais tias cov kev cai nruj li no, kev siv tau yooj yim heev thaum daws qhov teeb meem ib kauj ruam.

Ua txhua yam rau hauv tus account, "Arduino Nano 3.0" pawg thawj coj los ua "lub hlwb" ntawm txoj kev npaj. Robotdyn board muaj ATMEGA 328 maub los, qhov tsim nyog 3,3V voltage stabilizer rau
Tam sim no 800 mA thiab converter rau CH340G UART-USB.

Ua ntej tshaj plaws, cov sijhawm ua haujlwm cov sijhawm ua haujlwm tau tsim los ua cov txheej txheem tshiab tshaj plaws. Yav dhau los siv cov ntsuas hluav taws xob sib sau ua ke ntawm PICs nrog lub tshuab hluav taws xob tsis muaj hluav taws xob tsis ua haujlwm vim qhov hluav taws xob nce siab hauv ib xyoos ntawm kev ua haujlwm. Tsuas yog cov kev sib txuas uas siv cov khoom siv hluav taws xob 5V hauv tsev tseem nyob tsis tau. Txhawm rau txhawm rau txhim kho thiab siv ntau yam ntawm kev sib txuas, lub teeb liab hais txog lub xeev ntawm cov units raug coj los ntawm cov terminals ntawm cov khoom siv hloov pauv, i.e. sau npe ntawm lub xub ntiag ntawm 1st theem voltage nrog peb-theem fais fab mov ntawm 380V. Txhawm rau koom tes nrog tus maub los, ib qho nruab nrab relay nrog 220V winding los yog optocoupler muaj li ntawm LED thiab GL5516 photoresistor lossis PC817 optocoupler yog siv. Tag nrho cov kev xaiv tau raug sim. Lub LED yog powered los ntawm ib tug rectified voltage nrog tam sim no txwv siv ob lub SVV22 capacitors tsim rau ib tug voltage ntawm 630V txuas nyob rau hauv series rau kev nyab xeeb thaum lub sij hawm tsis sib xws ntawm cov circuits nrog ib tug megohmmeter.
Kev nyeem ntawv lub sijhawm ua haujlwm nyeem siv ST7735S LCD npo, cov ntaub ntawv xa mus rau lub sijhawm ntawm xov tooj cua siv E01-ML01DP05 module ntawm zaus ntawm 2,4 MHz. Cov cuab yeej no muaj nRF24L01+ nti thiab RFX2401C xa / txais amplifier,
tso zis zog mus txog 100 mW. Helical kav hlau txais xov tsim rau qhov xav tau ntau yam hauv lub laij lej online thaj chaw. Qhov kev xaiv ntawm hom kav hlau txais xov yog txiav txim siab los ntawm kev tsis suav nrog kev txais tos ntawm singly reflected nthwv dej los ntawm ib puag ncig cov qauv hlau. Kav hlau txais xov qhov chaw yog luam tawm ntawm lub tshuab luam ntawv 3D. Lub xeev tam sim no ntawm cov txee yog khaws cia rau hauv EEPROM ntawm tus maub los nws tus kheej thiab tau rov qab los thaum muaj hluav taws xob poob qis. Lub sij hawm ncua sij hawm rau suav yog muab los ntawm RTC nti DS3231 nyob rau hauv daim ntawv ntawm ib tug module nrog ib tug thaub qab roj teeb. Lub hwj chim mov siv 3 modules, qhov tseeb mem tes qhov chaw 220/5V HLK-PM01 600mA, converter los ntawm 1-5V rau 5V HWV -553 ΠΈ 03962A - roj teeb tswj nrog tswv yim tiv thaiv luv luv Circuit Court, overdischarge thiab overcharge. Tag nrho cov khoom tau yuav ntawm Aliexpress lub vev xaib.

Lub khob cijLocal autonomous data collection system
4-channel txee. Muaj LC cov ntxaij lim dej ntawm cov khoom siv los tiv thaiv kev cuam tshuam ntawm kev sib txuas lus sib tw. Cov ntaub ntawv ntawm lub xeev ntawm cov khoom tswj tau tas li nyeem ib zaug hauv ib ob thiab tso tawm xim ntawm LCD. Kev nyeem ntawv tau hloov kho thiab kaw rau hauv lub cim xeeb uas tsis muaj kev hloov pauv txhua 1 vib nas this. 36 vib nas this yog 36/1 ntawm ib teev, qhov no yog hom ntawv uas xav tau cov ntaub ntawv. Txhua 100 sec. cov ntaub ntawv raug xa mus txog tus naj npawb ntawm cov vib nas this ntawm kev ua haujlwm rau txhua chav tswj. EEPROM nco muaj tsawg kawg ntawm kev sau-nrawm mus, raws li cov chaw tsim khoom, 12 zaug. Qhov kev xaiv phem tshaj plaws yog thaum tsawg kawg ib lub xov tooj ntawm tes hloov kho tas li. Qhov ntim ntawm 100000 lub txee yog 1 bytes, qhov no yog tus lej ntev, 4 lub txee, tag nrho ntawm 4 bytes yog nyob ntawm ib cov ntaub ntawv. Qhov ntev ntawm lub nti nco yog 16 bytes; tom qab 1024 nkag ntawm 64 lub txee, kaw yuav pib dua. Hauv lub tsev qiv ntawv EEPROM, EEPROM.put txoj kev tsis sau; yog tias tus nqi ntawm lub xov tooj ntawm tes thiab cov ntaub ntawv raug sau sib tw, yuav tsis muaj kev puas tsuaj ntawm cov hlwb. Raws li qhov tshwm sim, lub sijhawm ua haujlwm tau lees paub yuav muaj ntau dua 4 xyoo. Lub sijhawm ua tau tab sis tsis lees paub ua haujlwm tuaj yeem ntev dua.

Daim duab Circuit CourtLocal autonomous data collection system
Program hauv Arduino IDE//12 bytes (328%)

# suav nrog // Core graphics tsev qiv ntawv
# suav nrog // Cov tsev qiv ntawv kho vajtse tshwj xeeb
# suav nrog
# suav nrog
#ncig teb chaws
# suav nrog
# suav nrog
RF24 xov tooj cua (9, 10); // xov tooj cua khoom rau kev ua hauj lwm nrog lub tsev qiv ntawv RF24,
// thiab tus lej PIN nRF24L01+ (CE, CSN)
# suav nrog
DS3231 rtc(SDA, SCL);
Sijhawm t;

//#define TFT_CS 10
#define TFT_CS 8
#define TFT_RST -1 // koj tuaj yeem txuas qhov no rau Arduino pib dua
// nyob qhov twg, teeb qhov no #define tus pin rau -1!
//#define TFT_DC 9 // DC=RS=A0 - kev xaiv xaiv rau xaiv cov lus txib lossis cov ntaub ntawv sau npe.
#define TFT_DC 3

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

// Kev xaiv 2: siv cov pins tab sis qeeb me ntsis!
#define TFT_SCLK 13 // teeb cov no los ua tus pins koj nyiam!
#define TFT_MOSI 11 // teeb tsa cov no los ua tus pins koj nyiam!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
# suav nrog

byte hloov = 52;
byte pinState;
unsigned ntev twj[4];// array nrog 4 vib nas this counter values
ntab m = 3600.0;
unsigned int chaw nyob = 0;
int rc; // hloov pauv rau cov txee
unsigned ntev suprim = 0;
unsigned ntev sumsec = 0;
byte i = 0;
byte k = 34;
unsigned int z = 0;
byte b = B00000001;
byte pumrcounter[4]; // array rau khaws cov khoom hais, 1 - tawm, 0 - rau.
int pib = 0; //

chaw teem tsis muaj dab tsi () {

rtc.begin();
radio.begin(); // Pib ua haujlwm nRF24L01+
radio.setChannel(120); // cov ntaub ntawv channel (ntawm 0 txog 127).
radio.setDataRate(RF24_250KBPS); // cov ntaub ntawv hloov pauv tus nqi (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // transmitter zog (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Qhib cov yeeb nkab nrog tus cim rau kev hloov cov ntaub ntawv

// Txhawm rau teem sijhawm, tsis hais cov kab tsim nyog
//rtc.setDOW(1); // Hnub ntawm lub lim tiam
//rtc.setTime(21, 20, 0); // Sijhawm, hauv 24 teev hom.
//rtc.setDate(29, 10, 2018); // Hnub tim, Lub Kaum Hli 29, 2018

tft.initR(INITR_BLACKTAB); // pib lub ST7735S nti, dub tab
// Siv qhov kev pib no (tsis pom zoo) yog tias koj siv 1.44 "TFT
//tft.initR(INITR_144GREENTAB); // pib lub ST7735S nti, RED rcB tab
tft.setTextWrap(false); // Tso cai rau cov ntawv sau tawm ntawm ntug sab xis
tft.setRotation(2); // rau BLACK PCB thiab liab tft.setRotation(0) los tsis.
tft.fillScreen(ST7735_BLACK); // clear screen

DDWD = DDRD | B00000000;
PORTD = PORTD | B11110000; // software nruj ua haujlwm, qib siab -
// tswj cov khoom "tsis ua haujlwm", "4" yog sau rau tag nrho 1 qhov chaw nres nkoj loj D, tsis muaj kev suav.

rau (rc = 0; rc < 4; rc++)
{
tft.setCursor ( 3, rc * 10 + ua haujlwm ); // nthuav qhia cov lej ntawm cov khoom tswj
tft.print(rc + 1);
}

tft.setCursor(12, 0); // tso tawm 3 kab ntawv
tft.println("Tsim & Tsim"); // qhuas koj tus kheej cov neeg hlub
tft.setCursor(24, 10); // los yog phem copyright
tft.print("TWS MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//Data Recovery//////////////////////////////////////////// /////////////

rau ( z = 0; z < 1023; z + = 16 ) { // Iterates los ntawm tag nrho cov hlwb ntawm kev lag luam
// thiab sau rau ib qho array ntawm 4 lub twj tso kua mis sib txawv, 4 bytes rau txhua lub txee, vim
// unsigned ntev variable. Muaj 4 lub txee, ib cov ntaub ntawv ntawm tag nrho 4 yuav siv 16 bytes.
EEPROM.get(z, pump[0]); // yog li, tsis muaj lub voj, tsawg ntim
EEPROM.get(z+4, pump[1]);
EEPROM.get(z+8, pump[2]);
EEPROM.get(z+12, pump[3]);

// muab tus nqi tshiab ntxiv rau cov lej ntawm 4 tus lej
suprim = (pump [0] + twj [1] + twj [2] + twj [3]);

// piv tus nqi tshiab ntawm cov lej ntawm 4 tus lej hauv qhov sib txawv ntawm qhov sib txawv nrog tus nqi dhau los hauv qhov sib txawv
// sumsec thiab yog tias qhov nyiaj dhau los tsawg dua lossis sib npaug rau cov lej tshiab, qhov tshiab dua lossis sib npaug yog muab
// sumsec tus nqi.

yog tias (sumsec <= suprim) {
sumsec = sumprim; //

// thiab tus nqi tam sim no z yog muab rau qhov chaw nyob sib txawv, z yog qhov chaw nyob ntawm qhov pib ntawm 16-byte block ntawm 4 qhov tseem ceeb
// cov txee kaw nyob rau tib lub sijhawm (txij li thaum xaiv qhov chaw nres nkoj, tag nrho 8 qhov ntawm nws tau sau ib txhij,
// suav nrog peb qhov tsim nyog siab 4 qhov chaw nres nkoj D).
chaw nyob = z;
}
}

// ib zaug ntxiv nkag mus rau lub cim xeeb eeprom ntawm qhov chaw nyob ntawm qhov pib ntawm 16 bytes ntawm 4 tus nqi kaw
// kawg, i.e. qhov tseem ceeb ua ntej kaw lossis rebooting vim khov. Sau qhov tseeb
// suav cov nqi rau hauv ib qho array ntawm 4 lub twj tso kua mis.

EEPROM.get(address, pump[0]);
EEPROM.get(chaw nyob + 4, twj[1]);
EEPROM.get(chaw nyob + 8, twj[2]);
EEPROM.get(chaw nyob + 12, twj[3]);

chaw nyob += 16; // nce qhov chaw nyob rau kev sau cov block tom ntej yam tsis muaj overwriting cov ntaub ntawv ntawm cov ntaub ntawv kawg

// kawg ntawm cov ntaub ntawv rov qab ///////////////////////////////////////// ////////////////////

attachInterrupt(0, suav, RISING); // tus pin D2, pab cuam cuam tshuam, tuaj txhua thib ob
// pulses los ntawm RTC DS3231 los ntawm SQW tso zis

wdt_enable(WDTO_8S); // pib lub watchdog timer, reboot tus maub los thaum khov, lub sijhawm,
// rau qhov uas koj yuav tsum tau muab lub timer reset hais kom ua wdt_reset (thiab tsis txhob rebooting thaum lub sij hawm ib txwm ua hauj lwm - 8 sec.
// rau kev ntsuam xyuas nws tsis pom zoo kom teeb tsa tus nqi tsawg dua 8 vib nas this, qhov no, lub sijhawm rov pib dua dua.
// jerking, thiab nws tshwm sim txhua ob.

}

khoob voj () {
// lub voj voog khoob, ntawm no yuav muaj kev tswj hwm lub sijhawm qhib ntawm lub tshuab hluav taws xob
}

void suav() {

tft.setTextColor(ST7735_WHITE); // teeb xim font
t = rtc.getTime(); // nyeem sijhawm
tft.setCursor(5, 120); // teeb tsa tus cursor txoj hauj lwm
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // clearing lub sij hawm tso zis cheeb tsam
tft.print(rtc.getTimeStr()); // tso zis moos nyeem ntawv

wdt_reset(); // rov pib dua tus saib xyuas txhua lub voj voog, piv txwv li thib ob

rau (rc = 0; rc < 4; rc ++) // pib ntawm lub voj voog rau kev kuaj xyuas kev ua raws li lub xeev cov tswv yim
// chaw nres nkoj cov khoom mus rau yav dhau los nyeem lub xeev ntawm chaw nres nkoj D cov khoom
{
pinState = (PIND >> 4) & ( b << rc );

yog tias (pumrcounter [rc] != pinState) { // thiab yog tias tsis phim, ces
pumrcounter[rc] = pinState; // muab qhov chaw nres nkoj me ntsis hloov pauv tus nqi tshiab 1/0
}
// qhia txog lub xeev ntawm cov khoom tswj xim
// BLUE yog qhov teeb meem me me ntawm qhov screen uas twb muaj lawm (lossis tsev qiv ntawv?), RGB thiab BGR sib xyaw.
if (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + ua haujlwm)), 7, 7, ST7735_BLUE); // rau qib qis suav hloov GREEN rau BLUE
} Lwm {
tft.fillRect(15, ((rc * 10 + ua haujlwm)), 7, 7, ST7735_GREEN); // rau qib qis suav hloov BLUE rau GREEN
pump [rc] += 1; // ntxiv 1 thib ob rau lub sijhawm ua haujlwm
}
}

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

tft.fillRect(30, ua haujlwm, 97, 40, ST7735_BLACK); // clearing lub sij hawm ua hauj lwm tso saib cheeb tsam
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // thiab hnub

tft.setCursor(60, 120); // teeb tsa tus cursor txoj hauj lwm
tft.print(rtc.getDateStr()); // tso saib hnub tim ntawm lub vijtsam LCD

rau (rc = 0; rc < 4; rc ++) // tso zis khiav hauj lwm teev nyob rau hauv tag nrho, kaum thiab
{
tft.setCursor (30, rc * 10 + ua haujlwm); // pua pua ntawm ib teev nrog lub vijtsam hloov los ntawm 10 pixels
tft.println(pump [rc] / m);
}

// sau "raw" cov sijhawm ua haujlwm qhov tseem ceeb (hauv vib nas this) rau EEPROM /////////////////////////////

rau (rc = 0; rc < 4; rc++)
{
EEPROM.put(chaw nyob, twj [rc]);
chaw nyob += sizeof(float); // increment tus sau qhov chaw nyob sib txawv
}
}

// xa cov ntaub ntawv hla lub xov tooj cua channel los ntawm cov ntaub ntawv qhia tias yuav tsum xa pes tsawg bytes.
yog ((k == 6 ) || (k == 18 ) || (k == 30 )) {

unsigned ntev cov ntaub ntawv;

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

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

Ob peb sau ntawv kawg. Kev suav tshwm sim ntawm qib qis qis ntawm cov khoom siv.

Pull-up resistances R2-R5 yog 36 kOhm rau kev xaiv nrog photoresistors GL5516. Nyob rau hauv cov ntaub ntawv ntawm ib tug phototransistor optocoupler thiab relay, teem rau 4,7-5,1 kOhm. Lub Arduino Nano v3.0 bootloader tau hloov nrog Arduino Uno siv TL866A programmer rau kev ua haujlwm raug ntawm lub sijhawm saib xyuas. Cov fuses raug kho kom ua haujlwm ntawm qhov hluav taws xob siab tshaj 4,3 V. Lub rov pib dua hluav taws xob sab nraud R6 C3 tsis tau siv. Nyob rau hauv cov qauv kev pab cuam, lub transmitter zaus tsis sib haum mus rau lub unlicensed ntau yam; qhov 2,4 MHz ntau yog txwv rau zaus 2400.0-2483.5 MHz.

Qhov ntau ntawm E01-ML01DP05 transmitter yog 2400-2525 MHz. Lub bandwidth ntawm ib lub channel yog 1 MHz, thaum teeb tsa qhov ceev li "RF24_2MBPS" lub xov tooj cua tau teev tseg.setChannel(120) channel thiab lwm qhov yuav tau nyob, piv txwv li. band yuav yog 2 MHz.

Tau qhov twg los: www.hab.com

Ntxiv ib saib