Tsarin tattara bayanai na gida mai cin gashin kansa

Kamfanin ya sayi wuraren sa ido na NEKST-M, wanda aka samar a cikin gida ta Next Technologies. Don tabbatar da ganin aikin na'urorin famfo,
ƙararrawa na wuta da tsaro, kasancewar ƙarfin lantarki a farawa, zafin dakin, matakin ruwa na gaggawa. Zuciyar NEKST-M ita ce ATMEGA 1280 kuma wannan gaskiyar tana ƙarfafawa dangane da yuwuwar ƙirƙirar kayan aikin ku don takamaiman buƙatu.

An saita aikin don ƙirƙirar cikakken tsarin aika aika gida mai cin gashin kansa don takamaiman buƙatu a cikin mafi ƙanƙancin lokaci mai yuwuwa kuma akan ƙaramin farashi. Tushen shine microcontroller. Ci gaba, masana'antu, wanda ma'aikatan da kansu suka kirkiro.

Dole ne tsarin ya yi aiki ba tare da dogara ga hanyoyin sadarwar salula ba, sabobin, Intanet da tsarin lasisi don amfani da albarkatun mitar rediyo, ba amfani da kwamfutoci a cikin aikin tsarin kulawa da sarrafawa ba ko, a mafi yawancin, amfani da kwamfyutocin lokaci-lokaci, ba tare da samun damar yin amfani da su ba. abubuwa na dogon lokaci (watanni 6-9). Tsarin hanyar sadarwa yana da tsarin radial. Ana tattara bayanai a lokaci ɗaya sannan a aika don sarrafawa ta hanyoyin sadarwa na yau da kullun ko a matsayin kwafi.

Dole ne tsarin ya samar da:

  • saka idanu da aiki na famfo raka'a
  • fasahar sarrafa kansa
  • kariya daga sakamakon yanayin gaggawa
  • alamar gaggawa
  • lissafin lokacin aiki
  • ana lissafin yawan wutar lantarkin da ake amfani da su
  • kula da zafin jiki na kayan aiki
  • tsaro da ƙararrawar wuta
  • rikodi na bayanan nesa na lokaci-lokaci
  • abubuwan da ba a sani ba nan gaba

Yanayin aiki:

  • yankin ɗaukar hoto 1 sq. km.
  • ganuwa kai tsaye tsakanin abubuwa
  • zafin jiki daga +50 zuwa -50 C
  • zafi har 100%
  • Abubuwan da ke aiki na halitta (mold, sulfate-reducing bacteria)
  • girgiza, babu ƙari, na injina na azuzuwan 1-2 bisa ga GOST ISO 10816-1-97
  • yanayi na lantarki - sauyawa na injin lantarki tare da masu tuntuɓar KT 6053, RVS-DN kayan farawa mai laushi, SIEMENS MICROMASTER PID kayan sarrafa kayan aiki, radiation a cikin kewayon ISM da GSM bisa ga buƙatun waɗannan na'urori, walƙiya na hannu a kan rukunin yanar gizon.
  • wuce kima irin ƙarfin lantarki na cibiyar sadarwa, katsewa na ɗan gajeren lokaci a cikin samar da wutar lantarki, ƙarfin walƙiya, rashin daidaituwa na lokaci lokacin da waya ta sama ta karye a cikin cibiyoyin rarraba 6-10 kV.

Duk da irin waɗannan ƙaƙƙarfan buƙatu, aiwatarwa abu ne mai sauƙi yayin warware matsalar mataki-mataki.

Yin la'akari da komai, kwamitin "Arduino Nano 3.0" ya zama "kwakwalwa" na shirin. Kwamitin robotdyn yana da mai sarrafa ATMEGA 328, madaidaicin ƙarfin lantarki na 3,3V don
800mA na yanzu da mai canzawa zuwa CH340G UART-USB.

Da farko, an ƙirƙiri ƙididdiga na sa'o'in aiki a matsayin waɗanda suka fi na zamani. Mitar masana'antu da aka yi amfani da su a baya waɗanda aka haɗa akan PICs tare da da'irar samar da wutar lantarki mara canzawa ta gaza saboda hauhawar wutar lantarki a cikin shekara guda da aiki. Wadanda aka haɗa kawai ta amfani da kayan wuta na 5V na gida sun kasance lafiyayyu. Don hanzarta shigarwa da haɓakar haɗin gwiwa, ana ɗaukar sigina game da yanayin raka'a daga tashoshi na na'urori masu sauyawa, watau. rajista na kasancewar ƙarfin lantarki na 1st tare da wutar lantarki mai kashi uku na 380V. Don daidaitawa tare da mai sarrafawa, ana amfani da relay na matsakaici tare da iska na 220V ko optocoupler wanda ya ƙunshi LED da GL5516 photoresistor ko PC817 optocoupler. An gwada duk zaɓuɓɓuka. Ana amfani da LED ɗin ta hanyar ingantaccen ƙarfin lantarki tare da iyakancewa na yanzu ta amfani da masu ƙarfin SVV22 guda biyu waɗanda aka tsara don ƙarfin lantarki na 630V da aka haɗa cikin jerin don aminci yayin gwajin haɗari na da'irori tare da megohmmeter.
Karatun karatun lokacin aiki ta amfani da allo na ST7735S LCD, watsa bayanai na ainihi ta hanyar rediyo ta amfani da tsarin E01-ML01DP05 a mitar 2,4 MHz. Wannan na'urar ta ƙunshi guntu nRF24L01+ da RFX2401C watsa/karɓi amplifier,
ikon fitarwa har zuwa 100mW. An ƙera eriya Helical don kewayon da ake so a cikin lissafin kan layi shafi. Zaɓin nau'in eriya an ƙaddara ta hanyar keɓance liyafar ɗimbin raƙuman ruwa daga sassa na ƙarfe da ke kewaye. Ana buga sassan eriya akan firinta na 3D. Halin halin yanzu na ƙididdiga an adana shi a cikin EEPROM na mai sarrafawa da kansa kuma an mayar da shi a yayin da aka samu rashin wutar lantarki. RTC guntu DS3231 ne ke ba da tazara na lokaci don kirgawa a cikin nau'i na module tare da ajiyar baturi. Wutar lantarki tana amfani da nau'ikan 3, ainihin tushen bugun jini 220/5V HLK-PM01 600mA, mai canzawa daga 1-5V zuwa 5V Bayani na HW-553 и 03962A - mai sarrafa baturi tare da makirci kariya daga gajeriyar kewayawa, zubar da ruwa da yawa. An saya duk abubuwan da aka gyara akan gidan yanar gizon Aliexpress.

allon burodiTsarin tattara bayanai na gida mai cin gashin kansa
4-tashar tashoshi. Akwai matattarar LC a abubuwan da aka shigar don kariya daga tsangwama akan karkatacciyar layin sadarwa. Ana karanta bayanai akan yanayin abubuwan sarrafawa akai-akai sau ɗaya a sakan daya kuma ana nunawa cikin launi akan LCD. Ana sabunta karatun kuma ana yin rikodin su a cikin ƙwaƙwalwar da ba ta da ƙarfi a kowane sakan 1. 36 seconds shine 36/1 na awa daya, wannan shine tsarin da ake buƙatar bayanai. Kowane dakika 100. Ana watsa bayanai game da adadin daƙiƙan aiki na kowane rukunin sarrafawa. Ƙwaƙwalwar EEPROM tana da ƙayyadaddun adadin rubuto-ɓoye, bisa ga masana'anta, sau 12. Mafi munin zaɓi shine lokacin da ake sabunta aƙalla tantanin halitta ɗaya koyaushe. Ƙimar ƙididdiga ta farko shine 100000 bytes, wannan adadi ne mai tsawo, ƙididdiga 1, jimlar 4 bytes yana shagaltar da rikodin daya. Tsawon ƙwaƙwalwar guntu shine 4 bytes; bayan shigarwar 16 na ƙididdiga 1024, rikodi zai fara farawa. A cikin ɗakin karatu na EEPROM, hanyar EEPROM.put ba ta rubutawa ba; idan darajar tantanin halitta da bayanin da ake rubutawa sun yi daidai, ba za a sami raguwar sel ba. A sakamakon haka, da garantin ƙwaƙwalwar ajiyar lokacin aiki zai kasance fiye da shekaru 64. Lokacin yuwuwar amma ba garantin aiki na iya yin tsayi da yawa.

Tsarin kewayawaTsarin tattara bayanai na gida mai cin gashin kansa
Shirin a Arduino IDE//12 bytes (328%)

#hada da // Core graphics library
#hada da // Takamaiman ɗakin karatu na Hardware
# hada
#hada da
# hada
#hada da
#hada da
RF24 rediyo (9, 10); // Abun rediyo don aiki tare da ɗakin karatu na RF24,
// da fil lambobi nRF24L01+ (CE, CSN)
#hada da
DS3231 rtc (SDA, SCL);
Lokaci t;

//#bayyana TFT_CS 10
#bayyana TFT_CS 8
# ayyana TFT_RST -1 // Hakanan zaka iya haɗa wannan zuwa sake saitin Arduino
// a cikin wanne hali, saita wannan # ayyana fil zuwa -1!
//#bayyana TFT_DC 9 // DC=RS=A0 - zažužžukan nadi don zaɓar umarni ko rajistar bayanai.
#bayyana TFT_DC 3

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

// Zabin 2: Yi amfani da kowane fil amma a hankali kadan!
# ayyana TFT_SCLK 13 // saita waɗannan su zama duk abin da kuke so!
# ayyana TFT_MOSI 11 // saita waɗannan su zama duk abin da kuke so!
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#hada da

canjin byte = 52;
byte pinState;
dogon famfo mara sa hannu [4];// tsararru mai ƙima mai ƙima 4
iyo m = 3600.0;
adireshin int mara sa hannu = 0;
int rc;// m don masu ƙidaya
dogon sumprim mara sa hannu = 0;
dogon jimlar da ba a sanya hannu ba = 0;
byte i = 0;
byte k = 34;
int z = 0;
byte b = B00000001;
byte famfo [4]; // tsararru don adana jihohin abu, 1 - kashe, 0 - on.
int farawa = 0; //

saitin wofi () {

rtc.begin();
radio.fara(); // Fara aiki nRF24L01+
radio.setChannel(120); // tashar bayanai (daga 0 zuwa 127).
radio.setDataRate(RF24_250KBPS); // Yawan canja wurin bayanai (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // ikon watsawa (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Buɗe bututu tare da mai ganowa don canja wurin bayanai

// Don saita lokacin, ba da amsa ga layukan da suka dace
//rtc.setDOW(1); // Ranar mako
//rtc.setTime (21, 20, 0); // Lokaci, a cikin tsarin sa'o'i 24.
//rtc.setDate(29, 10, 2018); // Ranar, Oktoba 29, 2018

tft.initR(INITR_BLACKTAB); // fara guntu ST7735S, shafin baƙar fata
// Yi amfani da wannan mai farawa (rashin magana) idan kana amfani da 1.44" TFT
//tft.initR(INITR_144GREENTAB); // fara guntu ST7735S, RED rcB tab
tft.setTextWrap (ƙarya); // Bada damar rubutu ya gudu daga gefen dama
tft.setRotation ( 2 ); // don BLACK PCB da RED tft.setRotation(0) ko a'a.
tft.fillScreen(ST7735_BLACK); // share allon

DDR = DDR | B00000000;
PORTD = PORTD | B11110000; // haɓaka software yana aiki, babban matakin -
// Abubuwan da aka sarrafa "ba sa aiki", "4" an rubuta su zuwa duk manyan tashoshin jiragen ruwa 1 na D, babu ƙidayar faruwa.

don (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + motsi); // nuna lambobin matsayi na abubuwa masu sarrafawa
tft.print (rc + 1);
}

tft.setCursor (12, 0); // fitarwa 3 layi na rubutu
tft.println ("Masu Haɓakawa & Gina"); // don yabon kanku masoya
tft.setCursor (24, 10); // ko mugun haƙƙin mallaka
tft.print("MUN HABAWA MM");
tft.setCursor (28, 20);
tft.print("BUILD-ER DD");

//dawo da bayanai////////////////////// /////////

don (z = 0; z <1023; z += 16) {// Yana jujjuya duk sel na masana'antu
// kuma ya rubuta zuwa tsararrun masu canji na famfo 4, 4 bytes ga kowane counter, saboda
// dogon canji mara sa hannu. Akwai 4 counters, daya rikodin duk 4 daukan 16 bytes.
EEPROM.get(z, famfo [0]); // haka, ba tare da madauki ba, ƙaramin ƙara
EEPROM.get(z+4, famfo [1]);
EEPROM.get(z+8, famfo [2]);
EEPROM.get(z+12, famfo [3]);

// sanya sabon ƙima na gaba don jimlar ƙididdiga 4
sumprim = (famfo [0] + famfo [1] + famfo [2] + famfo [3]);

// yana kwatanta sabon ƙima na jimlar ƙididdiga 4 a cikin ma'auni na sumprim tare da ƙimar da ta gabata a cikin m
// sumsec kuma idan jimlar da ta gabata ta yi ƙasa da ko daidai da sabon jimlar, ana sanya sabon mafi girma ko daidai
// jimlar darajar.

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

// kuma darajar yanzu z an sanya shi zuwa madaidaicin adireshi, z shine adireshin farkon toshe 16-byte na ƙimar 4.
// kirga da aka rubuta a lokaci guda (tun lokacin da ake jefa kuri'a a tashar jiragen ruwa, ana rubuta duk ragi 8 nasa lokaci guda,
// gami da manyan 4 rago na tashar tashar jiragen ruwa D).
adireshin = z;
}
}

// sake samun dama ga ƙwaƙwalwar eeprom a adireshin farkon toshe 16 bytes na ƙimar ƙima 4 da aka rubuta.
// na karshe, i.e. dabi'u kafin rufewa ko sake kunnawa saboda daskarewa. Rikodi na baya-bayan nan
// counter dabi'u a cikin tsararru na 4 masu canji famfo.

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

adireshin += 16; // ƙara adireshin don rubuta toshe na gaba ba tare da sake rubuta bayanan rikodin ƙarshe ba

//karshen dawo da bayanai///////////////////////// ////////////////

Haɗewa Katsewa (0, ƙidaya, TASHI); // fil D2, kunna katsewa, zo kowane daƙiƙa
// bugun jini daga RTC DS3231 daga fitowar SQW

wdt_enable(WDTO_8S); // fara mai ƙidayar lokaci, sake kunna mai sarrafawa idan akwai daskarewa, lokaci,
// wanda don haka kuna buƙatar bayar da umarnin sake saitin lokacin wdt_reset (kuma ku guji sake yin aiki yayin aiki na yau da kullun - 8 sec.
// don gwaje-gwaje ba a ba da shawarar saita ƙimar zuwa ƙasa da daƙiƙa 8. A wannan yanayin, an sake saita mai ƙidayar lokaci zai fi dacewa.
// girgiza, kuma yana faruwa kowace daƙiƙa.

}

mara amfani madauki () {
// sake zagayowar fanko, a nan za a sami iko akan aikin buɗe-lokaci na injin lantarki
}

yawan banza() {

tft.setTextColor(ST7735_WHITE); // saita launin font
t = rtc.getTime (); // lokacin karatu
tft.setCursor (5, 120); // saita wurin siginan kwamfuta
tft.fillRect (5, 120, 50, 7, ST7735_BLACK); // share lokacin fitarwa yankin
tft.print(rtc.getTimeStr()); // karatun agogon fitarwa

wdt_reset(); // sake saita mai sa ido kowane zagayowar, watau sakan daya

don (rc = 0; rc <4; rc ++) // farkon sake zagayowar don bincika yarda da yanayin shigarwa.
// Ragowar tashar jiragen ruwa zuwa yanayin karantawa na baya na tashar D ragowa
{
pinState = (PIND >> 4) & ( b << rc );

idan (pumrcounter [rc]! = pinState) {// kuma idan bai dace ba, to
pumrcounter[rc] = pinState; // sanya madaidaicin matsayi na tashar tashar jiragen ruwa sabon darajar 1/0
}
// nunin yanayin abubuwan sarrafa launi
// BLUE ƙaramin ƙulli ne na allon da ke akwai (ko ɗakin karatu?), RGB da BGR sun haɗu.
idan (pinState == ( b << rc )) {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // don ƙididdige ƙananan matakin canza GREEN zuwa BLUE
} da {
tft.fillRect (15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // don ƙidayar ƙananan matakin canza BLUE zuwa GREEN
famfo [rc] += 1; // ƙara daƙiƙa 1 zuwa ma'aunin lokacin aiki
}
}

ku++;
idan (k = 36) {
ku = 0;

tft.fillRect (30, motsi, 97, 40, ST7735_BLACK); // share wurin nunin lokacin aiki
tft.fillRect (60, 120, 73, 7, ST7735_BLACK); // da kwanan wata

tft.setCursor (60, 120); // saita wurin siginan kwamfuta
tft.print(rtc.getDateStr()); // nuna kwanan wata akan allon LCD

don (rc = 0; rc <4; rc ++) // fitar da sa'o'in aiki gaba ɗaya, goma da kuma
{
tft.setCursor (30, rc * 10 + motsi); // ɗaruruwan sa'a tare da sauya allo ta pixels 10
tft.println (famfo [rc] / m);
}

// rubuta darajar sa'o'i na "raw" (a cikin dakika) zuwa EEPROM ////////////////////////////

don (rc = 0; rc <4; rc++)
{
EEPROM.put(adireshi, famfo [rc]);
adireshin += girman (tasowa ruwa); // ƙara canjin adreshin rubutu
}
}

// aika bayanai akan tashar rediyo daga bayanan da ke nuna adadin bytes nawa ya kamata a aika.
idan ( (k == 6 ) || (k == 18 ) || (k == 30 )) {

dogon bayanan da ba a sanya hannu ba;

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

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

Bayanan kula a ƙarshe. Ƙididdigar tana faruwa a ƙananan ma'ana a abubuwan da aka shigar.

Juriyar juzu'i na R2-R5 shine 36 kOhm don zaɓi tare da photoresistors GL5516. A cikin yanayin na'urar daukar hoto mai daukar hoto da kuma relay, saita zuwa 4,7-5,1 kOhm. An maye gurbin Arduino Nano v3.0 bootloader tare da Arduino Uno ta amfani da mai tsara shirye-shirye na TL866A don daidaitaccen aiki na agogon tsaro. Ana gyara fis ɗin don yin aiki a ƙarfin lantarki sama da 4,3 V. Ba a yi amfani da na'urar sake saiti na waje R6 C3 ba. A cikin shirin samfurin, mitar mai watsawa ba ta dace da kewayon mara lasisi ba; kewayon 2,4 MHz yana iyakance ga mitoci 2400.0-2483.5 MHz.

Kewayon mai watsa E01-ML01DP05 shine 2400-2525 MHz. Matsakaicin bandwidth na tashar ɗaya shine 1 MHz, lokacin saita saurin a matsayin "RF24_2MBPS" tashar rediyo da aka ƙayyade.setChannel(120) kuma za a shagaltar da na gaba, watau. band zai zama 2 MHz.

source: www.habr.com

Add a comment