స్థానిక అటానమస్ డేటా సేకరణ వ్యవస్థ

కంపెనీ నెక్స్ట్ టెక్నాలజీస్ ద్వారా దేశీయంగా ఉత్పత్తి చేయబడిన NEKST-M మానిటరింగ్ పోస్ట్‌లను కొనుగోలు చేసింది. పంపింగ్ యూనిట్ల ఆపరేషన్ యొక్క విజువలైజేషన్ నిర్ధారించడానికి,
అగ్ని మరియు భద్రతా అలారాలు, స్టార్టర్స్ వద్ద వోల్టేజ్ ఉనికి, గది ఉష్ణోగ్రత, అత్యవసర నీటి స్థాయి. NEKST-M యొక్క గుండె ATMEGA 1280 మరియు నిర్దిష్ట అవసరాల కోసం మీ స్వంత కిట్‌ని సృష్టించే అవకాశం పరంగా ఈ వాస్తవం ప్రోత్సాహకరంగా ఉంది.

సాధ్యమైనంత తక్కువ సమయంలో మరియు తక్కువ ఖర్చుతో నిర్దిష్ట అవసరాల కోసం పూర్తి స్వయంప్రతిపత్త స్థానిక డిస్పాచ్ వ్యవస్థను రూపొందించడానికి పని సెట్ చేయబడింది. ఆధారం మైక్రోకంట్రోలర్. అభివృద్ధి, తయారీ, సిబ్బంది స్వయంగా సృష్టించారు.

రేడియో ఫ్రీక్వెన్సీ వనరులను ఉపయోగించడం కోసం సెల్యులార్ నెట్‌వర్క్‌లు, సర్వర్లు, ఇంటర్నెట్ మరియు లైసెన్సింగ్ సిస్టమ్‌పై ఆధారపడకుండా సిస్టమ్ పనిచేయాలి, పర్యవేక్షణ మరియు నియంత్రణ వ్యవస్థ యొక్క ఆపరేషన్‌లో కంప్యూటర్‌లను ఉపయోగించకూడదు లేదా గరిష్టంగా ల్యాప్‌టాప్‌లను యాక్సెస్ లేకుండా ఉపయోగించాలి. చాలా కాలం పాటు వస్తువులు (6-9 నెలలు). నెట్‌వర్క్ కాన్ఫిగరేషన్ రేడియల్ నిర్మాణాన్ని కలిగి ఉంది. డేటా ఒక సమయంలో సేకరించబడుతుంది మరియు సాధారణ కమ్యూనికేషన్ ఛానెల్‌ల ద్వారా లేదా హార్డ్ కాపీగా ప్రాసెసింగ్ కోసం పంపబడుతుంది.

సిస్టమ్ తప్పనిసరిగా అందించాలి:

  • పంపింగ్ యూనిట్ల ఆపరేషన్ పర్యవేక్షణ
  • సాంకేతిక ఆటోమేషన్
  • అత్యవసర పరిస్థితుల పరిణామాల నుండి రక్షణ
  • అత్యవసర సిగ్నలింగ్
  • ఆపరేటింగ్ సమయం గణన
  • వినియోగించే విద్యుత్ మొత్తాన్ని లెక్కించడం
  • పరికరాలు ఉష్ణోగ్రత నియంత్రణ
  • భద్రత మరియు అగ్ని అలారం
  • సమాచారం యొక్క ఆవర్తన రిమోట్ రికార్డింగ్
  • తెలియని భవిష్యత్తు అవసరాలు

పని పరిస్థితులు:

  • కవరేజ్ ప్రాంతం 1 చ.కి.మీ.
  • వస్తువుల మధ్య ప్రత్యక్ష దృశ్యమానత
  • +50 నుండి -50 సి వరకు ఉష్ణోగ్రత
  • 100% వరకు తేమ
  • జీవసంబంధ క్రియాశీల నిక్షేపాలు (అచ్చు, సల్ఫేట్-తగ్గించే బ్యాక్టీరియా)
  • GOST ISO 1-2-10816 ప్రకారం 1-97 తరగతుల యంత్రాల కంపనం, ఇక లేదు
  • విద్యుదయస్కాంత వాతావరణం - KT 6053 కాంటాక్టర్లతో ఎలక్ట్రిక్ మోటార్లు మారడం, RVS-DN సాఫ్ట్ స్టార్ట్ పరికరాలు, SIEMENS మైక్రోమాస్టర్ PID నియంత్రణ పరికరాలు, ఈ పరికరాల అవసరాలకు అనుగుణంగా ISM మరియు GSM పరిధిలో రేడియేషన్, సైట్‌లో మాన్యువల్ ఆర్క్ వెల్డింగ్
  • అధిక నెట్‌వర్క్ వోల్టేజ్, విద్యుత్ సరఫరాలో స్వల్పకాలిక అంతరాయాలు, మెరుపు ఓవర్‌వోల్టేజీలు, 6-10 kV పంపిణీ నెట్‌వర్క్‌లలో ఓవర్‌హెడ్ లైన్ వైర్ విచ్ఛిన్నమైనప్పుడు దశ అసమతుల్యత.

అటువంటి కఠినమైన అవసరాలు ఉన్నప్పటికీ, దశలవారీగా సమస్యను పరిష్కరించేటప్పుడు అమలు చేయడం చాలా సులభం.

అన్నింటినీ పరిగణనలోకి తీసుకుంటే, "Arduino Nano 3.0" బోర్డు ప్రణాళిక యొక్క "మెదడు"గా మారింది. రోబోడిన్ బోర్డులో ATMEGA 328 కంట్రోలర్ ఉంది, దీనికి అవసరమైన 3,3V వోల్టేజ్ స్టెబిలైజర్
ప్రస్తుత 800 mA మరియు CH340G UART-USBకి కన్వర్టర్.

అన్నింటిలో మొదటిది, ఆపరేటింగ్ గంటల కౌంటర్లు అత్యంత నవీనమైనవిగా సృష్టించబడ్డాయి. ట్రాన్స్‌ఫార్మర్‌లెస్ పవర్ సప్లై సర్క్యూట్‌తో PICలపై గతంలో ఉపయోగించిన ఇండస్ట్రియల్ మీటర్లు పనిచేసిన ఒక సంవత్సరంలోపు వోల్టేజ్ సర్జ్‌ల కారణంగా విఫలమయ్యాయి. ఇంట్లో తయారు చేసిన 5V విద్యుత్ సరఫరాలను ఉపయోగించి కనెక్ట్ చేయబడినవి మాత్రమే చెక్కుచెదరకుండా ఉన్నాయి. సంస్థాపన మరియు కనెక్షన్ యొక్క పాండిత్యము వేగవంతం చేయడానికి, యూనిట్ల స్థితి గురించి సిగ్నల్ స్విచ్చింగ్ పరికరాల టెర్మినల్స్ నుండి తీసుకోబడుతుంది, అనగా. 1V యొక్క మూడు-దశల విద్యుత్ సరఫరాతో 380 వ దశ వోల్టేజ్ ఉనికిని నమోదు చేయడం. కంట్రోలర్‌తో సమన్వయం చేయడానికి, 220V వైండింగ్‌తో కూడిన ఇంటర్మీడియట్ రిలే లేదా LED మరియు GL5516 ఫోటోరేసిస్టర్ లేదా PC817 ఆప్టోకప్లర్‌తో కూడిన ఆప్టోకప్లర్ ఉపయోగించబడుతుంది. అన్ని ఎంపికలు పరీక్షించబడ్డాయి. LED ఒక megohmmeter తో సర్క్యూట్లను ప్రమాదవశాత్తు పరీక్ష సమయంలో భద్రత కోసం సిరీస్లో కనెక్ట్ 22V యొక్క వోల్టేజ్ కోసం రూపొందించిన రెండు SVV630 కెపాసిటర్లను ఉపయోగించి ప్రస్తుత పరిమితితో సరిదిద్దబడిన వోల్టేజ్ ద్వారా శక్తిని పొందుతుంది.
ST7735S LCD స్క్రీన్‌ని ఉపయోగించి ఆపరేటింగ్ టైమ్ రీడింగ్‌లను చదవడం, 01 MHz ఫ్రీక్వెన్సీ వద్ద E01-ML05DP2,4 మాడ్యూల్‌ని ఉపయోగించి రేడియో ద్వారా నిజ-సమయ డేటా ట్రాన్స్‌మిషన్. ఈ పరికరం nRF24L01+ చిప్ మరియు RFX2401C ట్రాన్స్‌మిట్/రిసీవ్ యాంప్లిఫైయర్‌ను కలిగి ఉంది,
అవుట్‌పుట్ పవర్ 100 mW వరకు. ఆన్‌లైన్ కాలిక్యులేటర్‌లో కావలసిన పరిధి కోసం రూపొందించబడిన హెలికల్ యాంటెన్నాలు వెబ్సైట్. యాంటెన్నా రకం ఎంపిక పరిసర మెటల్ నిర్మాణాల నుండి ఒంటరిగా ప్రతిబింబించే తరంగాల స్వీకరణను మినహాయించడం ద్వారా నిర్ణయించబడుతుంది. యాంటెన్నా భాగాలు 3D ప్రింటర్‌లో ముద్రించబడతాయి. కౌంటర్ల యొక్క ప్రస్తుత స్థితి నియంత్రిక యొక్క EEPROM లోనే నిల్వ చేయబడుతుంది మరియు ఊహించని విద్యుత్తు అంతరాయం సంభవించినప్పుడు పునరుద్ధరించబడుతుంది. లెక్కింపు కోసం సమయ విరామాలు RTC చిప్ DS3231 ద్వారా బ్యాకప్ బ్యాటరీతో మాడ్యూల్ రూపంలో అందించబడతాయి. విద్యుత్ సరఫరా 3 మాడ్యూల్‌లను ఉపయోగిస్తుంది, అసలు పల్స్ మూలం 220/5V HLK-PM01 600mA, 1-5V నుండి 5V వరకు ఒక కన్వర్టర్ హెచ్‌డబ్ల్యూ -553 и 03962A - బ్యాటరీ కంట్రోలర్‌తో పథకం షార్ట్ సర్క్యూట్, ఓవర్ డిశ్చార్జ్ మరియు ఓవర్‌ఛార్జ్ నుండి రక్షణ. అన్ని భాగాలు Aliexpress వెబ్‌సైట్‌లో కొనుగోలు చేయబడ్డాయి.

బ్రెడ్ బోర్డుస్థానిక అటానమస్ డేటా సేకరణ వ్యవస్థ
4-ఛానల్ కౌంటర్. ట్విస్టెడ్ పెయిర్ కమ్యూనికేషన్ లైన్‌పై జోక్యం నుండి రక్షించడానికి ఇన్‌పుట్‌ల వద్ద LC ఫిల్టర్‌లు ఉన్నాయి. నియంత్రణ వస్తువుల స్థితిపై డేటా నిరంతరం సెకనుకు ఒకసారి చదవబడుతుంది మరియు LCDలో రంగులో ప్రదర్శించబడుతుంది. ప్రతి 1 సెకన్లకు రీడింగ్‌లు అప్‌డేట్ చేయబడతాయి మరియు అస్థిర మెమరీలో రికార్డ్ చేయబడతాయి. 36 సెకన్లు గంటలో 36/1, ఇది డేటా అవసరమైన ఫార్మాట్. ప్రతి 100 సె. ప్రతి కంట్రోల్ యూనిట్ కోసం ఎన్ని సెకన్ల ఆపరేషన్‌కు సంబంధించిన సమాచారం ప్రసారం చేయబడుతుంది. EEPROM మెమరీ పరిమిత సంఖ్యలో వ్రాత-చెరిపివేసే చక్రాలను కలిగి ఉంది, తయారీదారు ప్రకారం, 12 సార్లు. కనీసం ఒక సెల్ అయినా నిరంతరం అప్‌డేట్ చేయబడుతున్నప్పుడు చెత్త ఎంపిక. 100000వ కౌంటర్ యొక్క వాల్యూమ్ 1 బైట్‌లు, ఇది పొడవైన ఫార్మాట్ సంఖ్య, 4 కౌంటర్లు, మొత్తం 4 బైట్‌లు ఒక రికార్డు ద్వారా ఆక్రమించబడ్డాయి. చిప్ మెమరీ పొడవు 16 బైట్లు; 1024 కౌంటర్ల 64 ఎంట్రీల తర్వాత, రికార్డింగ్ మళ్లీ ప్రారంభమవుతుంది. EEPROM లైబ్రరీలో, EEPROM.put పద్ధతి వ్రాయబడదు; సెల్ విలువ మరియు వ్రాయబడిన సమాచారం సరిపోలితే, సెల్‌ల క్షీణత ఉండదు. ఫలితంగా, హామీ ఇవ్వబడిన మెమరీ ఆపరేటింగ్ సమయం 4 సంవత్సరాల కంటే ఎక్కువగా ఉంటుంది. సాధ్యమయ్యే కానీ హామీ లేని పని సమయం చాలా ఎక్కువ ఉంటుంది.

సర్క్యూట్ రేఖాచిత్రంస్థానిక అటానమస్ డేటా సేకరణ వ్యవస్థ
Arduino IDE లో ప్రోగ్రామ్//12 బైట్లు (328%)

#చేర్చండి // కోర్ గ్రాఫిక్స్ లైబ్రరీ
#చేర్చండి // హార్డ్‌వేర్-నిర్దిష్ట లైబ్రరీ
# చేర్చండి
#చేర్చండి
# చేర్చండి
#చేర్చండి
#చేర్చండి
RF24 రేడియో(9, 10); // RF24 లైబ్రరీతో పని చేయడానికి రేడియో ఆబ్జెక్ట్,
// మరియు పిన్ నంబర్లు nRF24L01+ (CE, CSN)
#చేర్చండి
DS3231 rtc(SDA, SCL);
సమయం t;

//#TFT_CS 10ని నిర్వచించండి
#TFT_CS 8ని నిర్వచించండి
#TFT_RST -1ని నిర్వచించండి // మీరు దీన్ని Arduino రీసెట్‌కి కూడా కనెక్ట్ చేయవచ్చు
// ఈ సందర్భంలో, ఈ #నిర్వచించండి పిన్‌ను -1కి సెట్ చేయండి!
//#TFT_DC 9ని నిర్వచించండి // DC=RS=A0 - కమాండ్ లేదా డేటా రిజిస్టర్‌ని ఎంచుకోవడానికి హోదా ఎంపికలు.
#TFT_DC 3ని నిర్వచించండి

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

// ఎంపిక 2: ఏదైనా పిన్‌లను ఉపయోగించండి కానీ కొంచెం నెమ్మదిగా!
#TFT_SCLK 13ని నిర్వచించండి // వీటిని మీకు నచ్చిన పిన్‌లుగా సెట్ చేయండి!
#TFT_MOSI 11ని నిర్వచించండి // వీటిని మీకు నచ్చిన పిన్‌లుగా సెట్ చేయండి!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#చేర్చండి

బైట్ షిఫ్ట్ = 52;
బైట్ పిన్‌స్టేట్;
సంతకం చేయని పొడవైన పంపు[4];// 4 సెకన్ల కౌంటర్ విలువలతో కూడిన శ్రేణి
ఫ్లోట్ m = 3600.0;
సంతకం చేయని పూర్తి చిరునామా = 0;
int rc;// కౌంటర్ల కోసం వేరియబుల్
సంతకం చేయని లాంగ్ సంప్రిమ్ = 0;
సంతకం చేయని పొడవైన సంసెక్ = 0;
బైట్ i = 0;
బైట్ k = 34;
సంతకం చేయని int z = 0;
బైట్ b = B00000001;
బైట్ pumrcounter[4]; // ఆబ్జెక్ట్ స్టేట్‌లను నిల్వ చేయడానికి అర్రే, 1 - ఆఫ్, 0 - ఆన్.
Int ప్రారంభం = 0; //

శూన్య సెటప్ () {

rtc.begin();
radio.begin(); // nRF24L01+ పనిని ప్రారంభించండి
radio.setChannel(120); // డేటా ఛానెల్ (0 నుండి 127 వరకు).
radio.setDataRate(RF24_250KBPS); // డేటా బదిలీ రేటు (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // ట్రాన్స్‌మిటర్ పవర్ (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // డేటా బదిలీ కోసం ఐడెంటిఫైయర్‌తో పైపును తెరవండి

// సమయాన్ని సెట్ చేయడానికి, అవసరమైన పంక్తులను తీసివేయండి
//rtc.setDOW(1); // వారంలో రోజు
//rtc.setTime(21, 20, 0); // సమయం, 24 గంటల ఆకృతిలో.
//rtc.setDate(29, 10, 2018); // తేదీ, అక్టోబర్ 29, 2018

tft.initR(INITR_BLACKTAB); // ST7735S చిప్, బ్లాక్ ట్యాబ్‌ను ప్రారంభించండి
// మీరు 1.44" TFTని ఉపయోగిస్తుంటే ఈ ఇనిషియలైజర్ (అన్‌కామెంట్) ఉపయోగించండి
//tft.initR(INITR_144GREENTAB); // ST7735S చిప్, RED rcB ట్యాబ్‌ను ప్రారంభించండి
tft.setTextWrap(తప్పుడు); // కుడి అంచు నుండి టెక్స్ట్‌ని అమలు చేయడానికి అనుమతించండి
tft.setRotation( 2 ); // BLACK PCB మరియు RED tft.setRotation(0) లేదా కాదు.
tft.fillScreen(ST7735_BLACK); // స్పష్టమైన స్క్రీన్

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // సాఫ్ట్‌వేర్ బిగించడం పని చేస్తోంది, అధిక స్థాయి -
// నియంత్రిత ఆబ్జెక్ట్‌లు “పని చేయవు”, “4” మొత్తం 1 సీనియర్ పోర్ట్‌లు Dకి వ్రాయబడ్డాయి, లెక్కింపు జరగదు.

కోసం (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + shift ); // నియంత్రణ వస్తువుల స్థాన సంఖ్యలను ప్రదర్శిస్తోంది
tft.print(rc + 1);
}

tft.setCursor(12, 0); // అవుట్‌పుట్ 3 లైన్ల టెక్స్ట్
tft.println("డెవలపర్లు & బిల్డ్"); // ప్రియమైన వారిని మిమ్మల్ని మీరు ప్రశంసించుకోవడానికి
tft.setCursor(24, 10); // లేదా చెడు కాపీరైట్
tft.print("డెవలపర్ MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//సమాచారం తిరిగి పొందుట////////////////////////////////////////////// //////////

కోసం (z = 0; z <1023; z += 16 ) {// పరిశ్రమలోని అన్ని సెల్‌ల ద్వారా పునరావృతమవుతుంది
//మరియు ప్రతి కౌంటర్‌కు 4 పంప్ వేరియబుల్స్, 4 బైట్‌ల శ్రేణికి వ్రాస్తుంది, ఎందుకంటే
// సంతకం చేయని దీర్ఘ వేరియబుల్. 4 కౌంటర్లు ఉన్నాయి, మొత్తం 4లో ఒక రికార్డు 16 బైట్‌లను తీసుకుంటుంది.
EEPROM.get(z, పంప్[0]); // కాబట్టి, ఫర్ లూప్ లేకుండా, తక్కువ వాల్యూమ్
EEPROM.get(z+4, పంప్[1]);
EEPROM.get(z+8, పంప్[2]);
EEPROM.get(z+12, పంప్[3]);

// 4 కౌంటర్ల మొత్తానికి కొత్త తదుపరి విలువను కేటాయించడం
sumprim = (పంప్ [0] + పంపు [1] + పంపు [2] + పంపు [3]);

// సంప్రిమ్ వేరియబుల్‌లోని 4 కౌంటర్ల మొత్తం కొత్త విలువను వేరియబుల్‌లోని మునుపటి విలువతో పోల్చింది
// sumsec మరియు మునుపటి మొత్తం కొత్త మొత్తం కంటే తక్కువ లేదా సమానంగా ఉంటే, కొత్త ఎక్కువ లేదా సమానం కేటాయించబడుతుంది
// సంసెక్ విలువ.

అయితే ( sumsec <= sumprim ) {
సంసెక్ = సంప్రిమ్; //

//మరియు ప్రస్తుత విలువ z అడ్రస్ వేరియబుల్‌కు కేటాయించబడింది, z అనేది 16 విలువల 4-బైట్ బ్లాక్ యొక్క ప్రారంభ చిరునామా.
// కౌంటర్లు ఒకే సమయంలో రికార్డ్ చేయబడ్డాయి (పోర్ట్‌ను పోలింగ్ చేసినప్పుడు, దానిలోని మొత్తం 8 బిట్‌లు ఏకకాలంలో వ్రాయబడతాయి,
// మా అవసరమైన అధిక 4 బిట్‌ల పోర్ట్ డితో సహా).
చిరునామా = z;
}
}

// 16 రికార్డ్ చేసిన కౌంటర్ విలువల 4 బైట్‌ల బ్లాక్ ప్రారంభ చిరునామాలో మరోసారి ఈప్రోమ్ మెమరీని యాక్సెస్ చేస్తోంది
// చివరిది, అనగా. ఫ్రీజింగ్ కారణంగా షట్ డౌన్ లేదా రీబూట్ చేయడానికి ముందు విలువలు. తాజాగా రికార్డింగ్ చేస్తోంది
// 4 వేరియబుల్స్ పంప్ యొక్క శ్రేణిలో విలువలను కౌంటర్ చేయండి.

EEPROM.get(చిరునామా, పంపు[0]);
EEPROM.get(చిరునామా + 4, పంప్[1]);
EEPROM.get(చిరునామా + 8, పంప్[2]);
EEPROM.get(చిరునామా + 12, పంప్[3]);

చిరునామా += 16; //చివరి రికార్డ్ యొక్క డేటాను ఓవర్‌రైట్ చేయకుండా తదుపరి బ్లాక్‌ను వ్రాయడానికి చిరునామాను పెంచడం

//డేటా రికవరీ ముగింపు////////////////////////////////////////////// //////////////////

అటాచ్‌ఇంటరప్ట్(0, కౌంట్, రైజింగ్); // పిన్ D2, అంతరాయాలను ప్రారంభించండి, ప్రతి సెకనుకు వస్తాయి
// SQW అవుట్‌పుట్ నుండి RTC DS3231 నుండి పప్పులు

wdt_enable (WDTO_8S); // వాచ్‌డాగ్ టైమర్‌ను ప్రారంభించండి, గడ్డకట్టే సమయంలో కంట్రోలర్‌ను రీబూట్ చేయండి, సమయం,
// దీని కోసం మీరు టైమర్ రీసెట్ కమాండ్ wdt_reset (మరియు సాధారణ ఆపరేషన్ సమయంలో రీబూట్ చేయడాన్ని నివారించండి - 8 సెకన్లు.
// పరీక్షల కోసం విలువను 8 సెకన్ల కంటే తక్కువకు సెట్ చేయమని సిఫార్సు చేయబడలేదు. ఈ సందర్భంలో, టైమర్ రీసెట్ చేయబడుతుంది.
// జెర్కింగ్, మరియు ఇది ప్రతి సెకనుకు జరుగుతుంది.

}

శూన్య లూప్ () {
// ఖాళీ చక్రం, ఇక్కడ ఎలక్ట్రిక్ మోటార్ యొక్క ఓపెన్-ఫేజ్ ఆపరేషన్‌పై నియంత్రణ ఉంటుంది
}

శూన్య గణన() {

tft.setTextColor(ST7735_WHITE); // ఫాంట్ రంగును సెట్ చేయండి
t = rtc.getTime(); // చదివే సమయం
tft.setCursor(5, 120); // కర్సర్ స్థానాన్ని సెట్ చేస్తోంది
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // టైమ్ అవుట్‌పుట్ ప్రాంతాన్ని క్లియర్ చేస్తోంది
tft.print(rtc.getTimeStr()); // అవుట్‌పుట్ క్లాక్ రీడింగ్‌లు

wdt_reset(); // వాచ్‌డాగ్‌ని ప్రతి చక్రానికి రీసెట్ చేయండి, అనగా రెండవది

కోసం (rc = 0; rc <4; rc ++) // ఇన్‌పుట్ స్థితి యొక్క సమ్మతిని తనిఖీ చేయడానికి చక్రం ప్రారంభం
// పోర్ట్ బిట్‌లు పోర్ట్ డి బిట్‌ల మునుపటి రీడ్ స్థితికి
{
pinState = (PIND >> 4) & ( b << rc );

ఒకవేళ (pumrcounter [rc] != pinState) { // మరియు సరిపోలకపోతే, అప్పుడు
pumrcounter[rc] = పిన్‌స్టేట్; // పోర్ట్ బిట్ స్టేటస్ వేరియబుల్‌కి కొత్త విలువ 1/0 కేటాయించడం
}
// రంగు నియంత్రణ వస్తువుల స్థితి యొక్క సూచన
// నీలం అనేది ఇప్పటికే ఉన్న స్క్రీన్ (లేదా లైబ్రరీ?) యొక్క చిన్న లోపం, RGB మరియు BGR కలపబడ్డాయి.
ఉంటే (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // తక్కువ స్థాయి లెక్కింపు కోసం ఆకుపచ్చని నీలి రంగులోకి మార్చండి
} else {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // తక్కువ స్థాయి లెక్కింపు కోసం నీలం రంగును ఆకుపచ్చగా మార్చండి
పంపు [rc] += 1; // ఆపరేటింగ్ టైమ్ కౌంటర్‌కి 1 సెకను జోడించండి
}
}

k++;
అయితే (k == 36) {
k = 0;

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // ఆపరేటింగ్ టైమ్ డిస్‌ప్లే ప్రాంతాన్ని క్లియర్ చేస్తోంది
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // మరియు తేదీలు

tft.setCursor(60, 120); // కర్సర్ స్థానాన్ని సెట్ చేస్తోంది
tft.print(rtc.getDateStr()); // LCD స్క్రీన్‌పై తేదీని ప్రదర్శించండి

(rc = 0; rc <4; rc ++) //అవుట్‌పుట్ ఆపరేటింగ్ గంటలు మొత్తం, పదవ వంతు మరియు
{
tft.setCursor (30, rc * 10 + shift ); // 10 పిక్సెల్‌ల స్క్రీన్ షిఫ్ట్‌తో గంటలో వందల వంతు
tft.println(పంప్ [rc] / m);
}

// "రా" ఆపరేటింగ్ గంటల విలువలను (సెకన్లలో) EEPROMకి వ్రాయడం ////////////////////////////

కోసం (rc = 0; rc <4; rc++)
{
EEPROM.put(చిరునామా, పంపు [rc]);
చిరునామా += పరిమాణం(ఫ్లోట్); // రైట్ అడ్రస్ వేరియబుల్‌ని పెంచండి
}
}

// ఎన్ని బైట్‌లను పంపాలో సూచించే డేటా నుండి రేడియో ఛానెల్ ద్వారా డేటాను పంపండి.
అయితే ((k == 6 ) || (k == 18 ) || (k == 30 )) {

సంతకం చేయని దీర్ఘ డేటా;

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

కోసం (i = 0; i <4; i++) {
డేటా = పంపు [i];
radio.write( &data, sizeof( data));
}
}
}

చివర్లో కొన్ని గమనికలు. ఇన్‌పుట్‌ల వద్ద తక్కువ తార్కిక స్థాయిలో లెక్కింపు జరుగుతుంది.

ఫోటోరేసిస్టర్లు GL2తో ఎంపిక కోసం పుల్-అప్ రెసిస్టెన్స్ R5-R36 5516 kOhm. ఫోటోట్రాన్సిస్టర్ ఆప్టోకప్లర్ మరియు రిలే విషయంలో, 4,7-5,1 kOhmకి సెట్ చేయబడింది. Arduino Nano v3.0 బూట్‌లోడర్ వాచ్‌డాగ్ టైమర్ యొక్క సరైన ఆపరేషన్ కోసం TL866A ప్రోగ్రామర్‌ని ఉపయోగించి Arduino Unoతో భర్తీ చేయబడింది. ఫ్యూజులు 4,3 V కంటే ఎక్కువ వోల్టేజీల వద్ద పనిచేయడానికి సరిదిద్దబడ్డాయి. బాహ్య రీసెట్ సర్క్యూట్ R6 C3 ఉపయోగించబడలేదు. నమూనా ప్రోగ్రామ్‌లో, ట్రాన్స్‌మిటర్ ఫ్రీక్వెన్సీ లైసెన్స్ లేని పరిధికి అనుగుణంగా లేదు; 2,4 MHz పరిధి 2400.0-2483.5 MHz ఫ్రీక్వెన్సీలకు పరిమితం చేయబడింది.

E01-ML01DP05 ట్రాన్స్‌మిటర్ పరిధి 2400-2525 MHz. ఒక ఛానెల్ యొక్క బ్యాండ్‌విడ్త్ 1 MHz, వేగాన్ని “RF24_2MBPS”గా సెట్ చేసినప్పుడు పేర్కొన్న radio.setChannel(120) ఛానెల్ మరియు తదుపరిది ఆక్రమించబడుతుంది, అనగా. బ్యాండ్ 2 MHz ఉంటుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి