Системаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)

Дар ин сайт оғоз кунед пайванд.
Варианти аз ҳама мувофиқ барои дарёфти маълумот дар бораи фурӯзон кардани стартер ин вариант бо оптокоуплери PC817 гардид. Диаграммаи схемавӣСистемаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)Дар тахтаҳо се схемаи якхела мавҷуд аст, ҳама чиз дар қуттиҳои пластикии ABS, андозаи 100x100 мм ҷойгир карда шудааст. Сурати оптокоплерҳоСистемаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад) Ҳангоми пайвастшавӣ ба дастгоҳҳои оғозкунандаи дорои клапанҳои нимноқил, ҷараёни ихроҷи онҳо барои кушодани PC817 кифоя аст ва ҳисобкунак бардурӯғ ба кор медарояд. Барои истисно кардани чунин вазъият яки дигар ба схемаи LED optocoupler ва LED нишондиҳандаи амалиёт пайдарпай илова карда мешавад. Барои ин, jumper J1 кушода мешавад ва LED LED1 иловагӣ дар он кафшер карда мешавад.
Қисми қабулкунанда дар рӯи он сохта шудааст тарафи 1Системаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)тарафи 2Системаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)Шӯрои рушд ба ARDUINO MEGA 2560 пайваст карда шудааст. Барои ин, дар охири пайвасткунаки дукарата истифода мешавад. Ба сифати дастгоҳи намоиши иттилоот экрани дорои қарори 240х400, дорои экрани сенсории муқовиматкунанда ва сенсори ҳарорат мебошад. HX8352B.Системаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад) Ғайр аз он, пайвасткунаки ICSP дар тахтаи экран хориҷ карда мешавад ва слотҳои micro SD истифода намешаванд. Далели он аст, ки васлаки SD-и "модарӣ" аз сабаби ихтилоф дар автобуси SPI истифода намешавад. Барои корти флешдор як корти хонандаи алоҳида истифода шуд, ки дорои стабилизатори 3,3V ва чипи буферӣ бо се ҳолати баромади 74LVS125A буд. Дар ин чо раке маро интизор буд. Буфери се ҳолат, аммо ё E01-ML01DP5 ё корти хонанда кор мекард. Дар шарҳҳои китобхона, SdFat огоҳиро дар бораи номувофиқатӣ бо дастгоҳҳои дигар дид. Табдилдиҳандаи сатҳ дар TXS0108E хориҷ карда шуд ва бо jumpers иваз карда шуд, зеро E01-ML01DP5 ба сигналҳои 5V таҳаммулпазир аст - он кӯмак накард. Бо истифода аз осциллограф, ҳангоми пайваст кардани корти хонанда дар хати MISO талафоти сигнал ошкор карда шуд. Ҳангоми тафтиши бодиққат маълум шуд, ки вуруди сигналҳои фаъолкунандаи каналҳои OE 4-и 74LVS125A ба таври оддӣ ба сими умумӣ пайваст карда шудаанд ва дар бораи ягон ҳолати сеюм сухан гуфтан мумкин нест. Чипи буферӣ ҳамчун табдилдиҳандаи сатҳи ибтидоӣ аз 5V то 3.3V бо истифода аз резисторҳои 3,3 КОм, ки дар силсила бо хатҳои сигнал пайваст карда шудаанд, истифода мешуд. Ба истиснои хатти MISO. Калиди поёни баромади он эҳтимол сигналҳоро ба сатҳи замин ҷалб мекард. Пас аз муайян кардани он, ки сигнали фаъолкунии хати MISO pin 13 аст, он аз трек канда шуд вакафшер карда шудаастСистемаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)байни дастгоҳи 9LVS74A CS PIN вуруди интихоб кунед (125) ва муқовимат қатъ. Ҳоло, агар дастрасӣ ба корти хотира мавҷуд набошад, буфери MISO ғайрифаъол аст ва ба кори дастгоҳи дигар халал намерасонад.Диаграммаи тахтаи рушдСистемаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)Қабулкунанда дар амалСистемаи ба даст овардани маълумотҳои худмухтори маҳаллӣ (идома дорад)DS3231 барои пайваст кардани соат нармафзори автобуси I2C (TWI) -ро истифода мебарад.
Барномаи Arduino IDE// МУҲИМ: КИТОБХОНАИ Adafruit_TFTLCD БОЯД МАХСУС БОШАД
// БАРОИ Ё СИПАРИ TFT ё ШАХТАИ ТАРК.
// БАРОИ НАЗОРАТ ДАР Adafruit_TFTLCD.h ба шарҳҳои дахлдор нигаред.
//аз ҷониби Open-Smart Team ва Catalex Team
//[почтаи электронӣ ҳифз карда шудааст]
//Мағоза: dx.com
// open-smart.aliexpress.com/store/1199788
//Функсияи намоишӣ: Намоиши графикҳо, аломатҳо
//Arduino IDE: 1.6.5
// Раёсат: Arduino UNO R3, Arduino Mega2560, Arduino Леонардо

// Шӯрои: OPEN-SMART UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2 дюйм 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

#дарбар мегирад // Китобхонаи графикаи аслӣ
//# дохил кунед // Китобхонаи махсуси сахтафзор
#дарбар мегирад
MCUFRIEND_kbv tft;
#include "SdFat.h" // Китобхонаи SdFat-ро истифода баред
SdFat SD;
файли SdFile;
Файли myFile;
#муайян кардани SD_CS_PIN SS

#дарбар мегирад // Китобхонаро барои кор бо автобуси SPI пайваст кунед
#дарбар мегирад // Файли танзимотро аз китобхонаи RF24 пайваст кунед
#дарбар мегирад // Китобхонаро барои кор бо nRF24L24+ пайваст кунед
Радиои RF24(47, 49);

#дарбар мегирад

DS3231 rtc(27, 25);
Вақт t;

uint16_t r = 6000;
uint32_t k = 0;

маълумоти дарози беимзо ноустувор;
float leb_1;
float leb_2;
float leb_3;
float leb_4;

uint8_t қубур;
int rc = 0;

uint8_t time_sec_prev;
uint8_t time_day_prev;

//************************************************ ****************//
// Агар шумо панели шикастани OPEN-SMART TFT-ро истифода баред //
// Ба шумо тавсия медиҳем, ки схемаи табдилдиҳии сатҳи 5V-3.3V илова кунед.
// Албатта шумо метавонед версияи OPEN-SMART UNO Black-ро бо гузариши барқи 5V/3.3V истифода баред,
// ба шумо танҳо лозим аст, ки ба 3.3V гузаред.
// Дар таїіизот назорат барои LCD мумкин аст ба ягон рақамӣ ё таъин
// пинҳои аналогӣ... аммо мо пинҳои аналогиро истифода мебарем, зеро ин ба мо имкон медиҳад
//——————————————-|
// TFT Breakout - Arduino UNO / Mega2560 / OPEN-SMART UNO Black
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - аз нав танзим кардан
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// Ба баъзе арзишҳои умумии рангҳои 16-бит номҳои барои одамон хондашаванда таъин кунед:
#define BLACK 0x0000
#define BLUE 0x001F
#RED 0xF800-ро муайян кунед
# муайян кардани GREEN 0x07E0
#CYAN 0x07FF-ро муайян кунед
#MAGENTA 0xF81F-ро муайян кунед
#зард 0xFFE0 муайян кунед
#муайян кардани WHITE 0xFFFF
#define GRAY 0x8C51
#define GRAYD 0x39E7

//Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Агар бо истифода аз сипар, ҳама хати назорат ва маълумот собит, ва
// декларатсияи соддатар метавонад ба таври ихтиёрӣ истифода шавад:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

Сатри dataString;
//Стри numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//Стри *numfileMonth="1.txt" (андозаи (numfileMonth));
/////////////////////////////////////////////////////////// /////////////////

сабти ботил (ботил) {

rtc.begin();

// Барои таъин кардани вақт, сатрҳои заруриро хориҷ кунед
// rtc.setDOW(6); // Рӯзи ҳафта
// rtc.setTime(22, 04, 0); // Вақт, дар формати 24 соат.
// rtc.setDate(4, 5, 2019); // Сана, 29 октябри соли 2018

Serial.begin (2000000);
//////// Оғозсозии экран
tft.begin (0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(ҳақиқӣ);
/////////////////Баромади номҳо, лавозимоти таҷҳизот, номи ташкилот
tft.fillScreen(Сиёҳ);
tft.setTextColor(САФЕД);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("Тарҳиякунандагон ва сохтан");
tft.setCursor(30, 20);
tft.print (utf8rus ("Конструктор V.V."));
tft.setCursor(40, 40);
tft.print (utf8rus ("Turner I.I."));
таъхир (2000);

radio.begin(); // Оғози кор nRF24L01+
radio.setChannel(120); // Канали қабули маълумотро муайян кунед (аз 0 то 127)
radio.setDataRate (RF24_250KBPS); // Меъёри интиқоли маълумотро муайян кунед (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // Қувваи интиқолдиҳандаро муайян кунед (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe (1, 0xAABBCCDD11LL); // Барои гирифтани маълумот 1 қубурро бо идентификатори 1 интиқолдиҳанда 0xAABBCCDD11 кушоед
// Қубури 2-ро бо ID-и интиқолдиҳанда 2xAABBCCDD0 барои гирифтани маълумот кушоед
radio.startListening(); // Қабулкунандаро даргиронед, гӯш кардани қубурҳои кушодаро оғоз кунед
// radio.stopListening();
////////Баромади иттилооти хадамот
tft.fillScreen(Сиёҳ);
tft.setCursor(8, 0);
tft.setTextSize(1);
////////Оғоз кардани корти SD-ро оғоз кунед
Serial.println("Корти SD-и ибтидоӣ");
tft.println (“Корти SD ибтидоӣ”);
tft.setCursor(8, 10);
////////Оғоз кардани корт
агар (!SD.begin(SD_CS_PIN)) {
Serial.println("ибтидоӣ ноком шуд!");
tft.fillRect(8, 10, 85, 7, СУРХ);
tft.setTextColor(Сиёҳ);
tft.println("Ибтидоӣ ноком шуд!");
баргаштан;
}
tft.setTextColor(САФЕД);
Serial.println("интиализатсия анҷом дода шуд");
tft.println ("Интициализатсия анҷом ёфт");
таъхир (2000);
////////Хондани вақт ва сана ва таъини онҳо ба тағирёбандаҳо
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
////////Маҷбуран санаро бароварда кунед, то интизор нашавед, ки сана барои намоиш иваз карда шавад
tft.setCursor(180, 0); // ҷойгиркунии курсор
tft.fillRect(178, 0, 65, 7, GREY); // тоза кардани майдони баромади вақт
tft.setTextSize(1);
tft.print(rtc.getDateStr());
////////Номи объектҳои идоракуниро баровардан
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Винчестер I"));
////////Сохтани файли сабт ва баровардани натиҷаи кӯшиши эҷод
tft.setTextSize(1);
tft.setCursor(130, 10); // агар файли журнали 2.txt сохта шуда бошад, пас навиштан ба файл идома меёбад
агар (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} Каси {
myFile = SD.open (perv, FILE_WRITE); // агар файли 2.txt мавҷуд набошад, он сохта мешавад
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

ҳалқаи ботил (ботил) {
////////Тафтиши мавҷудияти дархост барои баровардани гузориш ба монитори порти COM
агар (Serial.available() > 0) {
агар (1 == Serial.read());
////////Ва агар "1" қабул карда шавад, пас баромад
Файли myFile = SD.open(perv);
// агар файл дастрас бошад, ба он нависед:
агар (Файли ман) {
дар ҳоле ки (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
дигар {
Serial.println("хатои кушодани .txt");
}
}
////////Вақти хониш
t = rtc.getTime();
tft.setTextColor(САФЕД);
////////Агар вақт иваз шуда бошад, хонишҳои нави соатро нишон диҳед
агар (time_sec_prev != t.sec) {
tft.setCursor(120, 0); // ҷойгиркунии курсор
tft.fillRect(118, 0, 50, 7, GREY); // тоза кардани майдони баромади вақт
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // хондани соат
time_sec_prev = t.sec;
}
////////Агар сана дигар шуда бошад, санаи навро нишон диҳед
агар (time_day_prev != t.date) {
tft.setCursor(180, 0); // ҷойгиркунии курсор
tft.fillRect(178, 0, 65, 7, GREY); // майдони намоиши санаро тоза кунед
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // нишон додани хондани сана
time_day_prev = t.date;
}
////////Агар қабули радио дастрас бошад, пас
агар (radio.available(&pipe)) {
////////санҷидани пур будани буфери қабул,
radio.read(&маълумот, sizeof(маълумот));
////////агар суроғаи зарурии интиқолдиҳанда дастрас бошад, пас
агар (қубур == 1) {
////////мо мунтазири пайдарпайии ҳамоҳангсозии сифрҳо ҳастем, то муайян шавад
//оғози блоки додаҳо
агар (маълумот == 0000) {
rc = 0;
} Каси {
rc++;
}
////////Сабти қиматҳои ҳисобкунак ва ҳисоб кардани онҳо дар 10 ва 100 ҳиссаи соат
агар (rc == 1) {
leb_1 = маълумот / 3600.0;
}

агар (rc == 2) {
leb_2 = маълумот / 3600.0;
}

агар (rc == 3) {
leb_3 = маълумот / 3600.0;
}

агар (rc == 4) {
leb_4 = маълумот / 3600.0;
}
}
}
r++;
k++; // танҳо ҳисобкунак
//////// Навсозии маълумот бо давраҳои муайян
агар ( r > = 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GRAYD);
Serial.println ("Лебедки 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;
}
////////Ҳар 10 дақиқа маълумотро ба сабти SD нависед.
агар ((т.дақ % 10 == 0) && (т.сек == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(Сиёҳ);
////////Сохтани сатр дар формати .csv
Сатри dataString = Сатр (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + ", " + (leb_1) + ", " + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
////////Ба файл нависед ва натиљаи раванди навиштанро бароред
myFile = SD.open (perv, FILE_WRITE); // агар ягон файл бо номи "2.txt" набошад, он сохта мешавад.
агар (Файли ман) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, САБЗ);
tft.println ("SD OK");
Serial.println ("SD OK");
таъхир (900); // таъхир, дар акси ҳол то гузаштани як сония 13 хониши якхеларо сабт мекунад
} Каси {
tft.fillRect(198, 8, 42, 10, СУРХ);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}Барномаи табдили аломат/* Рамзгузории шрифтҳои русиро аз UTF-8 то Windows-1251 */

Сатри utf8rus (Манбаи сатр)
{
int i,k;
Ҳадафи сатр;
unsigned char n;
char m [2] = { '0', ' ' };

k = source.length(); i = 0;

дар ҳоле ки (ман <к) {
n = сарчашма[i]; i++;

агар (n >= 0xC0) {
гузариш (н) {
парванда 0xD0: {
n = сарчашма[i]; i++;
агар (n == 0x81) {n = 0xA8; шикастан; }
агар (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
мешикананд;
}
парванда 0xD1: {
n = сарчашма[i]; i++;
агар (n == 0x91) {n = 0xB8; шикастан; }
агар (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
мешикананд;
}
}
}
m[0] = n; ҳадаф = ҳадаф + Сатр (м);
}
ҳадафи бозгашт;
}Барномаи рамзгузории рамзҳо барои баромади кириллӣ бо истифода аз китобхонаи Adafruit_GFX дар ҳамон ҷузвдон бо барномаи асосӣ ҷойгир карда шудааст. Шумо инчунин бояд файли glcdfont.c-ро дар Adafruit_GFX бо шрифти дигар иваз кунед. Ин аст, китобхона бо ивази зарурӣ. Маълумоти бештар дар бораи русикунониро дар интернет ба осонӣ пайдо кардан мумкин аст.
Хулоса, ман мегӯям, ки система ба интизориҳо мувофиқат кард, назорат кардани вақти кори таҷҳизот осонтар шуд. Хама чиз дар тахтаи нон чамъ карда шуда бошад хам, дар бораи кор ягон шикояте нест. Элементхои аввалин бештар аз шаш мох боз кор карда, аз зимистон беталаф баромаданд. Тарҳрезии охирин Он барои 9 агрегати идорашаванда аз 5 март кор мекунад ва вақти корӣ бо истифода аз он расман ба қайд гирифта мешавад.

Манбаъ: will.com

Илова Эзоҳ