Տնային եղանակային կայան arduino անլար սենսորով: Տնային եղանակային կայան Arduino-ում և տվյալների ուղարկում «People's Monitoring»-ին: Անցում դեպի թարմացում

Մի անգամ շրջելով քաղաքով մեկ տեսա էլեկտրոնիկայի նոր խանութ, որը բացվել էր: Մտնելով այնտեղ՝ ես գտա մեծ քանակությամբ վահաններ Արդուինայի համար։ Ես ունեի Arduino Uno-ն տանը, և Arduino Nano-ի մոտ անմիջապես միտք առաջացավ խաղալ հեռավորության վրա ազդանշանի հաղորդիչների հետ: Ես որոշեցի գնել ամենաէժան 433 ՄՀց հաղորդիչը և ստացողը.

Ազդանշանի հաղորդիչ.


Ազդանշանի ընդունիչ.

Գրելով տվյալների փոխանցման ամենապարզ ուրվագիծը (օրինակ վերցված է այստեղից), պարզվեց, որ փոխանցող սարքերը կարող են բավականին հարմար լինել ամենապարզ տվյալները փոխանցելու համար, ինչպիսիք են ջերմաստիճանը, խոնավությունը:

Հաղորդիչն ունի հետևյալ բնութագրերը.
1. Մոդել՝ MX -FS - 03V
2. Գործողության շառավիղը (կախված է խոչընդոտող օբյեկտների առկայությունից) 20-200 մետր.
3. Աշխատանքային լարումը` 3.5 -12V
4. Մոդուլի չափսերը՝ 19 * 19 մմ
5. Ազդանշանի մոդուլյացիան՝ AM
6. Հաղորդիչի հզորությունը՝ 10մՎտ
7. Հաճախականությունը՝ 433 ՄՀց
8. Արտաքին ալեհավաքի պահանջվող երկարությունը՝ 25սմ
9. Հեշտ է միացնել (ընդամենը երեք լար). DATA; VCC; Երկիր.

Ընդունող մոդուլի բնութագրերը.
1. Աշխատանքային լարումը` DC 5V
2. Հոսանք՝ 4 մԱ
3. Աշխատանքային հաճախականությունը՝ 433,92 ՄՀց
4. Զգայունություն՝ - 105dB
5. Մոդուլի չափսերը՝ 30 * 14 * 7 մմ
6. Պահանջվում է արտաքին ալեհավաք՝ 32 սմ։

Համացանցի ընդարձակության մեջ ասվում է, որ տեղեկատվության փոխանցման տիրույթը 2 Կբ/վրկ արագությամբ կարող է հասնել մինչև 150 մ: Ինքս չեմ ստուգել, ​​բայց երկու սենյականոց բնակարանում ամեն տեղ ընդունում է։

Տնային եղանակային կայանի սարքավորում

Մի քանի փորձերից հետո ես որոշեցի միացնել ջերմաստիճանի, խոնավության սենսորը և հաղորդիչը Arduino Nano-ին:


DS18D20 ջերմաստիճանի ցուցիչը միացված է arduino-ին հետևյալ կերպ.

1) GND միկրոկոնտրոլերի մինուսին:
2) DQ՝ ձգվող ռեզիստորի միջոցով դեպի գետնին և Arduino-ի D2-ին ամրացնելը
3) Vdd-ից մինչև + 5V:

Հաղորդիչի մոդուլը MX-FS - 03V սնուցվում է 5 վոլտով, տվյալների ելքը (ADATA) միացված է D13 փին:

Arduino Uno-ին միացված է LCD էկրան և BMP085 բարոմետր:


Միացման դիագրամ arduino uno-ին

Ազդանշանի ընդունիչը միացված է D10 կապին:

BMP085 մոդուլը թվային մթնոլորտային ճնշման սենսոր է: Սենսորը թույլ է տալիս չափել ջերմաստիճանը, ճնշումը և բարձրությունը: Միացման ինտերֆեյս՝ I2C: Սենսորների մատակարարման լարումը 1.8-3.6 Վ

Մոդուլը միացված է Arduino-ին այնպես, ինչպես մյուս I2C սարքերը.

  • VCC - VCC (3.3V);
  • GND - GND;
  • SCL - անալոգային փին 5-ին;
  • SDA - անալոգային փին 4-ին:
  • Շատ ցածր գնով
  • Հզորություն և I/O 3-5V
  • Խոնավության որոշում 20-80% 5% ճշգրտությամբ
  • Ջերմաստիճանի որոշում 0-50 աստիճան: 2% ճշգրտությամբ
  • Նմուշառման արագությունը 1 Հց-ից ոչ ավելի է (ոչ ավելի, քան 1 վայրկյանը մեկ անգամ):
  • Չափերը 15,5 մմ x 12 մմ x 5,5 մմ
  • 4 փին տարածություն 0,1"

DHT-ն ունի 4 պին.

  1. Vcc (3-5V էլեկտրամատակարարում)
  2. Տվյալների դուրսբերում - Տվյալների ելք
  3. Օգտագործված չէ
  4. Գեներալ

Միանում է D8 Arduin-ին:

Տնային եղանակային կայանի ծրագրային մասը

Հաղորդիչի մոդուլը չափում և փոխանցում է ջերմաստիճանը յուրաքանչյուր 10 րոպեն մեկ:

Ստորև ներկայացնում ենք ծրագիրը.

/ * Էսքիզ տարբերակ 1.0 Ուղարկեք ջերմաստիճանը յուրաքանչյուր 10 րոպեում: * / #include #include #include #define ONE_WIRE_BUS 2 // Pin-ը Dallas OneWire oneWire սենսորը միացնելու համար (ONE_WIRE_BUS); Dallas Ջերմաստիճանի տվիչներ (& oneWire); ՍարքիՀասցե ներսումՋերմաչափ; void setup (անվավեր) (//Serial.begin(9600); vw_set_ptt_inverted (true); // Պահանջվում է DR3100 vw_setup (2000 թ.); // Սահմանել բուդ արագությունը (bps) sensors.begin (); if (! sensors .getAddress (ներսի Ջերմաչափ, 0)); printAddress (insideThermometer); sensors.setResolution (insideThermometer, 9);) void printTemperature (DeviceAddress deviceAddress) (float tempC = sensors.getTempC (deviceAddress); //Serial.print("Temp C: " ); //Serial.println(tempC); // Տվյալների ձևավորում int համարն ուղարկելու համար = tempC; char խորհրդանիշ = "c "; // Ծառայության նշան՝ որոշելու համար, որ սա սենսոր է String strMsg = "z "; strMsg + = խորհրդանիշ; strMsg + = ""; strMsg + = համար; strMsg + = ""; char msg; strMsg.toCharArray (msg, 255); vw_send ((uint8_t *) msg, strlen (msg)); vw_wait_tx (); / / Մենք սպասում ենք փոխանցման ավարտի հետաձգմանը (200);) void loop (void) (for (int j = 0; j)<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } }

Ստացող սարքը ստանում է տվյալները, չափում է ճնշումը և ջերմաստիճանը սենյակում և փոխանցում էկրանին:

#include #include LiquidCrystal LCD (12, 10, 5, 4, 3, 2); #ներառել dht11 սենսոր; #սահմանել DHT11PIN 8 #include #include BMP085 dps = BMP085 (); երկար Ջերմաստիճան = 0, Ճնշում = 0, Բարձրություն = 0; void setup () (Serial.begin (9600); vw_set_ptt_inverted (true); // Պահանջվում է DR3100 vw_setup (2000 թ.); // Սահմանեք ստացման արագությունը vw_rx_start (); // Սկսեք վերահսկել հեռարձակումը lcd.begin (16, 2): Wire.begin (); ուշացում (1000); dps.init (); //lcd.setCursor (14,0); //lcd.write (byte(0)); //lcd.home (); ) void loop () (uint8_t buf; // Բուֆեր հաղորդագրության համար uint8_t buflen = VW_MAX_MESSAGE_LEN; // Բուֆերի երկարությունը, եթե (vw_get_message (buf, & buflen)) // Եթե հաղորդագրություն է ստացվել (// Սկսել վերլուծել int i; // Եթե ​​հաղորդագրությունը մեզ հասցեագրված չէ, դուրս եկեք, եթե (buf! = "z") (վերադարձ;) char հրաման = buf; // Հրամանը գտնվում է ինդեքսում 2 // Թվային պարամետրը սկսվում է 4 ինդեքսից i = 4; int թիվ = 0; // Քանի որ փոխանցումը նիշ առ նիշ է, ապա դուք պետք է փոխարկեք նիշերի հավաքածուն թվի, մինչդեռ (buf [i]! = "") (թիվ * = 10; համար + = buf [i] - «0»; i ++;) dps.getPressure (& Ճնշում); dps.getAltitude (& Բարձրություն); dps.getTemperature (& Temperature); //Serial.print (հրաման); Serial.print (""); Serial.println (համար); lcd.print ("T ="); lcd.setCursor (2.0); lcd.print (համար); lcd.setCursor (5.0); lcd.print ("P ="); lcd.print (Ճնշում / 133.3); lcd.print («mmH»); lcd.setCursor (0,1); lcd.print ("T ="); lcd.print (Ջերմաստիճանը * 0.1); lcd.print ("H ="); lcd.print (ցուցիչ.խոնավություն); lcd.home (); // ուշացում (2000 թ.); int chk = sensor.read (DHT11PIN); անջատիչ (chk) (դեպքը DHTLIB_OK: //Serial.println("OK"); ընդմիջում; պատյան DHTLIB_ERROR_CHECKSUM. //Serial.println("Checksum error"); ընդմիջում; պատյան DHTLIB_ERROR_TIMEOUT: //Serial.println("Ժամանակի վերջ սխալ "); ընդմիջում; լռելյայն. //Serial.println("Անհայտ սխալ"); ընդմիջում;)))

P.S. Հետագայում նախատեսում եմ ավելացնել հետևյալը.
- խոնավության սենսոր դեպի հաղորդիչ, վերամշակեք տվյալների փոխանցման ալգորիթմը
- քամու արագության և ուղղության չափման սենսոր:
- ստացող սարքին ավելացրեք ևս մեկ էկրան:
- ստացողը և հաղորդիչը փոխանցեք առանձին միկրոկառավարիչին:

Ստորև կցում եմ կատարվածի լուսանկարը.

Ռադիոէլեմենտների ցանկ

Նշանակում Տեսակ Դոնոմինացիա Քանակ ՆշումԽանութԻմ նոթատետրը
Փոխանցող մաս:
Arduino տախտակ

Arduino Nano 3.0

1 Նոթատետրում
ջերմաստիճանի ցուցիչ

DS18B20

1 Նոթատետրում
Ռեզիստոր

220 օմ

1 Նոթատետրում
Հաղորդիչ մոդուլMX-FS-03V (433 ՄՀց)1 Նոթատետրում
Ռադիոյի ընդունման մաս:
Arduino տախտակ

Arduino Uno

1 Նոթատետրում
Հարմարվողական ռեզիստոր 1 Նոթատետրում
Ռեզիստոր

Վերջերս իմ գործընկերներից մեկը փոքրիկ գիտական ​​ցուցահանդես էր կազմակերպել։
Ուսուցիչս խնդրեց ինձ ներկայացնել էլեկտրոնիկայի նախագիծ քոլեջի ուսանողներին: Ես երկու օր ունեի մի հետաքրքիր և բավականաչափ պարզ բան մտածելու համար:



Քանի որ եղանակային պայմաններն այստեղ բավականին փոփոխական են, և ջերմաստիճանը տատանվում է 30-40 ° C-ի սահմաններում, ես որոշեցի տնային եղանակային կայան պատրաստել:

Որո՞նք են տնային եղանակային կայանի գործառույթները:
Arduino եղանակային կայան էկրանով - Սարք, որը հավաքում է եղանակի և շրջակա միջավայրի տվյալներ՝ օգտագործելով տարբեր սենսորներ:

Սովորաբար դրանք հետևյալ սենսորներն են.

  • քամին
  • խոնավություն
  • անձրեւ
  • ջերմաստիճանը
  • ճնշում
  • բարձունքները

Իմ նպատակն է իմ ձեռքերով դյուրակիր աշխատասեղանի եղանակային կայան պատրաստել:

Նա պետք է կարողանա որոշել հետևյալ պարամետրերը.

  • ջերմաստիճանը
  • խոնավություն
  • ճնշում
  • բարձրությունը

Քայլ 1. գնել անհրաժեշտ բաղադրիչները







  • DHT22, ջերմաստիճանի և խոնավության սենսոր:
  • BMP180 ճնշման սենսոր:
  • Զոդում
  • Մի շարք 40-ուղի միակցիչ

Սարքավորումներից ձեզ անհրաժեշտ կլինի.

  • Զոդման երկաթ
  • Քթի բարձիկներ տափակաբերան աքցան
  • Լարեր

Քայլ 2. DHT22 ջերմաստիճանի և խոնավության ցուցիչ







Ջերմաստիճանը չափելու համար օգտագործվում են տարբեր սենսորներ: Հայտնի են DHT22, DHT11, SHT1x

Ես կբացատրեմ, թե ինչով են դրանք տարբերվում միմյանցից, և ինչու եմ օգտագործել DHT22:

AM2302 սենսորը օգտագործում է թվային ազդանշան: Այս սենսորն օգտագործում է եզակի կոդավորման համակարգ և սենսորային տեխնոլոգիա, ուստի նրա տվյալները հուսալի են: Դրա սենսորային տարրը միացված է 8-բիթանոց մեկ չիպով համակարգչին:

Այս մոդելի յուրաքանչյուր սենսոր փոխհատուցվում է ջերմաստիճանի և ճշգրտությամբ, չափաբերման գործակիցը պահվում է մեկանգամյա ծրագրավորվող հիշողության մեջ (OTP): Ընթերցումներ կարդալիս սենսորը կհիշի գործակիցը հիշողությունից:

Փոքր չափը, ցածր էներգիայի սպառումը, փոխանցման մեծ հեռավորությունը (100 մ) դարձնում են AM2302-ը հարմար գրեթե բոլոր ծրագրերի համար, իսկ 4 ելքերը մեկ շարքում հեշտացնում են տեղադրումը:

Եկեք նայենք երեք սենսորային մոդելների դրական և բացասական կողմերին:

DHT11

Կողմ. Զոդման կարիք չկա, երեք մոդելներից ամենաէժանը, արագ կայուն ազդանշան, 20 մ-ից ավելի միջակայք, ուժեղ միջամտություն:
Դեմ: Գրադարան! Լուծման տարբերակներ չկան, ջերմաստիճանի չափման սխալ +/- 2 ° С, հարաբերական խոնավության մակարդակի չափման սխալ +/- 5%, չափված ջերմաստիճանների անբավարար միջակայք (0-50 ° С):
Կիրառումներ՝ այգեգործություն, գյուղատնտեսություն։

DHT22

Կողմերը՝ զոդման կարիք չկա, ցածր գին, հարթեցված կորեր, փոքր չափման սխալներ, մեծ չափման միջակայք, 20 մ-ից ավելի միջակայք, ուժեղ միջամտություն:
Դեմ. զգայունությունը կարող է ավելի բարձր լինել, ջերմաստիճանի փոփոխությունների դանդաղ հետևում, գրադարանի կարիք կա:
Կիրառումներ՝ բնապահպանական ուսումնասիրություններ.

SHT1x

Կողմերը՝ զոդման կարիք չկա, հարթ կորեր, չափումների փոքր սխալներ, արագ արձագանք, ցածր էներգիայի սպառում, ավտոմատ քուն, բարձր կայունություն և տվյալների հետևողականություն:
Դեմ. երկու թվային միջերես, խոնավության մակարդակը չափելու սխալ, չափված ջերմաստիճանի միջակայքը 0-50 ° C է, անհրաժեշտ է գրադարան:
Կիրառումներ. Գործողություն կոշտ միջավայրում և երկարատև տեղակայումներում: Բոլոր երեք սենսորները համեմատաբար էժան են:

Բաղադրյալ

  • Vcc - 5V կամ 3.3V
  • Գնդ - Գնդի հետ
  • Տվյալներ - Arduino-ի երկրորդ փին

Քայլ 3. BMP180 ճնշման սենսոր



BMP180-ը բարոմետրիկ ճնշման ցուցիչ է I2C միջերեսով:
Բարոմետրիկ ճնշման տվիչները չափում են շրջակա օդի բացարձակ արժեքը: Այս ցուցանիշը կախված է կոնկրետ եղանակային պայմաններից և բարձրությունից:

BMP180 մոդուլը ուներ 3.3V 662kOhm կարգավորիչ, որը ես իմ հիմարությունից ելնելով պատահաբար պայթեցի։ Ես ստիպված էի հոսանքի հետագծում անել անմիջապես չիպի վրա:

Կայունացուցիչի բացակայության պատճառով ես սահմանափակվում եմ էներգիայի աղբյուրի ընտրությամբ՝ 3,3 Վ-ից բարձր լարումը կկործանի սենսորը:
Այլ մոդելները կարող են չունենալ կայունացուցիչ, համոզվեք, որ ստուգեք դրա համար:

Սենսորի և I2C ավտոբուսի միացման դիագրամ Arduino-ով (nano կամ uno)

  • SDA - A4
  • SCL - A5
  • VCC - 3.3V
  • ԳՆԴ – ԳՆԴ

Եկեք մի փոքր խոսենք ճնշման և ջերմաստիճանի և բարձրության հետ դրա փոխհարաբերությունների մասին:

Մթնոլորտային ճնշումը ցանկացած կետում հաստատուն չէ: Երկրի պտույտի, Երկրի առանցքի թեքության բարդ փոխազդեցությունները հանգեցնում են բարձր և ցածր ճնշման բազմաթիվ տարածքների առաջացմանը, ինչը, իր հերթին, հանգեցնում է եղանակային պայմանների ամենօրյա փոփոխության: Դիտարկելով ճնշման փոփոխությունը՝ կարող եք եղանակի կարճաժամկետ կանխատեսում կատարել։

Օրինակ, ճնշման անկումը սովորաբար նշանակում է անձրեւոտ եղանակ կամ մոտալուտ ամպրոպ (մոտենում է ցածր ճնշման տարածքին, ցիկլոնին): Ճնշման բարձրացումը սովորաբար նշանակում է չոր, պարզ եղանակ (ձեր վերևում կա բարձր ճնշման տարածք, անտիցիկլոն):

Մթնոլորտային ճնշումը նույնպես փոխվում է բարձրության հետ։ Էվերեստի բազային ճամբարում բացարձակ ճնշումը (ծովի մակարդակից 5400 մ) ավելի ցածր է, քան Դելիի բացարձակ ճնշումը (ծովի մակարդակից 216 մ):

Քանի որ բացարձակ ճնշման ցուցանիշները փոխվում են յուրաքանչյուր վայրում, մենք կանդրադառնանք հարաբերական ճնշմանը կամ ծովի մակարդակի ճնշմանը:

Բարձրության չափում

Միջին ճնշումը ծովի մակարդակում 1013,25 ԳՊա է (կամ միլիբար): Եթե ​​դուք բարձրանում եք մթնոլորտից, ապա այս արժեքը իջնում ​​է զրոյի: Այս անկման կորը միանգամայն հասկանալի է, այնպես որ կարող եք ինքներդ հաշվարկել բարձրությունը՝ օգտագործելով հետևյալ հավասարումը. alti = 44330 *

Եթե ​​ծովի մակարդակում 1013,25 ԳՊա ճնշումը վերցնում եք որպես p0, ապա հավասարման լուծումը ձեր ընթացիկ բարձրությունն է:

Նախազգուշական միջոցներ

Հիշեք, որ BMP180 սենսորին անհրաժեշտ է մուտք գործել շրջակա միջավայր, որպեսզի կարողանա կարդալ օդի ճնշումը, մի դրեք սենսորը փակ պատյանում: Մի փոքր օդափոխման անցք պետք է բավարար լինի: Բայց մի թողեք այն շատ բաց, քամին կթուլացնի ճնշման և բարձրության ցուցանիշները: Հաշվի առեք քամու պաշտպանությունը:

Պաշտպանեք ջերմությունից: Ճնշումը չափելու համար անհրաժեշտ է ջերմաստիճանի ճշգրիտ ցուցումներ: Փորձեք պաշտպանել սենսորը ջերմաստիճանի ծայրահեղություններից և մի թողեք այն բարձր ջերմաստիճանի աղբյուրների մոտ:

Պաշտպանեք խոնավությունից։ BMP180 սենսորը զգայուն է խոնավության մակարդակի նկատմամբ, փորձեք կանխել ջրի հնարավոր ներթափանցումը սենսորի վրա:

Մի կուրացրեք սենսորը: Անակնկալ էր սենսորի սիլիկոնի զգայունությունը լույսի նկատմամբ, որը կարող է մտնել այն չիպի ծածկույթի անցքով: Առավել ճշգրիտ չափումների համար փորձեք պաշտպանել սենսորը շրջակա լույսից:

Քայլ 4. սարքի հավաքում







Մի շարք միակցիչների տեղադրում Arduino Nano-ի համար: Հիմնականում մենք կտրեցինք դրանք ճիշտ չափերով և մի փոքր ավազով քսեցինք, որպեսզի նրանք նման լինեն: Այնուհետև մենք դրանք զոդում ենք: Դրանից հետո մենք տեղադրում ենք մի շարք միակցիչներ DHT22 սենսորի համար:

Տեղադրեք 10kΩ ռեզիստոր՝ տվյալների պինդից դեպի գետնին (Gnd): Մենք զոդում ենք ամեն ինչ:
Այնուհետև, նույն կերպ, մենք տեղադրում ենք BMP180 սենսորի համար մեկ տող միակցիչ, սնուցումը 3.3 Վ է: Մենք ամեն ինչ միացնում ենք I2C ավտոբուսին:

Ի վերջո, մենք միացնում ենք LCD էկրանը նույն I2C ավտոբուսին, ինչ BMP180 սենսորը:
(Պլանավորում եմ RTC մոդուլը (իրական ժամանակի ժամացույցը) միացնել չորրորդ միակցիչին ավելի ուշ, որպեսզի սարքը ցույց տա նաեւ ժամը)։

Քայլ 5. կոդավորում




Բեռնել գրադարանները

Arduino-ում գրադարաններ տեղադրելու համար հետևեք հղմանը

#ներառում
#include #include #include "DHT.h" #include

SFE_BMP180 ճնշում;

#սահմանել ALTITUDE 20.56 #սահմանել I2C_ADDR 0x27 //<<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7

#define DHTPIN 2 // ինչ թվային փին ենք մենք միացված

// Մեկնաբանություններից հանեք այն տեսակը, որը դուք օգտագործում եք: // # սահմանել DHTTYPE DHT11 // DHT 11 #սահմանել DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 DHT dht (DHTPIN, DHTTYPE, Rw2Crystal_DR), LiquidCrystal_Pin Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);float t1, t2;

void setup () (Serial.begin (9600); lcd.begin (16,2); //<<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Weather Station"); delay(5000); dht.begin(); pressure.begin(); } void loop() { char status; double T,P,p0,a; status = pressure.startTemperature(); if (status != 0) { delay(status);

կարգավիճակ = ճնշում.getTemperature (T); if (status! = 0) (Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Baro Temperature:"); lcd.setCursor (0,1 lcd.print (T, 2); lcd.print («deg C»); t1 = T; ուշացում (3000);

կարգավիճակ = ճնշում. սկիզբՃնշում (3); եթե (կարգավիճակը = 0) (// Սպասեք չափման ավարտին. հետաձգում (կարգավիճակ);

կարգավիճակ = ճնշում.getPressure (P, T); if (կարգավիճակ! = 0) (lcd.clear (); lcd.setCursor (0,0); lcd.print ("abslt ճնշում:"); lcd.setCursor (0,1); lcd.print (P, 2): lcd.print («mb»); ուշացում (3000);

p0 = ճնշում.կնի մակարդակ (P, ALTITUDE); // մենք գտնվում ենք 1655 մետրի վրա (Բոլդեր, CO)

a = ճնշում.բարձրություն (P, p0); lcd.clear (); lcd.setCursor (0,0); lcd.print («Բարձրություն:»); lcd.setCursor (0,1); lcd.print (a, 0); lcd.print («մետր»); ուշացում (3000); )))) float h = dht.readԽոնավություն (); // Կարդացեք ջերմաստիճանը որպես Ցելսիուս (կանխադրված) float t = dht.readTemperature (); t2 = t; lcd.clear (); lcd.setCursor (0,0); // գնալ 2-րդ տող lcd.print-ի սկիզբ («Խոնավություն:»); lcd.setCursor (0,1), lcd.print (h); lcd.print («%»); ուշացում (3000); lcd.clear (); lcd.setCursor (0,0); // գնալ 2-րդ տող lcd.print-ի սկիզբ («DHT Tempurature:»); lcd.setCursor (0,1); lcd.print (t); lcd.print («deg C»); ուշացում (3000); lcd.clear (); lcd.setCursor (0,0); // գնալ 2-րդ տող lcd.print-ի սկիզբ ("Mean Tempurature:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print («deg C»); ուշացում (3000); )

Ես օգտագործել եմ Arduino 1.6.5 տարբերակը, կոդը հենց դրա համար է հարմար, ավելի ուշերի համար էլ կարող է տեղավորվել։ Եթե ​​կոդը ինչ-ինչ պատճառներով չի համապատասխանում, օգտագործեք 1.6.5 տարբերակը որպես հիմնական:

Եղանակը դիտելը շատ հուզիչ է։ Ես որոշեցի կառուցել իմ եղանակային կայանը՝ հիմնվելով հանրաճանաչի վրա .

Եղանակային կայանի նախատիպն ունի հետևյալ տեսքը.

Իմ եղանակային կայանի գործառույթները.

  • սենյակի և դրսի ջերմաստիճանի չափում և ցուցադրում;
  • ընթացիկ ժամանակի ցուցադրում (ժամեր և րոպեներ);
  • լուսնի և լուսնային օրվա ընթացիկ փուլերի ցուցադրում;
  • չափման արդյունքների փոխանցում համակարգչին սերիական կապի միջոցով.
  • չափումների արդյունքների փոխանցում արձանագրության միջոցով MQTTօգտագործելով հավելվածը համակարգչում:


Hex
- ֆայլ
որոնվածը համար (տարբերակ՝ 9 մայիսի 2018թ.) - .
Ինչպես թարթել վեցանկյուն- ֆայլ դեպի տախտակ ԱրդուինոԵս նկարագրել եմ.

Arduino Nano 3.0 միկրոկառավարիչ

Իմ օդերեւութաբանական կայանի սիրտը միկրոկոնտրոլեր է eBay):

Սենսորների ցուցումը և հարցումը վերահսկելու համար ես օգտագործում եմ ժմչփ 1 Արդուինոառաջացնելով ընդհատումներ 200 Հց հաճախականությամբ (ժամանակահատվածը՝ 5 ms):

Ցուցանիշ

Սենսորների չափված ընթերցումները և ընթացիկ ժամանակը ցուցադրելու համար ես միացա Արդուինոքառանիշ LED ցուցիչ Foryard FYQ-5643BHընդհանուր անոդներով (բոլոր արտանետումների նույն հատվածների անոդները համակցված են):
Ցուցանիշը պարունակում է չորս յոթ հատված նիշ և երկու բաժանող (ժամյա) կետ.

Ցուցանիշի անոդները միացված են տերմինալներին ընթացիկ սահմանափակող ռեզիստորների միջոցով Արդուինո:

արտանետում 1 2 3 4
ելքը A3 A2 D3 D9

Սեգմենտային կաթոդներ, որոնք կապված են կապում Արդուինո:

հատված ա բ գ դ ե զ է էջ
ելքը D7 D12 D4 D5 D6 D11 D8 D13

Ցուցանիշի հատվածը լուսավորվում է, եթե համապատասխան արտանետման անոդն ունի բարձր պոտենցիալ (1), իսկ կաթոդի վրա ցածր պոտենցիալ (0):

Ցուցանիշի վերաբերյալ տեղեկատվությունը ցուցադրելու համար ես օգտագործում եմ դինամիկ ցուցում. միաժամանակ ակտիվ է միայն մեկ թվանշան: Ակտիվ լիցքաթափումները հերթափոխվում են 200 Հց հաճախականությամբ (ցուցադրման ժամկետը 5 ms): Միաժամանակ, հատվածների թարթումը աչքի համար աննկատ է։

Ջերմաստիճանի ցուցիչ DS18x20

Ջերմաստիճանի հեռավոր չափման հնարավորության համար ես միացրեցի սենսոր , որը չափում է արտաքին ջերմաստիճանը լայն տիրույթում: Սենսորը միացված է ավտոբուսին 1-Մետաղարև ունի երեք ելք՝ էլեկտրամատակարարում ( VCC), տվյալներ ( DAT), Երկիր ( GND):

սենսորային կապար VCC DAT GND
ելքը Արդուինո 5 Վ Ա1 GND

Եզրակացությունների միջև VCCև DATԵս ներառել եմ 4.7k քաշող դիմադրություն:

Ցելսիուսի և Ֆարենհեյթի միջև փոխակերպելու համար կարող եք օգտագործել հետևյալ ափսեը.

Ես սենսորը դրեցի տան պատուհանից դուրս՝ գնդիկավոր գրիչից պլաստիկ պատյանում.

\

Պրոֆեսիոնալ եղանակային կայաններում Stevenson էկրանն օգտագործվում է ջերմաչափը արևի ուղիղ ճառագայթներից պաշտպանելու և օդի շրջանառությունն ապահովելու համար: Սթիվենսոն էկրան):

BMP280 ճնշման և ջերմաստիճանի ցուցիչ

Մթնոլորտային ճնշումը չափելու համար ավանդաբար օգտագործվում են սնդիկի բարոմետրերը և աներոիդային բարոմետրերը:

Վ սնդիկի բարոմետրՄթնոլորտային ճնշումը հավասարակշռվում է սնդիկի սյունակի կշռով, որի բարձրությունն օգտագործվում է ճնշումը չափելու համար.

Վ աներոիդ բարոմետրՕգտագործվում է տուփի սեղմում և ընդլայնում մթնոլորտային ճնշման ազդեցության տակ.

Իմ տան օդերևութաբանական կայանի մթնոլորտային ճնշումը և սենյակի ջերմաստիճանը չափելու համար ես օգտագործում եմ սենսոր - փոքր SMD- 2 x 2,5 մմ սենսոր՝ հիմնված պիեզորեզիստիվ տեխնոլոգիայի վրա.

Սենսորային շարֆ՝ գնված շուկայում eBay:

Սենսորը միացված է ավտոբուսին I2C(տվյալների կոնտակտ - SDA / SDI, համաժամացման փին - SCL / SCK):

սենսորային կապար VCC GND SDI SCK
ելքը Արդուինո 3V3 GND A4 A5

Ադաֆրուտ- ֆայլեր Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Մթնոլորտային ճնշման միավորներ

Սենսոր գործառույթի միջոցով կարդալ Ճնշումտալիս է մթնոլորտային ճնշման արժեքը պասկալներով: Մթնոլորտային ճնշման չափման հիմնական միավորն է հեկտոպասկալ(hPa) (1 hPa = 100 Pa), որը նման է արտահամակարգային միավորին»: միլիբար«(mbar) (1 mbar = 100Pa = 1hPa): Սովորաբար օգտագործվող ոչ համակարգային ճնշման միավորի միջև փոխարկելու համար» միլիմետր սնդիկ«(mmHg) և հեկտոպասկալներ, օգտագործվում են հետևյալ հարաբերակցությունները.
1 hPa = 0,75006 մմ Hg: Արվեստ. ≈ 3/4 մմ Hg; 1 մմ ս.ս = 1,3332 hPa ≈ 4/3 hPa:

Մթնոլորտային ճնշման կախվածությունը բարձրությունից

Մթնոլորտային ճնշումը կարող է ներկայացվել ինչպես բացարձակ, այնպես էլ հարաբերական ձևերով։
Բացարձակ ճնշում QFE(անգլ. բացարձակ ճնշում) Արդյո՞ք ընթացիկ մթնոլորտային ճնշումը, բացառելով ծովի մակարդակից բարձր ուղղումը:
Մթնոլորտային ճնշումը նվազում է մոտ 1 hPa-ով բարձրության 1 մ աճով.

Բարոմետրիկ բանաձևը թույլ է տալիս որոշել բարոմետրի ընթերցումների ուղղումը հարաբերական ճնշումը ստանալու համար (mmHg):
$ \ Delta P = 760 \ cdot (1 - (1 \ ավելի (10 ^ ((0.0081350 \ cdot H) \ ավելի (T + 0.00178308 \ cdot H))))) $,
որտեղ $ T $-ը օդի միջին ջերմաստիճանն է Ռանկինի սանդղակով, ° Ռա, $ H $ - բարձրություն, ոտքեր:
Ցելսիուսի փոխակերպումը Ռանկինի.
$ ^ (\ circ) Ra = (^ (\ circ) C \ cdot 1,8) + 491,67 $
Բարոմետրիկ բանաձևը օգտագործվում է բարոմետրիկ հարթեցման համար՝ բարձրությունները որոշելու համար (0,1 - 0,5%) սխալմամբ։ Բանաձևը հաշվի չի առնում օդի խոնավությունը և ձգողականության արագացման փոփոխությունը բարձրության հետ։ Բարձրության փոքր տարբերությունների դեպքում այս էքսպոնենցիալ կախվածությունը կարող է մոտավորվել բավարար ճշգրտությամբ գծային կախվածությամբ:
Հարաբերական ճնշում QNH(անգլ. հարաբերական ճնշում, Q-կոդ ծովային բարձրություն) Արդյո՞ք մթնոլորտային ճնշումը՝ հաշվի առնելով ծովի միջին մակարդակի ուղղումը (eng. Ծովի միջին մակարդակ, MSL) (համար ԻՍԱև ջերմաստիճանը 15 աստիճան Ցելսիուս), և ի սկզբանե սահմանվում է՝ հաշվի առնելով այն բարձրությունը, որում գտնվում է եղանակային կայանը։ Այն կարելի է գտնել օդերևութաբանական ծառայության տվյալներից, հասարակական վայրերում տրամաչափված գործիքների ընթերցումներից, օդանավակայանից (հաշվետվություններից ՄԵՏԱՐ), համացանցից։
Օրինակ, մոտակա Գոմելի օդանավակայանի համար ( UMGG) Ես կարող եմ տեսնել իրական եղանակի ամփոփագիրը ՄԵՏԱՐ ru.allmetsat.com/metar-taf/russia.php?icao=UMGG հասցեով:
UMGG 191800Z 16003MPS CAVOK M06 / M15 Q1014 R28 / CLRD // NOSIG ,
որտեղ Q1014- ճնշում QNHաերոդրոմում այն ​​հավասար է 1014 հՊա։
Ամփոփ պատմություն ՄԵՏԱՐհասանելի է aviationwxchartsarchive.com/product/metar կայքում:
Նորմալ օդի հարաբերական ճնշման համար QNHճնշումը վերցված է 760 մմ Hg: Արվեստ. կամ 1013,25 հՊա (0 ° C ջերմաստիճանում, հյուսիսային կամ հարավային կիսագնդում 45 ° լայնության վրա):
Ես ճնշում եմ սահմանել աներոիդ բարոմետրի համար QNHօգտագործելով զգայունության ճշգրտման պտուտակ.

Եղանակի տեսություն

Ճնշման փոփոխությունների վերլուծությունը թույլ է տալիս կառուցել եղանակի կանխատեսում, և դրա ճշգրտությունը որքան բարձր է, այնքան կտրուկ փոխվում է ճնշումը: Օրինակ, հին ծովագնացների հիմնական կանոնն ասում է, որ ճնշման անկումը 10 հՊա (7,5 մմ ս.ս.) 8 ժամվա ընթացքում ցույց է տալիս, որ ուժեղ քամի է մոտենում:

Որտեղի՞ց է քամին գալիս: Օդը հոսում է դեպի ցածր ճնշման տարածքի կենտրոն, քամի- օդի հորիզոնական շարժում բարձր ճնշման տարածքներից դեպի ցածր ճնշման տարածքներ (մթնոլորտային բարձր ճնշումը սեղմում է օդային զանգվածները ցածր մթնոլորտային ճնշման տարածք): Եթե ​​ճնշումը շատ ցածր է, քամին կարող է ուժի հասնել փոթորիկներ... Ընդ որում, տարածքում կրճատվել էճնշում (ճնշման դեպրեսիա կամ ցիկլոն), տաք օդը բարձրանում է և ձևավորում ամպեր, որոնք հաճախ բերում են անձրեւկամ ձյուն.

Օդերեւութաբանության մեջ քամու ուղղության համար վերցվում է այն ուղղությունը, որից քամին փչում է.

Այս ուղղությունը կրճատվում է մինչև ութ կետ:

Եղանակը կանխատեսելու համար հաճախ օգտագործվում է ալգորիթմ՝ հիմնվելով մթնոլորտային ճնշման և քամու ուղղության վրա Զամբրետի.

Խոնավության սենսոր

Օդի հարաբերական խոնավությունը որոշելու համար ես օգտագործում եմ մոդուլը DHT11(գնվել է շուկայում eBay):

Խոնավության սենսոր DHT11ունի երեք ելք՝ հզորություն ( + ), տվյալներ ( դուրս), Երկիր ( - ):

սենսորային կապար + դուրս -
ելքը Արդուինո 5 Վ D10 GND

Սենսորի հետ աշխատելու համար ես օգտագործում եմ գրադարանը Ադաֆրուտ- ֆայլեր ԴՀՏ.հ, DHT.cpp.

Օդի խոնավությունը բնութագրում է օդում պարունակվող ջրի գոլորշիների քանակը։ Հարաբերական խոնավությունցույց է տալիս օդի խոնավության տոկոսը ընթացիկ ջերմաստիճանում հնարավոր առավելագույն քանակի նկատմամբ: Հարաբերական խոնավությունը չափելու համար օգտագործեք :

Մարդու համար օդի խոնավության օպտիմալ միջակայքը 40 ... 60% է:

Իրական ժամանակի ժամացույց

Որպես իրական ժամանակի ժամացույց, ես օգտագործեցի մոդուլը RTC DS1302(շուկայում ձեռք է բերվել ժամացույցով շարֆ eBay):

Մոդուլ DS1302միանում է ավտոբուսին 3-Wire... Այս մոդուլը հետ համատեղ օգտագործելու համար Արդուինոմշակվել է գրադարան iarduino_RTC (-ից iarduino.ru).

Տախտակ մոդուլով DS1302ունի հինգ կապում, որոնք ես միացրել եմ տախտակի կապումներին Արդուինո Նանո:

ելքը RTC VCC GND RST CLK DAT
ելքը Արդուինո 5 Վ GND D2 D1 D0

Ժամացույցի ճիշտ ցուցումները պահպանելու համար, երբ հոսանքն անջատված է, ես մարտկոցը տեղադրեցի տախտակի բնիկի մեջ CR2032.

Իմ ժամացույցի մոդուլի ճշգրտությունը պարզվեց, որ շատ բարձր չէ. չորս օրվա ընթացքում ժամացույցը շտապում է մոտ մեկ րոպե: Հետևաբար, ես րոպեները վերակայում եմ «զրոյի», իսկ ժամը՝ մոտակա մեկին՝ պահելով Arduino-ի A0 փին միացված կոճակը օդերևութաբանական կայանի հզորությունը միացնելուց հետո: Նախաստորագրումից հետո A0 փինն օգտագործվում է սերիական կապով տվյալները փոխանցելու համար:

Տվյալների փոխանցում համակարգչին և աշխատել MQTT արձանագրության միջոցով

Տվյալները սերիական կապի միջոցով փոխանցելու համար Արդուինոկապում է USB-UARTփոխարկիչ:

Արդյունք Արդուինոօգտագործվում է տվյալների ձևաչափով փոխանցելու համար 8N1(8 տվյալների բիթ, առանց հավասարության, 1 կանգառի բիթ) 9600 բիթ/վրկ արագությամբ: Տվյալները փոխանցվում են փաթեթներով, իսկ փաթեթի երկարությունը 4 նիշ է: Տվյալների փոխանցումն իրականացվում է « bit-bang«ռեժիմ, առանց սարքաշարի սերիական պորտ օգտագործելու Արդուինո.

Փոխանցված տվյալների ձևաչափը.

Պարամետր 1-ին բայթ 2-րդ բայթ 3-րդ բայթ 4-րդ բայթ
արտաքին ջերմաստիճանը o տարածություն կամ մինուս տասնյակ աստիճաններ կամ տարածություն աստիճանների միավորներ
սենյակային ջերմաստիճան ես տարածություն կամ մինուս տասնյակ աստիճաններ կամ տարածություն աստիճանների միավորներ
Մթնոլորտային ճնշում էջ հարյուրավոր մմ p. Արվեստ. տասնյակ մմ Hg միավորներ մմ Hg հետ։
հարաբերական խոնավություն հ տարածություն տասնյակ տոկոս կամ տարածություն տոկոս միավորներ
ընթացիկ ժամանակ տասնյակ ժամեր ժամերի միավոր տասնյակ րոպեներ րոպեների միավոր

MQTT

Գոլանգդիմում - արձանագրության հաճախորդ MQTTօդերևութաբանական կայանից ստացված տեղեկատվության ուղարկում սերվերին ( MQTT- բրոքեր) :

Ծառայություն թույլ է տալիս ստեղծել հաշիվ անվճար սակագնային պլանով » «(սահմանները՝ 10 միացում, 10 Կբ/վ):

Օդերեւութաբանական կայանի ընթերցումները վերահսկելու համար կարող եք օգտագործել Android- դիմում :

Սնուցում

Ես օգտագործում եմ հին բջջային հեռախոսի լիցքավորիչը օդերևութաբանական կայանի սնուցման համար: Motorola, մատակարարելով 5 Վ լարում մինչև 0,55 Ա հոսանքով և միացված կոնտակտներին։ 5 Վ(+) և GND (-):

Էլեկտրամատակարարման համար կարող եք օգտագործել նաև 9 Վ լարման մարտկոց՝ միացված կոնտակտներին VIN(+) և GND (-).

Եղանակային կայանի շահագործում

Գործարկման ժամանակ սենսորները սկզբնավորվում և ստուգվում են:

Սենսորի բացակայության դեպքում DS18x20«E1» սխալը տրվում է սենսորի բացակայության դեպքում - սխալ «E3»:

Այնուհետև սկսվում է օդերևութաբանական կայանի աշխատանքային ցիկլը.

  • արտաքին ջերմաստիճանի չափում և ցուցադրում;
  • սենյակային ջերմաստիճանի չափում և ցուցադրում;
  • մթնոլորտային ճնշման չափում և ցուցադրում և դրա միտումը.
  • օդի հարաբերական խոնավության չափում և ցուցադրում;
  • ընթացիկ ժամանակի ցուցադրում;
  • լուսնի և լուսնային օրվա փուլի ցուցադրում:


Իմ եղանակային կայանի տեսանյութը հասանելի է իմ վրա -ալիք՝ https://youtu.be/vVLbirO-FVU

Ջերմաստիճանի ցուցադրում

Ջերմաստիճանը չափելիս ցուցադրվում են ջերմաստիճանի երկու նիշ, իսկ բացասական ջերմաստիճանի դեպքում՝ մինուս նշանը (աստիճանի խորհրդանիշով ծայրահեղ աջ թվանշանում);
արտաքին ջերմաստիճանի համար աստիճանի նշանը ցուցադրվում է վերևում.


սենյակային ջերմաստիճանի համար - ներքևում.

Ճնշման ցուցադրում

Ճնշումը չափելիս ճնշման երեք նիշը ցուցադրվում է մմ Hg-ով (նշանով « Պ«ամենաաջ թվանշանով):

Եթե ​​ճնշումը կտրուկ իջնի, ապա « Պ«ամենաաջ թվանշանը ցույց է տալիս խորհրդանիշը» Լ«եթե այն կտրուկ աճել է, ապա». Հ«Փոփոխության կտրուկության չափանիշը 8 մմ ս.ս. է 8 ժամում.

Քանի որ իմ եղանակային կայանը ցուցադրում է բացարձակ ճնշում ( QFE), ապա պարզվում է, որ ընթերցումները որոշակիորեն թերագնահատված են ամփոփման տեղեկատվության համեմատ ՄԵՏԱՐ(որը պարունակում է QNH) (14 UTC մարտի 28, 2018):

Ճնշման հարաբերակցությունը (ըստ տեղեկատվության ԱՏԻՍ) էր $ (1015 \ ավելի քան 998) = $ 1,017: Գոմելի օդանավակայանի բարձրությունը (ICAO կոդը UMGGԾովի մակարդակից բարձր է 143,6 մ: Ջերմաստիճանը ըստ ATIS-ի եղել է 1 ° Գ.

Իմ օդերևութաբանական կայանի ընթերցումները գրեթե համընկնում էին բացարձակ ճնշման հետ QFEըստ տեղեկությունների ԱՏԻՍ!

Առավելագույն / նվազագույն ճնշում ( QFE) գրանցված է իմ եղանակային կայանի կողմից դիտարկումների ողջ ժամանակի համար.

Հարաբերական խոնավության ցուցադրում

Օդի հարաբերական խոնավությունը ցուցադրվում է որպես տոկոս (տոկոսի նշանը ցուցադրվում է աջակողմյան երկու թվանշաններով).

Ցուցադրվում է ընթացիկ ժամը

Ընթացիկ ժամը ցուցադրվում է ցուցիչի վրա «HH: MM» ձևաչափով, որտեղ բաժանարար երկու կետը թարթում է վայրկյանը մեկ.

Լուսնի և լուսնային օրվա փուլերի ցուցադրում

Ցուցանիշի առաջին երկու թվանշանները ցույց են տալիս ընթացիկ լուսնային փուլը, իսկ հաջորդ երկուսը` ընթացիկ լուսնային օրը.

Լուսինն ունի ութ փուլ (անգլերեն և ռուսերեն (կապույտ - ոչ ճշգրիտ) անունները տրված են).

Ցուցանիշի վրա փուլերը նշվում են ժայռապատկերներով.

փուլ պատկերագիր
աճող մանգաղ (կիսալուսին)
թուլացող մանգաղ (կիսալուսին)

Տվյալների փոխանցում համակարգչին

Եթե ​​եղանակային կայանը միացնեք USB-UARTփոխարկիչ (օրինակ, միկրոշրջանի վրա հիմնված CP2102) կապված USB- համակարգչի պորտ, կարող եք օգտագործել տերմինալային ծրագիրը՝ դիտելու եղանակային կայանի կողմից փոխանցված տվյալները.

Զարգացել եմ ծրագրավորման լեզվով գոլանգծրագիր, որը պահպանում է օդերևութաբանական դիտարկումների մատյան և տվյալներ է ուղարկում ծառայությանը և դրանք կարելի է դիտել Android- սմարթֆոն՝ օգտագործելով հավելվածը :

Համաձայն օդերևութաբանական դիտարկման մատյանի, դուք կարող եք, օրինակ, կառուցել մթնոլորտային ճնշման փոփոխությունների գրաֆիկ.
նկատելի նվազագույն ճնշում ունեցող գրաֆիկի օրինակ


ճնշման մի փոքր աճով գրաֆիկի օրինակ

Պլանավորված բարելավումներ.

  • քամու ուղղության և արագության սենսորների ավելացում

Օդերեւութաբանական կայաններում քամու արագությունը չափելու համար օգտագործվում է երեք գավաթանոց անեմոմետր (1), իսկ քամու ուղղությունը որոշելու համար օգտագործվում է եղանակային երթևեկություն (2):

Նաև օգտագործվում է քամու արագությունը չափելու համար տաք մետաղալարով անեմոմետրեր(անգլ. տաք մետաղալարով անեմոմետր): Որպես ջեռուցվող մետաղալար, դուք կարող եք օգտագործել վոլֆրամի թելիկ կոտրված ապակիով լույսի լամպից: Առևտրային հասանելի տաք մետաղալարով անեմոմետրերում սենսորը սովորաբար տեղադրված է հեռադիտակային խողովակի վրա.

Այս սարքի շահագործման սկզբունքը կայանում է նրանում, որ ջերմությունը հեռացվում է ջեռուցման տարրից օդի հոսքի միջոցով՝ քամու կոնվեկցիայի պատճառով: Այս դեպքում թելքի դիմադրությունը որոշվում է թելքի ջերմաստիճանով: $ R_T $ թելի դիմադրության փոփոխության օրենքը $ T $ ջերմաստիճանի վրա ունի հետևյալ ձևը.
$ R_T = R_0 \ cdot (1 + (\ ալֆա \ cdot (T - T_0))) $,
որտեղ $ R_0 $-ը թելի դիմադրությունն է $ T_0 $, $ \ ալֆա $-ը դիմադրության ջերմաստիճանի գործակիցն է (վոլֆրամի համար $ \ ալֆա = 4,5 \ cdot (10 ^ (- 3) (^ (\ circ) (C ^ (-1)))) $):

Օդի հոսքի արագության փոփոխությամբ ջերմաստիճանը փոխվում է թելքի մշտական ​​հոսանքով (հաստատուն հոսանքի անեմոմետր, անգլ. CCA): Եթե ​​ջեռուցման տարրի ջերմաստիճանը հաստատուն է պահվում, ապա տարրի միջով հոսանքը համաչափ կլինի օդի հոսքի արագությանը (հաստատուն ջերմաստիճանի անեմոմետր): CTA).

Շարունակելի



«Ուրեմն, եկեք միանգամից պայմանավորվենք. դուք չեք պատրաստվում ֆիլմ նկարահանել Հոլիվուդի համար։ Նույնիսկ Հրաշքների աշխարհում բոլոր սցենարների հինգ տոկոսից ոչ ավելին է հաստատվում, և միայն մեկ տոկոսն է այնուհետև անցնում արտադրության… Այսպիսով, այս ամենի փոխարեն դուք պատրաստվում եք ստեղծել ձեր սեփական Հոլիվուդը»:
Էդ Գասքել «Թվային կինո կամ Հոլիվուդ տանը պատրաստելը»

Առաջաբան

Ի՞նչ, ևս մեկ եղանակային կայան Arduino-ում: Այո, ևս մեկը և, ինչ-որ բան ինձ ասում է, ոչ վերջինը Իրերի ինտերնետում:


Ինչպես յուրաքանչյուր ծրագրավորող պարտավոր է «Բարև աշխարհ» ծրագիր գրել:
Ինտերնետում նկարագրված են օդերևութաբանական կայանների արդեն իսկ ստեղծված նախագծերի զգալի քանակություն, որոնցից ընթերցողը կարող է ընտրել դրանցից որևէ մեկը իրականացման համար։ Անկեղծ ասած, ես ուշադիր ուսումնասիրել եմ մոտ մեկ տասնյակ նմանատիպ նախագծեր և մի շարք հարակից նախագծեր: Հետեւաբար, չի կարելի ասել, որ ես ամեն ինչ զրոյից եմ ստեղծել, իհարկե «կանգնել եմ հսկաների ուսերին»։


Անմիջապես պետք է ասեմ, որ իմ ծրագրերը չեն ներառում երրորդ կողմի ծառայությունների օգտագործումը տվյալների պահպանման և ցուցադրման համար: Ես ուզում էի անձամբ զգալ և հասկանալ, թե ինչպես է այդ ամենն աշխատում ներսից՝ սկզբից մինչև վերջ՝ A-ից մինչև Z:


Այսպիսով, նրանց համար, ովքեր ցանկանում են արագորեն ինչ-որ բան հանել ոչնչից, հոդվածների այս շարքը հավանաբար չի աշխատի: Ավելի հեշտ է գնալ և գնել պատրաստի հավաքածու՝ հավաքման հրահանգներով: Միկրոէլեկտրոնիկայի մասնագետների համար այստեղ բացարձակապես ոչինչ չկա անելու, միգուցե ճամփորդության սկզբում բղավելով և հիշելով իրենց:
Բայց նրանց, ովքեր իսկապես ուզում են հասկանալ, կարծում եմ, որ դա նրանց դուր կգա։ Հավանաբար նյութը օգտակար կլինի որպես ուսումնական օգնություն:



Այս նախագիծն իրականացվել է դեռևս 2016 թվականին, բայց հուսով եմ, որ այն դեռ արդիական է։

Տեխնոլոգիաների հավաքածու

Մենք կուսումնասիրենք և կաշխատենք պարզ և բարդ բաների հետ.

  • ջերմաստիճանի և խոնավության սենսորներ DHT22, DHT11
  • բարոմետրիկ ճնշման սենսոր տեսակ BMP180
  • WiFi մոդուլ ESP8266
  • ռադիո մոդուլի տեսակը nRF24 2,4 ԳՀց
  • ընտանիք Arduino Pro Mini, Arduino Mega
  • արևային մարտկոց և վերալիցքավորվող մարտկոցներ
  • C / C ++ ծրագրավորման լեզու
  • PHP ծրագրավորման լեզու
  • MySQL տվյալների բազայի կառավարման համակարգ
  • Java ծրագրավորման լեզուն և Android շրջանակը (Adnroid-ի համար հավելվածի ստեղծում՝ եղանակի տվյալները սմարթֆոնի վրա ցուցադրելու համար):

Վերը թվարկված որոշ թեմաներ չարժեն, իսկ որոշները կարելի է տարիներ շարունակ ուսումնասիրել: Ուստի բարդ բաներին կանդրադառնանք միայն այս նախագծին անմիջականորեն առնչվող մասով, որպեսզի հասկանաք, թե ինչպես է այդ ամենն աշխատում։


Բայց մենք սկսելու ենք հենց սկզբիցճիշտ. Մասնավորապես, ապագա սարքի նկարագրությունից և դիզայնից «թղթի վրա»որպեսզի վերջում ամեն աղյուս իր տեղը ընկնի։

Նախատիպավորում

Ինչպես մեզ ճիշտ է ասում Վիքիպեդիան, նախատիպավորումաշխատանքային համակարգի ներդրման արագ նախագիծ է: Ինչը, այո, չի աշխատի բոլորովին անարդյունավետ և որոշ սխալներով, այլ պատկերացում կտա, թե արդյոք արհեստը պետք է մշակվի արդյունաբերական նմուշի համար: Նախատիպի պատրաստման գործընթացը պարտադիր չէ, որ երկար լինի: Նախատիպավորման փուլին հաջորդում է համակարգի վերլուծությունը և դրա կատարելագործումը:


Բայց սա այն ոլորտում է, որտեղ աշխատողները աշխատում են լրիվ դրույքով:


Յուրաքանչյուր ոք, ով իր ընտանի կենդանիների նախագծերը երեկոները դնում է «իրերի ինտերնետի» համար, պետք է տեղյակ լինի, որ նա ստեղծում է նախատիպ, կիսաֆաբրիկատ։ Դա շատ հեռու է նորմալ արդյունաբերական արտադրանքի մակարդակից։ Ահա թե ինչու մի վստահեք մեր սիրողական արհեստներին կյանքի աջակցության որևէ կարևոր բնագավառև հուսով եմ, որ նրանք մեզ չեն թողնի:


Արդյունաբերական արտադրանքը կառուցված է արդյունաբերական տարրերի բազայի վրա և այնուհետև անցնում է շատ ավելի փուլերով, ներառյալ վրիպազերծումը, փորձարկումը և սպասարկումը, մինչև այն դառնա վաճառքի հիթ:


Այսպիսով, այս ամբողջ բեռի փոխարեն մենք կստեղծենք մեր սեփական խաղալիքը, բայց ոչ պարզ: Տեխնիկական կրեատիվության տարրերով, ծրագրավորման և շատ այլ հարակից իրերի ճանաչման (ստեղծման գործընթացում) տարրերով։


Իհարկե, էլեկտրոնիկայի ինժեներները դժվար ժամանակ կունենան ծրագրավորման փուլում, և ծրագրավորողները ստիպված կլինեն քրտնել սխեմաների վրա, բայց հեղինակը կփորձի ամեն ինչ հնարավորինս մատչելի ներկայացնել և հստակ նկարագրել, թե ինչու են օգտագործվել որոշակի լուծումներ:

Պահանջներ

Այս քայլը սովորաբար բաց է թողնվում: Որոշում է կայացնել նման բան անել հենց հիմա, և հետո ի հայտ են գալիս մանր մանրամասներ, որոնք ամբողջ նախագիծը կանգնեցնում են կամ նույնիսկ չափազանց ծանրացնում այն: Մեր բոլոր ցանկությունները պետք է ձայնագրվեն, ես դրա համար օգտագործում եմ google սկավառակ, այն հասանելի է համակարգչից և շարժական սարքից:


Այսպիսով, մեր եղանակային կայանը պետք է.

  • չափել ջերմաստիճանը և խոնավությունը դրսում
  • չափել ջերմաստիճանը և խոնավությունը տանը
  • չափել մթնոլորտային ճնշումը
  • ցույց տալ նշված արժեքները էկրանին
  • փոխանցել տվյալները ինտերնետի սերվերին, որտեղ տվյալները կպահվեն տվյալների բազայում և կցուցադրվեն վեբ էջում կամ կօգտագործվեն բջջային հավելվածում:

Օգտագործվում են ամենապարզ և ամենաէժան սենսորները: Օրինակ, առաջ նայելով, կասեմ, որ DHT22-ը բավականին ճշգրիտ չափում է ջերմաստիճանը, բայց խոնավության դեպքում դա մի փոքր սխալ է։ Բայց, դարձյալ, կրկնում եմ, դա նշանակություն չունի, քանի որ մեր առջեւ դրված է նախատիպը, իսկ 5% խոնավության մեջ տարածումը ոչ մի կարեւոր բանի վրա չի ազդի մեր կյանքում։


Համակարգի ճարտարապետությունը, սարքաշարը և ծրագրաշարը պետք է ավելի ընդլայնեն համակարգը՝ ավելացնելու նոր սենսորներ և նոր հնարավորություններ:

Երկաթ. Բաղադրիչի ընտրություն

Սա ամենակարևոր մասն է, ոչ թե զոդում կամ ծրագրավորում: Համակարգին ներկայացվող պահանջները որոշելուց հետո անհրաժեշտ է որոշել, թե կոնկրետ ինչ են դրանք իրականացվելու։


Այստեղ կա մեկ նրբերանգ. Բաղադրիչներն ընտրելու համար պետք է լավ իմանալ դրանց հնարավորությունները, պետք է իմանալ հենց տեխնոլոգիաները։ Այսինքն, այլ կերպ ասած, այստեղ դուք պետք է հեռու լինեք սկսնակ էլեկտրոնիկայի ինժեներից և ծրագրավորողից: Այսպիսով, ի՞նչ պետք է ծախսեք մի քանի տարի՝ հնարավոր սարքերի ողջ տեսականին ուսումնասիրելու համար:


Արատավոր շրջան? Բայց արատավոր շրջանակներ կան դրանք կոտրելու համար:


Ելք կա։ Դուք կարող եք պարզապես վերցնել և կրկնել ինչ-որ մեկի նախագիծը: Ես ուսումնասիրել եմ օդերևութաբանական կայանների արդեն գոյություն ունեցող նախագծերը և հուսով եմ, որ քայլ առաջ եմ արել։


Այսպիսով. Եղանակային կայանի ճարտարապետությունը հիմնված է Arduino-ի վրա: Քանի որ Arduino-ն մուտքի փոքր շեմ ունի, և ես արդեն զբաղվել եմ այս հարցով: Ավելի հեշտ է ընտրել հետագա.


Անմիջապես պարզ դարձավ, որ օդերևութաբանական կայանը կներառի պատուհանից դուրս հեռակառավարման սենսոր և կենտրոնական մոդուլ։


Կենտրոնական, հիմնական բլոկը կտեղակայվի ներսում։ Կարևոր է դա որոշել սկզբնական փուլում, այս կարևոր բնութագրերից, ինչպիսիք են գործողության ջերմաստիճանի ռեժիմը և էլեկտրամատակարարման «պարը»:


Հեռակառավարման սենսորը (կամ սենսորները) կլինի առանց «ուղեղների», նրա խնդիրն է պարբերաբար չափել և տվյալները փոխանցել կենտրոնական տան միավորին: Կենտրոնական ստորաբաժանումը ստանում է տվյալներ բոլոր սենսորներից, ցուցադրում դրանք էկրանին և ուղարկում ինտերնետ՝ տվյալների բազա: Դե, իսկ այնտեղ արդեն շատ ավելի հեշտ է, հենց որ տվյալները շտեմարանում են, կարող ես դրանով անել ինչ ուզում ես, նույնիսկ գրաֆիկներ նկարել։


Արտաքին աշխարհի հետ հաղորդակցվելու համար ինտերնետը միանշանակ ընտրվել է ESP8266 WiFi մոդուլը՝ գործնականում այլընտրանք չունեցող (մոտավորապես հիմա նման այլընտրանքներ են հայտնվել): Ethernet-ի ընդլայնման տախտակները հասանելի են Arduino-ի համար, բայց ես ընդհանրապես չէի ուզում կապվել մալուխի հետ:



Հետաքրքիր հարց էր, թե ինչպես կարելի է կապ ապահովել պատուհանից դուրս գտնվող սենսորի (կամ սենսորների, հիշո՞ւմ եք համակարգի ընդարձակման պահանջը) և կենտրոնի միջև: 433 ՄՀց հաճախականությամբ փարոսները հաստատ հարմար չեն (ընդհանրապես ոչ մի բանի համար հարմար չեն)։


Կրկին օգտագործու՞մ եք ESP8266-ը:


Այս լուծման թերությունները.

    պահանջում է կայուն WiFi տնից դուրս

    կապի շրջանակը երկար չի լինի

    հուսալիությունը կտուժի, եթե ինտերնետն անջատվի, մենք չենք տեսնի մեր հեռակառավարման սենսորները

    ավելի շատ էներգիայի սպառում:

    Էլեկտրաէներգիայի սպառում ESP8266:

    120-170 մԱ փոխանցելիս

    50-56 մԱ ստանալիս

    Խորը քնի ռեժիմում 10 µA (µA)

    անջատված է 5 µA (µA):

Ի վերջո, nRF24L01 + չիպը 2,4 ԳՀց հաղորդիչով և ընդունիչով մեկ շշով ընտրվեց հեռակառավարման սենսորները հիմնական տան բլոկի հետ միացնելու համար, լրացուցիչ արտաքին ալեհավաքով, որն անպայման «կոտրում է» պատերը:



Էլեկտրաէներգիայի սպառում nRF24L01 + 2,4 ԳՀց:

  • 11 մԱ ստանալիս
  • 2 Մբ/վ արագությամբ փոխանցելիս՝ 13 մԱ
  • սպասման-I ռեժիմում - 26 μA (μA)
  • ոչ վիճակից 900 nA (nA):

Ե՛վ ESP8266, և՛ nRF24L01 + ունեն աշխատանքային ջերմաստիճանի համապատասխան միջակայք՝ -40 ℃-ից + 80 ℃:


Դուք կարող եք գնել nRF24L01 + մոտ 1 դոլարով կամ անմիջապես արտաքին ալեհավաքով 3 դոլարով: Դուք կարող եք գնել ESP8266-01 մոտ 4 դոլարով: Ուշադիր կարդացեք ապրանքի նկարագրությունը: Հակառակ դեպքում, գնեք մեկ ալեհավաք:


Համակարգի առանցքը երևաց. Անցնենք հենց սենսորներին:


Փողոցում, ինչպես գիտեք, ջերմաստիճանը կարող է հասնել բացասական արժեքների, ուստի DHT11 սենսորը հարմար չէ, բայց DHT22-ը ճիշտ է:



DHT22 / AM2302 բնութագրեր.

  • էլեկտրամատակարարում 3.3V-ից 5V, խորհուրդ է տրվում 5V
  • սպառումը առավելագույնը 2,5 մԱ, չափման և տվյալների փոխանցման պահին
  • Խոնավության չափման միջակայքը 0-100% 2-5% սխալով
  • ջերմաստիճանի չափման միջակայքը -40-ից + 125 ° C ± 0,5 ° C ճշգրտությամբ
  • չափման հարցում ոչ ավելի, քան 0,5 Հց - 2 վայրկյանը մեկ անգամ:

Տան ներսում, հուսով եմ, սառնամանիքներ չեն լինի, այնպես որ կարող եք օգտագործել DHT11, հատկապես որ ես արդեն ունեի:


DHT11 բնութագրերը.

  • էլեկտրամատակարարում 3.3V-ից մինչև 5V
  • սպառումը առավելագույնը 2,5 մԱ, չափման և տվյալների փոխանցման պահին
  • Խոնավության չափման միջակայքը 20-80% 5% սխալով
  • ջերմաստիճանի չափման միջակայքը 0-ից + 50 ° C ± 2 ° C սխալով
  • չափման հարցում ոչ ավելի, քան 1 Հց - վայրկյանում մեկ անգամ:

DHT22-ը կարող եք գնել մոտ 3 դոլարով: DHT11-ն արժե ավելի քիչ՝ 1 դոլար, բայց այն նաև ավելի քիչ ճշգրիտ է:


Հիմա նորից վերադառնանք Arduino-ին: Ո՞ր տախտակն ընտրել:


Ես փորձարկեցի համակարգի առանձին մասերը Arduino UNO-ի վրա: Նրանք. ESP մոդուլը միացրի uno-ին ու ուսումնասիրեցի, անջատեցի, հետո միացրի nRF24-ը և այլն։ Պատուհանից դուրս սենսորի վերջնական իրականացման համար ես ընտրեցի Arduino Pro Mini-ն, որպես մանրանկարչության Uno-ին ամենամոտ:



Էլեկտրաէներգիայի սպառման առումով Arduino Pro Mini-ն նույնպես լավ տեսք ունի.

  • չկա USB-TTL փոխարկիչ, որն ինքնին շատ է «ուտում»,
  • LED-ը միացված է 10k ռեզիստորի միջոցով:

Էներգիայի առաջադեմ պահպանման համար նախատեսվում էր.

  • հեռացրեք LED-ը - Arduino Pro Mini-ի հոսանքի ցուցիչը (ափսոսում էի, որ տախտակը չեմ փչացնում)
  • կամ օգտագործեք «մերկ» հավաքույթ Atmel ATmega328 միկրոպրոցեսորի վրա (չօգտագործված)
  • օգտագործել ցածր էներգիայի գրադարանը կամ JeeLib-ը:

Գրադարաններից ես ընտրեցի Low Power Library, այն պարզ է և պարունակում է միայն այն, ինչ ձեզ հարկավոր է:


Կենտրոնական միավորի համար, քանի որ նախատեսվում էր միացնել բազմաթիվ ծայրամասային սարքեր, ընտրվել է Arduino Mega տախտակը: Բացի այդ, այն լիովին UNO-ի հետ համատեղելի է և ունի ավելի շատ հիշողություն: Առաջ նայելով՝ կասեմ, որ այս ընտրությունը լիովին արդարացված էր։


Դուք կարող եք գնել Arduino Mega-ն մոտ 8 դոլարով:

Էլեկտրաէներգիայի և էներգիայի սպառումը

Այժմ էներգիայի և էներգիայի սպառման մասին:


Arduino Pro Mini-ն գալիս է երկու համով.

  • մատակարարման լարման համար 5V և հաճախականությունը 16MHz
  • 3.3 Վ սնուցման լարման և 8 ՄՀց հաճախականության համար:

Քանի որ nRF24L01 + ռադիոմոդուլը սնուցման համար պահանջում է 3,3 Վ, իսկ արագությունն այստեղ կարևոր չէ, գնեք Arduino Pro Mini 8 ՄՀց և 3,3 Վ հաճախականությամբ:


Այս դեպքում Arduino Pro Mini-ի մատակարարման լարման միջակայքը հետևյալն է.

  • 3.35-12V 3.3V մոդելի համար
  • 5-12V 5V մոդելի համար:

Ես արդեն ունեի 5V Arduino Pro Mini, դրա համար էլ օգտագործեցի: Դուք կարող եք գնել Arduino Pro Mini-ն մոտ 4 դոլարով:


Կենտրոնական բլոկը սնուցվելու է 220 Վ լարման ցանցից՝ փոքր էներգիայի մատակարարման բլոկի միջոցով, որն ապահովում է 12 Վ, 450 մԱ, 5 Վտ լարում ելքում: Այդպես 5 դոլարով։ Կա նաև առանձին ելք 5 Վ-ի համար։



Եվ եթե սա բավարար չէ, ապա դուք կարող եք այն ավելի հզոր դնել: Այլ կերպ ասած, կենտրոնական ստորաբաժանման համար էներգիա խնայելն անիմաստ է: Սակայն հեռակառավարվող անլար սենսորի համար էներգիայի խնայողությունը ամենակարևոր մասն է: Բայց ես էլ չէի ցանկանա կորցնել ֆունկցիոնալությունը։


Հետևաբար, Arduino Pro Mini-ն և nRF24 ռադիոմոդուլը կսնուցվեն 4 Ni-Mh մարտկոցներից բաղկացած փաթեթով:


Եվ հիշիր ժամանակակից մարտկոցի առավելագույն հզորությունըմոտ 2500-2700 մԱժ, այդ ամենն ավելին է կամ մարքեթինգային հնարքներ (Ansmann 2850) կամ խաբեություն (UltraFire 3500):


Ես չեմ օգտագործում Li-Ion մարտկոցներ մի քանի պատճառներով.

  • շատ թանկ
  • երբ շրջակա միջավայրի ջերմաստիճանը իջնում ​​է 0 ° C-ից ցածր, լիթիում-իոնային մարտկոցի հզորությունը նվազում է մինչև 40-50%
  • նրանք, որոնք էժան են, արտադրվում են առանց պաշտպանության և անվտանգ են (կարճ միացման կամ լիցքաթափման դեպքում դրանք կարող են պայթել և այրվել, տեսեք մի շարք տեսանյութեր YouTube-ում)
  • դրանք ծերանում են, նույնիսկ եթե չեն օգտագործվում (սակայն, դա կարելի է ասել բոլոր քիմիական տարրերի մասին), 2 տարի անց Li-Ion մարտկոցը կորցնում է իր հզորության մոտ 20%-ը։

Նախատիպի համար միանգամայն հնարավոր է յոլա գնալ բարձրորակ Ni-MH AA կամ AAA մարտկոցներով: Ավելին, մեզ մեծ հոսանքներ պետք չեն։ Ni-MH մարտկոցների միակ թերությունը նրանց երկար լիցքավորման ժամանակն է:

Եղանակային կայանի ընդհանուր սխեման

Եկեք ամփոփենք. Ահա ընդհանուր ուրվագիծը, թե ինչպես է այն աշխատում:



Շարունակելի.

Ազատ ժամանակ, իսկ այս անգամ ես հրահանգներ էի գրել փոքր եղանակային կայան պատրաստելու համար։ Այն կգործի որպես ամսաթվի ժամացույց և կցուցադրի ներսի և դրսի ջերմաստիճանը: Մենք կօգտագործենք Arduino UNO-ն որպես հիմնական վերահսկիչ, բայց Atmega328p-ով մեկ այլ տախտակ կօգտագործի: Ցուցադրման համար մենք օգտագործում ենք WG12864B գրաֆիկական էկրանը: Մենք նաև կմիացնենք երկու ds18b20 ջերմաստիճանի տվիչներ։ Մեկը սենյակի ներսում է, մյուսը՝ դրսում։ Եկ սկսենք.

Տնական արտադրանքի պատրաստման գործընթացում մեզ անհրաժեշտ է.

Arduino UNO (կամ որևէ այլ Arduino համատեղելի տախտակ)
- WG12864B գրաֆիկական էկրան
- ds18b20 ջերմաստիճանի սենսոր, 2 հատ
- Էլեկտրամատակարարում 6 - 12 Վ
- Ռեզիստորներ 4,7 Օմ 0,25 Վտ, 2 հատ:
- 100 օմ 0,25 Վտ ռեզիստորներ
- 4 AAA «փոքր մատի» մարտկոցների մարտկոցի խցիկ
- Տուփ SEGA նախածանցի քարթրիջից
- Մեկուսիչ ժապավեն
- Միացնող լարեր
- Շղթայի տախտակ
- Կոճակներ
- Գրենական պիտույքների դանակ
- Զոդման երկաթ
- Զոդում, ռոսին
- Երկկողմանի ժապավեն

Քայլ 1 Պատրաստեք WG12864B3:
Նրանք, ովքեր նախկինում չեն աշխատել էկրանների հետ, կարող են վախեցնել մեծ թվով փոփոխություններից, որոնք նույնական են էկրաններին: Մի փոքր բացատրեմ. Այս տեսակի էկրանների մեծ մասն աշխատում է ks0107 / ks0108 միկրոսխեմաների վրա: Բոլոր էկրանները կարելի է բաժանել 4 տեսակի.

Տարբերակ A՝ HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T

Տարբերակ B՝ HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec Dis BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision LG12864 LDG12864 LDG12864-810000, Top 12864-81000, Top 20000, Top

Տարբերակ C. Shenzhen Jinghua Displays Co Ltd. JM12864

Տարբերակ D. Wintek- Cascades WD-G1906G, Wintek - GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS2 / HD6126

Նրանք գրեթե նույն տեսքն ունեն։ Բայց նրանց կապի կապում տարբեր են: Ես ընտրեցի, և ես ձեզ խորհուրդ եմ տալիս WG12864B3 V2.0, բայց եթե էկրանն այլ կերպ է եկել, կամ պարզապես ձեռքի տակ չունեք, ապա հեշտությամբ կարող եք դա պարզել աղյուսակի օգնությամբ.

Հակիրճ բնութագրերը.

Ինտերնետում կան բազմաթիվ տարբեր կապի սխեմաներ, և թվում է, թե ամեն ինչ աշխատում է: Բանն այն է, որ կան ոչ միայն տարբեր էկրաններ, այլեւ դրանք միացնելու երկու տարբերակ՝ սերիական եւ զուգահեռ։ Սերիական պորտի միացում օգտագործելիս մեզ անհրաժեշտ է ընդամենը 3 միկրոկառավարիչի ելք: Զուգահեռ նվազագույն 13-ով: Ընտրությունն այս դեպքում ակնհայտ է, Arduino-ն և այդքան շատ քորոցներ: Զուգահեռ միացման համար միացման դիագրամը հետևյալն է.

Սերիական կապի համար, որը մենք կօգտագործենք, դիագրամը հետևյալն է.

WG12864B - Arduino UNO 1 (GND) - GND 2 (VCC) - + 5V 4 (RS) - 10 5 (R / W) - 11 6 (E) - 13 15 (PSB) - GND 19 (BLA) - դիմադրության միջոցով 100 Ohm - + 5V 20 (BLK) - GND

Հակադրությունը կարգավորելու համար էկրանին պետք է լինի պոտենցիոմետր: Առանց դրա էկրաններ կան, բայց սա այժմ հազվադեպ է.

Անհրաժեշտ է 100 օհմ դիմադրություն, որպեսզի 5 վոլտ լարումը պատահաբար չայրի հետին լույսի դիոդները:

Քայլ 2 Պատյանի արտադրություն:
Գործի համար վերցնենք տուփը Sega նախածանցային քարթրիջից։ Եթե ​​ձեռքի տակ չեք գտնում այս տուփը, կարող եք օգտագործել մեկ այլ պատյան։ Հիմնական բանը այն է, որ էկրանը և Arduino-ն տեղավորվեն դրա մեջ:

Կտրեք տուփի վերևի թափանցիկ թաղանթը, որպեսզի կտորներ չմնան.

Այնուհետև, օգտագործելով գործավարական դանակ, կտրեք 37x69 չափսի պատուհանը էկրանի համար:

Հետևի կողմում, կտրվածքի եզրին երկայնքով, մենք սոսնձում ենք երկկողմանի ժապավեն, գերադասելի սև:

Մենք ժապավենից հանում ենք պաշտպանիչ թուղթը և դրա վրա սոսնձում ենք մեր էկրանը.

Արտաքինից այն պետք է այսպիսի տեսք ունենա.

Էկրանի տակ, նաև երկկողմանի ժապավենի վրա, մենք կցում ենք Arduino-ն՝ նախնական կտրվածքներ անելով USB պորտի և հոսանքի վարդակից.

Arduino վարդակների համար կտրվածքներ պետք է արվեն տուփի երկու կողմերում, որպեսզի այն ազատ փակվի.

Քայլ 3 Ջերմաստիճանի տվիչներ.
Մենք կօգտագործենք DS18B20 թվային ջերմաստիճանի տվիչներ: Օգտագործելով դրանք, մենք ստանում ենք չափման բարձր ճշգրտություն, ոչ ավելի, քան 0,5 ° C սխալ, -55 ... + 125 ° C ջերմաստիճանի լայն տիրույթում: Բացի այդ, սենսորը թվային է և ինքնուրույն է կատարում բոլոր հաշվարկները, իսկ Arduino-ն պարզապես ստանում է պատրաստի ընթերցումներ։ Այս սենսորը միացնելիս տեղյակ եղեք DQ և VDD կապիչների միջև 4,7KΩ ձգվող դիմադրության մասին: Հնարավոր են նաև միացման մի քանի տարբերակներ: Արտաքին հզորությամբ, իմ կարծիքով, լավագույն տարբերակը, մենք կօգտագործենք այն.

Էլեկտրաէներգիայի մատակարարման ցանկացած տարբերակով սենսորները միացված են զուգահեռ.

Մենք կտեղադրենք ներքին ջերմաստիճանի սենսորը փոքր տախտակի վրա երկու կոճակների հետ միասին, որոնք կօգտագործենք ժամացույցի ժամն ու ամսաթիվը սահմանելու համար.

Երկու կոճակներից ընդհանուր լարը միացնում ենք GND-ին, առաջին կոճակից լարը միացնում ենք A0-ին, երկրորդից՝ A1-ին։
Մենք այն կցում ենք Arduino-ի կողքին երկկողմանի ժապավենի վրա.

Սենսորը, որը պետք է տեղադրվի սենյակից դուրս, ավելի լավ է ընտրել մետաղական, փոշու և խոնավությունից պաշտպանված պատյանում.

Հաշվեք պահանջվող երկարության մետաղալարը, որպեսզի կարողանաք սենսորը կախել պատուհանից դուրս, գլխավորն այն է, որ այն չպետք է լինի ավելի քան 5 մետր, եթե ձեզ ավելի երկար երկարություն է անհրաժեշտ, ապա ձեզ հարկավոր է նվազեցնել ձգման արժեքը: վերև ռեզիստոր:

Միացրեք լարը երկու սենսորների DQ տվյալների ավտոբուսից Arduino-ի 5-րդ կապին:
Vdd - +5 Arduino:
GND - GND Arduino:

Քայլ 4 Սնուցում.
Հոսանքի համար կարող եք օգտագործել 6-ից 12 վոլտ լարման սնուցման աղբյուր: Էլեկտրաէներգիայի բռնկման լարերի վերջում դուք պետք է զոդեք վարդակից, որը համապատասխանում է Arduino հոսանքի վարդակից.

Կամ պատյանի մեջ կարող եք տեղադրել մարտկոցի խցիկ չորս AAA մարտկոցների համար: Եվ կուպեից դրական լարը միացրեք Vin Arduino-ին, իսկ բացասականը՝ GND-ին:

Քայլ 5 Պատրաստեք ծրագրավորման միջավայրը:
Նախ անհրաժեշտ է ներբեռնել և տեղադրել Arduino IDE-ն պաշտոնական կայքից

Եվ նաև ավելացրեք էսքիզի համար անհրաժեշտ երկու գրադարաններին: OneWire - պահանջվում է ds18b20 սենսորների հետ հաղորդակցվելու համար.

U8glib - օգտագործվում է էկրանին տեղեկատվություն ցուցադրելու համար.

Գրադարանների ներբեռնում։ Այնուհետև մենք բացում ենք արխիվները և արխիվների բովանդակությունը տեղափոխում «գրադարաններ» թղթապանակ, որը գտնվում է թղթապանակում, որտեղ տեղադրված է Arduino IDE: Հնարավոր է նաև գրադարաններ ավելացնել Arduino IDE-ի միջոցով: Դա անելու համար, առանց արխիվները բացելու, գործարկեք Arduino IDE-ն, ընտրեք Sketch ընտրացանկը - Միացրեք գրադարանը: Բացվող ցուցակի հենց վերևում ընտրեք «Add.Zip Library» կետը: Մենք նշում ենք ներբեռնված արխիվների գտնվելու վայրը: Բոլոր քայլերից հետո դուք պետք է վերագործարկեք Arduino IDE-ն:

Քայլ 6 Էսքիզը խմբագրելը:
Ջերմաստիճանի տվիչները գործում են One Wire արձանագրության վրա և ունեն եզակի հասցե յուրաքանչյուր սարքի համար՝ 64-բիթանոց կոդ: Ցանկալի չէ էսքիզում սենսորների որոնման հրամաններ ավելացնել: Կարիք չկա ամեն անգամ բեռնել Arduino-ն՝ սենսորները խափանելու համար: Հետևաբար, նախ, ամեն ինչ միասին հավաքելով, մենք ուրվագիծը լրացնում ենք Arduino-ում, որը գտնվում է File - Examples - Dallas Temperature - OneWireSearch ընտրացանկում: Այնուհետև մենք գործարկում ենք Tools - Port Monitor: Arduino-ն պետք է գտնի մեր սենսորները, գրի հասցեներ և ջերմաստիճանի ցուցումներ: Այս հասցեները պետք է ինչ-որ տեղ գրել կամ պարզապես պատճենել։ Այժմ բացեք Ard_Tic_Tak_WG12864B_2_x_Term_Serial էսքիզը և փնտրեք տողերը.

Բայթ addr1 = (0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63); // ներքին բայթի հասցեն addr2 = (0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x5, 0xB4, 0x1); արտաքին սենսորի հասցեն

Մենք սենսորների գտնվելու վայրին համապատասխան հասցեները փոխարինում ենք մեր սեփական հասցեներով։
Մեր ժամացույցը չի օգտագործում RTC (իրական ժամանակի ժամացույց) մոդուլը, ուստի անհրաժեշտ է շտկել ժամացույցի արագությունը: Հարմարության համար անջատեք տողը (վայրկյանները կհայտնվեն էկրանին).

//u8g.setPrintPos(44, 50); u8g.print (sek); // Ցուցադրել վայրկյանները՝ վերահսկելու քայլի ճիշտությունը

Սահմանեք ճիշտ ժամանակը պորտի մոնիտորի միջոցով: Դա անելու համար բացեք պորտի մոնիտորը, սպասեք նախնական ջերմաստիճանի չափումների ավարտին և մուտքագրեք ընթացիկ ամսաթիվը և ժամը «օր, ամիս, տարի, ժամ, րոպե, վայրկյան» ձևաչափով: Առանց բացատների, առանձնացրեք թվերը ստորակետներով կամ կետով:

Եթե ​​ժամացույցը շտապում է, փոխեք արժեքը ավելի մեծի, խորհուրդ եմ տալիս փորձարկել 100 միավոր քայլով: Եթե ​​ես հետ եմ մնում, դուք պետք է նվազեցնեք արժեքը տողում.

Եթե ​​(micros () - prevmicros> 494000) (// փոխել ինչ-որ այլ բան ուղղելու համար, դա 500000 էր

Էմպիրիկորեն մենք որոշում ենք այն թիվը, որով ժամացույցը բավական ճշգրիտ է աշխատում: Դասընթացի ճշգրտությունը որոշելու համար անհրաժեշտ է նաև վայրկյանների արդյունք: Թվի ճշգրիտ չափաբերումից հետո վայրկյանները կարող են ծանոթագրվել և այդպիսով հեռացնել էկրանից:
Լրացրեք էսքիզը.