Local Autonomous Data Acquisition System (ikupitilira)

Yambani patsamba lino kugwirizana.
Njira yabwino kwambiri yopezera chidziwitso choyatsa choyambira idakhala njira ndi PC817 optocoupler. Chithunzi chojambulaLocal Autonomous Data Acquisition System (ikupitilira)matabwa muli mabwalo atatu ofanana, zonse anaika mabokosi ABS pulasitiki, kukula 100x100 mm. Chithunzi cha optocouplersLocal Autonomous Data Acquisition System (ikupitilira) Mukalumikizidwa ndi zida zoyambira zokhala ndi ma semiconductor valves, kutayikira kwawoko ndikokwanira kutsegula PC817 ndipo chowerengera chidzayambitsa zabodza. Kupatula mkhalidwe wotero imodzi imawonjezedwa motsatizana kudera la optocoupler LED ndi chiwonetsero cha ntchito ya LED. Kuti muchite izi, jumper J1 imatsegulidwa ndipo LED1 yowonjezera ya LED imagulitsidwa.
Gawo lolandila limapangidwa gawo 1Local Autonomous Data Acquisition System (ikupitilira)gawo 2Local Autonomous Data Acquisition System (ikupitilira)bolodi lachitukuko lolumikizidwa ku ARDUINO MEGA 2560. Pachifukwa ichi, cholumikizira cha mizere iwiri chimagwiritsidwa ntchito kumapeto. Chophimba chokhala ndi malingaliro a 240x400, chokhala ndi chotchinga chotchinga ndi chowunikira kutentha, chimagwiritsidwa ntchito ngati chipangizo chowonetsera chidziwitso. Mtengo wa HX8352B.Local Autonomous Data Acquisition System (ikupitilira) Kuphatikiza apo, cholumikizira ku ICSP pa bolodi lazenera chimachotsedwa ndipo kagawo kakang'ono ka SD sikagwiritsidwa ntchito. Chowonadi ndi chakuti socket "yachibadwidwe" ya SD singagwiritsidwe ntchito chifukwa cha mkangano pa basi ya SPI. Kwa flash khadi, owerenga makhadi osiyana adagwiritsidwa ntchito, omwe amaphatikizapo 3,3V stabilizer ndi buffer chip yokhala ndi zigawo zitatu zotulutsa 74LVS125A. Apa ndi pomwe chosaka chimandidikirira. Malo osungira maboma atatu, koma E01-ML01DP5 kapena owerenga makhadi adagwira ntchito. M'mawu a library, SdFat adawona chenjezo lokhudza kusagwirizana ndi zida zina. Kusintha kwa mlingo pa TXS0108E kunachotsedwa ndikusinthidwa ndi jumpers, chifukwa E01-ML01DP5 imalekerera zizindikiro za 5V - sizinathandize. Pogwiritsa ntchito oscilloscope, kutayika kwa chizindikiro kunadziwika pa mzere wa MISO pamene wowerenga makhadi adalumikizidwa. Poyang'anitsitsa mosamala, zinapezeka kuti zolowetsa za zizindikiro zothandizira za njira za OE 4 za 74LVS125A zimangogulitsidwa ku waya wamba ndipo sipangakhale nkhani ya dziko lililonse lachitatu. Chip cha buffer chidagwiritsidwa ntchito ngati chosinthira choyambirira kuchokera ku 5V kupita ku 3.3V pogwiritsa ntchito zopinga za 3,3 KΩ zolumikizidwa motsatizana ndi mizere yolumikizira. Kupatula mzere wa MISO. Chosinthira chake chakumunsi chapansi mwina chidakopa zidziwitso pansi. Nditazindikira kuti chizindikiro chothandizira cha mzere wa MISO chinali pini 13, idachotsedwa panjanji ndikugulitsidwaLocal Autonomous Data Acquisition System (ikupitilira)pakati pa chipangizo cha 9LVS74A CS sankhani pini yolowera (125) ndi choletsa chothetsa. Tsopano, ngati palibe mwayi wopeza memori khadi, buffer ya MISO imayimitsidwa ndipo sichimasokoneza magwiridwe antchito a chipangizo china.Chithunzi cha boardboardLocal Autonomous Data Acquisition System (ikupitilira)Receiver ikugwira ntchitoLocal Autonomous Data Acquisition System (ikupitilira)DS3231 imagwiritsa ntchito pulogalamu ya I2C basi (TWI) kulumikiza wotchi.
Pulogalamu ya Arduino IDE// CHOFUNIKA: Adafruit_TFTLCD LAIBULALE IYENERA KUKHALA MWANDENDE
// ZOSANGITSIDWA PA TFT SHIELD KAPENA BOMA LOPHUNZITSA.
// ONANI NDEMANGA ZOYENERA MU Adafruit_TFTLCD.h ZOKHALA.
//by Open-Smart Team ndi Catalex Team
//[imelo ndiotetezedwa]
//Sitolo: dx.com
// open-smart.aliexpress.com/store/1199788
// Ntchito Yachiwonetsero: Onetsani zithunzi, zilembo
//Arduino IDE: 1.6.5
// Board: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo

// Board: OPEN-SMART UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2INCH TFT:
// www.aliexpress.com/store/product/3-2-TFT-LCD-Display-module-Touch-Screen-Shield-board-onboard-temperature-sensor-w-Touch-Pen/1199788_32755473754.html?spm=2114.12010615.0.0.bXDdc3
//OPEN-SMART UNO R3 5V / 3.3V:
// www.aliexpress.com/store/product/OPEN-SMART-5V-3-3V-Compatible-UNO-R3-CH340G-ATMEGA328P-Development-Board-with-USB-Cable-for/1199788_32758607490.html?spm=2114.12010615.0.0.ckMTaN

#kuphatikizapo // Laibulale yazithunzi zazikulu
//#kuphatikizapo // Laibulale yapadera ya Hardware
#kuphatikizapo
MCUFRIEND_kbv tft;
#kuphatikizapo "SdFat.h" // Gwiritsani ntchito laibulale ya SdFat
SdFat SD;
SdFile fayilo;
Fayilo myFile;
#tanthauzirani SD_CS_PIN SS

#kuphatikizapo // Lumikizani laibulale kuti mugwire ntchito ndi basi ya SPI
#kuphatikizapo // Lumikizani zosintha kuchokera ku laibulale ya RF24
#kuphatikizapo // Lumikizani laibulale kuti mugwire ntchito ndi nRF24L24+
Wailesi ya RF24 (47, 49);

#kuphatikizapo

DS3231 rtc(27, 25);
Nthawi t;

uint16_t r = 6000;
uint32_t k = 0;

deta yayitali yosayinidwa yosasinthika;
zoyandama leb_1;
zoyandama leb_2;
zoyandama leb_3;
zoyandama leb_4;

uint8_t chitoliro;
int rc = 0;

uint8_t time_sec_prev;
uint8_t time_day_prev;

//******************************************** *************//
// Ngati mugwiritsa ntchito OPEN-SMART TFT breakout board //
// Ndikukulimbikitsani kuti muwonjezere 5V-3.3V level converting circuit.
// Zachidziwikire mutha kugwiritsa ntchito mtundu wa OPEN-SMART UNO Black wokhala ndi switch yamagetsi ya 5V/3.3V,
// mumangofunika kusinthana ndi 3.3V.
// Zikhomo zowongolera za LCD zitha kuperekedwa ku digito iliyonse kapena
// zikhomo za analogi ... koma tidzagwiritsa ntchito zikhomo za analogi momwe izi zimatithandizira
//——————————————-|
// TFT Kuphulika - Arduino UNO / Mega2560 / OPEN-SMART UNO Black
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - Bwezeraninso
// LED - GND
DB0-8
DB1-9
DB2-10
DB3-11
DB4-4
DB5-13
DB6-6
DB7-7

// Perekani mayina owerengeka ndi anthu pamitundu yodziwika bwino ya 16-bit:
#tanthawuza BLACK 0x0000
#tanthauzira BLUE 0x001F
#tanthauzirani RED 0xF800
#tanthawuza GREEN 0x07E0
#tanthauzira CYAN 0x07FF
#tanthauzira MAGENTA 0xF81F
#tanthauzira YELLOW 0xFFE0
#tanthauzira WHITE 0xFFFF
#tanthauzirani GRAY 0x8C51
#tanthauzirani GRAYD 0x39E7

// Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Ngati mukugwiritsa ntchito chishango, mizere yonse yowongolera ndi deta imakhazikika, ndi
// chilengezo chosavuta chingagwiritsidwe ntchito:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

Chingwe cha dataString;
//String numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//String *numfileMonth="1.txt" (sizeof (numfileMonth));
//////////////////////////////////////// //////////////////////////////////////////// //////////

khwekhwe (zopanda kanthu) {

rtc.kuyamba ();

// Kukhazikitsa nthawi, sinthani mizere yofunikira
// rtc.setDOW(6); // Tsiku la sabata
// rtc.setTime(22, 04, 0); // Nthawi, mu mawonekedwe a maola 24.
// rtc.setDate(4, 5, 2019); // Tsiku, Okutobala 29, 2018

Serial.begin (2000000);
//////// choyambitsa zenera
tft.begin(0x65);
tft.reset ();
tft.setRotation(0);
tft.cp437(zoona);
////////////////////Kutuluka kwa mayina, zida za zida, dzina la bungwe
tft.fillScreen(WAKUDA);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("OPHUNZITSIRA & BUILD");
tft.setCursor(30, 20);
tft.print (utf8rus("Womanga V.V"));
tft.setCursor(40, 40);
tft.print (utf8rus("Turner I.I." ));
kuchedwa (2000);

radio.begin(); // Yambitsani ntchito nRF24L01+
radio.setChannel(120); // Tchulani njira yolandirira deta (kuyambira 0 mpaka 127)
radio.setDataRate(RF24_250KBPS); // Tchulani kuchuluka kwa kusamutsa deta (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // Tchulani mphamvu ya transmitter (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // Tsegulani chitoliro chimodzi chokhala ndi chizindikiritso cha 1 transmitter 1xAABBCCDD0, kuti mulandire deta
// Tsegulani chitoliro 2 chokhala ndi transmitter ID 2xAABBCCDD0 kuti mulandire deta
radio.startListening(); // Yatsani wolandila, yambani kumvetsera potsegula mapaipi
// radio.stopListening ();
////////Kutuluka kwa chidziwitso chautumiki
tft.fillScreen(WAKUDA);
tft.setCursor(8, 0);
tft.setTextSize(1);
///////// Yambani kuyambitsa SD khadi
Serial.println("Khadi loyambirira la SD");
tft.println("Khadi loyambirira la SD");
tft.setCursor(8, 10);
////////Kuyambitsa khadi
ngati (!SD.yamba(SD_CS_PIN)) {
Serial.println("choyamba chinalephera!");
tft.fillRect(8, 10, 85, 7, RED);
tft.setTextColor(WAKUDA);
tft.println("Choyamba chinalephera!");
bwererani;
}
tft.setTextColor(WHITE);
Serial.println("kuyambitsa kwachitika");
tft.println("Kuyambitsa kwachitika");
kuchedwa (2000);
//////// yowerenga nthawi ndi tsiku ndikuwapatsa zosintha
t = rtc.getTime ();
time_sec_prev = t.sec;
time_day_prev = t.date;
////////Kutulutsa tsikulo mokakamiza kuti musadikire kuti tsiku lisinthe kuti liwonetsedwe
tft.setCursor(180, 0); // kukhazikitsa malo a cholozera
tft.fillRect(178, 0, 65, 7, GRAY); // kuchotsa malo otulutsa nthawi
tft.setTextSize(1);
tft.print(rtc.getDateStr());
////////Kutulutsa dzina la zinthu zowongolera
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I");
//////// Kupanga fayilo ya chipika ndikutulutsa zotsatira za kuyesa kulenga
tft.setTextSize(1);
tft.setCursor(130, 10); // ngati chipika cholembera 2.txt chapangidwa, ndiye kulembera ku fayilo kudzapitirira
ngati (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} china {
myFile = SD.open(perv, FILE_WRITE); // ngati fayilo 2.txt palibe, idzapangidwa
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

chopanda kanthu (chopanda) {
////////Kuwona ngati pali pempho loti mutulutse chipika ku COM port monitor
ngati (Serial.available()> 0) {
ngati (1 == seri.read());
//////// Ndipo ngati "1" yavomerezedwa, ndiye zotsatira zake
Fayilo myFile = SD.open(perv);
// ngati fayilo ilipo, lembani kwa iyo:
ngati (myFile) {
pomwe (myFile.available ()) {
Serial.write(myFile.read());
}
myFile.close();
}
kenaka {
Serial.println("kulakwitsa kutsegula .txt");
}
}
/////////Nthawi yowerenga
t = rtc.getTime ();
tft.setTextColor(WHITE);
///////// Ngati nthawi yasintha, sonyezani mawotchi atsopano
ngati (nthawi_sec_prev != t.sec) {
tft.setCursor(120, 0); // kukhazikitsa malo a cholozera
tft.fillRect(118, 0, 50, 7, GRAY); // kuchotsa malo otulutsa nthawi
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // kuwerengera koloko
time_sec_prev = t.sec;
}
//////// Ngati tsikulo lasintha, sonyezani tsiku latsopano
ngati (nthawi_day_prev != t.date) {
tft.setCursor(180, 0); // kukhazikitsa malo a cholozera
tft.fillRect(178, 0, 65, 7, GRAY); // malo owonetsera tsiku
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // kuwonetsa zowerengera zamasiku
time_day_prev = t.date;
}
///////// Ngati kulandira wailesi kulipo, ndiye
ngati (radio.available(&pipe)) {
/////////kuyang'ana ngati buffer yolandila yadzaza,
radio.read(&data, sizeof(data));
////////ngati adilesi yotumizira yofunikira ilipo, ndiye
ngati (chitoliro == 1) {
//////// kudikirira kutsata kolumikizana kwa ziro kuti mudziwe
// chiyambi cha block data
ngati (data == 0000) {
rc = 0;
} china {
rc++;
}
////////Kujambulitsa zowerengera ndikuziwerengera mu 10th ndi 100th ya ola
ngati (rc == 1) {
leb_1 = deta / 3600.0;
}

ngati (rc == 2) {
leb_2 = deta / 3600.0;
}

ngati (rc == 3) {
leb_3 = deta / 3600.0;
}

ngati (rc == 4) {
leb_4 = deta / 3600.0;
}
}
}
r++;
k++; // kauntala chabe
//////// Kusintha kwa data ndi periodicity inayake
ngati (r> = 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GRAYD);
Serial.println("Lebedki I");
tft.setCursor(0, 41);
tft.println(leb_1);
Serial.println(leb_1);
tft.println(leb_2);
Serial.println(leb_2);
tft.println(leb_3);
Serial.println(leb_3);
tft.println(leb_4);
Serial.println(leb_4);
Serial.println(k);
r = 0;
}
//////////////////////////////////////////////
ngati ((t.min % 10 == 0) && (t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(WAKUDA);
////////Kupanga chingwe mumtundu wa .csv
String dataString = Chingwe (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + ", " + (leb_1) + ", " + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
////////Lembani ku fayilo ndikutulutsa zotsatira za kulemba
myFile = SD.open(perv, FILE_WRITE); // ngati palibe fayilo yotchedwa "2.txt", idzapangidwa.
ngati (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, GREEN);
tft.println("SD OK");
Serial.println("SD OK");
kuchedwa (900); // kuchedwa, mwinamwake amalemba zowerengera 13 zofanana mpaka sekondi itadutsa
} china {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}Pulogalamu yosinthira zilembo/* Sinthani zilembo zaku Russia kuchokera ku UTF-8 kupita ku Windows-1251 */

Chingwe utf8rus (Chingwe gwero)
{
ine, k;
Cholinga cha chingwe;
chizindikiro chosasainidwa n;
char m[2] = {'0', ''};

k = gwero.utali (); ine = 0;

pamene (i <k) {
n = gwero[i]; ine++;

ngati (n>= 0xC0) {
kusintha (n) {
nkhani 0xD0: {
n = gwero[i]; ine++;
ngati (n == 0x81) {n = 0xA8; kupuma; }
ngati (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
kuswa;
}
nkhani 0xD1: {
n = gwero[i]; ine++;
ngati (n == 0x91) {n = 0xB8; kupuma; }
ngati (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
kuswa;
}
}
}
m[0] = n; chandamale = chandamale + Chingwe (m);
}
kubwereranso;
}Pulogalamu yosinthira zilembo zachi Cyrillic pogwiritsa ntchito laibulale ya Adafruit_GFX imayikidwa mufoda yomweyi ndi pulogalamu yayikulu. Muyeneranso kusintha fayilo ya glcdfont.c mu Adafruit_GFX ndi font ina. ndi laibulale yokhala ndi chosinthira chofunikira. Zambiri za Russification zitha kupezeka mosavuta pa intaneti.
Mwachidule, ndikunena kuti dongosololi linakhala ndi zoyembekeza, zakhala zosavuta kuyang'anira nthawi yogwiritsira ntchito zipangizo. Ngakhale kuti zonse zasonkhanitsidwa pa bolodi la mkate, palibe zodandaula nthawi yomweyo za ntchitoyi. Zinthu zoyamba zakhala zikugwira ntchito kwa miyezi isanu ndi umodzi ndipo zapulumuka m'nyengo yozizira. Mapangidwe atsopano Yakhala ikuyendetsa magawo 9 olamulidwa kuyambira pa Marichi 5 ndipo nthawi yogwiritsira ntchito ikulembetsedwa mwalamulo kugwiritsa ntchito.

Source: www.habr.com

Kuwonjezera ndemanga