Local autonomous data collection system

Iyo kambani yakatenga NEKST-M yekutarisa zvitubu, inogadzirwa mudzimba neNext Technologies. Kuve nechokwadi chekuona kwekushanda kwemapumba emayuniti,
moto nekuchengetedza maalarm, kuvepo kwevoltage pane yekutanga, tembiricha yekamuri, nhanho yemvura yekukurumidzira. Mwoyo weNEKST-M ndeye ATMEGA 1280 uye chokwadi ichi chinokurudzira maererano nemukana wekugadzira yako kit yezvaunoda chaizvo.

Basa racho rakagadzirirwa kugadzira inozvimiririra zvizere yenzvimbo yekutumira sisitimu yezvido zvakati munguva pfupi inobvira uye nemutengo wakaderera. Hwaro ndeye microcontroller. Kubudirira, kugadzira, kwakagadzirwa nevashandi pachavo.

Iyo sisitimu inofanirwa kushanda isina kutsamira pamaserura network, maseva, Internet uye nerezinesi system yekushandiswa kweredhiyo frequency zviwanikwa, kwete kushandisa makomputa mukushanda kwekutarisa uye kutonga system kana, kunyanya, nguva nenguva kushandisa malaptop, pasina mukana zvinhu kwenguva yakareba (6-9 mwedzi). Iyo network configuration ine radial chimiro. Dhata inounganidzwa pane imwe nguva yozotumirwa kuti igadziriswe kuburikidza neanogara achitaurirana nzira kana sekopi yakaoma.

Iyo system inofanirwa kupa:

  • kutarisa kushanda kwezvikamu zvekupomba
  • tekinoroji otomatiki
  • kuchengetedzwa kubva pamigumisiro yemamiriro ekukurumidzira
  • chiratidzo chechimbichimbi
  • kushanda nguva kukarukureta
  • kuverenga huwandu hwemagetsi anopedzwa
  • midziyo tembiricha kudzora
  • chengetedzo uye aramu yemoto
  • periodic kurekodha ruzivo
  • zvisingazivikanwi zvinodiwa mune ramangwana

Mamiriro ekushanda:

  • nzvimbo yekuvhara 1 sq. km.
  • kuoneka kwakananga pakati pezvinhu
  • tembiricha kubva -50 kusvika -50 C
  • mwando kusvika 100%
  • biologically active deposits (mold, sulfate-reducing bacteria)
  • vibration, hapasisina, yemakina emakirasi 1-2 zvinoenderana neGOST ISO 10816-1-97
  • electromagnetic nharaunda - switching yemagetsi motors ane KT 6053 contactors, RVS-DN yakapfava yekutanga midziyo, SIEMENS MICROMASTER PID yekudzora michina, radiation muISM uye GSM renji zvinoenderana nezvinodiwa zvezvishandiso izvi, manual arc welding panzvimbo.
  • yakawandisa netiweki voltage, kuvhiringwa kwenguva pfupi mumagetsi, kuwedzeredza kwemheni, kusaenzana kwechikamu kana waya wepamusoro wadambuka mu6-10 kV kugovera network.

Pasinei nezvinodiwa zvakaomarara zvakadaro, kuita kuri nyore kana uchigadzirisa dambudziko nhanho nhanho.

Kutora zvinhu zvose, bhodhi "Arduino Nano 3.0" yakava "uropi" hwechirongwa. Iyo robotdyn board ine ATMEGA 328 controller, inodiwa 3,3V voltage stabilizer ye
ikozvino 800 mA uye inoshandura kuCH340G UART-USB.

Chekutanga, makaunda emaawa ekushanda akagadzirwa seaya anofambirana nenguva. Aimboshandiswa maindasitiri emamita akaunganidzwa paPICs ane transformerless simba rekupa wedunhu akatadza nekuda kwekukwira kwemagetsi mukati megore rekushanda. Avo chete akabatana vachishandisa ega ega 5V magetsi akasara akasimba. Kuti ikurumidze kuiswa uye kushandiswa kwekubatanidza, chiratidzo pamusoro pemamiriro ezvikamu zvinotorwa kubva kumagumo emagetsi ekushandura, i.e. kunyoreswa kwekuvapo kwe1st phase voltage ine matatu-phase simba rekupa 380V. Kuti uwirirane nemutongi, relay yepakati ine 220V inotenderera kana optocoupler inoumbwa ne LED uye GL5516 photoresistor kana PC817 optocoupler inoshandiswa. Zvose zvingasarudzwa zvakaedzwa. Iyo LED inofambiswa neyakagadziridzwa voltage ine miganho yazvino uchishandisa maviri maSVV22 capacitor akagadzirirwa voltage ye630V yakabatana munhevedzano yekuchengetedza panguva yekuyedzwa netsaona kwemaseketi ane megohmmeter.
Kuverenga kuverenga nguva yekushandisa uchishandisa ST7735S LCD skrini, chaiyo-nguva yekufambisa data kuburikidza neredhiyo uchishandisa E01-ML01DP05 module pafrequency ye2,4 MHz. Ichi chishandiso chine nRF24L01+ chip uye iyo RFX2401C kutumira/kugamuchira amplifier,
kubuda simba kusvika ku100 mW. Helical antennas yakagadzirirwa iyo inodiwa renji mu online Calculator saiti. Sarudzo yerudzi rweantenna inotarwa nekusabatanidzwa kwekugashira kwemafungu airatidzwa ega kubva kune akatenderedza masimbi zvimiro. Antenna zvikamu zvakadhindwa pane 3D printer. Mamiriro ezvino emakata anochengeterwa muEEPROM yemutongi pachawo uye anodzoserwa muchiitiko chekudzima kwesimba kusingatarisirwi. Nguva dzekuverengera dzinopihwa neRTC chip DS3231 muchimiro chemodule ine bhatiri rekuchengetedza. Iyo magetsi inoshandisa 3 modules, iyo chaiyo pulse sosi 220/5V HLK-PM01 600mA, inoshandura kubva ku1-5V kuenda ku5V. HW-553 ΠΈ 03962A - bhatiri controller ne chirongwa dziviriro kubva kupfupi circuit, overdischarge uye overcharge. Zvese zvikamu zvakatengwa pane Aliexpress webhusaiti.

Chingwa bhodhiLocal autonomous data collection system
4-chiteshi counter. Kune ma LC mafirita pamapipu ekudzivirira kubva mukukanganisika pamusoro peyakamonyoroka yekutaurirana mutsara. Dhata pamusoro pemamiriro ekutonga zvinhu inogara ichiverengwa kamwechete pasekondi uye inoratidzwa muvara paLCD. Kuverenga kunogadziridzwa uye kurekodhwa mundangariro dzisiri-dzinochinja mumasekonzi makumi matatu nematanhatu ega ega. 1 seconds ndeye 36/36 yeawa, iyi ndiyo fomati iyo data inodiwa. Ese 1 sec. ruzivo runoparidzirwa pamusoro pehuwandu hwemasekonzi ekushanda kune yega yega control unit. EEPROM ndangariro ine nhamba shoma yekunyora-kudzima kutenderera, maererano nemugadziri, 100 nguva. Sarudzo yakaipisisa ndeye kana sero rimwe chete richigara richivandudzwa. Vhoriyamu ye12st counter ndeye 100000 bytes, iyi inhamba yakareba fomati, 1 zviverengero, yakazara 4 bytes inogarwa nerekodhi imwe. Hurefu hwendangariro yechip i4 bytes; mushure mekupinda makumi matanhatu nemana emakaunda mana, kurekodha kunotanga patsva. Muraibhurari yeEEPROM, nzira yeEEPROM.put hainyore; kana kukosha kwesero uye ruzivo rwuri kunyorwa ruchienderana, hapazove nekuderedzwa kwemasero. Nekuda kweizvozvo, iyo yakavimbiswa ndangariro yekushanda nguva ichave inopfuura makore manomwe. Nguva yebasa rinobvira asi risina kuvimbiswa inogona kuva yakareba.

Circuit diagramLocal autonomous data collection system
Chirongwa muArduino IDE//12 bytes (328%)

#include // Core graphics raibhurari
#include // Hardware-chaiyo raibhurari
#include
#include
#zvinosanganisira
#include
#include
RF24 redhiyo(9, 10); // redhiyo chinhu chekushanda neRF24 raibhurari,
// uye nhamba dzepini nRF24L01+ (CE, CSN)
#include
DS3231 rtc(SDA, SCL);
Time t;

//#define TFT_CS 10
#tsanangura TFT_CS 8
#define TFT_RST -1 // unogona zvakare kubatanidza izvi kune Arduino reset
// mune izvo, isa iyi #define pini ku -1!
//#define TFT_DC 9 // DC=RS=A0 - sarudzo dzesarudzo dzekusarudza murairo kana rejista yedata.
#tsanangura TFT_DC 3

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

// Sarudzo 2: shandisa chero pini asi zvishoma zvishoma!
#define TFT_SCLK 13 // isa aya kuti ave chero mapini aunoda!
#define TFT_MOSI 11 // isa aya kuti ave chero mapini aunoda!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#include

byte shift = 52;
byte pinState;
pombi refu isina kusainwa[4];// array ane 4 seconds counter values
kuyangarara m = 3600.0;
isina kusaina int kero = 0;
int rc;// musiyano wezviverengero
isina kusaina refu suprim = 0;
isina kusaina refu sumsec = 0;
byte i = 0;
byte k = 34;
asina kusaina int z = 0;
byte b = B00000001;
byte pumrcounter[4]; // array yekuchengetedza zvinhu, 1 - off, 0 - on.
int kutanga = 0; //

void setup () {

rtc.begin();
radio.begin(); // Tanga basa nRF24L01+
radio.setChannel(120); // data chiteshi (kubva pa0 kusvika 127).
radio.setDataRate(RF24_250KBPS); // chiyero chekuendesa data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // transmitter simba (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Vhura pombi ine identifier yekuendesa data

// Kuisa nguva, uncomment mitsara inodiwa
//rtc.setDOW(1); // Zuva revhiki
//rtc.setTime(21, 20, 0); // Nguva, mumaawa makumi maviri nemana fomati.
//rtc.setDate(29, 10, 2018); // Zuva, Gumiguru 29, 2018

tft.initR(INITR_BLACKTAB); // tanga ST7735S chip, dema tebhu
// Shandisa iyi yekutanga (uncomment) kana uri kushandisa 1.44" TFT
//tft.initR(INITR_144GREENTAB); // tanga ST7735S chip, RED rcB tab
tft.setTextWrap(nhema); // Bvumira zvinyorwa kuti zvimhanye kumucheto kwekurudyi
tft.setRotation( 2); // yeBLACK PCB uye RED tft.setRotation(0) kana kwete.
tft.fillScreen(ST7735_BLACK); // yakajeka skrini

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // kusimba kwesoftware kuri kushanda, danho repamusoro -
// zvinhu zvinodzorwa "hazvishande", "4" inonyorerwa kune ese mana madoko D, hapana kuverenga kunoitika.

nokuti ( rc = 0; rc <4; rc++)
{
tft.setCursor ( 3, rc * 10 + shift); // kuratidza nhamba dzenzvimbo dzekutonga zvinhu
tft.print(rc + 1);
}

tft.setCursor(12, 0); // kuburitsa mitsara mitatu yezvinyorwa
tft.println("VADZIDZISI & BUILD"); // kuzvirumbidza iwe vadikani
tft.setCursor(24, 10); // kana kuipa kwekodzero
tft.print("DEVELOPER MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

// kudzoreredza data////////////////////////////////////// ///////////

nokuti (z = 0; z <1023; z += 16) {// Iterates kuburikidza nemasero ose eindastiri
// uye anonyora kune one one _ pombi yemapomba, mana mabhatani ega ega, nekuti
// isina kusaina chinja chakareba. Kune 4 macounter, imwe rekodhi yevose 4 inotora 16 bytes.
EEPROM.get(z, pombi[0]); // saka, pasina iyo loop, vhoriyamu shoma
EEPROM.get(z+4, pombi[1]);
EEPROM.get(z+8, pombi[2]);
EEPROM.get(z+12, pombi[3]);

// kupa hutsva hunotevera hunokosha hwehuwandu hwe4 counters
suprim = (pombi [0] + pombi [1] + pombi [2] + pombi [3]);

// inoenzanisa kukosha kutsva kwehuwandu hwe4 counters mune suprim variable neiyo yapfuura kukosha mukuchinja.
// sumsec uye kana mari yapfuura ishoma pane kana kuenzana nemari itsva, itsva huru kana yakaenzana inopihwa
// sumsec kukosha.

kana ( sumsec <= suprim ) {
sumsec = suprim; //

// uye kukosha kwazvino z kunopihwa kuchinjika kwekero, z ndiyo kero yekutanga kwe16-byte block ye4 values.
// zviverengero zvakarekodhwa panguva imwe chete (kubvira pakuvhota chiteshi, ese 8 mabits ayo akanyorwa panguva imwe chete,
// kusanganisira yedu inodiwa yakakwirira 4 bits yechiteshi D).
kero = z;
}
}

// zvakare kuwana iyo eeprom ndangariro kukero yekutanga kwebhuroka ye16 bytes ye4 yakanyorwa counter values.
// yekupedzisira, i.e. kukosha usati wavhara kana kutangazve nekuda kwekutonhora. Kurekodha ichangoburwa
// counter values ​​muhurongwa hwema 4 akasiyana pombi.

EEPROM.get(kero, pombi[0]);
EEPROM.get(kero + 4, pombi[1]);
EEPROM.get(kero + 8, pombi[2]);
EEPROM.get(kero + 12, pombi[3]);

kero += 16; // kuwedzera kero yekunyora bhuroka rinotevera pasina kudzoreredza data rekodhi rekupedzisira

// kupera kwekudzoreredza data///////////////////////////////////// //////////////////

batanidzaImisa (0, kuverenga, KUSIMUKA); // pini D2, gonesa kukanganisa, huya sekondi yega yega
// pulses kubva kuRTC DS3231 kubva kuSQW yakabuda

wdt_enable(WDTO_8S); // tanga iyo watchdog timer, tangazve mutongi kana kutonhora, nguva,
// iyo yaunoda kuburitsa iyo timer reset command wdt_reset (uye dzivirira kudzoreredza panguva yekushanda kwakajairika - 8 sec.
// yebvunzo hazvikurudzirwe kuisa kukosha kune isingasviki masekonzi 8. Muchiitiko ichi, iyo timer inogadziriswa zvakare zviri nani.
// jerking, uye zvinoitika sekondi yega yega.

}

kushaya chiuno () {
// kutenderera kusina chinhu, pano pachava nekutonga pamusoro pekuzarura-chikamu chekushanda kwemotokari yemagetsi
}

void count() {

tft.setTextColor(ST7735_WHITE); // isa iyo font color
t = rtc.getTime(); // kuverenga nguva
tft.setCursor(5, 120); // kuseta chinzvimbo checursor
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // kuchenesa nzvimbo yekubuda nguva
tft.print(rtc.getTimeStr()); // kuverenga wachi yekubuda

wdt_reset(); // reset iyo watchdog kutenderera kwese, i.e. yechipiri

ye (rc = 0; rc <4; rc ++) // kutanga kwekutenderera kwekutarisa kutevedza kwenzvimbo yekupinda
// port mabheti kune yakapfuura kuverenga mamiriro echiteshi D mabits
{
pinState = (PIND >> 4) & ( b << rc);

kana (pumrcounter [rc]!= pinState) {// uye kana isingaenderane, ipapo
pumrcounter[rc] = pinState; // kugovera iyo port bit chimiro shanduko kukosha kutsva 1/0
}
// chiratidzo chemamiriro ezvinhu ekudzora mavara
// BLUE idiki glitch yechiratidziro chiripo (kana raibhurari?), RGB neBGR zvakasanganiswa.
kana (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // kune yakaderera level kuverenga chinja GREEN kusvika BLUE
} Mumwe {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // kune yakaderera level kuverenga shanduko BLUE kusvika GREEN
pombi [rc] += 1; // wedzera 1 yechipiri kune yekushanda nguva counter
}
}

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

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // kuchenesa nzvimbo yekuratidzira nguva yekushanda
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // uye mazuva

tft.setCursor(60, 120); // kuseta chinzvimbo checursor
tft.print(rtc.getDateStr()); // ratidza zuva paLCD skrini

ye (rc = 0; rc <4; rc ++) //kubuda kwemaawa ekushanda zvizere, gumi uye
{
tft.setCursor ( 30, rc * 10 + shift); // mazana eawa ine chidzitiro chinodzikira pasi nemapikisi gumi
tft.println(pombi [rc] / m);
}

// kunyora "mbishi" maawa ekushanda kukosha (mumasekondi) kuEEPROM ////////////////////////////

ye (rc = 0; rc <4; rc++)
{
EEPROM.put(kero, pombi [rc]);
kero += sizeof(yangarara); // wedzera kero yekunyora yakasiyana
}
}

// tumira data pamusoro peredhiyo chiteshi kubva kune data inoratidza kuti mangani mabhaiti anofanira kutumirwa.
kana ((k == 6 ) || (k == 18 ) || (k == 30 )) {

data refu isina kusaina;

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

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

Zvinyorwa zvishoma pamagumo. Kuverenga kunoitika pamwero wakaderera unonzwisisika pane zvinopinda.

Dhonza kupikisa R2-R5 ndeye 36 kOhm yesarudzo ine photoresistors GL5516. Muchiitiko che phototransistor optocoupler uye relay, yakagadzirirwa ku 4,7-5,1 kOhm. Iyo Arduino Nano v3.0 bootloader yakatsiviwa neArduino Uno uchishandisa iyo TL866A programmer yekushanda chaiko kweiyo watchdog timer. Mafusi anogadziriswa kuti ashande pamagetsi ari pamusoro pe4,3 V. Mutambo wekunze wekugadzirisa zvakare R6 C3 hauna kushandiswa. Muchirongwa chemuenzaniso, iyo transmitter frequency haienderane neiyo isina rezinesi renji; iyo 2,4 MHz renji inogumira kune ma frequency 2400.0-2483.5 MHz.

Iyo huwandu hweiyo E01-ML01DP05 transmitter ndeye 2400-2525 MHz. Iyo bandwidth yeimwe chiteshi ndeye 1 MHz, paunenge uchiisa kumhanya se "RF24_2MBPS" iyo yakatsanangurwa radio.setChannel(120) chiteshi uye inotevera ichagarwa, i.e. bhendi richava 2 MHz.

Source: www.habr.com

Voeg