Nidaamka xog ururinta madax-bannaanida deegaanka

Shirkaddu waxay iibsatay NEKST-M boosteejooyinka la socodka, oo ay soo saartay gudaha gudaha Tiknoolajiyada Xiga. Si loo hubiyo aragtida hawlgalka unugyada bamgareynta,
qaylo-dhaanta dabka iyo amniga, joogitaanka danabka ee bilowga, heerkulka qolka, heerka biyaha degdega ah. Wadnaha NEKST-M waa ATMEGA 1280 xaqiiqaduna waxay dhiirigelinaysaa marka la eego suurtogalnimada inaad u abuurto xirmo adiga kuu gaar ah oo loogu talagalay baahiyo gaar ah.

Hawsha waxaa loo dejiyay in ay abuurto nidaam isku-dir ah oo maxalli ah oo si buuxda u madaxbannaan baahida gaarka ah wakhtiga ugu yar ee suurtogalka ah iyo kharashka ugu yar. Salku waa microcontroller. Horumarinta, wax soo saarka, oo ay abuureen shaqaaluhu laftooda.

Nidaamku waa inuu ku shaqeeyaa iyada oo aan ku tiirsanayn shabakadaha gacanta, server-yada, internetka iyo nidaamka shatiga ee isticmaalka kheyraadka soo noqnoqda ee raadiyaha, waa in aan loo isticmaalin kombiyuutarada hawlgalka nidaamka kormeerka iyo xakamaynta ama, ugu badnaan, wakhti wakhti ah la isticmaalo laptops, iyada oo aan la helin. walxaha muddo dheer (6-9 bilood). Qaabeynta shabakadu waxay leedahay qaab-dhismeedka shucaaca. Xogta waxaa la ururiyaa hal mar ka dibna loo soo diro si loogu habeeyo kanaalada isgaarsiinta caadiga ah ama nuqul adag.

Nidaamku waa inuu bixiyaa:

  • la socodka shaqada unugyada bamgareynta
  • farsamaynta farsamada
  • ka ilaalinta cawaaqibka xaaladaha degdegga ah
  • digniin degdeg ah
  • xisaabinta wakhtiga shaqada
  • xisaabinta xadiga korontada ee la isticmaalo
  • xakamaynta heerkulka qalabka
  • ammaanka iyo digniinta dabka
  • duubista fog ee xilliyeed ee macluumaadka
  • shuruudaha mustaqbalka aan la garanayn

Xaaladaha shaqada:

  • bed daboolan 1 sq. km.
  • muuqaalka tooska ah ee u dhexeeya walxaha
  • heerkulka ka +50 ilaa -50C
  • qoyaan ilaa 100%
  • kaydka nafleyda firfircoon (caaryada, bakteeriyada sulfate-yaraysa)
  • gariirka, ma jiraan, mashiinada fasalada 1-2 sida waafaqsan GOST ISO 10816-1-97
  • jawiga korantada - beddelka matoorrada korantada oo leh xiriiriyeyaasha KT 6053, RVS-DN qalabka bilowga jilicsan, Qalabka xakamaynta SIEMENS MICROMASTER PID, shucaaca ISM iyo GSM iyadoo loo eegayo shuruudaha aaladahan, alxanka gacanka ee goobta
  • koronto xad dhaaf ah oo shabkada ah, hakad wakhti gaaban ah ee sahayda korantada, hillaaca xad dhaafka ah, dheeli tir la'aanta wejiga marka siligga khadka sare uu jabo shabakadaha qaybinta 6-10 kV.

In kasta oo ay jiraan shuruudo adag oo noocaas ah, dhaqangelintu aad ayay u fudud tahay marka mushkiladda tallaabo tallaabo loo xalliyo.

Iyadoo la tixgelinayo wax walba, guddiga "Arduino Nano 3.0" wuxuu noqday "maskaxda" qorshaha. Guddiga robotdyn wuxuu leeyahay kontaroolaha ATMEGA 328, xasiliyaha korantada ee lagama maarmaanka u ah 3,3V
800mA hadda iyo beddelka CH340G UART-USB.

Ugu horreyntii, xisaabiyeyaasha saacadaha shaqada ayaa la sameeyay sidii kuwa ugu casrisan. Mitir warshadeed oo hore loo isticmaalay oo lagu soo ururiyay PIC-yada oo leh wareegga sahayda korontada ee aan beddelka lahayn ayaa fashilantay sababtoo ah korontadu kor u kacday sannad gudihiis oo la shaqaynayey. Keliya kuwa ku xidhan oo isticmaalaya sahay koronto oo guriga lagu sameeyay oo 5V ah ayaa weli sidiman. Si loo dedejiyo rakibaadda iyo isku xirnaanta isku xirnaanta, calaamad ku saabsan xaaladda cutubyada ayaa laga soo qaadaa terminalka aaladaha wareejinta, i.e. diiwaangelinta joogitaanka danab wajiga 1aad oo leh koronto saddex-waji ah 380V. Si loola xidhiidho kontaroolaha, gudbin dhexdhexaad ah oo leh dabaysha 220V ama korka-kormeerka ka kooban LED iyo GL5516 sawir qaade ama PC817 optocoupler ayaa la isticmaalaa. Dhammaan xulashooyinka waa la tijaabiyay. LED-ka waxaa ku shaqeeya koronto la hagaajiyay oo xaddidan hadda iyadoo la adeegsanayo labo SVV22 capacitors oo loogu talagalay danab 630V ah oo taxane ah oo loogu talagalay badbaadada inta lagu jiro baaritaanka shilalka ee wareegyada leh megohmmeter.
Akhrinta akhrinta wakhtiga hawlgalka iyadoo la isticmaalayo shaashadda ST7735S LCD, gudbinta xogta waqtiga-dhabta ah ee raadiyaha iyadoo la adeegsanayo moduleka E01-ML01DP05 ee inta jeer ee 2,4 MHz. Qalabkani waxa uu ka kooban yahay nRF24L01+ chip iyo RFX2401C gudbinta/helida cod-weyneeye,
awoodda wax soo saarka ilaa 100mW. Anteenooyinka Helical ee loogu talagalay kala duwanaanshaha la rabo ee xisaabiyaha khadka tooska ah goobta. Doorashada nooca anteenada waxaa lagu go'aamiyaa ka-reebista soo dhaweynta mawjadaha hal-abuurka ah ee ka imanaya dhismayaasha birta ah ee ku xeeran. Qaybaha anteenada waxay ku daabacan yihiin daabacaha 3D. Xaaladda hadda ee xisaabaadka ayaa lagu kaydiyaa EEPROM-ka kantaroolaha laftiisa waxaana dib loo soo celiyaa haddii ay dhacdo koronto lama filaan ah. Muddada u dhexaysa tirinta waxaa bixiya RTC chip DS3231 oo ah qaab module ah oo batari kayd ah. Korontadu waxay isticmaashaa 3 qaybood, isha garaaca wadnaha dhabta ah 220/5V HLK-PM01 600mA, beddele ka 1-5V ilaa 5V HW-553 и 03962A - kontoroolka batteriga leh nidaamka ka ilaalinta wareegga gaaban, qulqulka xad-dhaafka ah iyo kharashka dheeraadka ah. Dhammaan qaybaha waxaa laga soo iibsaday website-ka Aliexpress.

Looxa rootigaNidaamka xog ururinta madax-bannaanida deegaanka
4-channel counter. Waxaa jira filtarrada LC ee agabka si ay uga ilaaliyaan faragelinta khadka isgaarsiineed ee lamaanaha ah ee qalloocan. Xogta ku saabsan xaaladda walxaha xakamaynta ayaa si joogto ah loo akhriyaa hal mar ilbiriqsikiiba waxaana lagu soo bandhigaa midabka LCD-ga. Wax-akhrisyada waa la cusboonaysiiyaa oo lagu qoraa xusuusta aan kacsanayn 1 ilbiriqsi kasta. 36 ilbiriqsi waa 36/1 saac, tani waa qaabka xogta loo baahan yahay. 100 ilbiriqsi kasta macluumaadka waxa lagu kala qaadaa tirada ilbiriqsi ee hawlgalka unug kasta oo kantarool ah. Xusuusta EEPROM waxay leedahay tiro xaddidan oo wareegyo qoraal ah, sida uu qabo soo saaraha, 12 jeer. Doorashada ugu xun waa marka ugu yaraan hal unug si joogto ah loo cusboonaysiiyo. Mugga miiska 100000aad waa 1 bytes, kani waa nambar qaab dheer, 4 counters, wadar ahaan 4 bytes waxaa ku jira hal rikoodh. Dhererka xusuusta chip-ku waa 16 bytes; ka dib 1024 ka mid ah gelinta 64 counters, duubista ayaa bilaaban doonta. Maktabadda EEPROM, habka EEPROM.put ma qorayo, haddii qiimaha unugga iyo macluumaadka la qoray ay iswaafaqaan, ma jiri doonto hoos u dhac ku yimaada unugyada. Natiijo ahaan, wakhtiga hawlgalka xusuusta ee dammaanadda ah wuxuu noqon doonaa in ka badan 4 sano. Wakhtiga suurtogalka ah laakiin aan la dammaanad qaadin shaqada ayaa noqon karta mid aad u dheer.

jaantuska wareeggaNidaamka xog ururinta madax-bannaanida deegaanka
Barnaamijka Arduino IDE//12 bytes (328%)

#ku dar // Maktabadda sawirada Core
#ku dar // Maktabadda u gaarka ah hardware
#waxa ku jira
#ku dar
#ku dar
#ku dar
#ku dar
raadiyaha RF24 (9, 10); // Shayga raadiyaha ee la shaqaynta maktabadda RF24,
// iyo nambarada biinanka nRF24L01+ (CE, CSN)
#ku dar
DS3231 rtc (SDA, SCL);
Waqtiga t;

//# qeex TFT_CS 10
# qeex TFT_CS 8
# qeex TFT_RST -1 // waxaad sidoo kale ku xiri kartaa tan dib u dajinta Arduino
// xaalkaas, u dhig kan #qeex pin-1!
//#define TFT_DC 9 // DC=RS=A0 - kala doorarka xulashada amarka ama diiwaanka xogta.
# qeex TFT_DC 3

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

// Ikhtiyaarka 2: isticmaal biinanka kasta laakiin xoogaa gaabis ah!
# qeex TFT_SCLK 13 // kuwan u dhig sidii biinanka aad jeceshahay!
# Qeex TFT_MOSI 11 // u dhig kuwan inay noqdaan biinanka aad jeceshahay!
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#ku dar

isbeddelka byte = 52;
byte pinState;
bamka dheer ee aan saxeexin[4];// diyaarsan oo leh 4 ilbiriqsi oo qiimahoodu yahay
sabeyn m = 3600.0;
ciwaanka int aan saxeexin = 0;
int rc;// doorsoomayaasha xisaabiyeyaasha
sumprim dheer oo aan saxeexin = 0;
sumsec dheer oo aan saxiixin = 0;
byte i = 0;
byte k = 34;
aan saxeexin int z = 0;
byte b = B00000001;
byte pumrcounter[4]; // habayn loogu talagalay kaydinta gobolada shayga, 1 - off, 0 - shid.
bilawga int = 0; //

Mudnaan madhan () {

rtc.bilow ();
radio.bilow(); // Bilow shaqada nRF24L01+
radio.setChannel(120); // kanaalka xogta (laga bilaabo 0 ilaa 127).
radio.setDataRate(RF24_250KBPS); // heerka wareejinta xogta (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // awooda gudbiyaha (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Fur tuubo leh aqoonsi wareejinta xogta

// Si aad u dejiso wakhtiga, ha ka bixin khadadka lagama maarmaanka ah
//rtc.setDOW(1); // Maalinta toddobaadka
//rtc.setTime (21, 20, 0); // Waqtiga, qaab 24 saac ah.
//rtc.setTaariikhda (29, 10, 2018); // Taariikhda, Oktoobar 29, 2018

tft.initR(INITR_BLACKTAB); // bilow ST7735S chip, tab madow
// Isticmaal bilawga bilawga ah (faallooyinka) haddii aad isticmaalayso 1.44" TFT
//tft.initR(INITR_144GREENTAB); // bilow ST7735S chip, RED rcB tab
tft.setTextWrap (been); // Oggolow qoraalka inuu ka baxo cidhifka midig
tft.setRotation ( 2 ); // loogu talagalay PCB MADOW iyo CASAAN tft.setRotation(0) iyo in kale.
tft.fillScreen(ST7735_BLACK); // shaashad cad

DDR = DDRD | B00000000;
PORTD = DEKEDDA | B11110000; // adkaynta software-ka ayaa shaqaynaysa, heer sare ah -
// Walxaha la kantaroolo "ma shaqeeyaan", "4" ayaa loo qoraa dhammaan 1-ta dekedood ee D, tirintu ma dhacdo.

loogu talagalay (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + shift); // muujinta nambarada booska walxaha xakamaynta
tft.print (rc + 1);
}

tft.setCursor (12, 0); // soo saar 3 xariiq oo qoraal ah
tft.println ("HORUUMAYAASHA & DHISMAHA"); // si aad isu ammaanto gacaliyahaaga
tft.setCursor (24, 10); // ama xuquuqda daabacaada xun
tft.print ("HORUUMIYE MM");
tft.setCursor (28, 20);
tft.print ("BUILD-ER DD");

//kabashada xogta/////////////////////////// //////////

loogu talagalay (z = 0; z <1023; z += 16) {// Ku celcelinta dhammaan unugyada warshadaha
// oo u qora 4 doorsoomayaasha bamka ah, 4 bytes ee miiska kasta, sababtoo ah
// doorsoome dheer oo aan saxeexin. Waxaa jira 4 counters, hal rikoodh oo dhan 4 waxay qaadataa 16 bytes.
EEPROM.get(z, bamka[0]); // sidaas, iyada oo aan lahayn loop-ka, mugga yar
EEPROM.get(z+4, bamka[1]);
EEPROM.get(z+8, bamka[2]);
EEPROM.get(z+12, bamka[3]);

// u qoondaynta qiime cusub oo soo socda wadarta 4 counters
sumprim = (bamamka [0] + bamka [1] + bamka [2] + bamka [3]);

// wuxuu is barbar dhigayaa qiimaha cusub ee wadarta 4 xisaabiye ee doorsoomaha guud iyo qiimihii hore ee doorsoomaha
// sumsec iyo haddii wadarta hore ay ka yar tahay ama la mid tahay wadarta cusub, ka weyn ama siman ayaa loo qoondeeyey
// sumsec qiimaha.

haddii ( sumsec <= sumprim) {
sumsec = sumprim; //

//iyo qiimaha hadda z waxa loo qoondeeyay doorsoomiyaha ciwaanka,z waa ciwaanka bilawga 16-byte block oo ah 4 qiimayaal
// xisaabiyeyaasha isku mar la duubay (tan iyo markii la codaynayey dekedda, dhammaan 8-da qaybood ee ka mid ah ayaa isku mar la qorayaa,
// oo ay ku jiraan 4-bit oo dekedaha ah ee lagama maarmaanka u ah.
ciwaanka = z;
}
}

// mar kale gelitaanka xusuusta eeprom ee ciwaanka bilawga baloogga 16 bytes ee 4 qiimayaasha xisaabeedka la duubay
// u dambeeya, i.e. qiyamka ka hor inta aan la xidhin ama dib loo bilaabin baraf awgeed. Duubista ugu dambeysay
// counter qiyamka galay array of 4 doorsoomayaasha bamka.

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

ciwaanka += 16; // kordhinta ciwaanka qorista baloogga soo socda iyada oo aan dib loo qorin xogta diiwaankii u dambeeyay

//dhammaadka soo kabashada xogta/////////////////////////////// ////////////////

ku xidhid joojinta (0, tirinta, KACSI); // pin D2, awood hakad, kaalay ilbiriqsi kasta
// garaaca garaaca RTC DS3231 ee wax soo saarka SQW

wdt_enable(WDTO_8S); // Bilow saacada ilaaliye, dib u kici kontaroolaha haddii ay dhacdo baraf, wakhti,
// kaas oo aad u baahan tahay inaad soo saarto saacada dib u dejinta wdt_reset (oo iska ilaali dib u kicinta inta lagu jiro hawlgalka caadiga ah - 8 seken.
// imtixaanada laguma talinayo in la dejiyo qiimaha wax ka yar 8 ilbiriqsi. Xaaladdan oo kale, saacada dib ayaa loo dajiyay iyadoo la doorbidayo
// gariir, oo waxay dhacdaa ilbiriqsi kasta.

}

loox madhan () {
// wareeg madhan, halkan waxaa lagu xakameyn doonaa hawlgalka wajiga furan ee mishiinka korontada
}

tiro madhan() {

tft.setTextColor(ST7735_WHITE); // deji midabka farta
t = rtc.getTime (); // waqtiga akhriska
tft.setCursor (5, 120); // dejinta booska cursorka
tft.fillRect (5, 120, 50, 7, ST7735_BLACK); // nadiifinta aagga wakhtiga wax-soo-saarka
tft.print (rtc.getTimeStr()); // akhrinta saacada wax soo saarka

wdt_reset(); // dib u deji ilaaliye wareeg kasta, i.e. second

loogu talagalay (rc = 0; rc <4; rc ++) // bilawga wareegga si loo hubiyo u hoggaansanaanta gobolka gelinta
// dekedu waxay u dhigantaa xaaladdii hore ee dekeda D bits
{
pinState = (PIND >> 4) & ( b << rc );

haddii (pumrcounter [rc]! = pinState) {// iyo haddii aysan u dhigmin, markaa
pumrcounter[rc] = pinState; // u qoondaynta doorsoomayaasha heerka dekedu qiime cusub 1/0
}
// calaamad muujinaysa xaaladda walxaha xakamaynta midabka
// BLUE waa cilad yar oo shaashadda jirta (ama maktabadda?), RGB iyo BGR waa la isku qasan yahay.
haddii (pinState == ( b << rc )) {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // tirinta heerka hoose u beddel GREEN una beddelo buluug
} kale {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // tirinta heerka hoose waxay u beddeshaa BULUUG ilaa CAGAAR
bamka [rc] += 1; // ku dar 1 ilbiriqsi miiska wakhtiga qalliinka
}
}

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

tft.fillRect (30, shift, 97, 40, ST7735_BLACK); // nadiifinta aagga bandhigga wakhtiga hawlgalka
tft.fillRect (60, 120, 73, 7, ST7735_BLACK); // iyo taariikhaha

tft.setCursor (60, 120); // dejinta booska cursorka
tft.print (rtc.getDateStr()); // ku muuji taariikhda shaashadda LCD-ga

loogu talagalay (rc = 0; rc <4; rc ++) // soo saarida saacadaha shaqada guud ahaan, tobnaadka iyo
{
tft.setCursor (30, rc * 10+ shift); // boqollaal saac oo leh shaashad hoos u dhac 10 pixels
tft.println (bamka [rc] / m);
}

// qorista qiimaha saacadaha shaqada "ceeriin" (ilbiriqsi gudahood) ilaa EEPROM ////////////////////////

loogu talagalay (rc = 0; rc <4; rc++)
{
EEPROM.put (cinwaanka, bamka [rc]);
ciwaanka += cabbirka (sabayn); // Kordhi doorsoomiyaha ciwaanka qoraalka
}
}

// ku soo dir xogta kanaalka raadiyaha xogta tilmaamaysa inta bytes ee la dirayo.
haddii ( (k == 6 ) || (k == 18 ) || (k == 30 )) {

xog dheer oo aan saxiixin;

radio.qor (&bilow, cabbirka (bilow));

loogu talagalay (i = 0; i <4; i++) {
xogta = bamka [i];
radio.qor (&data, sizeof(data));
}
}
}

Dhawr qoraal ah dhamaadka. Tirintu waxay ku dhacdaa heer macquul ah oo hooseeya marka la gelayo.

Iska caabbinta soo jiidashada R2-R5 waa 36 kOhm ikhtiyaarka leh sawir-qaadayaasha GL5516. Xaaladda sawir-transistor optocoupler iyo gudbinta, loo dejiyay 4,7-5,1 kOhm. Arduino Nano v3.0 bootloader waxaa lagu bedelay Arduino Uno iyadoo la adeegsanayo barnaamijka TL866A ee hawlgalka saxda ah ee saacada ilaalinta. Fiyuusyada waa la saxay si ay ugu shaqeeyaan danab ka sarreeya 4,3 V. Wareegga dib u dejinta dibadda R6 C3 lama isticmaalin. Barnaamijka muunada, inta jeer ee gudbiye uma dhigma tirada aan shatiga la siin; cabirka 2,4 MHz wuxuu ku xaddidan yahay inta jeer ee 2400.0-2483.5 MHz.

Baaxadda gudbinta E01-ML01DP05 waa 2400-2525 MHz. Xawaaraha hal kanaalku waa 1 MHz, marka xawaraha loo dhigayo “RF24_2MBPS” kanaalka raadiyaha la cayimay.setChannel(120) iyo kan ku xiga waa la qabsan doonaa, i.e. band wuxuu noqon doonaa 2 MHz.

Source: www.habr.com

Add a comment