System Caffael Data Ymreolaethol Leol (parhad)

Dechreuwch ar y wefan hon по ссылке.
Yr opsiwn mwyaf cyfleus ar gyfer adalw gwybodaeth am droi'r cychwynnwr ymlaen oedd yr opsiwn gyda'r optocoupler PC817. Diagram sgematigSystem Caffael Data Ymreolaethol Leol (parhad)Mae'r byrddau yn cynnwys tair cylched union yr un fath, mae popeth yn cael ei roi mewn blychau plastig ABS, maint 100x100 mm. Llun o optocouplersSystem Caffael Data Ymreolaethol Leol (parhad) Pan fyddant wedi'u cysylltu â dyfeisiau cychwyn gyda falfiau lled-ddargludyddion, mae eu cerrynt gollyngiadau yn ddigon i agor y PC817 a bydd y cownter yn sbarduno'n ffug. I eithrio sefyllfa o'r fath ychwanegir un arall mewn cyfres at gylched yr optocoupler LED a'r arwydd gweithrediad LED. I wneud hyn, mae siwmper J1 yn cael ei hagor ac mae LED LED1 ychwanegol yn cael ei sodro i mewn.
Gwneir y rhan derbyn ar ochr 1System Caffael Data Ymreolaethol Leol (parhad)ochr 2System Caffael Data Ymreolaethol Leol (parhad)bwrdd datblygu wedi'i gysylltu ag ARDUINO MEGA 2560. Ar gyfer hyn, defnyddir cysylltydd rhes ddwbl ar y diwedd. Defnyddir sgrin gyda chydraniad o 240x400, sydd â sgrin gyffwrdd gwrthiannol a synhwyrydd tymheredd, fel dyfais arddangos gwybodaeth. HX8352B.System Caffael Data Ymreolaethol Leol (parhad) Ar ben hynny, mae'r cysylltydd i'r ICSP ar y bwrdd sgrin yn cael ei dynnu ac ni ddefnyddir y slot micro SD. Y ffaith yw na ellir defnyddio'r soced SD “brodorol” oherwydd gwrthdaro ar y bws SPI. Ar gyfer y cerdyn fflach, defnyddiwyd darllenydd cerdyn ar wahân, a oedd yn cynnwys sefydlogwr 3,3V a sglodyn byffer gyda thri chyflwr allbwn 74LVS125A. Dyma lle roedd y rhaca yn aros amdanaf. Buffer tair talaith, ond gweithiodd naill ai'r E01-ML01DP5 neu'r darllenydd cerdyn. Yn y sylwadau llyfrgell, gwelodd SdFat rybudd am anghydnawsedd â dyfeisiau eraill. Tynnwyd y trawsnewidydd lefel ar y TXS0108E a'i ddisodli gan siwmperi, oherwydd Mae E01-ML01DP5 yn oddefgar i signalau 5V - nid oedd yn helpu. Gan ddefnyddio osgilosgop, canfuwyd colled signal ar y llinell MISO pan gysylltwyd darllenydd cerdyn. Ar ôl eu harchwilio'n ofalus, canfuwyd bod mewnbynnau signalau galluogi sianeli OE 4 y 74LVS125A yn cael eu sodro i wifren gyffredin ac ni ellid sôn am unrhyw drydydd cyflwr. Defnyddiwyd y sglodion byffer fel trawsnewidydd lefel cyntefig o 5V i 3.3V gan ddefnyddio gwrthyddion 3,3 KΩ wedi'u cysylltu mewn cyfres â'r llinellau signal. Heblaw am y llinell MISO. Mae'n debyg bod ei switsh gwaelod allbwn wedi denu signalau i lefel y ddaear. Ar ôl penderfynu mai arwydd galluogi llinell MISO oedd pin 13, cafodd ei rwygo oddi ar y trac asodroSystem Caffael Data Ymreolaethol Leol (parhad)rhwng y ddyfais 9LVS74A CS dewiswch pin mewnbwn (125) a'r gwrthydd terfynu. Nawr, os nad oes mynediad i'r cerdyn cof, mae'r byffer MISO yn anabl ac nid yw'n ymyrryd â gweithrediad dyfais arall.Diagram bwrdd datblyguSystem Caffael Data Ymreolaethol Leol (parhad)Derbynnydd ar waithSystem Caffael Data Ymreolaethol Leol (parhad)Mae'r DS3231 yn defnyddio bws I2C meddalwedd (TWI) i gysylltu'r cloc.
Rhaglen IDE Arduino// PWYSIG: RHAID I'R LLYFRGELL Adafruit_TFTLCD FOD YN BENODOL
// WEDI'I LLUNIO AR GYFER NAILL AI'R Darian TFT NEU'R BWRDD TORRI ALLAN.
// GWELER SYLWADAU PERTHNASOL YN Adafruit_TFTLCD.h AM SETUP.
//gan Dîm Agored-Smart a Thîm Catalex
//[e-bost wedi'i warchod]
//Store: dx.com
// agored-smart.aliexpress.com/store/1199788
//Demo Swyddogaeth: Arddangos graffeg, cymeriadau
// Arduino IDE: 1.6.5
// Bwrdd: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo

// Bwrdd: AGORED-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
//AGORED-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

#cynnwys // Llyfrgell graffeg graidd
//#cynnwys // Llyfrgell caledwedd-benodol
#cynnwys
MCUFRIEND_kbv tft;
#include "SdFat.h" // Use the SdFat library
SdFat SD;
Ffeil SdFile;
Ffeil myFile;
#define SD_CS_PIN SS

#cynnwys // Cysylltwch y llyfrgell i weithio gyda'r bws SPI
#cynnwys // Cysylltwch y ffeil gosodiadau o'r llyfrgell RF24
#cynnwys // Cysylltwch y llyfrgell i weithio gyda nRF24L24+
radio RF24(47, 49);

#cynnwys

DS3231 rtc(27, 25);
Amser t;

uint16_t r = 6000;
uint32_t k = 0;

data hir anweddol heb ei lofnodi;
arnofio leb_1;
arnofio leb_2;
arnofio leb_3;
arnofio leb_4;

pibell uint8_t;
int rc = 0;

uint8_t amser_sec_prev;
uint8_t amser_day_prev;

//************************************************ **************** / /
// Os ydych yn defnyddio bwrdd ymneilltuo TFT OPEN-SMART //
// Argymell chi i ychwanegu cylched trosi lefel 5V-3.3V.
// Wrth gwrs gallwch chi ddefnyddio fersiwn OPEN-SMART UNO Black gyda switsh pŵer 5V/3.3V,
// does ond angen newid i 3.3V.
// Gellir neilltuo'r pinnau rheoli ar gyfer yr LCD i unrhyw ddigidol neu
// pinnau analog...ond byddwn yn defnyddio'r pinnau analog gan fod hyn yn caniatáu i ni
//————————————-|
// TFT Breakout - Arduino UNO / Mega2560 / AGOR-SMART UNO Du
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - AILOSOD
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// Neilltuo enwau darllenadwy dynol i rai gwerthoedd lliw 16-did cyffredin:
#diffinio DU 0x0000
#diffiniwch BLUE 0x001F
#diffinio COCH 0xF800
#diffinio GWYRDD 0x07E0
#diffinio CYAN 0x07FF
#diffinio MAGENTA 0xF81F
#diffinio MELYN 0xFFE0
#diffinio GWYN 0xFFFF
#diffinio GRAY 0x8C51
#diffinio GRAYD 0x39E7

//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Os ydych chi'n defnyddio'r darian, mae'r holl linellau rheoli a data yn sefydlog, ac
// gellir defnyddio datganiad symlach yn ddewisol:
// Adafruit_TFTLCD tft;
uint16_t g_dynodydd;

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

gosod gwagle (gwag) {

rtc.begin();

// I osod yr amser, dadwneud y llinellau angenrheidiol
// rtc.setDOW(6); // Diwrnod yr wythnos
// rtc.setTime(22, 04, 0); // Amser, mewn fformat 24 awr.
// rtc.setDate(4, 5, 2019); // Dyddiad, Hydref 29, 2018

Serial.begin (2000000);
//////// Cychwyn sgrin
tft.begin(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(gwir);
///////////////// Allbwn enwau, ategolion offer, enw sefydliad
tft.fillScreen(DU);
tft.setTextColor(GWYN);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("DATBLYGWYR AC ADEILADU");
tft.setCursor(30, 20);
tft.print (utf8rus ("Constructor V.V." ));
tft.setCursor(40, 40);
tft.print (utf8rus ("Turner I.I." ));
oedi (2000);

radio.dechrau(); // Cychwyn gwaith nRF24L01+
radio.setChannel(120); // Nodwch y sianel derbyn data (o 0 i 127)
radio.setDataRate(RF24_250KBPS); // Nodwch y gyfradd trosglwyddo data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // Nodwch bŵer y trosglwyddydd (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // Agor 1 bibell gyda'r dynodwr o 1 trosglwyddydd 0xAABBCCDD11, i dderbyn data
// Pibell agored 2 gyda throsglwyddydd ID 2xAABBCCDD0 i dderbyn data
radio.startGwrando(); // Trowch ar y derbynnydd, dechreuwch wrando ar bibellau agored
// radio.stopListening();
//////// Allbwn gwybodaeth gwasanaeth
tft.fillScreen(DU);
tft.setCursor(8, 0);
tft.setTextSize(1);
//////// Dechreuwch gychwyn y cerdyn SD
Serial.println("Cerdyn SD cychwynnol");
tft.println("Cerdyn SD cychwynnol");
tft.setCursor(8, 10);
//////// Cychwyn y cerdyn
os (!SD.begin(SD_CS_PIN)) {
Serial.println("methwyd y llythyren!");
tft.fillRect(8, 10, 85, 7, COCH);
tft.setTextColor(DU);
tft.println("Methwyd y llythyren!");
dychwelyd;
}
tft.setTextColor(GWYN);
Serial.println("cychwyniad wedi'i wneud");
tft.println("Cychwyniad wedi'i wneud");
oedi (2000);
//////// Amser darllen a dyddiad a'u neilltuo i newidynnau
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
//////// Allbynnu'r dyddiad yn rymus er mwyn peidio ag aros i'r dyddiad newid i'w arddangos
tft.setCursor(180, 0); // gosod safle'r cyrchwr
tft.fillRect(178, 0, 65, 7, LLWYD); // clirio'r ardal allbwn amser
tft.setTextSize(1);
tft.print(rtc.getDateStr());
//////// Allbwn enw'r gwrthrychau rheoli
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus ("Winches I"));
//////// Creu ffeil log ac allbynnu canlyniad yr ymgais i greu
tft.setTextSize(1);
tft.setCursor(130, 10); // os yw ffeil log 2.txt yn cael ei chreu, yna bydd ysgrifennu at y ffeil yn parhau
os (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} {Arall
myFile = SD.open(perv, FILE_WRITE); // os nad yw ffeil 2.txt yn bodoli, bydd yn cael ei greu
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

dolen gwag (gwag) {
/////// Gwirio bodolaeth cais i allbynnu log i fonitor porthladd COM
os (Serial.available() > 0) {
os (1 == Serial.read());
//////// Ac os derbynnir “1”, yna'r allbwn
Ffeil myFile = SD.open(perv);
// os yw'r ffeil ar gael, ysgrifennwch ati:
os (myFile) {
tra (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
arall {
Serial.println("gwall wrth agor .txt");
}
}
//////// Amser darllen
t = rtc.getTime();
tft.setTextColor(GWYN);
//////// Os yw'r amser wedi newid, yna dangoswch y darlleniadau cloc newydd
os ( time_sec_prev != t.sec) {
tft.setCursor(120, 0); // gosod safle'r cyrchwr
tft.fillRect(118, 0, 50, 7, LLWYD); // clirio'r ardal allbwn amser
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // darlleniadau cloc allbwn
time_sec_prev = t.sec;
}
//////// Os yw'r dyddiad wedi newid, yna dangoswch y dyddiad newydd
os ( time_day_prev != t.date) {
tft.setCursor(180, 0); // gosod safle'r cyrchwr
tft.fillRect(178, 0, 65, 7, LLWYD); // ardal arddangos dyddiad clir
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // arddangos darlleniadau dyddiad
time_day_prev = t.date;
}
//////// Os oes derbyniad radio ar gael, yna
os (radio.ar gael(&pibell)) {
/////// gwirio a yw'r byffer derbyn yn llawn,
radio.read(&data, sizeof(data));
//////// os yw'r cyfeiriad trosglwyddydd gofynnol ar gael, yna
os (pibell == 1) {
//////// aros am ddilyniant cydamserol o sero i'w bennu
// dechrau'r bloc data
os (data == 0000) {
rc = 0;
} {Arall
rc++;
}
////////Cofnodi gwerthoedd cownter a'u cyfrifo mewn 10fed a 100fedau o awr
os (rc == 1) {
leb_1 = data / 3600.0;
}

os (rc == 2) {
leb_2 = data / 3600.0;
}

os (rc == 3) {
leb_3 = data / 3600.0;
}

os (rc == 4) {
leb_4 = data / 3600.0;
}
}
}
r++;
k++; // dim ond cownter
//////// Diweddaru data gyda chyfnodoldeb penodol
os ( 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);
Cyfresol.println(k);
r = 0;
}
//////// Ysgrifennu data i'r log ar SD bob 10 munud.
os (( t.min % 10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(DU);
//////// Creu llinyn mewn fformat .csv
Llinyn dataString = Llinyn (rtc.getDateStr()) +", "+(rtc.getTimeStr()) +", " + (leb_1) +", " + (leb_2)
+", " +(leb_3) +", " + (leb_4) +", ";
//////// Ysgrifennu i ffeil ac allbynnu canlyniadau'r broses ysgrifennu
myFile = SD.open(perv, FILE_WRITE); // os nad oes ffeil o'r enw "2.txt", bydd yn cael ei greu.
os (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, GWYRDD);
tft.println("SD Iawn");
Serial.println("SD Iawn");
oedi(900); // oedi, fel arall yn cofnodi 13 darlleniad unfath nes bod eiliad wedi mynd heibio
} {Arall
tft.fillRect(198, 8, 42, 10, COCH);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}Rhaglen trosi cymeriad/* Ailgodio ffontiau Rwsieg o UTF-8 i Windows-1251 */

Llinyn utf8rus(Ffynhonnell llinynnol)
{
int i,k;
Targed llinyn;
torgoch heb ei harwyddo n;
torgoch m[2] = { ' 0 ', ' ' };

k = ffynhonnell.length(); ff = 0;

tra (i < k) {
n = ffynhonnell[i]; ff++;

os (n >= 0xC0) {
switsh (n) {
achos 0xD0: {
n = ffynhonnell[i]; ff++;
os (n == 0x81) { n = 0xA8; torri; }
os (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
torri;
}
achos 0xD1: {
n = ffynhonnell[i]; ff++;
os (n == 0x91) { n = 0xB8; torri; }
os (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
torri;
}
}
}
m[0] = n; targed = targed + Llinyn(m);
}
targed dychwelyd;
}Mae'r rhaglen trawsgodio nodau ar gyfer allbwn Cyrilig gan ddefnyddio'r llyfrgell Adafruit_GFX yn cael ei rhoi yn yr un ffolder â'r brif raglen. Mae angen i chi hefyd ddisodli'r ffeil glcdfont.c yn Adafruit_GFX gyda ffont gwahanol. Yma llyfrgell gyda'r un newydd sydd ei angen. Gellir dod o hyd i ragor o wybodaeth am Russification yn hawdd ar y Rhyngrwyd.
I grynhoi, byddaf yn dweud bod y system yn bodloni disgwyliadau, mae wedi dod yn haws monitro amser gweithredu'r offer. Er bod popeth wedi'i ymgynnull ar fyrddau bara, nid oes unrhyw gwynion ar unwaith am y gwaith. Mae'r elfennau cyntaf wedi bod yn gweithio ers mwy na chwe mis ac wedi goroesi'r gaeaf. Dyluniad diweddaraf Mae wedi bod yn rhedeg ar gyfer 9 uned reoledig ers Mawrth 5ed ac mae'r amser gweithredu yn cael ei gofrestru'n swyddogol gan ei ddefnyddio.

Ffynhonnell: hab.com

Ychwanegu sylw