Dongosolo losonkhanitsira deta lodziyimira pawokha

Kampaniyo idagula zolemba zowunikira za NEKST-M, zopangidwa kunyumba ndi Next Technologies. Kuwonetsetsa kuti mawonedwe akugwira ntchito kwa mayunitsi opopera,
ma alarm amoto ndi chitetezo, kupezeka kwamagetsi poyambira, kutentha kwachipinda, mulingo wamadzi mwadzidzidzi. Mtima wa NEKST-M ndi ATMEGA 1280 ndipo izi ndi zolimbikitsa potengera kuthekera kopanga zida zanu pazomwe mukufuna.

Ntchitoyi idakhazikitsidwa kuti ipange njira yotumizira anthu am'deralo yodziyimira payokha pazosowa zapadera munthawi yochepa kwambiri komanso pamtengo wocheperako. Maziko ndi microcontroller. Chitukuko, kupanga, chopangidwa ndi ogwira ntchito okha.

Dongosololi liyenera kugwira ntchito popanda kudalira ma netiweki am'manja, maseva, intaneti ndi njira zoperekera ziphaso zogwiritsa ntchito ma radio pafupipafupi, osagwiritsa ntchito makompyuta poyendetsa ndi kasamalidwe kachitidwe kapena, makamaka, kugwiritsa ntchito laputopu nthawi ndi nthawi, popanda mwayi zinthu kwa nthawi yayitali (miyezi 6-9). Kukonzekera kwa maukonde kumakhala ndi mawonekedwe a radial. Deta imasonkhanitsidwa nthawi imodzi ndikutumizidwa kuti ikasinthidwe kudzera munjira zolumikizirana nthawi zonse kapena ngati kope lolimba.

Pulogalamuyi iyenera kupereka:

  • kuyang'anira kayendetsedwe ka makina opopera madzi
  • luso lopanga zokha
  • chitetezo ku zotsatira za zochitika mwadzidzidzi
  • chizindikiro chadzidzidzi
  • kuwerengera nthawi yogwira ntchito
  • kuwerengera kuchuluka kwa magetsi omwe agwiritsidwa ntchito
  • zida zowongolera kutentha
  • chitetezo ndi alamu moto
  • kujambula kwakutali kwanthawi ndi nthawi
  • zosadziwika zamtsogolo

Nthawi zogwirira ntchito:

  • Kuphunzira malo 1 sq. Km.
  • kuwonekera mwachindunji pakati pa zinthu
  • kutentha kwa +50 mpaka -50 Β° C
  • chinyezi mpaka 100%
  • ma depositi okhala ndi biologically (nkhungu, mabakiteriya ochepetsa sulfate)
  • kugwedezeka, palibenso, kwa makina a makalasi 1-2 malinga ndi GOST ISO 10816-1-97
  • chilengedwe chamagetsi - Kusintha kwa ma motors amagetsi okhala ndi zolumikizira za KT 6053, zida zoyambira zofewa za RVS-DN, zida zowongolera za SIEMENS MICROMASTER PID, ma radiation mu ISM ndi GSM osiyanasiyana malinga ndi zofunikira pazidazi, kuwotcherera arc pamanja patsamba.
  • Kuchuluka kwamagetsi pamanetiweki, kusokoneza kwakanthawi kochepa kwamagetsi, kuphulika kwa mphezi, kusalinganiza kwa gawo pamene waya wapamtunda waduka mumayendedwe ogawa 6-10 kV.

Ngakhale zili zofunika kwambiri, kukhazikitsa ndikosavuta pothetsa vutoli pang'onopang'ono.

Poganizira zonse, gulu la "Arduino Nano 3.0" linakhala "ubongo" wa ndondomekoyi. Bolodi ya robotdyn ili ndi chowongolera cha ATMEGA 328, chofunikira cha 3,3V voltage stabilizer kwa
800 mA yamakono ndikusintha kukhala CH340G UART-USB.

Choyamba, zowerengera za maola ogwirira ntchito zidapangidwa monga zaposachedwa kwambiri. Mamita omwe amagwiritsidwa ntchito m'mafakitale omwe amasonkhanitsidwa pa PICs okhala ndi gawo lamagetsi opanda thiransifoma adalephera chifukwa chakukwera kwamagetsi mkati mwa chaka chogwira ntchito. Ndi okhawo olumikizidwa pogwiritsa ntchito magetsi opangira 5V okha omwe adakhalabe. Kuti mufulumizitse kukhazikitsa ndi kusinthasintha kwa kugwirizanitsa, chizindikiro chokhudza dziko la mayunitsi chimatengedwa kuchokera ku ma terminals a zipangizo zosinthira, i.e. kulembetsa kukhalapo kwa voteji ya gawo la 1 ndi gawo la magawo atatu amagetsi a 380V. Kuti mugwirizane ndi woyang'anira, relay yapakatikati yokhala ndi 220V yokhotakhota kapena optocoupler yopangidwa ndi LED ndi GL5516 photoresistor kapena PC817 optocoupler imagwiritsidwa ntchito. Zosankha zonse zidayesedwa. Kuwala kwa LED kumayendetsedwa ndi magetsi okonzedwanso omwe ali ndi malire apano pogwiritsa ntchito ma capacitor awiri a SVV22 opangidwira voteji ya 630V yolumikizidwa mndandanda kuti atetezeke pakuyesa mwangozi mabwalo okhala ndi megohmmeter.
Kuwerenga zowerengera za nthawi yogwiritsira ntchito pogwiritsa ntchito chithunzi cha ST7735S LCD, kutumiza deta yeniyeni kudzera pa wailesi pogwiritsa ntchito gawo la E01-ML01DP05 pafupipafupi 2,4 MHz. Chipangizochi chili ndi nRF24L01+ chip ndi RFX2401C transmit/receive amplifier,
mphamvu yotulutsa mpaka 100 mW. Ma helical antennas adapangidwira munjira yomwe mukufuna mu chowerengera chapaintaneti malowa. Kusankhidwa kwa mtundu wa antenna kumatsimikiziridwa ndi kuchotsedwa kwa mafunde omwe amawonetsedwa pawokha kuchokera kuzinthu zozungulira zitsulo. Zigawo za mlongoti zimasindikizidwa pa printer ya 3D. Zomwe zilipo panopa zowerengera zimasungidwa mu EEPROM ya wolamulira mwiniwakeyo ndipo amabwezeretsedwanso pakagwa mwadzidzidzi mphamvu yamagetsi. Nthawi yowerengera imaperekedwa ndi RTC chip DS3231 mu mawonekedwe a module yokhala ndi batire yosunga zobwezeretsera. Mphamvu zamagetsi zimagwiritsa ntchito ma module a 3, gwero lenileni la pulse 220/5V HLK-PM01 600mA, chosinthira kuchokera ku 1-5V kupita ku 5V Mtengo wa HW-553 ΠΈ 03962A - chowongolera batri ndi dongosolo chitetezo ku dera lalifupi, kutulutsa mochulukira komanso kuchulukirachulukira. Zida zonse zidagulidwa patsamba la Aliexpress.

Bolodi la mkateDongosolo losonkhanitsira deta lodziyimira pawokha
4-channel counter. Pali zosefera za LC pazolowera kuti muteteze ku kusokonezedwa pa mzere wopotoka wolumikizirana. Deta yokhudzana ndi momwe zinthu zimayendera zimawerengedwa nthawi zonse kamodzi pa sekondi imodzi ndikuwonetsedwa mumtundu pa LCD. Kuwerenga kumasinthidwa ndikujambulidwa mu kukumbukira kosasinthika masekondi 1 aliwonse. Masekondi 36 ndi 36/1 ya ola, ili ndi mawonekedwe omwe deta imafunikira. 100 sec iliyonse. zambiri zimafalitsidwa za kuchuluka kwa masekondi ogwirira ntchito pagawo lililonse lowongolera. Memory ya EEPROM ili ndi zowerengera zochepa zofufutira, malinga ndi wopanga, nthawi 12. Njira yoyipa kwambiri ndi pomwe selo imodzi imasinthidwa pafupipafupi. Voliyumu ya 100000st counter ndi ma byte 1, iyi ndi nambala yayitali, zowerengera 4, ma byte 4 onse amakhala ndi mbiri imodzi. Kutalika kwa kukumbukira kwa chip ndi 16 byte; pambuyo polemba 1024 paziwerengero zinayi, kujambula kumayambiranso. Mu laibulale ya EEPROM, njira ya EEPROM.put silemba; ngati mtengo wa selo ndi zomwe zikulembedwa zikugwirizana, sipadzakhala kuwonongeka kwa maselo. Zotsatira zake, nthawi yogwiritsira ntchito kukumbukira idzakhala yoposa zaka 64. Nthawi ya ntchito yotheka koma yosatsimikizika ingakhale yotalikirapo.

Chithunzi chozunguliraDongosolo losonkhanitsira deta lodziyimira pawokha
Pulogalamu mu Arduino IDE// 12 byte (328%)

#kuphatikizapo // Laibulale yazithunzi zazikulu
#kuphatikizapo // Laibulale yapadera ya Hardware
#kuphatikizapo
#kuphatikizapo
# kuphatikiza
#kuphatikizapo
#kuphatikizapo
Wailesi ya RF24 (9, 10); // chinthu cha wailesi chogwira ntchito ndi laibulale ya RF24,
// ndi manambala a pini nRF24L01+ (CE, CSN)
#kuphatikizapo
DS3231 rtc(SDA, SCL);
Nthawi t;

//#define TFT_CS 10
#tanthauzira TFT_CS 8
#define TFT_RST -1 // mutha kulumikizanso izi pakukonzanso kwa Arduino
// Zikatero, ikani #define pin ku -1!
//#Define TFT_DC 9 // DC=RS=A0 - zosankha zosankhidwa posankha lamulo kapena kaundula wa data.
# fotokozani TFT_DC 3

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

// Njira 2: gwiritsani ntchito zikhomo zilizonse koma pang'onopang'ono!
#define TFT_SCLK 13 // ikani izi kukhala zikhomo zilizonse zomwe mungafune!
# define TFT_MOSI 11 // ikani izi kukhala mapini aliwonse omwe mungafune!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#kuphatikizapo

kusintha kwa byte = 52;
pinState;
mpope wautali wosasaina [4];// gulu lokhala ndi 4 masekondi owerengera
zoyandama m = 3600.0;
adilesi yosasainidwa = 0;
int rc;// kusintha kwa zowerengera
suprim yayitali yosasainidwa = 0;
osasainidwa yaitali sumsec = 0;
ndi = 0;
ndi k = 34;
osasainidwa int z = 0;
bite b = B00000001;
pampurcounter[4]; // gulu losungira zinthu, 1 - off, 0 - on.
chiyambi = 0; //

kukhazikitsa opanda pake () {

rtc.kuyamba ();
radio.begin(); // Yambitsani ntchito nRF24L01+
radio.setChannel(120); // njira ya data (kuchokera ku 0 mpaka 127).
radio.setDataRate(RF24_250KBPS); // kuchuluka kwa data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // transmitter mphamvu (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Tsegulani chitoliro chokhala ndi chizindikiritso cha kusamutsa deta

// Kukhazikitsa nthawi, sinthani mizere yofunikira
//rtc.setDOW(1); // Tsiku la sabata
//rtc.setTime(21, 20, 0); // Nthawi, mu mawonekedwe a maola 24.
//rtc.setDate(29, 10, 2018); // Tsiku, Okutobala 29, 2018

tft.initR(INITR_BLACKTAB); // yambitsani chipangizo cha ST7735S, tabu yakuda
// Gwiritsani ntchito choyambitsa ichi (chopanda ndemanga) ngati mukugwiritsa ntchito 1.44" TFT
//tft.initR(INITR_144GREENTAB); // yambitsani chipangizo cha ST7735S, RED rcB tabu
tft.setTextWrap(zabodza); // Lolani kuti mawu azituluka m'mphepete kumanja
tft.setRotation ( 2 ); // kwa BLACK PCB ndi RED tft.setRotation(0) kapena ayi.
tft.fillScreen(ST7735_BLACK); // chophimba chowonekera

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // kumangitsa mapulogalamu kukugwira ntchito, mulingo wapamwamba -
// zinthu zolamulidwa "sizikugwira ntchito", "4" yalembedwa ku madoko onse a 1 D, palibe kuwerengera komwe kumachitika.

kwa ( rc = 0; rc <4; rc++)
{
tft.setCursor ( 3, rc * 10 + shift); // kusonyeza malo manambala a zinthu zowongolera
tft.print(rc + 1);
}

tft.setCursor(12, 0); // kutulutsa mizere 3 ya zolemba
tft.println("OPHUNZITSIRA & BUILD"); // kudzitamanda nokha okondedwa
tft.setCursor(24, 10); // kapena kukopera koyipa
tft.print("DEVELOPER MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//kubwezeretsa deta///////////////////////////////////////// ///////////

kwa (z = 0; z <1023; z += 16) {// Iterates kupyolera mu maselo onse a makampani
//ndipo amalembera kumitundu yosiyanasiyana yapampu 4, ma byte 4 pa kauntala iliyonse, chifukwa
// Zosintha zazitali zosasainidwa. Pali zowerengera 4, mbiri imodzi ya 4 yonse imatenga 16 byte.
EEPROM.get(z, mpope[0]); // kotero, popanda loop, voliyumu yochepa
EEPROM.get(z+4, mpope[1]);
EEPROM.get(z+8, mpope[2]);
EEPROM.get(z+12, mpope[3]);

// kugawa mtengo wotsatira pa kuchuluka kwa zowerengera 4
suprim = (pampu [0] + mpope [1] + mpope [2] + mpope [3]);

// kuyerekeza mtengo watsopano wa kuchuluka kwa zowerengera 4 mu variable suprim ndi mtengo wam'mbuyo mu variable
// sumsec ndipo ngati ndalama zam'mbuyomu ndizochepera kapena zofanana ndi ndalama zatsopano, wamkulu kapena wofanana amapatsidwa
// mtengo wa sumsec.

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

// ndipo mtengo wamakono z waperekedwa ku kusintha kwa maadiresi, z ndi adilesi ya chiyambi cha 16-byte block ya 4 values.
// zowerengera zojambulidwa nthawi imodzi (kuyambira posankha doko, ma bits 8 onse amalembedwa nthawi imodzi,
// kuphatikiza ma 4 bits athu apamwamba a doko D).
adilesi = z;
}
}

// kulowanso kukumbukira eeprom pa adilesi yoyambira ya block ya 16 byte ya 4 yojambulidwa yowerengera
// chomaliza, i.e. mitengo isanatseke kapena kuyambiranso chifukwa cha kuzizira. Kujambula zaposachedwa
// zowerengera mumitundu yosiyanasiyana yapampu 4.

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

adilesi += 16; // kuonjezera adilesi yolembera chipika chotsatira popanda kubweza zambiri za mbiri yomaliza

//kutha kwa kubwezeretsa deta///////////////////////////////////// //////////////////

attachInterrupt(0, count, RISING); // pini D2, yambitsani zosokoneza, bwerani sekondi iliyonse
// pulses kuchokera ku RTC DS3231 kuchokera ku SQW

wdt_enable(WDTO_8S); // yambitsani nthawi yowonera, yambitsaninso chowongolera ngati kuzizira, nthawi,
// zomwe muyenera kutulutsa lamulo lokhazikitsanso timer wdt_reset (ndipo pewani kuyambiranso panthawi yogwira ntchito bwino - 8 sec.
// pamayesero sikuvomerezeka kuti muyike mtengo kukhala osachepera masekondi a 8. Pankhaniyi, timer imakonzedwanso bwino
// kugwedezeka, ndipo zimachitika sekondi iliyonse.

}

chingwe chopanda kanthu () {
// kuzungulira kopanda kanthu, apa padzakhala ulamuliro pa ntchito yotseguka ya galimoto yamagetsi
}

void count() {

tft.setTextColor(ST7735_WHITE); // ikani mtundu wa font
t = rtc.getTime (); // kuwerenga nthawi
tft.setCursor(5, 120); // kukhazikitsa malo a cholozera
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // kuchotsa malo otulutsa nthawi
tft.print(rtc.getTimeStr()); // kuwerengera koloko

wdt_reset (); // khazikitsaninso ulonda kuzungulira kulikonse, mwachitsanzo, sekondi

kwa (rc = 0; rc <4; rc ++) // chiyambi cha kuzungulira kuti muwone kutsatiridwa kwa malo olowera
// ma port bits kupita kumalo omwe adawerengedwa kale a port D bits
{
pinState = (PIND >> 4) & ( b << rc);

ngati (pumrcounter [rc] != pinState) {// ndipo ngati sizikugwirizana, ndiye
pumrcounter[rc] = pinState; // kugawira mawonekedwe a port bit mtengo watsopano 1/0
}
// chisonyezero cha mkhalidwe wa zinthu zowongolera mitundu
// BLUE ndi glitch yaying'ono ya skrini yomwe ilipo (kapena laibulale?), RGB ndi BGR zasakanizidwa.
ngati (pinState == ( b << rc )) {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // pa kuwerengera otsika sinthani GREEN kukhala BLUE
} china {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // pa kuwerengera otsika sinthani BLUE kupita ku GREEN
mpope [rc] += 1; // onjezani 1 sekondi ku kauntala ya nthawi yogwiritsira ntchito
}
}

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

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // kuchotsa malo owonetsera nthawi yogwiritsira ntchito
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // ndi masiku

tft.setCursor(60, 120); // kukhazikitsa malo a cholozera
tft.print(rtc.getDateStr()); // onetsani tsiku pazenera la LCD

kwa (rc = 0; rc <4; rc ++) // maola ogwirira ntchito athunthu, magawo khumi ndi
{
tft.setCursor ( 30, rc * 10 + shift); // mazana a ola limodzi ndikusintha kwazenera pansi ndi ma pixel 10
tft.println(pampu [rc] / m);
}

// kulemba "yaiwisi" maola ogwirira ntchito (mumasekondi) kupita ku EEPROM ////////////////////////////

kwa (rc = 0; rc <4; rc++)
{
EEPROM.put(adiresi, mpope [rc]);
adilesi += sizeof(yoyandama); // yonjezerani kusintha kwa adilesi
}
}

// tumizani zidziwitso pawayilesi kuchokera ku data yomwe ikuwonetsa ma byte angati omwe atumizidwe.
ngati ((k == 6 ) || (k == 18 ) || (k == 30 )) {

deta yayitali yosasainidwa;

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

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

Zolemba zochepa pamapeto. Kuwerengera kumachitika pamlingo wotsika womveka pa zolowetsa.

Zotsutsa zokoka R2-R5 ndi 36 kOhm pazosankha ndi photoresistors GL5516. Pankhani ya phototransistor optocoupler ndi relay, khalani 4,7-5,1 kOhm. The Arduino Nano v3.0 bootloader idasinthidwa ndi Arduino Uno pogwiritsa ntchito pulogalamu ya TL866A kuti igwire bwino ntchito yowonera nthawi. Ma fusewo amakonzedwa kuti azigwira ntchito pamagetsi pamwamba pa 4,3 V. Njira yokonzanso kunja kwa R6 C3 sinagwiritsidwe ntchito. Mu pulogalamu yachitsanzo, ma frequency transmitter sagwirizana ndi mtundu wosaloledwa; mtundu wa 2,4 MHz umangokhala ma frequency 2400.0-2483.5 MHz.

Mtundu wa E01-ML01DP05 transmitter ndi 2400-2525 MHz. Kuthamanga kwa njira imodzi ndi 1 MHz, poyika liwiro ngati "RF24_2MBPS" njira yodziwika ya radio.setChannel(120) ndipo yotsatira idzatengedwa, i.e. gulu adzakhala 2 MHz.

Source: www.habr.com

Kuwonjezera ndemanga