د سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)

په دې سایټ کې پیل کړئ مخونه.
د سټارټر فعالولو په اړه د معلوماتو ترلاسه کولو لپاره ترټولو اسانه اختیار د PC817 آپټوکوپلر سره اختیار وګرځید. سکیماتیک ډیاګرامد سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)بورډونه درې ورته سرکټونه لري، هرڅه د ABS پلاستيکي بکسونو کې ځای پر ځای شوي، اندازه 100x100 mm. د optocouplers عکسد سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره) کله چې د سیمیک کنډکټر والوز سره د پیل کولو وسیلو سره وصل شي ، د دوی د لیک جریان د PC817 خلاصولو لپاره کافي دی او کاونټر به په غلط ډول حرکت وکړي. د داسې حالت څخه د وتلو لپاره یو بل د آپټوکوپلر LED سرکټ کې په لړۍ کې اضافه شوی او د عملیاتو نښې LED. د دې کولو لپاره ، جمپر J1 خلاص شوی او یو اضافي LED LED1 په کې سولډر شوی.
د ترلاسه کولو برخه جوړه شوې ده اړخ 1د سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)اړخ 2د سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)پرمختیایی بورډ د ARDUINO MEGA 2560 سره وصل دی. د دې لپاره، په پای کې دوه قطار نښلونکی کارول کیږي. یو سکرین د 240x400 ریزولوشن سره ، د مقاومت وړ ټچ سکرین او د تودوخې سینسر لري ، د معلوماتو ښودلو وسیلې په توګه کارول کیږي. HX8352B.د سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره) سربیره پردې ، په سکرین بورډ کې د ICSP سره نښلونکی لرې شوی او د مایکرو SD سلاټ نه کارول کیږي. حقیقت دا دی چې د "اصلي" SD ساکټ د SPI بس کې د شخړې له امله نشي کارول کیدی. د فلش کارت لپاره، یو جلا کارت لوستونکی کارول شوی و، چې پکې د 3,3V سټیبلائزر او بفر چپ شامل وو چې د درې محصول حالتونو 74LVS125A سره. دا هغه ځای دی چې ریک زما په تمه و. د درې ریاست بفر، مګر یا هم E01-ML01DP5 یا د کارت لوستونکي کار کاوه. د کتابتون په نظرونو کې، SdFat د نورو وسیلو سره د نه مطابقت په اړه خبرداری ولید. په TXS0108E کې د کچې کنورټر لرې شوی او د جمپرونو سره ځای په ځای شوی ، ځکه چې E01-ML01DP5 د 5V سیګنالونو ته زغم دی - دا مرسته نده کړې. د اوسیلوسکوپ په کارولو سره ، د MISO لاین کې د سیګنال ضایع کشف شو کله چې د کارت لوستونکی وصل شو. د دقیقې ازموینې په جریان کې، دا وموندل شوه چې د 4LVS74A د OE 125 چینلونو د فعالولو سیګنالونه په ساده ډول په یو عام تار کې سولډر شوي او د کوم دریم حالت خبرې نشي کیدی. د بفر چپ د 5V څخه تر 3.3V پورې د ابتدايي کچې کنورټر په توګه کارول شوی و چې د 3,3 KΩ مقاومت کونکو په کارولو سره د سیګنال لاینونو سره وصل شوي. د MISO کرښې پرته. د دې د محصول لاندې سویچ شاید د ځمکې کچې ته سیګنالونه جذب کړي. د دې په ټاکلو سره چې د MISO لاین فعال سیګنال پن 13 و ، دا له ټریک څخه جلا شوی اوسولډر شوید سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)د 9LVS74A CS وسیلې تر مینځ د ان پټ پن (125) او د پای ته رسیدو مقاومت غوره کړئ. اوس، که د حافظې کارت ته لاسرسی نه وي، د MISO بفر غیر فعال دی او د بل وسیله په عملیاتو کې مداخله نه کوي.د پرمختیایي بورډ ډیاګرامد سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)رسیدونکی په فعالیت کېد سیمه ایزو خودمختاره معلوماتو ترلاسه کولو سیسټم (دوامداره)DS3231 د ساعت سره نښلولو لپاره سافټویر I2C بس (TWI) کاروي.
د Arduino IDE پروګرام// مهم: Adafruit_TFTLCD کتابتون باید په ځانګړې توګه وي
// د TFT شیلډ یا د بریک آوټ بورډ لپاره ترتیب شوی.
// د تنظیم لپاره په Adafruit_TFTLCD.h کې اړونده تبصرې وګورئ.
// د اوپن-سمارټ ټیم او کاټلیکس ټیم لخوا
//[ایمیل خوندي شوی]
// پلورنځی: dx.com
// open-smart.aliexpress.com/store/1199788
// ډیمو فنکشن: ګرافیک ښکاره کړئ، کرکټرونه
//Arduino IDE: 1.6.5
// بورډ: Arduino UNO R3، Arduino Mega2560، Arduino Leonardo

// بورډ: اوپن-سمارټ 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;
د ایس ډی فایل فایل؛
زما فایل
# 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 تور نسخه د 5V / 3.3V بریښنا سویچ سره وکاروئ ،
// تاسو یوازې 3.3V ته سویچ ته اړتیا لرئ.
// د LCD لپاره د کنټرول پنونه هر ډیجیټل ته ټاکل کیدی شي یا
// انلاګ پنونه ... مګر موږ به د انلاګ پنونو څخه کار واخلو ځکه چې دا موږ ته اجازه راکوي
//—————————————-|
// TFT بریک آوټ - Arduino UNO / Mega2560 / OPEN-SMART UNO تور
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - RST
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// ځینې عام 16-bit رنګ ارزښتونو ته د انسان لوستلو وړ نومونه وټاکئ:
# تور 0x0000 تعریف کړئ
# BLUE 0x001F تعریف کړئ
# RED 0xF800 تعریف کړئ
# GREEN 0x07E0 تعریف کړئ
# CYAN 0x07FF تعریف کړئ
# میګینټا 0xF81F تعریف کړئ
#ژېړ 0xFFE0 تعریف کړئ
# سپینه 0xFFFF تعریف کړئ
# GRAY 0x8C51 تعریف کړئ
# GRAYD 0x39E7 تعریف کړئ

//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// که د شیلډ په کارولو سره، ټول کنټرول او د معلوماتو لینونه ثابت شوي، او
// یو ساده اعلامیه په اختیاري توګه کارول کیدی شي:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

String dataString;
//String numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//String *numfileMonth="1.txt" (سائز اوف (numfileMonth));
///////////////////////////////////////// //////////////

باطل تنظیم (باطل) {

rtc.begin();

// د وخت ټاکلو لپاره، اړین لینونه کم کړئ
// rtc.setDOW(6); // د اونۍ ورځ
// rtc.setTime(22, 04, 0); // وخت، د 24 ساعتونو بڼه کې.
// rtc.setDate(4, 5, 2019); // نیټه، د اکتوبر 29، 2018

سریال.بګین (2000000)؛
//////// د سکرین پیل کول
tft.begin(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(ریښتیا);
//////////////////د نومونو محصول، د تجهیزاتو لوازم، د سازمان نوم
tft.fillScreen(تور)؛
tft.setTextColor(WHITE);
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("ټرنر 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 ټرانسمیټر 1xAABBCCDD0 پیژندونکي سره 11 پایپ خلاص کړئ
// د معلوماتو ترلاسه کولو لپاره پایپ 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, RED);
tft.setTextColor(تور)؛
tft.println("ابتدايي ناکامه!");
بېرته
}
tft.setTextColor(WHITE);
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, GRAY); // د وخت د محصول ساحه پاکول
tft.setTextSize(1);
tft.print(rtc.getDateStr());
//////// د کنټرول شیانو نوم تولید کړئ
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I"));
//////// د لاګ فایل رامینځته کول او د رامینځته کولو هڅې پایله ورکول
tft.setTextSize(1);
tft.setCursor(130, 10); // که د log فایل 2.txt جوړ شي، نو د فایل لیکلو ته به دوام ورکړي
که (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} else {
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(WHITE);
//////// که وخت بدل شوی وي، نو د نوي ساعت لوستل ښکاره کړئ
که ( time_sec_prev != t.sec) {
tft.setCursor(120, 0); // د کرسر موقعیت ترتیب کول
tft.fillRect(118, 0, 50, 7, GRAY); // د وخت د محصول ساحه پاکول
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, GRAY); // د نیټې ښودلو ساحه روښانه کړئ
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // د نیټې لوستل ښودل
time_day_prev = t.date;
}
//////// که د راډیو استقبال شتون ولري، نو
که (radio.available(&pipe)) {
//////// ګوري چې ایا د ترلاسه کولو بفر ډک دی،
radio.read(&data, sizeof(data));
//////// که د اړتیا وړ لیږدونکي پته شتون ولري، نو
که (پایپ == 1) {
//////// د ټاکلو لپاره د صفرونو همغږي کولو ترتیب ته انتظار کول
// د ډیټا بلاک پیل
که (ډاټا == 0000) {
rc = 0 ;
} else {
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("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 ;
}
//////// په هرو 10 دقیقو کې په SD لاګ کې ډاټا ولیکئ.
که ((t.min % 10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(تور)؛
//////// په .csv بڼه کې تار جوړول
String dataString = String (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 ورته لوستل ثبتوي تر هغه چې یوه ثانیه تیریږي
} else {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}د کرکټر د تبادلې پروګرام/* روسي فونټونه له UTF-8 څخه وینډوز-1251 ته بیا کوډ کړئ */

String utf8rus (د تار سرچینه)
{
int i,k;
د تار هدف
نه لاسلیک شوی چار n;
char m[2] = {'0', '' };

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

پداسې حال کې چې (i < k) {
n = سرچینه[i]؛ i++;

که (n >= 0xC0) {
بدلول (n) {
قضیه 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; هدف = هدف + تار (m)؛
}
بیرته راستنیدو هدف
د Adafruit_GFX کتابتون په کارولو سره د سیریلیک محصول لپاره د کرکټر ټرانسکوډ کولو برنامه د اصلي برنامې سره ورته فولډر کې ځای په ځای شوی. تاسو اړتیا لرئ په Adafruit_GFX کې د glcdfont.c فایل د مختلف فونټ سره بدل کړئ. دا کتابتون د اړتیا وړ بدیل سره. د Russification په اړه نور معلومات په اسانۍ سره په انټرنیټ کې موندل کیدی شي.
د لنډیز لپاره، زه به ووایم چې سیسټم د تمې سره سم ژوند کاوه، د تجهیزاتو عملیاتي وخت څارنه اسانه شوې. که څه هم هرڅه په ډوډۍ بورډونو کې راټول شوي، د کار په اړه سمدستي شکایتونه شتون نلري. لومړني عناصر د شپږو میاشتو څخه زیات کار کوي او په ژمي کې ژوندي پاتې شوي. وروستي ډیزاین دا د مارچ له 9 راهیسې د 5 کنټرول شوي واحدونو لپاره روانه ده او عملیاتي وخت یې په رسمي ډول د دې په کارولو سره ثبت کیږي.

سرچینه: www.habr.com

Add a comment