Local Autonomous Data Acquisition System (inoenderera)

Tanga panzvimbo ino batanidzo.
Iyo yakanyanya nyore sarudzo yekudzoreredza ruzivo nezve kubatidza yekutanga yakave sarudzo nePC817 optocoupler. Dhaigiramu wedhiramuLocal Autonomous Data Acquisition System (inoenderera)Mabhodhi ane maseketi matatu akafanana, zvese zvinoiswa muABS mabhokisi epurasitiki, saizi 100x100 mm. Mufananidzo we optocouplersLocal Autonomous Data Acquisition System (inoenderera) Kana yakabatana nemidziyo yekutanga ine semiconductor mavharuvhu, yavo yekudonha ikozvino yakakwana kuvhura iyo PC817 uye iyo counter inokonzeresa nhema. Kubvisa mamiriro akadai imwezve inowedzerwa munhevedzano kudunhu reiyo optocoupler LED uye yekushanda inoratidza LED. Kuti uite izvi, jumper J1 inovhurwa uye imwezve LED LED1 inotengeswa mukati.
Chikamu chekugamuchira chinogadzirwa pa chikamu 1Local Autonomous Data Acquisition System (inoenderera)chikamu 2Local Autonomous Data Acquisition System (inoenderera)bhodhi rekuvandudza rakabatana neARDUINO MEGA 2560. Nokuda kweizvi, mutsara wemutsara weviri unoshandiswa pamagumo. Chidzitiro chine resolution ye240x400, ine resistive touchscreen uye tembiricha sensor, inoshandiswa sechinhu chinoratidza ruzivo. HX8352B.Local Autonomous Data Acquisition System (inoenderera) Uyezve, chinongedzo ku ICSP pane bhodhi bhodhi chinobviswa uye iyo micro SD slot haisi kushandiswa. Icho chokwadi ndechekuti "yekuzvarwa" SD socket haigone kushandiswa nekuda kwekupokana pabhazi reSPI. Kune iyo flash kadhi, yakaparadzana kadhi kuverenga yakashandiswa, iyo yaisanganisira 3,3V stabilizer uye buffer chip ine matatu akabuda anoti 74LVS125A. Apa ndipo painge pakandimirira rekeni. Iyo mitatu-nyika buffer, asi ingave iyo E01-ML01DP5 kana muverengi wekadhi akashanda. Mune raibhurari makomendi, SdFat yakaona yambiro nezvekusaenderana nemimwe michina. Iyo level converter paTXS0108E yakabviswa ikatsiviwa nemajumper, nekuti E01-ML01DP5 inoshivirira kune zvikwangwani zve5V - hazvina kubatsira. Kushandisa oscilloscope, kurasikirwa kwechiratidzo kwakaonekwa pamutsara weMISO apo muverengi wekadhi akabatanidzwa. Pakunyatsoongorora, zvakaonekwa kuti mapeji ekugonesa zviratidzo zveOE 4 migero ye74LVS125A yaingotengeswa kune imwe waya yakajairika uye paisagona kuva nekutaura kwechero nyika yechitatu. Iyo buffer chip yakashandiswa seyekutanga level inoshandura kubva ku5V kuenda ku3.3V uchishandisa 3,3 KΞ© resistors akabatana munhevedzano nemitsara yechiratidzo. Kunze kweiyo MISO mutsara. Yayo yekubuda pasi switch pamwe yakakwezva masaini kusvika pasi. Taona kuti chiratidzo chekugonesa cheMISO mutsara chaive pini 13, yakabvarurwa kubva panjanji uye.solderedLocal Autonomous Data Acquisition System (inoenderera)pakati pe9LVS74A CS mudziyo sarudza pini yekupinda (125) uye yekumisa resistor. Ikozvino, kana pasina mukana kune memori kadhi, iyo MISO buffer yakadzimwa uye haikanganise kushanda kwechimwe chishandiso.Development board diagramLocal Autonomous Data Acquisition System (inoenderera)Receiver iri kushandaLocal Autonomous Data Acquisition System (inoenderera)Iyo DS3231 inoshandisa software I2C bhazi (TWI) kubatanidza wachi.
Arduino IDE Chirongwa// ZVINOKOSHA: Adafruit_TFTLCD LIBRARY INOFANIRA KUNYANYA
// YAKgadzirirwa ZVINOITA TFT SHIELD KANA BHUKU REKURONGWA.
// ONA ZVINOKOSHA ZVINOKOSHA MUAdafruit_TFTLCD.h KUTI SETUP.
// ne Open-Smart Team uye Catalex Team
//[email inodzivirirwa]
//Chitoro: dx.com
// open-smart.aliexpress.com/store/1199788
//Demo Basa: Ratidza mifananidzo, mavara
//Arduino IDE: 1.6.5
// Bhodhi: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo

// Bhodhi: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

#include // Core graphics raibhurari
//#include // Hardware-chaiyo raibhurari
#include
MCUFRIEND_kbv tft;
#include "SdFat.h" // Shandisa raibhurari yeSdFat
SdFat SD;
SdFile faira;
Faira myFile;
#define SD_CS_PIN SS

#include // Batanidza raibhurari kuti ushande nebhazi reSPI
#include // Batanidza iyo faira yekuseta kubva kuRF24 raibhurari
#include // Batanidza raibhurari kuti ushande nenRF24L24+
RF24 redhiyo(47, 49);

#include

DS3231 rtc(27, 25);
Time t;

uint16_t r = 6000;
uint32_t k = 0;

data refu isina kusainwa;
float leb_1;
float leb_2;
float leb_3;
float leb_4;

uint8_t pipe;
int rc = 0;

uint8_t time_sec_prev;
uint8_t time_day_prev;

//******************************************** ****************/ /
// Kana ukashandisa OPEN-SMART TFT breakout board //
// Kukurudzira iwe kuwedzera 5V-3.3V level inoshandura dunhu.
// Ehe iwe unogona kushandisa OPEN-SMART UNO Nhema vhezheni ine 5V/3.3V simba switch,
// iwe unongoda chinja kune 3.3V.
// Mapini ekudzora eLCD anogona kupihwa chero dhijitari kana
// mapini eanalogi...asi isu tichashandisa mapini analogi sezvo izvi zvichititendera
//β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”-|
// TFT Kuputika - Arduino UNO / Mega2560 / Vhura-SMART UNO Nhema
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - RESET
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// Ipa mazita anoverengwa nevanhu kune mamwe akajairika 16-bit mavara mavara:
#define BLACK 0x0000
#define BLUE 0x001F
#tsanangura RED 0xF800
#define GREEN 0x07E0
#tsanangura CYAN 0x07FF
#tsanangura MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#tsanangura GRAY 0x8C51
#define GRAYD 0x39E7

// Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Kana ukashandisa nhovo, mitsara yose yekutonga uye data inogadziriswa, uye
// chiziviso chiri nyore chinogona kushandiswa:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

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

void setup (void) {

rtc.begin();

// Kuisa nguva, uncomment mitsara inodiwa
// rtc.setDOW(6); // Zuva revhiki
// rtc.setTime(22, 04, 0); // Nguva, mumaawa makumi maviri nemana fomati.
// rtc.setDate(4, 5, 2019); // Zuva, Gumiguru 29, 2018

Serial.begin (2000000);
//XNUMX :/ / skrini yekutanga
tft.tanga(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(chokwadi);
///////////////////Kubuda kwemazita, midziyo yemidziyo, zita resangano
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("VADZIDZISI & BUILD");
tft.setCursor(30, 20);
tft.print (utf8rus("Mugadziri V.V." ));
tft.setCursor(40, 40);
tft.print (utf8rus("Turner I.I." ));
kunonoka (2000);

radio.begin(); // Tanga basa nRF24L01+
radio.setChannel(120); // Taura chiteshi chekugamuchira data (kubva pa0 kusvika pa127)
radio.setDataRate(RF24_250KBPS); // Taura mwero wekutamisa data (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // Tsanangura simba rekutumira (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // Vhura pombi imwe ine identifier ye1 transmitter 1xAABBCCDD0, kugamuchira data
// Vhura pombi 2 ine transmitter ID 2xAABBCCDD0 kuti ugamuchire data
radio.startListening(); // Vhura mugamuchiri, tanga kuteerera kuvhura mapaipi
// radio.stopListening();
////////Kubuda kweruzivo rwebasa
tft.fillScreen(BLACK);
tft.setCursor(8, 0);
tft.setTextSize(1);
////////Tanga kutanga SD kadhi
Serial.println("Yekutanga SD kadhi");
tft.println("Yekutanga SD kadhi");
tft.setCursor(8, 10);
////////Kutanga kadhi
kana (!SD.tanga(SD_CS_PIN)) {
Serial.println("yekutanga yakundikana!");
tft.fillRect(8, 10, 85, 7, RED);
tft.setTextColor(BLACK);
tft.println("Yekutanga yakundikana!");
dzoka;
}
tft.setTextColor(WHITE);
Serial.println("kutanga kuitwa");
tft.println("Initialization yaitwa");
kunonoka (2000);
////////////////////////////////////////////////////
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
///////////////////////////////////////////////////////////////////////////////////
tft.setCursor(180, 0); // kuseta chinzvimbo checursor
tft.fillRect(178, 0, 65, 7, GRAY); // kuchenesa nzvimbo yekubuda nguva
tft.setTextSize(1);
tft.print(rtc.getDateStr());
////////Kuburitsa zita rekutonga zvinhu
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I");
//////// Kugadzira faira regi uye kuburitsa mhedzisiro yekuedza kwekugadzira
tft.setTextSize(1);
tft.setCursor(130, 10); // kana log file 2.txt yakagadzirwa, ipapo kunyora kune faira kuchaenderera mberi
kana (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} Mumwe {
myFile = SD.open(perv, FILE_WRITE); // kana faira 2.txt isipo, ichagadzirwa
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

void loop (void) {
////////Kutarisa kuvepo kwechikumbiro chekuburitsa logi kune COM port yekutarisa
kana (Serial.available()> 0) {
kana (1 == Serial.read());
////////Uye kana "1" yakagamuchirwa, ipapo inobuda
Faira myFile = SD.open(perv);
// kana faira iripo, nyora kwairi:
kana (myFile) {
apo (myFile.available ()) {
Serial.write(myFile.read());
}
myFile.close();
}
zvimwe {
Serial.println(" kukanganisa pakuvhura .txt");
}
}
////////Nguva yekuverenga
t = rtc.getTime();
tft.setTextColor(WHITE);
///////// Kana nguva yachinja, zvino ratidza kuverenga itsva wachi
kana (nguva_sec_prev != t.sec) {
tft.setCursor(120, 0); // kuseta chinzvimbo checursor
tft.fillRect(118, 0, 50, 7, GRAY); // kuchenesa nzvimbo yekubuda nguva
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // kuverenga wachi yekubuda
time_sec_prev = t.sec;
}
//////// Kana zuva rachinja, ratidza zuva idzva
kana (nguva_zuva_prev != t.date) {
tft.setCursor(180, 0); // kuseta chinzvimbo checursor
tft.fillRect(178, 0, 65, 7, GRAY); // yakajeka zuva rekuratidzira nzvimbo
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // kuratidza zuva kuverenga
time_day_prev = t.date;
}
//////// Kana redhiyo reception iripo, saka
kana (radio.available(&pipe)) {
///////// kutarisa kana buffer yekugamuchira yakazara,
radio.read(&data, sizeof(data));
//////// kana kero inodiwa yekutumira iripo, ipapo
kana (pombi == 1) {
//XNUMX/XNUMX
// kutanga kwe data block
kana (data == 0000) {
rc = 0;
} Mumwe {
rc++;
}
//10
kana (rc == 1) {
leb_1 = data / 3600.0;
}

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

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

kana (rc == 4) {
leb_4 = data / 3600.0;
}
}
}
r++;
k++; // chete counter
//////// Data update ine imwe periodicity
kana (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;
}
//////////////////////////////////////
kana ((t.min % 10 == 0) && (t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(BLACK);
////////Kugadzira tambo mu .csv format
String dataString = String (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + ", " + (leb_1) + ", " + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
//////////////////////////////////////////////////////
myFile = SD.open(perv, FILE_WRITE); // kana pasina faira inonzi "2.txt", ichagadzirwa.
kana (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, GREEN);
tft.println("SD OK");
Serial.println("SD OK");
kunonoka (900); // kunonoka, kana zvisina kudaro inorekodha 13 kuverenga kwakafanana kusvika sekondi yapfuura
} Mumwe {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}Chirongwa chekushandura mavara/* Dzokorora mafonti eRussia kubva kuUTF-8 kuenda kuWindows-1251 */

Tambo utf8rus(Tring source)
{
int i,k;
Tambo chinangwa;
unsigned char n;
char m[2] = {'0', '' };

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

nguva (i <k) {
n = tsime[i]; i++;

kana (n >= 0xC0) {
chinja (n) {
nyaya 0xD0: {
n = tsime[i]; i++;
kana (n == 0x81) {n = 0xA8; break; }
kana (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
kuputsa;
}
nyaya 0xD1: {
n = tsime[i]; i++;
kana (n == 0x91) {n = 0xB8; break; }
kana (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
kuputsa;
}
}
}
m[0] = n; chinangwa = chinangwa + Tambo (m);
}
return target;
}Chirongwa chekushandura mavara cheCyrillic chinobuda uchishandisa Adafruit_GFX raibhurari inoiswa mufolda imwe chete nechirongwa chikuru. Iwe zvakare unofanirwa kutsiva glcdfont.c faira muAdafruit_GFX neimwe font. zviri raibhurari ine chinodiwa chinotsiva. Rumwe ruzivo nezve Russification runogona kuwanikwa zviri nyore paInternet.
Kupfupisa, ini ndichataura kuti hurongwa hwakararama maererano nezvaitarisirwa, zvave nyore kutarisa nguva yekushanda yemidziyo. Kunyangwe zvese zvakaunganidzwa pamabhodhi echingwa, hapana zvichemo zvinokurumidza nezve basa. Zvinhu zvekutanga zvave kushanda kwemwedzi inopfuura mitanhatu uye zvakapona munguva yechando. Latest design Yange ichimhanyisa 9 controlled units kubva munaKurume 5th uye nguva yekushanda iri kunyoreswa zviri pamutemo ichishandisa.

Source: www.habr.com

Voeg