Arduino Nano-dagi uy qurgan ob-havo stantsiyam. Arduino-dagi yopiq ob-havo stantsiyasi arduino nano-da radiokanalli ob-havo stantsiyasi

Ob-havoni kuzatish juda hayajonli faoliyatdir. Men meteorologiya stansiyasini ommabop ob-havoga asoslanib qurishga qaror qildim .

Ob-havo stantsiyasining prototipi quyidagicha ko'rinadi:

Mening ob-havo stantsiyamning vazifalari:

  • xona va tashqi haroratni o'lchash va ko'rsatish;
  • joriy vaqtni ko'rsatish (soat va daqiqalar);
  • oy va oy kunining joriy fazalarini ko'rsatish;
  • o'lchov natijalarini ketma-ket ulanish orqali kompyuterga o'tkazish;
  • o'lchov natijalarini protokol bo'yicha uzatish MQTT kompyuterda dasturdan foydalanish.


olti burchakli
-fayl
uchun proshivka (2018 yil 9-maydagi versiya) - .
Qanday qilib miltillash kerak olti burchakli- taxtaga fayl Arduino tasvirlab berdim.

Mikrokontroller Arduino Nano 3.0

Mening ob-havo stantsiyamning "yuragi" mikrokontrollerdir eBay):

Sensorlarni ko'rsatish va so'roq qilishni boshqarish uchun men taymer 1 dan foydalanaman Arduino, 200 Gts chastotali uzilishlarni keltirib chiqaradi (davr - 5 ms).

Ko'rsatkich

Sensorlarning o'lchangan ko'rsatkichlarini va joriy vaqtni ko'rsatish uchun men ulandim Arduino to'rt xonali LED ko'rsatkichi Foryard FYQ-5643BH umumiy anodlar bilan (barcha razryadlarning bir xil segmentlari anodlari birlashtirilgan).
Ko'rsatkich to'rtta etti segmentli raqam va ikkita ajratuvchi (soat) nuqtadan iborat:

Ko'rsatkichning anodlari oqim cheklovchi rezistorlar orqali terminallarga ulanadi Arduino:

tushirish 1 2 3 4
xulosa A3 A2 D3 D9

Segmentli katodlar pinlarga ulangan Arduino:

segment a b c d e f g p
xulosa D7 D12 D4 D5 D6 D11 D8 D13

Tegishli razryadning anodida yuqori potentsial (1) va katodda past potentsial (0) bo'lsa, indikatorning segmenti yonadi.

Men indikatorda ma'lumotni ko'rsatish uchun dinamik ko'rsatkichdan foydalanaman - bir vaqtning o'zida faqat bitta raqam faol. Faol razryadlar 200 Gts chastotada o'zgarib turadi (ko'rsatish davri 5 ms). Shu bilan birga, segmentlarning miltillashi ko'zlar uchun sezilmaydi.

Harorat sensori DS18x20

Haroratni masofadan o'lchash imkoniyati uchun men sensorni uladim , bu tashqi haroratni o'lchashning keng doirasini ta'minlaydi. Sensor avtobusga ulangan 1 sim va uchta chiqishga ega - quvvat ( VCC), ma'lumotlar ( DAT), Yer ( GND):

sensor chiqishi VCC DAT GND
xulosa Arduino 5V A1 GND

Pinlar orasida VCC Va DAT Men 4,7 kŌ tortishish qarshiligini qo'shdim.

Selsiy va Farengeyt darajalari o'rtasida o'zgartirish uchun siz quyidagi plastinkadan foydalanishingiz mumkin:

Men sensorni uyning derazasi tashqarisida sharikli qalamdan plastik qutiga joylashtirdim:

\

Professional ob-havo stantsiyalari termometrni to'g'ridan-to'g'ri quyosh nurlaridan himoya qilish va havo aylanishini ta'minlash uchun Stivenson ekranidan foydalanadi. Stivenson ekrani):

Bosim va harorat sensori BMP280

Atmosfera bosimini o'lchash uchun an'anaviy ravishda simob va aneroid barometrlari qo'llaniladi.

IN simob barometri Atmosfera bosimi simob ustunining og'irligi bilan muvozanatlanadi, uning balandligi bosimni o'lchash uchun ishlatiladi:

IN aneroid barometr Atmosfera bosimi ostida qutini siqish va cho'zish qo'llaniladi:

Uydagi ob-havo stantsiyasida atmosfera bosimi va xona haroratini o'lchash uchun men sensordan foydalanaman - kichik smd- Piezorezistiv texnologiyaga asoslangan 2 x 2,5 mm sensor:

Bozorda datchikli ro'molcha sotib olindi eBay:

Sensor avtobusga ulangan I2C(ma'lumotlar bilan aloqa - SDA/SDI, sinxronlash pin - SCL/SCK):

sensor chiqishi VCC GND SDI SCK
xulosa Arduino 3v3 GND A4 A5

adafruit- fayllar Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Atmosfera bosimi birliklari

Funktsiya orqali sensor o'qish Bosim atmosfera bosimining paskaldagi qiymatini beradi. Atmosfera bosimini o'lchashning asosiy birligi gektopaskal(hPa) (1 hPa = 100 Pa), uning analogi tizimdan tashqari birlik " millibar" (mbar) (1 mbar = 100Pa = 1hPa). Odatda ishlatiladigan tizimli bo'lmagan bosim birligi o'rtasida aylantirish uchun " millimetr simob" (mm Hg) va gektopaskallar uchun quyidagi nisbatlar qo'llaniladi:
1 hPa = 0,75006 mmHg Art. ≈ 3/4 mm Hg; 1 mm Hg =1,3332 hPa ≈ 4/3 hPa.

Atmosfera bosimining dengiz sathidan balandligiga bog'liqligi

Atmosfera bosimi ham mutlaq, ham nisbiy shaklda ifodalanishi mumkin.
Mutlaq bosim QFE(inglizcha) mutlaq bosim) dengiz sathidan to'g'rilashni hisobga olmagan holda, haqiqiy atmosfera bosimi.
Atmosfera bosimi 1 m balandlikda ko'tarilishi bilan taxminan 1 hPa ga kamayadi:

Barometrik formula nisbiy bosimni (mmHg da) olish uchun barometr ko'rsatkichlarini tuzatishni aniqlashga imkon beradi:
$\Delta P = 760 \cdot (1 - (1 \ortiq (10^ ( (0,0081350 \cdot H) \ortiq (T + 0,00178308 \cdot H) ))))$ ,
bu erda $T$ - Rankin shkalasi bo'yicha o'rtacha havo harorati, ° Ra, $H$ - dengiz sathidan balandligi, fut.
Selsiy graduslarini Rankine darajalariga aylantirish:
$^(\circ)Ra = (^(\circ)C \cdot 1.8) + 491.67$
Barometrik formula barometrik tekislash uchun ishlatiladi - balandliklarni aniqlash (0,1 - 0,5% xatolik bilan). Formulada havo namligi va balandlik bilan erkin tushish tezlashuvining o'zgarishi hisobga olinmaydi. Kichkina balandlik farqlari uchun bu eksponensial bog'liqlikni chiziqli bog'liqlik bilan etarlicha aniqlik bilan taxmin qilish mumkin.
Nisbiy bosim QNH(inglizcha) nisbiy bosim, Q-kod Dengiz balandligi) o'rtacha dengiz sathi uchun sozlangan atmosfera bosimi. Oʻrtacha dengiz sathi, MSL) (Uchun ISA va harorat 15 daraja Selsiy) va dastlab ob-havo stantsiyasi joylashgan balandlikni hisobga olgan holda o'rnatiladi. Buni ob-havo xizmati ma'lumotlaridan, jamoat joylarida, aeroportda kalibrlangan asboblarning ko'rsatkichlaridan topish mumkin (hisobotlardan). METAR), Internetdan.
Masalan, yaqin atrofdagi Gomel aeroporti uchun ( UMGG) Haqiqiy ob-havo hisobotini ko'ra olaman METAR ru.allmetsat.com/metar-taf/russia.php?icao=UMGG manzilida:
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD//NOSIG ,
Qayerda Q1014- bosim QNH aeroportda 1014 hPa.
Byulletenlar tarixi METAR aviationwxchartsarchive.com/product/metar saytida mavjud.
Oddiy nisbiy havo bosimi uchun QNH 760 mm Hg bosim qabul qilinadi. Art. yoki 1013,25 hPa (0ºS haroratda, Shimoliy yoki Janubiy yarim sharning 45º kengligida).
Men aneroid barometr uchun bosimni o'rnatdim QNH sezgirlikni sozlash vinti bilan:

Ob-havo bashorati

Bosim o'zgarishini tahlil qilish ob-havo prognozini tuzishga imkon beradi va uning aniqligi qanchalik yuqori bo'lsa, bosim shunchalik keskin o'zgaradi. Misol uchun, eski navigatorning asosiy qoidasi shundaki, 8 soat davomida 10 hPa (7,5 mmHg) bosimning pasayishi kuchli shamol yo'lda ekanligini anglatadi.

Shamol qayerdan keladi? Havo past bosim zonasining markaziga oqadi, shamol- havoning yuqori bosimli joylardan past bosimli hududlarga gorizontal harakati (yuqori atmosfera bosimi havo massalarini past atmosfera bosimi zonasiga siqib chiqaradi). Bosim juda past bo'lsa, shamol yetib borishi mumkin bo'ron. Shu bilan birga, hududda kamayadi bosim (barik depressiya yoki siklon), iliq havo ko'tariladi va bulutlarni hosil qiladi, bu ko'pincha olib keladi yomg'ir yoki qor.

Meteorologiyada shamol yo'nalishi shamol esadigan yo'nalishdir:

Bu yo'nalish sakkiz nuqtaga qisqartiriladi.

Atmosfera bosimi va shamol yo'nalishiga qarab ob-havoni bashorat qilish uchun algoritm ko'pincha ishlatiladi. Zambretti.

Namlik sensori

Havoning nisbiy namligini aniqlash uchun men moduldan foydalanaman DHT11(bozordan sotib olingan eBay):

Namlik sensori DHT11 uchta chiqishga ega - quvvat ( + ), ma'lumotlar ( tashqariga), Yer ( - ):

sensor chiqishi + tashqariga -
xulosa Arduino 5V D10 GND

Sensor bilan ishlash uchun men kutubxonadan foydalanaman adafruit- fayllar DHT.h, DHT.cpp.

Namlik havodagi suv bug'ining miqdorini tavsiflaydi. Nisbiy namlik joriy haroratda mumkin bo'lgan maksimal miqdorga nisbatan havodagi namlik ulushini (foiz sifatida) ko'rsatadi. Nisbiy namlikni o'lchash uchun ishlatiladi :

Bir kishi uchun havo namligining optimal diapazoni 40 ... 60% ni tashkil qiladi.

Haqiqiy vaqt soati

Haqiqiy vaqt soati sifatida men modulni qo'lladim RTC DS1302(bozorda soatli ro'molcha sotib olingan eBay):

Modul DS1302 avtobusga ulangan 3 sim. Ushbu moduldan foydalanish uchun Arduino kutubxona rivojlangan arduino_RTC( dan iarduino.ru).

Modulli taxta DS1302 taxtaning pinlariga ulangan beshta pin bor Arduino Nano:

xulosa RTC VCC GND RST CLK DAT
xulosa Arduino 5V GND D2 D1 D0

Quvvat o'chirilganda soatni to'g'ri ko'rsatish uchun men batareyani doskadagi rozetkaga joylashtirdim. CR2032.

Mening soat modulimning aniqligi unchalik yuqori emas edi - soat to'rt kun ichida taxminan bir daqiqaga tezlashadi. Shuning uchun, men ob-havo stantsiyasini yoqqandan so'ng, Arduinoning A0 piniga ulangan tugmani bosib, daqiqalarni "nol" ga va soatni eng yaqin darajaga qaytardim. Ishga tushirilgandan so'ng, A0 pinidan ketma-ket ulanish orqali ma'lumotlarni uzatish uchun foydalaniladi.

Ma'lumotlarni kompyuterga uzatish va MQTT protokoli orqali ishlash

Seriyali ulanish orqali ma'lumotlarni uzatish uchun Arduino bog‘laydi USB-UART konvertor:

Xulosa Arduino formatda ma'lumotlarni uzatish uchun ishlatiladi 8N1(8 ma'lumot biti, paritet yo'q, 1 to'xtash biti) 9600 bit/s. Ma'lumotlar paketlarda uzatiladi va paket uzunligi 4 ta belgidan iborat. Ma'lumotlarni uzatish "da amalga oshiriladi biroz portlash" rejimi, apparat seriyali portidan foydalanmasdan Arduino.

O'tkazilgan ma'lumotlar formati:

Parametr 1-bayt 2-bayt 3-bayt 4-bayt
tashqi harorat o bo'sh joy yoki minus o'nlab daraja yoki bo'shliq daraja birliklari
xona harorati i bo'sh joy yoki minus o'nlab daraja yoki bo'shliq daraja birliklari
Atmosfera bosimi p yuzlab mm Art. o'nlab mm Hg mmHg birliklari Bilan.
nisbiy namlik h bo'sh joy o'nlab foiz yoki bo'sh joy foiz birliklari
joriy vaqt o'nlab soatlar soat birliklari o'nlab daqiqalar daqiqa birliklari

MQTT

golang dastur - protokol mijozi MQTT, bu ob-havo stantsiyasidan olingan ma'lumotlarni serverga yuboradi ( MQTT-broker) :

Xizmat bepul reja bilan hisob yaratish imkonini beradi " " (cheklashlar: 10 ulanish, 10 Kbps):

Ob-havo stantsiyasining o'qishlarini kuzatish uchun siz foydalanishingiz mumkin Android-ilova :

Oziqlanish

Ob-havo stantsiyasini quvvatlantirish uchun men eski mobil telefondan zaryadlovchidan foydalanaman. Motorola, 0,55 A gacha bo'lgan oqim bilan 5 V kuchlanishni chiqarish va kontaktlarga ulangan 5V(+) va GND (-):

Bundan tashqari, kontaktlarga ulangan quvvat uchun 9 V batareyadan foydalanishingiz mumkin VIN(+) va GND (-).

Ob-havo stantsiyasining ishlashi

Ishga tushganda sensorlar ishga tushiriladi va tekshiriladi.

Sensor yo'qligida DS18x20 sensor bo'lmasa, "E1" xatosi chiqariladi - xato "E3".

Keyin ob-havo stantsiyasining ish tsikli boshlanadi:

  • tashqi haroratni o'lchash va ko'rsatish;
  • xona haroratini o'lchash va ko'rsatish;
  • atmosfera bosimini o'lchash va ko'rsatish va uning o'zgarish tendentsiyasi;
  • havoning nisbiy namligini o'lchash va ko'rsatish;
  • joriy vaqtni ko'rsatish;
  • oy fazasi va oy kunini ko'rsatish.


Mening ob-havo stantsiyamning videosi mening saytimda mavjud -kanal: https://youtu.be/vVLbirO-FVU

Harorat ko'rsatkichi

Haroratni o'lchashda haroratning ikki raqami ko'rsatiladi va salbiy harorat uchun minus belgisi (eng o'ng raqamda daraja belgisi bilan);
tashqi havo harorati uchun daraja belgisi tepada ko'rsatiladi:


xona harorati uchun - quyida:

Bosim ko'rsatkichi

Bosimni o'lchashda bosimning uchta raqami mmHg da ko'rsatiladi ("belgisi bilan" P" eng o'ng raqamda):

Agar bosim keskin tushib qolsa, unda belgi o'rniga " P"belgi" eng o'ngdagi raqamda ko'rsatiladi L"agar u keskin o'sgan bo'lsa - keyin" H". O'zgarishlarning keskinligi mezoni 8 soat ichida 8 mm Hg:

Mening ob-havo stantsiyam mutlaq bosimni ko'rsatganligi sababli ( QFE), keyin o'qishlar xulosadagi ma'lumotlarga nisbatan biroz kam baholangan bo'lib chiqadi METAR(ta'minlaydi QNH) (14 UTC, 2018 yil 28 mart):

Bosim nisbati (ko'ra ATIS) $(1015 \998 dan ortiq) = $1,017 edi. Gomel aeroportining balandligi (ICAO kodi UMGG) dengiz sathidan 143,6 m.. ATIS bo'yicha harorat 1 ° edi C.

Mening ob-havo stantsiyasining ko'rsatkichlari deyarli mutlaq bosimga to'g'ri keldi QFE ga binoan ATIS!

Maks/min bosim ( QFE) mening ob-havo stantsiyasi tomonidan butun kuzatish davri uchun qayd etilgan:

Nisbiy namlik ko'rsatkichi

Havoning nisbiy namligi foiz sifatida ko'rsatiladi (foiz belgisi o'ng tomondagi ikkita raqamda ko'rsatiladi):

Joriy vaqtni ko'rsatish

Joriy vaqt indikatorda "HH:MM" formatida ko'rsatiladi, ajratuvchi ikki nuqta soniyada bir marta miltillaydi:

Oy va oy kunining fazalarini ko'rsatish

Ko'rsatkichning dastlabki ikki raqami joriy oy fazasini, keyingi ikkitasi - joriy oy kunini ko'rsatadi:

Oyning sakkiz fazasi bor (ingliz va rus (ko'k - noto'g'ri) nomlari berilgan):

Faza indikatorida piktogrammalar ko'rsatiladi:

bosqichi piktogramma
o'sayotgan o'roq (hilol)
kamayib borayotgan yarim oy (hilol)

Ma'lumotlarni kompyuterga o'tkazish

Agar siz ob-havo stantsiyasini ulasangiz USB-UART konvertor (masalan, mikrosxema asosida CP2102) ga ulangan USB-kompyuterning porti, keyin siz ob-havo stantsiyasi tomonidan uzatiladigan ma'lumotlarni kuzatish uchun terminal dasturidan foydalanishingiz mumkin:

Men dasturlash tilida ishlab chiqdim golang meteorologik kuzatuvlar jurnalini yurituvchi va ma'lumotlarni xizmatga yuboruvchi dastur va ko'rish mumkin Android-ilova yordamida smartfon :

Meteorologik kuzatuvlar jurnaliga ko'ra, masalan, atmosfera bosimining o'zgarishi grafigini yaratishingiz mumkin:
sezilarli minimal bosimga ega grafik misoli


bosimning engil ortishi bilan grafik misol

Rejalashtirilgan yaxshilanishlar:

  • shamol yo'nalishi va tezlik sensorlarini qo'shish

Meteorologiya stantsiyalarida shamol tezligini o'lchash uchun uch stakanli anemometr (1) va shamol yo'nalishini aniqlash uchun havo pardasi (2) ishlatiladi:

Shamol tezligini o'lchash uchun ham ishlatiladi. filamentli issiq simli anemometrlar(inglizcha) issiq simli anemometr). Isitilgan sim sifatida siz shisha singan lampochkadan volfram filamentidan foydalanishingiz mumkin. Sanoat issiq simli anemometrlarda sensor odatda teleskopik trubkada joylashgan:

Ushbu qurilmaning ishlash printsipi shundaki, issiqlik havo oqimi - shamol orqali konveksiya tufayli isitish elementidan chiqariladi. Bunday holda, filamentning qarshiligi filamentning harorati bilan belgilanadi. $R_T$ filamentining $T$ haroratiga qarshiligining o'zgarishi qonuni quyidagi ko'rinishga ega:
$R_T = R_0 \cdot (1 + (\alpha \cdot (T - T_0))))$,
bu erda $R_0$ - $T_0$ haroratda filament qarshiligi, $\alfa $ - qarshilikning harorat koeffitsienti (volfram uchun $\alpha = 4,5\cdot(10^(-3) (^(\circ)(C^) (-1))))$).

Havo oqimi tezligining o'zgarishi bilan harorat doimiy filament oqimida o'zgaradi (to'g'ridan-to'g'ri oqim bilan anemometr, eng. CCA). Agar isitish elementining harorati doimiy bo'lsa, u holda element orqali oqim havo oqimining tezligiga mutanosib bo'ladi (doimiy harorat anemometri, eng. CTA).

Davomi bor

Noyabr - tushunarsiz ob-havo oyi: ertalab quyosh porladi va tushlik paytida derazadan tashqarida hamma narsa qor bilan oppoq bo'ldi. Arduino-dagi yaxshi eski ob-havo stantsiyasi bu ob-havo rigmarolesini kuzatishga yordam beradi. Bizning eng zo'r uy qurilishi ob-havo stantsiyalari tanlovimizdan ilhom oling va tabiatning kutilmagan hodisalariga doimo tayyor bo'lish va tom ma'noda ko'lmakda o'tirmaslik uchun o'zingiznikini yarating.

bluetooth ob-havo chiroqi

Boshqaruv moslamasi ob-havo ma'lumotlarini qidirish uchun internetni kezadi va Bluetooth orqali signallarni chiroqdagi servo motorga yuboradi, bu prognozga qarab rasmlarni o'zgartiradi. Sizning interyeringizni bezatadigan oddiy va zamonaviy ob-havo stantsiyasi.

Bu erda printsip avvalgi loyihada bo'lgani kabi taxminan bir xil, ammo bajaruvchi qurilma bulut shaklida amalga oshiriladi, bu haroratga qarab rangini o'zgartiradi va servomotor tashqarida issiq yoki sovuq ekanligini ko'rsatadi. Ushbu kulgili mini stantsiya ish stolida ajoyib ko'rinadi.

Ko'proq bulutlarni yoqtiradiganlar uchun yana bir variant bor

Vintage ob-havo stantsiyasi

Vintage gizmoslarini sevuvchilar va tajribali steampunkerlar ob-havo stantsiyasini eski soat ko'rinishida qadrlashlari mumkin.

Twitter ob-havo

Bu oddiy yog'och piramida aslida harorat, havo namligi, bosim, yorug'lik darajasi, CO darajasini o'lchay oladigan va barcha ma'lumotlarni Twitter orqali sizga yuboradigan yuqori texnologiyali ob-havo stantsiyasidir.

Tempeskop

Tempescope - bu yomg'irni uyga olib kelish uchun foydalanishingiz mumkin bo'lgan narsa. Yoki tuman. Yoki hatto momaqaldiroq. Va ular u erda yashaydilar. Endi ona tabiat bugun siz uchun nima tayyorlaganini bilish uchun derazadan tashqariga qarashingiz shart emas.

Kuba ob-havo

Siz nafaqat ob-havo ma'lumotlarini ko'rishingiz, balki his qilishingiz mumkin. Ushbu po'lat krioskop kubi tarmoqdan olingan ma'lumotlarga asoslanib, tashqaridagi haroratgacha qiziydi yoki soviydi. Siz buni koksiksdan bir oz pastroqqa suyanasiz va bugungi kunda ichki shim kiyish kerakmi yoki yo'qmi darhol aniq bo'ladi.

Bo'sh vaqtimda va bu safar men kichik ob-havo stantsiyasini yaratish bo'yicha ko'rsatmalar yozdim. U sana ko'rsatilgan soat sifatida ishlaydi va xona ichidagi va tashqarisidagi haroratni ko'rsatadi. Biz Arduino UNO dan asosiy boshqaruvchi sifatida foydalanamiz, lekin bortida Atmega328p o'rnatilgan boshqa plata buni amalga oshiradi. Displey uchun biz WG12864B grafik ekranidan foydalanamiz. Shuningdek, biz ikkita ds18b20 harorat sensorini ulaymiz. Biri bino ichida, ikkinchisi tashqarida. Boshlaylik.

Uy qurilishi mahsulotlarini ishlab chiqarish jarayonida bizga kerak bo'ladi:

Arduino UNO (Yoki boshqa Arduino bilan mos keladigan plata)
- WG12864B grafik ekrani
- ds18b20 harorat sensori, 2 dona
- Quvvat manbai 6 - 12 V
- Rezistorlar 4,7 Kom 0,25 Vt, 2 dona.
- rezistorlar 100 ohm 0,25 Vt
- 4 ta AAA "kichkina barmoq" batareyalari uchun batareya bo'limi
- SEGA konsol kartridjidan quti
- Izolyatsiya qiluvchi lenta
- ulash simlari
- elektron plata
- Tugmalar
- Kantselyariya pichog'i
- lehimli temir
- Lehim, rozin
- Ikki tomonlama lenta

1-qadam WG12864B3 ni tayyorlang.
Ilgari ekranlar bilan ishlamaganlar bir xil ko'rinadigan ekranlarning ko'p sonli o'zgarishlaridan qo'rqishlari mumkin. Men biroz tushuntiraman. Ushbu turdagi ekranlarning aksariyati ks0107/ks0108 chiplarida ishlaydi. Barcha ekranlarni 4 turga bo'lish mumkin:

Variant A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T

Variant B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ displeylari AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-818, QLDJ28, QLD128, Topway Y-1286 4F, TM12864L-2, 12864J-1

Variant C: Shenzhen Jinghua Displays Co Ltd. JM12864

Variant D: Wintek- Kaskadlar WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS1924

Ular deyarli bir xil ko'rinadi. Lekin ulanish pinlari boshqacha. Men WG12864B3 V2.0 ni tanladim va sizga tavsiya qilaman, lekin agar ekran boshqacha bo'lsa yoki qo'lingizda bo'lmasa, jadval yordamida buni osongina aniqlashingiz mumkin:

Qisqacha spetsifikatsiyalar:

Internetda juda ko'p turli xil ulanish sxemalari mavjud va hamma narsa ishlayotganga o'xshaydi. Gap shundaki, nafaqat turli xil ekranlar, balki ularni ulashning ikkita usuli mavjud: ketma-ket va parallel. Seriyali port ulanishidan foydalanganda bizga faqat 3 ta mikrokontroller chiqishi kerak bo'ladi. Parallel minimal bilan 13. Bu holda tanlov aniq, Arduino baribir ko'p xulosalarga ega emas. Parallel ulanish uchun ulanish sxemasi quyidagicha:

Biz foydalanadigan ketma-ket ulanish uchun sxema quyidagicha:

WG12864B - Arduino UNO 1 (GND) - GND 2 (VCC) - +5V 4 (RS) - 10 5 (R/W) - 11 6 (E) - 13 15 (PSB) - GND 19 (BLA) - qarshilik orqali 100 Ohm - +5V 20 (BLK) - GND

Kontrastni sozlash uchun ekranda potentsiometr bo'lishi kerak. Unsiz ekranlar mavjud, ammo bu hozir juda kam:

5 voltlik kuchlanish orqa yorug'lik diodlarini tasodifan yoqmasligi uchun 100 ohm qarshilik kerak.

2-qadam Vaziyatni shakllantirish.
Koson uchun qutini Sega pristavkasining kartrijidan oling. Agar siz ushbu qutini qo'lingizda topmasangiz, boshqa holatdan foydalanishingiz mumkin. Asosiysi, unga ekran va Arduino mos keladi.

Hech qanday bo'lak qolmasligi uchun qutining tepasida shaffof plyonkani kesib oling:

Keyin, ruhoniy pichoqni ishlatib, ekran uchun 37x69 oynani kesib tashlang.

Orqa tomonda, kesmaning chetida biz ikki tomonlama lentani yopishtiramiz, yaxshisi qora:

Biz himoya qog'ozni yopishqoq lentadan olib tashlaymiz va unga ekranimizni yopishtiramiz:

Tashqi tomondan u quyidagicha ko'rinishi kerak:

Ekran ostida, shuningdek, ikki tomonlama lentada biz Arduino-ni o'rnatamiz, avval USB porti va elektr rozetkasi uchun kesiklar yaratamiz:

Arduino rozetkalari erkin yopilishi uchun qutining har ikki tomonida kesilgan bo'lishi kerak:

3-qadam Harorat sensorlari.
Biz DS18B20 raqamli harorat sensorlaridan foydalanamiz. Ulardan foydalanib, biz -55 ... + 125 ° S keng harorat oralig'ida kattaroq o'lchov aniqligini, 0,5 ° S dan ortiq bo'lmagan xatolikni qo'lga kiritamiz. Bundan tashqari, sensor raqamli bo'lib, barcha hisob-kitoblarni o'zi bajaradi va Arduino shunchaki tayyor o'qishlarni oladi. Ushbu sensorni ulashda DQ va VDD pinlari orasidagi 4,7KŌ tortishish qarshiligi haqida unutmang. Bir nechta ulanish variantlari ham mumkin. Tashqi kuch bilan, menimcha, eng yaxshi variant, biz undan foydalanamiz:

Har qanday quvvat manbai bilan sensorlar parallel ravishda ulanadi:

Biz xona ichidagi harorat sensorini kichik doskaga joylashtiramiz va ikkita tugmachadan soatning vaqti va sanasini o'rnatamiz:

Ikkala tugmachadan umumiy simni GND ga ulaymiz, simni birinchi tugmachadan A0 ga, ikkinchisidan A1 ga ulaymiz.
Biz uni Arduino yonidagi ikki tomonlama lentaga o'rnatamiz:

Xonadan tashqarida joylashtirilishi kerak bo'lgan sensorni metall, chang o'tkazmaydigan korpusda tanlash yaxshidir:

Datchikni derazadan tashqariga osib qo'yish uchun kerakli uzunlikdagi simni hisoblang, asosiysi u 5 metrdan oshmasligi kerak, agar sizga uzunroq uzunlik kerak bo'lsa, tortishish qiymatini kamaytirishingiz kerak bo'ladi. yuqori rezistor.

Ikkala sensorning DQ ma'lumotlar avtobusidan simni Arduino-ning 5-piniga ulaymiz.
Vdd - +5 Arduino.
GND - GND Arduino.

4-qadam Oziqlantirish.
Quvvat uchun siz 6 dan 12 voltgacha bo'lgan kuchlanishli quvvat manbaidan foydalanishingiz mumkin. Quvvat manbai simining oxirida Arduino elektr rozetkasiga mos keladigan vilkasini lehimlang:

Yoki korpusga to'rtta "AAA", "kichkina barmoq" batareyalari uchun batareya bo'linmasini qo'yishingiz mumkin. Va ko'rfazdan musbat simni Vin Arduino-ga, salbiy simni esa GND-ga ulang.

5-qadam Dasturlash muhitini tayyorlang.
Avval Arduino IDE-ni rasmiy veb-saytdan yuklab olishingiz va o'rnatishingiz kerak

Shuningdek, eskiz uchun zarur bo'lgan ikkita kutubxonaga qo'shing. OneWire - ds18b20 sensorlari bilan aloqa qilish uchun zarur:

U8glib - ekranda ma'lumotlarni ko'rsatish uchun ishlatiladi:

Kutubxonalar yuklab olish. Keyin biz arxivlarni ochamiz va arxivlar tarkibini Arduino IDE o'rnatilgan papkada joylashgan "kutubxonalar" papkasiga o'tkazamiz. Arduino IDE orqali kutubxonalarni ham qo'shishingiz mumkin. Buning uchun arxivlarni ochmasdan, Arduino IDE-ni ishga tushiring, menyudan Sketch - Connect Library-ni tanlang. Ochiladigan ro'yxatning eng yuqori qismida "Zip kutubxonasini qo'shish" bandini tanlang. Yuklab olingan arxivlarning joylashuvini belgilang. Barcha qadamlardan so'ng siz Arduino IDE-ni qayta ishga tushirishingiz kerak.

6-qadam Eskizni tahrirlash.
Harorat sensorlari One Wire protokoli yordamida ishlaydi va har bir qurilma uchun noyob manzilga ega - 64 bitli kod. Eskizdagi sensorlarni qidirish uchun buyruqlar qo'shish tavsiya etilmaydi. Sensorlarni hiqillash uchun har safar Arduino-ni yuklashning hojati yo'q. Shuning uchun, birinchi navbatda, hamma narsani yig'ib, biz Arduino eskizini to'ldiramiz, u menyuda joylashgan Fayl - Misollar - Dallas harorati - OneWireSearch. Keyin biz Tools - Port Monitorni ishga tushiramiz. Arduino bizning sensorlarimizni topishi, manzillar va harorat ko'rsatkichlarini yozishi kerak. Ushbu manzillar yozib qo'yilishi yoki biron bir joyga ko'chirilishi kerak. Endi Ard_Tic_Tak_WG12864B_2_x_Term_Serial eskizini oching va qatorlarni qidiring:

Bayt addr1=(0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63);// ichki bayt manzili addr2=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x5, 0x16, sensor);

Biz manzilga mos keladigan sensorlarning manzillarini o'z manzillarimiz bilan almashtiramiz.
Bizning soatimiz RTC modulidan (real vaqt soati) foydalanmaydi, shuning uchun soatni to'g'rilash kerak. Qulaylik uchun qatorni izohdan olib tashlang (ekranda soniyalar paydo bo'ladi):

//u8g.setPrintPos(44, 50); u8g.print(sek); // Harakatning to'g'riligini nazorat qilish uchun soniyalarni chiqaring

Port monitoridan foydalanib, to'g'ri vaqtni o'rnating. Buni amalga oshirish uchun port monitorini oching, dastlabki harorat o'lchovlari tugashini kuting va joriy sana va vaqtni "kun, oy, yil, soat, daqiqa, soniya" formatida kiriting. Bo'shliqlar, raqamlar vergul yoki nuqta bilan ajratilmaydi.

Agar soat shoshayotgan bo'lsa, qiymatni kattaroqqa o'zgartiring, men 100 birlik qadam bilan tajriba o'tkazishni maslahat beraman. Agar orqada qolsa, qatordagi qiymatni kamaytirish kerak:

Agar (micro() - prevmicros >494000) ( // sozlash uchun boshqa narsaga o'zgartiring, u 500000 edi.

Empirik tarzda biz soatning etarlicha aniq ishlashini aniqlaymiz. Harakatning aniqligini aniqlash uchun sizga soniyalar chiqishi kerak. Raqamni aniq kalibrlashdan so'ng, soniyalarni sharhlash va shu bilan ekrandan olib tashlash mumkin.
Eskiz yuklanmoqda.

Negadir shaharni kezib yurganimda yangi ochilgan radioelektronika do‘koniga ko‘zim tushdi. Unga kirib, men Arduino uchun ko'p sonli qalqonlarni topdim. Uyda Arduino Uno va Arduino Nano bor edi va men darhol masofadan turib signal uzatgichlar bilan o'ynash g'oyasini oldim. Men 433 MGts chastotada eng arzon uzatuvchi va qabul qilgichni sotib olishga qaror qildim:

Signal uzatuvchi.


signal qabul qiluvchisi.

Ma'lumot uzatishning eng oddiy eskizini yozib olgandan so'ng (misol bu erdan olingan), ma'lum bo'ldiki, uzatish moslamalari harorat, namlik kabi oddiy ma'lumotlarni uzatish uchun juda mos kelishi mumkin.

Transmitter quyidagi xususiyatlarga ega:
1. Model: MX-FS-03V
2. Harakat radiusi (blokirovka qiluvchi ob'ektlarning mavjudligiga bog'liq): 20-200 metr
3. Ishlash kuchlanishi: 3,5 -12V
4. Modul o'lchamlari: 19 * 19 mm
5. Signal modulyatsiyasi: AM
6. Transmitter quvvati: 10mW
7. Chastotasi: 433 MGts
8. Tashqi antennaning talab qilinadigan uzunligi: 25 sm
9. Ulanish oson (faqat uchta sim): DATA ; VCC; Yer.

Qabul qiluvchi modulning xususiyatlari:
1. Ishlash kuchlanishi: DC 5V
2. Oqim: 4mA
3. Ishlash chastotasi: 433,92 MGts
4. Sezuvchanlik: - 105dB
5. Modul o'lchamlari: 30 * 14 * 7 mm
6. Tashqi antenna talab qilinadi: 32 sm.

Internetning kengligida 2Kb / s tezlikda ma'lumot uzatish diapazoni 150 m gacha yetishi mumkinligi aytiladi. Men buni o'zim tekshirmadim, lekin ikki xonali kvartirada hamma joyda qabul qilinadi.

Uy ob-havo stantsiyasining apparati

Bir nechta tajribalardan so'ng, men Arduino Nano-ga harorat, namlik sensori va transmitterni ulashga qaror qildim.


Harorat sensori DS18D20 arduinoga quyidagicha ulangan:

1) GND mikrokontrollerning minusiga.
2) DQ tortuvchi rezistor orqali erga va Arduinoning D2 piniga
3) Vdd dan +5 V gacha.

MX -FS - 03V transmitter moduli 5 voltdan quvvatlanadi, ma'lumotlar chiqishi (ADATA) D13 piniga ulangan.

Men LCD displey va BMP085 barometrini Arduino Uno-ga uladim.


arduino uno uchun simlar diagrammasi

Signal qabul qiluvchisi D10 piniga ulangan.

BMP085 moduli raqamli atmosfera bosimi sensori. Sensor harorat, bosim va balandlikni o'lchash imkonini beradi. Ulanish interfeysi: I2C. Sensorning besleme kuchlanishi 1,8-3,6 V

Modul Arduino-ga boshqa I2C qurilmalari kabi ulangan:

  • VCC - VCC (3,3V);
  • GND-GND;
  • SCL - analog pin 5 ga;
  • SDA - analog pin 4 ga.
  • Juda past narx
  • Quvvat va kirish/chiqish 3-5V
  • Namlikni 20-80% 5% aniqlik bilan aniqlash
  • 0-50 daraja haroratni aniqlash. 2% aniqlik bilan
  • Ovoz berish chastotasi 1 Gts dan oshmasligi kerak (har 1 soniyada bir martadan ko'p bo'lmagan).
  • Olchamlari 15,5 mm x 12 mm x 5,5 mm
  • Oyoqlar oralig'i 0,1 dyuym bo'lgan 4 pin

DHT 4 ta pinga ega:

  1. Vcc (3-5V quvvat manbai)
  2. Ma'lumotlar chiqishi - ma'lumotlar chiqishi
  3. Ishlatilmayapti
  4. General

D8 Arduino ga ulanadi.

Uy ob-havo stantsiyasi dasturiy ta'minot

Transmitter moduli haroratni har 10 daqiqada o'lchaydi va uzatadi.

Quyida dastur keltirilgan:

/* Sketch 1.0 versiyasi Har 10 daqiqada haroratni yuboring. */ #include #include #include #define ONE_WIRE_BUS 2 //Dallas sensorini ulash uchun pin OneWire oneWire(ONE_WIRE_BUS); Dallas harorat sensorlari (&oneWire); Termometr ichidagi qurilma manzili; bekor o'rnatish(void) ( //Serial.begin(9600); vw_set_ptt_inverted(true); // DR3100 vw_setup(2000) uchun talab qilinadi; // uzatish tezligini (bps) o'rnatish sensors.begin(); agar (!sensors .getAddress) (ichkiTermometr, 0)); printAddress(ichkiTermometr); sensors.setResolution(insideThermometer, 9); ) void printTemperature(DeviceAddress deviceAddress) ( float tempC = sensors.getTempC(deviceAddress); //Serial.print("Temp C:" ); //Serial.println(tempC); //Int raqamini yuborish uchun ma'lumotlarni shakllantirish = tempC; char belgisi = "c"; //Bu sensor ekanligini aniqlash uchun xizmat belgisi String strMsg = "z"; strMsg + = belgi; strMsg += " "; strMsg += raqam; strMsg += " "; char msg; strMsg.toCharArray(msg, 255); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // O'tkazish tugallanishini kuting kechikish(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); } }

Qabul qiluvchi qurilma ma'lumotlarni oladi, xonadagi bosim va haroratni o'lchaydi va uni displeyga uzatadi.

#include #include LiquidCrystal lcd(12, 10, 5, 4, 3, 2); #include dht11 sensori; #define DHT11PIN 8 #include #include BMP085 dps = BMP085(); uzoq Harorat = 0, Bosim = 0, Balandlik = 0; void setup() ( Serial.begin(9600); vw_set_ptt_inverted(true); // DR3100 vw_setup(2000) uchun talab qilinadi; // Qabul qilish tezligini sozlash vw_rx_start(); // Havo monitoringini boshlash lcd.begin(16, 2); Wire.begin(); delay(1000); dps.init(); //lcd.setCursor(14,0); //lcd.write(bayt(0)); //lcd.home(); ) bekor loop() ( uint8_t buf; // Xabar buferi uint8_t buflen = VW_MAX_MESSAGE_LEN; // Bufer uzunligi, agar (vw_get_message(buf, &buflen)) // Agar xabar qabul qilingan bo'lsa ( // Int i tahlilini boshlash; // Xabar bo'lsa bizga murojaat qilinmagan , exit if (buf != "z") ( return; ) char buyrug'i = buf; // Buyruq 2-indeksda // Raqamli parametr 4-indeksdan boshlanadi i = 4; int raqami = 0; // O'tkazish har bir belgi bo'lganligi sababli, belgilar to'plamini raqamga aylantirish kerak bo'lsa (buf[i] != " ") ( raqam *= 10; raqam += buf[i] - "0"; i++; ) dps.getPressure(&Bosim); dps.getAltitude (&Balandlik); dps.getTemperature(&Temperature); //Serial.print(buyruq); Serial.print(" "); Serial.println(raqam); lcd.print("T="); lcd.setCursor(2,0); LCD displey (raqam); lcd.setCursor(5,0); lcd.print("P="); lcd.print(Bosim/133,3); lcd.print("mmH"); lcd.setCursor(0,1); lcd.print("T="); lcd.print (harorat*0,1); lcd.print("H="); lcd.print(sensor.namlik); lcd.home(); //kechikish (2000); int chk = sensor.read (DHT11PIN); switch (chk) (DHTLIB_OK: //Serial.println("OK"); tanaffus; hodisa DHTLIB_ERROR_CHECKSUM: //Serial.println("Tekshiruv summasi xatosi"); tanaffus; case DHTLIB_ERROR_TIMEOUT: //Serial.println("Vaqt tugadi" xato"); sindirish; sukut bo'yicha: //Serial.println("Noma'lum xato"); sindirish; ) ) )

P.S. Kelajakda men quyidagilarni qo'shishni rejalashtirmoqdaman:
- transmitterga namlik sensori, ma'lumotlarni uzatish algoritmini qayta ishlash
- shamol tezligi va yo'nalishini o'lchash uchun sensor.
- qabul qiluvchiga boshqa displey qo'shing.
- qabul qiluvchi va uzatgichni alohida mikrokontrollerga o'tkazish.

Quyida sodir bo'lgan voqeaning fotosurati:

Radio elementlari ro'yxati

Belgilanish Turi Denominatsiya Miqdori EslatmaDo'konMening bloknotim
uzatuvchi qism.
Arduino taxtasi

Arduino Nano 3.0

1 Bloknot uchun
harorat sensori

DS18B20

1 Bloknot uchun
Rezistor

220 ohm

1 Bloknot uchun
transmitter moduliMX-FS-03V (433 MGts)1 Bloknot uchun
radio qabul qiluvchi qismi.
Arduino taxtasi

Arduino Uno

1 Bloknot uchun
Trimmer qarshiligi 1 Bloknot uchun
Rezistor


“Shunday ekan, keling, darhol kelishib olaylik: siz Gollivud uchun film yaratmoqchi emassiz. Hatto Mo'jizalar mamlakatida ham barcha skriptlarning besh foizidan ko'pi tasdiqlanmagan va faqat bir foizi ishlab chiqarishga kiradi ... Shunday qilib, bularning o'rniga siz o'zingizning Gollivudingizni yaratmoqchisiz.
Ed Gaskel "Raqamli kino yoki uyda Gollivudni suratga olish"

Muqaddima

Nima, boshqa Arduino ob-havo stantsiyasi?! Ha, yana bir narsa va, menga nimadir aytadi, narsalarning Internetdagi oxirgisi emas.


Har bir dasturchi “Salom dunyo!” dasturini yozishi talab qilinganidek, har bir arduiniyalik oddiy yoki unchalik katta bo'lmagan ob-havo stantsiyasini qurish tajribasiga ega bo'lishi kerak.
Internetda allaqachon yaratilgan ob-havo stantsiyalarining ko'plab loyihalari tasvirlangan, o'quvchi amalga oshirish uchun ulardan istalganini tanlashi mumkin. Ochig'ini aytganda, men o'nga yaqin shunga o'xshash loyihalarni va bir nechta tegishli loyihalarni sinchkovlik bilan o'rganib chiqdim. Shuning uchun men hamma narsani noldan yaratdim, deyish mumkin emas, albatta, men "gigantlar yelkasida turdim".


Darhol aytishim kerakki, mening rejalarim ma'lumotlarni saqlash va ko'rsatish uchun uchinchi tomon xizmatlaridan foydalanishni o'z ichiga olmaydi. Men boshidan oxirigacha, A dan Z gacha hammasi qanday ishlashini shaxsan his qilishni va tushunishni xohlardim.


Shunday qilib, tezda biror narsani yo'qdan perchinlashni xohlaydiganlar uchun ushbu maqolalar turkumi mos emas. Yig'ish bo'yicha ko'rsatmalarga ega bo'lgan tayyor to'plamni sotib olish osonroq. Mikroelektronika bo'yicha mutaxassislarning bu erda hech qanday aloqasi yo'q, ehtimol kishnaydi va sayohat boshida o'zlarini eslaydi.
Lekin haqiqatan ham tushunmoqchi bo'lganlar uchun bu ularga yoqadi deb o'ylayman. Ehtimol, material o'quv qo'llanmasi sifatida foydali bo'ladi.



Ushbu loyiha 2016 yilda amalga oshirilgan, ammo umid qilamanki, u hali ham dolzarbdir.

Texnologiya to'plami

Biz oddiy va murakkab narsalarni o'rganamiz va ishlaymiz:

  • DHT22, DHT11 tipidagi harorat va namlik sensorlari
  • BMP180 tipidagi barometrik bosim sensori
  • WiFi moduli ESP8266
  • radio modul turi nRF24 2,4 gigagertsli
  • oila Arduino Pro Mini, Arduino Mega
  • quyosh panellari va batareyalar
  • C/C++ dasturlash tili
  • PHP dasturlash tili
  • MySQL ma'lumotlar bazasini boshqarish tizimi
  • Java dasturlash tili va Android tizimi (smartfonda ob-havo ma'lumotlarini ko'rsatish uchun Adnroid ilovasini yaratish).

Ro'yxatda keltirilgan mavzularning ba'zilari la'natga arzimaydi, ba'zilari esa yillar davomida o'rganilishi mumkin. Shuning uchun, biz murakkab narsalarga faqat ushbu loyiha bilan bevosita bog'liq bo'lgan qismda to'xtalamiz, shunda hammasi qanday ishlashini tushunasiz.


Lekin boshidan boshlaymiz To'g'ri. Ya'ni, kelajakdagi qurilmaning tavsifi va dizaynidan "qog'ozda" Shunday qilib, oxirida har bir g'isht o'z o'rnida yotardi.

prototiplash

Vikipediya bizga to'g'ri aytganidek, prototiplash ishchi tizimni amalga oshirishning tezkor loyihasidir. Ha, bu butunlay samarasiz va ba'zi xatolar bilan ishlamaydi, lekin hunarmandchilikni sanoat namunasiga aylantirish kerakmi yoki yo'qmi, degan fikrni beradi. Prototipni yaratish jarayoni uzoq davom etmasligi kerak. Prototiplash bosqichi tizimni tahlil qilish va uni takomillashtirishdan so'ng amalga oshiriladi.


Ammo bu ishchilar to'liq vaqt ishlaydigan sanoatda.


Kechqurun uy hayvonlari loyihasi hunarmandchiligini "narsalar interneti" uchun perchinlagan har bir kishi, ular prototip, yarim tayyor mahsulotni yaratayotganini bilishi kerak. Oddiy sanoat mahsuloti darajasidan juda uzoqdir. Shunung uchun siz bizning havaskor hunarmandchilikni hayotni qo'llab-quvvatlashning muhim sohalariga ishonib topshirmasligingiz kerak va ular bizni tushkunlikka tushirishlariga umid qilamiz.


Sanoat mahsuloti sanoat elementi bazasida qurilgan bo'lib, so'ngra eng ko'p sotuvchiga aylanishidan oldin disk raskadrovka, sinov va texnik xizmat ko'rsatish kabi ko'plab bosqichlardan o'tadi.


Shunday qilib, bu zerikarlilarning o'rniga biz o'z o'yinchoqimizni yaratamiz, lekin oddiy emas. Texnik ijodkorlik elementlari, dasturlashning boshlanishi va boshqa ko'plab tegishli narsalarni bilish (yaratish jarayonida).


Albatta, elektronika muhandislari dasturlash bosqichida qiynaladi va dasturchilar sxemalar ustida ter to'kishlari kerak bo'ladi, lekin muallif hamma narsani iloji boricha qulayroq qilib ko'rsatishga harakat qiladi va nima uchun muayyan echimlar ishlatilganligini aniq tasvirlab beradi.

Talablar

Odatda bu bosqich o'tkazib yuboriladi. Hozirda shunga o'xshash biror narsa qilishga qaror qilish va keyin butun loyihani boshi berk ko'chaga solib qo'yadigan yoki hatto chidab bo'lmas holga keltiradigan kichik tafsilotlar paydo bo'ladi. Bizning barcha istaklarimiz ro'yxati yozib olinishi kerak, men buning uchun Google Drive-dan foydalanaman, u kompyuterdan va mobil qurilmadan mavjud.


Shunday qilib, bizning ob-havo stantsiyamiz:

  • tashqarida harorat va namlikni o'lchash
  • uydagi harorat va namlikni o'lchash
  • atmosfera bosimini o'lchash
  • ko'rsatilgan qiymatlarni displeyda ko'rsatish
  • ma'lumotlarni Internetdagi serverga o'tkazish, u erda ma'lumotlar ma'lumotlar bazasida saqlanadi va veb-sahifada ko'rsatiladi yoki mobil ilovada ishlatiladi.

Amaldagi sensorlar eng oddiy va arzon. Misol uchun, oldinga qarab, DHT22 haroratni juda aniq o'lchaydi, deb aytaman, lekin namlik bilan bir oz noto'g'ri. Ammo, yana takrorlayman, bu muhim emas, chunki oldimizda prototip bor va 5% namlikning tarqalishi hayotimizdagi muhim narsaga ta'sir qilmaydi.


Tizim arxitekturasi, apparat va dasturiy ta'minoti tizimni yangi sensorlar va yangi imkoniyatlarni qo'shish uchun yanada kengaytirilishiga imkon berishi kerak.

Temir. Komponent tanlash

Bu eng muhim qism bo'lib, umuman lehimlash yoki dasturlash emas. Tizimga qo'yiladigan talablarni aniqlagandan so'ng, ular aynan nimalar yordamida amalga oshirilishini hal qilish kerak.


Bu erda bitta nuance bor. Komponentlarni tanlash uchun siz ularning imkoniyatlarini yaxshi bilishingiz kerak, texnologiyalarning o'zlarini bilishingiz kerak. Ya'ni, boshqacha qilib aytganda, bu erda siz boshlang'ich elektronika muhandisi va dasturchidan uzoq bo'lishingiz kerak. Xo'sh, endi bir necha yilni barcha mumkin bo'lgan qurilmalarni o'rganish uchun nima qilish kerak?


Shafqatsiz doira? Ammo ularni buzish uchun ayovsiz doiralar mavjud.


Chiqish bor. Siz shunchaki birovning loyihasini olib, takrorlashingiz mumkin. Men ob-havo stantsiyalarining allaqachon mavjud loyihalarini o'rganib chiqdim va umid qilamanki, oldinga qadam tashladim.


Shunday qilib. Meteorologiya stansiyasining arxitekturasi Arduinoga asoslangan. Chunki Arduino-ga kirishning kichik chegarasi bor va men bu bilan allaqachon shug'ullanganman. Keyin tanlash osonroq bo'ladi.


Shu zahotiyoq ob-havo stansiyasi masofadan turib, derazadan tashqaridagi sensor va markaziy modulni o'z ichiga olishi aniq bo'ldi.


Markaziy, asosiy blok yopiq joylarda joylashgan bo'ladi. Buni dastlabki bosqichda aniqlash juda muhim, ishning harorat rejimi va undan "raqs" kuchi kabi muhim xususiyatlar.


Masofaviy sensor (yoki sensorlar) "miyasiz" bo'ladi, uning vazifasi vaqti-vaqti bilan o'lchovlarni olib borish va ma'lumotlarni markaziy uy blokiga uzatishdir. Markaziy blok barcha sensorlardan ma'lumotlarni oladi, ularni ekranda ko'rsatadi va ma'lumotlar bazasiga Internetga yuboradi. Xo'sh, u erda bu juda oson, ma'lumotlar ma'lumotlar bazasida bo'lishi bilan siz u bilan xohlagan narsani qilishingiz mumkin, hatto grafiklarni chizishingiz mumkin.


Tashqi dunyo bilan aloqa qilish uchun Internet ESP8266 WiFi moduli tomonidan deyarli hech qanday alternativasiz tanlandi (eslatma, ehtimol endi bunday alternativalar paydo bo'lgan). Arduino uchun Ethernet kengaytirish platalari mavjud, lekin men umuman kabelga bog'lanishni xohlamadim.



Qiziqarli savol tashqi sensor (yoki sensorlar, tizimni kengaytirish talabi haqida eslaysizmi?) Va markaz o'rtasidagi aloqani qanday ta'minlash kerak edi. 433 MGts chastotali radio mayoqlar, albatta, mos kelmaydi (ular hech narsa uchun mos emas).


ESP8266 qayta ishlatilsinmi?


Ushbu yechimning kamchiliklari:

    Uydan tashqarida barqaror Wi-Fi talab qilinadi

    aloqa diapazoni katta bo'lmaydi

    ishonchlilik yomonlashadi, agar Internet ishlamay qolsa, biz masofaviy sensorlarimizni ko'rmaymiz

    ko'proq quvvat sarfi.

    Quvvat iste'moli ESP8266:

    120-170 mA uzatishda

    50-56 mA qabul qilishda

    Chuqur uyqu rejimida 10 µA (µA)

    o'chirilgan holat 5 µA (µA).

Oxir-oqibat, masofaviy datchiklarni asosiy uy blokiga ulash uchun nRF24L01 + chipi 2,4 gigagertsli uzatuvchi va bitta shishada qabul qiluvchi, qo'shimcha tashqi antenna bilan, albatta, devorlarni "yorib o'tish" uchun tanlangan.



Quvvat iste'moli nRF24L01+ 2,4 GHz:

  • 11 mA qabul qilganda
  • 2Mbps tezlikda uzatishda - 13 mA
  • kutish I rejimida - 26 mkA (mkA)
  • o'chirilgan holat 900 nA (nA).

ESP8266 ham, nRF24L01+ ham mos ish harorati oralig'iga ega: -40 ℃ dan +80 ℃ gacha.


Siz nRF24L01+ ni taxminan 1 dollarga yoki tashqi antenna bilan 3 dollarga sotib olishingiz mumkin. Siz ESP8266-01 ni taxminan 4 dollarga sotib olishingiz mumkin. Mahsulot tavsifini diqqat bilan o'qing! Aks holda, bitta antenna sotib oling.


Tizimning yadrosi paydo bo'ldi. Keling, sensorlarning o'ziga o'taylik.


Ko'chada, siz bilganingizdek, harorat salbiy qiymatlarga yetishi mumkin, shuning uchun DHT11 sensori mos emas, lekin DHT22 to'g'ri.



DHT22 / AM2302 texnik xususiyatlari:

  • 3,3V dan 5V gacha quvvat manbai, 5V tavsiya etiladi
  • o'lchash va ma'lumotlarni uzatish vaqtida maksimal iste'mol 2,5mA
  • namlikni o'lchash diapazoni 0-100% xato bilan 2-5%
  • haroratni o'lchash diapazoni -40 dan +125 ° C gacha, ± 0,5 ° S xatolik bilan
  • 0,5 Gts dan ortiq bo'lmagan o'lchash uchun so'rov - har 2 soniyada bir marta.

Uyning ichida, umid qilamanki, hech qanday salbiy harorat bo'lmaydi, shuning uchun siz DHT11 dan foydalanishingiz mumkin, ayniqsa menda allaqachon bor edi.


DHT11 xususiyatlari:

  • 3,3 V dan 5 V gacha quvvat manbai
  • iste'mol 2,5 mA maksimal, o'lchash va ma'lumotlarni uzatish vaqtida
  • namlikni o'lchash diapazoni 20-80% xato bilan 5%
  • ± 2 ° S xatolik bilan 0 dan +50 ° C gacha bo'lgan haroratni o'lchash diapazoni
  • 1 Gts dan ortiq bo'lmagan o'lchov so'rovi - soniyada bir marta.

DHT22 ni taxminan 3 dollarga sotib olishingiz mumkin. DHT11 narxi kamroq - $1, lekin u ham kamroq aniq.


Endi yana Arduino-ga qayting. Qaysi taxtani tanlash kerak?


Men tizimning alohida qismlarini Arduino UNO da sinab ko'rdim. Bular. Men ESP modulini uno ga uladim va uni o'rganib chiqdim, o'chirib qo'ydim, keyin nRF24 ni uladim va hokazo. Deraza sensorini yakuniy amalga oshirish uchun men Arduino Pro Mini-ni Uno-ga eng yaqin miniatyura sifatida tanladim.



Quvvat iste'moli nuqtai nazaridan, Arduino Pro Mini ham yaxshi ko'rinadi:

  • o'zi juda ko'p "yeydi" USB-TTL konvertori yo'q,
  • LED 10k rezistor orqali ulanadi.

Kengaytirilgan energiya tejash uchun quyidagilar rejalashtirilgan edi:

  • Arduino Pro Mini-dagi LED quvvat indikatorini olib tashlang (taxtani buzmaganimdan afsusdaman)
  • yoki Atmel ATmega328 mikroprotsessorida "yalang'och" yig'ilishdan foydalaning (uni ishlatmagan)
  • Kam quvvatli kutubxona yoki JeeLib dan foydalaning.

Kutubxonalardan men Kam quvvatli kutubxonani tanladim, u oddiy va faqat sizga kerak bo'lgan narsalarni o'z ichiga oladi.


Markaziy blok uchun unga ko'plab tashqi qurilmalarni ulash rejalashtirilganligi sababli, Arduino Mega platasi tanlangan. Bundan tashqari, u UNO bilan to'liq mos keladi va ko'proq xotiraga ega. Oldinga qarab, bu tanlov to'liq oqlandi, deb aytaman.


Arduino Mega-ni taxminan 8 dollarga sotib olishingiz mumkin.

Quvvat va quvvat sarfi

Endi oziq-ovqat va energiya iste'moli haqida.


Arduino Pro Mini-ning ikki turi mavjud:

  • besleme zo'riqishida 5V va chastota 16MHz uchun
  • 3,3V kuchlanish va 8 MGts chastota uchun.

nRF24L01+ radio moduli quvvat manbai uchun 3,3V quvvat talab qilgani va bu yerda tezlik muhim emasligi sababli, 8MHz va 3,3V chastotada Arduino Pro Mini sotib oling.


Bunday holda, Arduino Pro Mini ning besleme kuchlanish diapazoni:

  • 3.3V modeli uchun 3.35-12V
  • 5V modeli uchun 5-12V.

Menda allaqachon 5V Arduino Pro Mini bor edi, shuning uchun men undan foydalandim. Arduino Pro Mini-ni taxminan 4 dollarga sotib olishingiz mumkin.


Markaziy blokning quvvat manbai 12V, 450mA, 5W chiqishini beruvchi kichik quvvat manbai orqali 220 V tarmog'idan bo'ladi. 5 dollarga shunga o'xshash narsa. 5V uchun alohida chiqish ham mavjud.



Va agar bu etarli bo'lmasa, uni yanada kuchliroq qilib qo'yishingiz mumkin. Boshqacha qilib aytganda, markaziy blok uchun quvvatni tejash juda mantiqiy emas. Ammo masofaviy simsiz sensor uchun energiya tejash eng muhim qismdir. Lekin men ham funksionallikni yo'qotmoqchi emasman.


Shu sababli, Arduino Pro Mini va nRF24 radio moduli 4 ta Ni-Mh batareyalar to'plamidan quvvat oladi.


Va esda tuting zamonaviy batareyaning maksimal quvvati taxminan 2500-2700 mAh, boshqa narsa marketing hiylasi (Ansmann 2850) yoki yolg'on (UltraFire 3500).


Men bir necha sabablarga ko'ra Li-Ion batareyalardan foydalanmayman:

  • juda qimmat
  • atrof-muhit harorati 0 ° C dan pastga tushganda, lityum-ion batareyaning quvvati 40-50% gacha kamayadi.
  • arzon bo'lganlar himoyasiz ishlab chiqariladi va xavfsiz emas (qisqa tutashuv yoki zaryadsizlanish paytida ular portlashi va yonishi mumkin, YouTube-da bir nechta videolarni ko'ring)
  • qariydi, hatto ular ishlatilmasa ham (ammo buni barcha kimyoviy elementlar haqida aytish mumkin), 2 yildan so'ng Li-Ion batareyasi o'z quvvatining taxminan 20 foizini yo'qotadi.

Prototip uchun yuqori sifatli Ni-MH AA yoki AAA batareyalari bilan ishlash juda mumkin. Bundan tashqari, bizga katta oqimlar kerak emas. Ni-MH batareyalarining yagona kamchiliklari ularning uzoq zaryadlash vaqtidir.

Meteorologiya stansiyasining umumiy sxemasi

Keling, xulosa qilaylik. Mana bularning barchasi qanday ishlashining umumiy diagrammasi.



Davomi bor.

Maqola yoqdimi? Do'stlaringizga ulashing: