Ардуино утасгүй мэдрэгч бүхий гэрийн цаг агаарын станц. Arduino дээрх гэрийн цаг агаарын станц болон "Ардын хяналт" руу мэдээлэл илгээж байна. Шинэчлэлт рүү шилжиж байна

Хотоор зугаалж яваад нэгэн шинэ цахилгаан барааны дэлгүүр нээгдсэн байхыг харлаа. Тэнд орсны дараа би Arduina-д зориулсан олон тооны бамбай олсон. Би гэртээ 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. Мэдрэмж: - 105дБ
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 В

Модуль нь бусад I2C төхөөрөмжүүдийн нэгэн адил Arduino-д холбогдсон байна.

  • 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 // Dallas OneWire oneWire мэдрэгчийг холбох зүү (ONE_WIRE_BUS); Даллас температур мэдрэгч (& oneWire); Термометр доторх төхөөрөмжийн хаяг; хүчингүй тохиргоо (хүчингүй) (//Serial.begin(9600); vw_set_ptt_inverted (үнэн); // DR3100 vw_setup (2000)-д шаардлагатай; // Дамжуулах хурдыг (bps) тохируулах sensors.begin (); хэрэв (! мэдрэгч .getAddress) (дотор термометр, 0)); хэвлэх хаяг (дотор термометр); sensors.setResolution (дотор термометр, 9);) хүчингүй хэвлэхТемператур (Төхөөрөмжийн хаяг төхөөрөмжийн хаяг) (хөвөгч tempC = sensors.getTempC (төхөөрөмжийн хаяг); //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) (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); #include dht11 мэдрэгч; #тодорхойлох DHT11PIN 8 #include #include BMP085 dps = BMP085 (); урт Температур = 0, Даралт = 0, Өндөр = 0; хүчингүй тохиргоо () (Serial.begin (9600); vw_set_ptt_inverted (үнэн); // DR3100 vw_setup (2000)-д шаардлагатай); // vw_rx_start хүлээн авах хурдыг тохируулах (); // lcd.begin нэвтрүүлгийг хянаж эхлэх (16, 2) ); Wire.begin (); саатал (1000); dps.init (); //lcd.setCursor(14,0); //lcd.write (байт(0)); //lcd.home (); ) хүчингүй давталт () (uint8_t buf; // мессежийн буфер uint8_t buflen = VW_MAX_MESSAGE_LEN; // Хэрэв буферийн урт (vw_get_message (buf, & buflen))) // Хэрэв мессеж ирсэн бол (// Int i задлан шинжилж эхлэх; // Хэрэв мессеж бидэнд хаяглаагүй бол гарах if (buf! = "z") (return;) char команд = buf; // Команд 2-р индекс дээр байна // Тоон параметр 4-р индексээс эхэлнэ i = 4; int тоо = 0; // Дамжуулалт нь тэмдэгт тэмдэгт тул та тэмдэгтийн багцыг тоо болгон хөрвүүлэх шаардлагатай (buf [i]! = "") (тоо * = 10; тоо + = buf [i] - "0"; i ++;) dps.getPressure (& даралт); dps.getAltitude (& Өндөр); dps.getTemperature (& Температур); //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 ("ммH"); 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("Шалгах нийлбэрийн алдаа"); завсарлага; тохиолдол 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 Тэмдэглэлийн дэвтэрт
Trimmer резистор 1 Тэмдэглэлийн дэвтэрт
Эсэргүүцэл

Саяхан миний нэг мэргэжил нэгт шинжлэх ухааны бяцхан үзэсгэлэн гаргасан.
Багш маань намайг коллежийн оюутнуудад электроникийн төсөл танилцуулахыг хүссэн. Надад сонирхолтой бөгөөд хангалттай энгийн зүйл бодож олоход хоёр өдөр байсан.



Энд цаг агаарын нөхцөл байдал нэлээд өөрчлөгдөж, температур 30-40 хэмийн хооронд хэлбэлздэг тул би гэртээ цаг уурын станц хийхээр шийдсэн.

Гэрийн цаг уурын станц ямар үүрэг гүйцэтгэдэг вэ?
Дэлгэцтэй 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
  • Gnd - Gnd-тэй
  • Өгөгдөл - Arduino-ийн хоёр дахь зүү рүү

Алхам 3: BMP180 даралт мэдрэгч



BMP180 нь I2C интерфейстэй барометрийн даралт мэдрэгч юм.
Барометрийн даралт мэдрэгч нь орчны агаарын үнэмлэхүй утгыг хэмждэг. Энэ үзүүлэлт нь цаг агаарын тодорхой нөхцөл, өндрөөс хамаарна.

BMP180 модуль нь 3.3V 662kOhm тогтворжуулагчтай байсан бөгөөд би өөрийнхөө тэнэг байдлаас болж санамсаргүйгээр дэлбэлсэн. Би чип рүү шууд эрчим хүчний хяналт хийх шаардлагатай болсон.

Тогтворжуулагч байхгүй тул би тэжээлийн эх үүсвэрийг сонгоход хязгаарлагдмал байна - 3.3V-ээс дээш хүчдэл нь мэдрэгчийг устгах болно.
Бусад загваруудад тогтворжуулагч байхгүй байж магадгүй тул нэгийг нь шалгаарай.

Arduino-тай мэдрэгч ба I2C автобусны холболтын диаграмм (нано эсвэл uno)

  • SDA - A4
  • SCL - A5
  • VCC - 3.3V
  • GND - GND

Даралт, түүний температур, өндрийн хамаарлын талаар бага зэрэг яръя.

Аль ч цэг дэх атмосферийн даралт тогтмол биш байна. Дэлхийн эргэлт, дэлхийн тэнхлэгийн хазайлт хоорондын нарийн төвөгтэй харилцан үйлчлэл нь өндөр ба нам даралтын олон бүсүүд үүсэхэд хүргэдэг бөгөөд энэ нь эргээд цаг агаарын нөхцөл байдлыг өдөр бүр өөрчлөхөд хүргэдэг. Даралтын өөрчлөлтийг ажигласнаар та цаг агаарын богино хугацааны урьдчилсан мэдээг гаргаж чадна.

Жишээлбэл, даралтын уналт нь ихэвчлэн бороотой цаг агаар эсвэл удахгүй болох аянга цахилгаантай (бага даралтын газар, циклон руу ойртох) гэсэн үг юм. Даралт ихсэх нь ихэвчлэн хуурай, цэлмэг цаг агаар (таны дээгүүр өндөр даралтын бүс, антициклон байдаг) гэсэн үг юм.

Агаар мандлын даралт мөн өндрөөс хамаарч өөрчлөгддөг. Эверест дэх суурь баазын үнэмлэхүй даралт (далайн түвшнээс дээш 5400 м) нь Дели дэх үнэмлэхүй даралтаас (далайн түвшнээс дээш 216 м) доогуур байна.

Үнэмлэхүй даралтын уншилтууд байршил бүрт өөрчлөгддөг тул бид харьцангуй даралт буюу далайн түвшний даралтыг хэлнэ.

Өндөр хэмжилт

Далайн түвшний дундаж даралт 1013.25 ГПа (эсвэл миллибар) байна. Хэрэв та агаар мандлаас дээш гарвал энэ утга тэг болж буурдаг. Энэ уналтын муруй нь нэлээд ойлгомжтой тул та дараах тэгшитгэлийг ашиглан өндрийг өөрөө тооцоолж болно: alti = 44330 *

Хэрэв та далайн түвшний 1013.25 GPa даралтыг p0 гэж авбал тэгшитгэлийн шийдэл нь таны одоогийн өндөр болно.

Урьдчилан сэргийлэх арга хэмжээ

BMP180 мэдрэгч нь агаарын даралтыг уншихын тулд хүрээлэн буй орчны агаар мандалд нэвтрэх шаардлагатай гэдгийг санаарай, мэдрэгчийг хаалттай орон сууцанд бүү хий. Жижиг агааржуулалтын нүх хангалттай байх ёстой. Гэхдээ үүнийг хэт нээлттэй орхиж болохгүй - салхи нь даралт, өндрийн заалтыг унагана. Салхины хамгаалалтыг анхаарч үзээрэй.

Халуунаас хамгаалах. Даралтыг хэмжихийн тулд температурын нарийвчлалыг хэмжих шаардлагатай. Мэдрэгчийг температурын эрс тэс байдлаас хамгаалахыг хичээ, өндөр температурын эх үүсвэрийн ойролцоо бүү орхи.

Чийгнээс хамгаална. BMP180 мэдрэгч нь чийгийн түвшинд мэдрэмтгий тул мэдрэгч дээр ус орохоос урьдчилан сэргийлэхийг хичээ.

Мэдрэгчийг хааж болохгүй. Мэдрэгч дэх силикон нь чипний тагны нүхээр нэвтэрч чаддаг гэрэлд мэдрэмтгий байсан нь гэнэтийн зүйл байв. Хамгийн зөв хэмжилт хийхийн тулд мэдрэгчийг орчны гэрлээс хамгаалахыг хичээ.

Алхам 4: төхөөрөмжийг угсрах







Arduino Nano-д зориулсан нэг эгнээ холбогч суурилуулах. Үндсэндээ бид тэдгээрийг зөв хэмжээгээр нь огтолж, бага зэрэг зүлгүүрээр хийсэн тул тэд яг л адилхан харагдаж байна. Дараа нь бид тэдгээрийг гагнах болно. Үүний дараа бид DHT22 мэдрэгчийн нэг эгнээний холбогчийг суурилуулна.

Өгөгдлийн зүүгээс газард (Gnd) 10 кОм эсэргүүцэл суурилуулна. Бид бүгдийг гагнах.
Дараа нь ижил аргаар бид BMP180 мэдрэгчийн нэг эгнээний холбогчийг суурилуулж, тэжээлийн хангамж 3.3V байна. Бид бүгдийг I2C автобусанд холбодог.

Эцэст нь бид LCD дэлгэцийг BMP180 мэдрэгчтэй ижил I2C автобусанд холбодог.
(Би дараа нь RTC модулийг (бодит цагийн цаг) дөрөв дэх холбогчтой холбохоор төлөвлөж байгаа бөгөөд ингэснээр төхөөрөмж мөн цагийг харуулдаг).

Алхам 5: кодчилол




Номын санг ачаалах

Arduino дээр номын санг суулгахын тулд холбоосыг дагана уу

#оруулна
#include #include #include "DHT.h" #include

SFE_BMP180 даралт;

#DEFine ALTITUDE 20.56 #define 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

#DHTPIN 2-г тодорхойл // бид ямар дижитал пинтэй холбогдож байна

// "Ашиглаж байгаа төрлөөсөө үл хамааран тайлбарыг арилгана уу! // # DHTTYPE DHT11-г тодорхойл. // DHT 11 # DHTTYPE DHT22-г тодорхойлно уу // DHT 22 (AM2302), AM2321 DHT dht (DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd (I2C_ADDR, Enpin, Enpin_ADDR_) Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); хөвөх t1, t2;

хүчингүй тохиргоо () (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); хэрэв (төлөв! = 0) (Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Baro температур:"); lcd.setCursor (0,1 ); lcd.print (T, 2); lcd.print ("deg C"); t1 = T; саатал (3000);

статус = даралт.startPressure (3); хэрэв (төлөв! = 0) (// Хэмжилт дуусахыг хүлээнэ үү: саатал (төлөв);

статус = даралт.getPressure (P, T); хэрэв (төлөв! = 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.readHumidity (); // Температурыг Цельсийн хэмээр унших (анхдагч) 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); // lcd.print ("DHT Tempurature:") 2-р мөрийн эхлэл рүү очих; lcd.setCursor (0,1); lcd.print (t); lcd.print ("deg C"); саатал (3000); lcd.clear (); lcd.setCursor (0,0); // 2-р мөрийн эхлэл рүү очно уу lcd.print ("Дунд зэргийн температур:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print ("deg C"); саатал (3000); )

Би Arduino 1.6.5 хувилбарыг ашигласан, код нь яг тохирсон, дараачийнх нь хувьд бас таарч болно. Хэрэв ямар нэг шалтгааны улмаас код тохирохгүй байвал 1.6.5 хувилбарыг үндсэн хувилбар болгон ашиглаарай.

Цаг агаар харах нь маш их сэтгэл хөдөлгөм юм. Би цаг уурын станцаа алдартай дээр үндэслэн барихаар шийдсэн .

Цаг уурын станцын прототип нь дараах байдалтай байна.

Миний цаг уурын станцын чиг үүрэг:

  • өрөөний болон гаднах температурыг хэмжих, харуулах;
  • одоогийн цагийг харуулах (цаг, минут);
  • сар, сарны өдрийн одоогийн үе шатуудыг харуулах;
  • хэмжилтийн үр дүнг цуваа холболтоор компьютерт дамжуулах;
  • хэмжилтийн үр дүнг протоколоор дамжуулах MQTTкомпьютер дээрх програм ашиглах.


Hex
-файл
зориулсан програм хангамж (2018 оны 5-р сарын 9-ний өдрийн хувилбар) - .
Хэрхэн анивчих вэ зургаан өнцөгт- самбар руу файл ArduinoБи тайлбарласан.

Arduino Nano 3.0 микроконтроллер

Миний цаг уурын станцын зүрх нь микроконтроллер юм eBay):

Мэдрэгчийн заалт, санал хураалтыг хянахын тулд би таймер 1 ашигладаг Arduino 200 Гц давтамжтай тасалдлыг үүсгэдэг (хугацаа - 5 мс).

Үзүүлэлт

Мэдрэгчийн хэмжсэн заалт болон одоогийн цагийг харуулахын тулд би холбогдсон Arduinoдөрвөн оронтой LED үзүүлэлт Foryard FYQ-5643BHнийтлэг анодтой (бүх цэнэгийн ижил сегментийн анодыг нэгтгэсэн).
Үзүүлэлт нь долоон сегментийн дөрвөн оронтой, хоёр хуваах (цагт) цэгийг агуулна.

Заагч анодууд нь гүйдэл хязгаарлах резистороор дамжуулан терминалуудад холбогддог Arduino:

гадагшлуулах 1 2 3 4
гаралт A3 А2 D3 D9

Катодуудыг тээглүүртэй холбосон сегмент Arduino:

сегмент а б в г д е g х
гаралт D7 D12 D4 D5 D6 D11 D8 D13

Хэрэв харгалзах цэнэгийн анод нь өндөр потенциалтай (1), катод дээр бага потенциалтай (0) байвал заагч сегмент асдаг.

Би индикатор дээрх мэдээллийг харуулахын тулд динамик заалтыг ашигладаг - нэг удаад зөвхөн нэг цифр идэвхтэй байна. Идэвхтэй цэнэг 200 Гц давтамжтайгаар ээлжлэн солигддог (дэлгэцийн хугацаа 5 мс). Үүний зэрэгцээ сегментүүдийн анивчсан байдал нь нүдэнд үл үзэгдэх болно.

Температур мэдрэгч DS18x20

Температурыг алсаас хэмжихийн тулд би мэдрэгч холбосон , энэ нь гаднах температурыг өргөн хүрээнд хэмждэг. Мэдрэгч нь автобусанд холбогдсон байна 1-утасба гурван гаралттай - цахилгаан хангамж ( VCC), өгөгдөл ( DAT), Дэлхий ( GND):

мэдрэгчийн утас VCC DAT GND
гаралт Arduino 5V A1 GND

Дүгнэлтийн хооронд VCCболон DATБи 4.7к татах резисторыг оруулсан.

Цельсийн болон Фаренгейтийн хооронд хөрвүүлэхийн тулд та дараах хавтанг ашиглаж болно.

Би мэдрэгчийг байшингийн цонхны гадна талд баллон үзэгнээс хуванцар хайрцагт байрлуулсан.

\

Мэргэжлийн цаг уурын станцуудад термометрийг нарны шууд тусгалаас хамгаалах, агаарын эргэлтийг хангах зорилгоор Стивенсон дэлгэцийг ашигладаг. Стивенсоны дэлгэц):

BMP280 даралт ба температур мэдрэгч

Мөнгөн усны барометр ба анероид барометрийг уламжлалт байдлаар атмосферийн даралтыг хэмжихэд ашигладаг.

В мөнгөн усны барометрАгаар мандлын даралтыг даралтыг хэмжихэд ашигладаг мөнгөн усны баганын жингээр тэнцвэржүүлдэг.

В анероид барометрАгаар мандлын даралтын нөлөөн дор хайрцгийг шахах, тэлэх ажлыг дараахь байдлаар ашигладаг.

Гэрийн цаг уурын станцад атмосферийн даралт болон өрөөний температурыг хэмжихийн тулд би мэдрэгч ашигладаг - жижиг SMD- 2 х 2.5 мм-ийн мэдрэгч, пьезорезисттив технологид суурилсан:

Зах зээл дээр худалдаж авсан мэдрэгчтэй ороолт eBay:

Мэдрэгч нь автобусанд холбогдсон байна I2C(өгөгдлийн холбоо барих - SDA / SDI, синк хийх зүү - SCL / SCK):

мэдрэгчийн утас VCC GND SDI SCK
гаралт Arduino 3V3 GND А4 А5

Адафрут- файлууд Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Агаар мандлын даралтын нэгж

Функцээр дамжуулан мэдрэгч Унших даралтПаскаль дахь атмосферийн даралтын утгыг өгдөг. Агаар мандлын даралтыг хэмжих гол нэгж нь гектопаскаль(гПа) (1 гПа = 100 Па), энэ нь системээс гадуурх нэгжтэй адил юм " миллибар"(mbar) (1 mbar = 100Pa = 1hPa). Түгээмэл хэрэглэгддэг системийн бус даралтын нэгжийн хооронд хөрвүүлэх" мөнгөн усны миллиметр"(ммМУБ) ба гектопаскалийн хувьд дараахь харьцааг ашиглана.
1 гПа = 0.75006 мм м.у.б. Урлаг. ≈ 3/4 мм м.у.б; 1 мм м.у.б = 1.3332 гПа ≈ 4/3 гПа.

Агаар мандлын даралтын өндрөөс хамаарах хамаарал

Агаар мандлын даралтыг үнэмлэхүй болон харьцангуй хэлбэрээр илэрхийлж болно.
Үнэмлэхүй даралт QFE(англ. үнэмлэхүй даралт) Далайн түвшнээс дээш гарсан засварыг эс тооцвол одоогийн атмосферийн даралт юм.
Агаар мандлын даралт 1 м-ээр дээшлэх тусам 1 гПа-аар буурдаг.

Барометрийн томъёо нь харьцангуй даралтыг (ммHg-ээр) авахын тулд барометрийн заалтыг засах боломжийг олгодог.
$ \ 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) (for НЬЦельсийн 15 градусын температуртай байх ба цаг агаарын станцын байрлах өндрийг харгалзан эхлээд тохируулна. Үүнийг цаг уурын албаны мэдээлэл, олон нийтийн газар, нисэх онгоцны буудал дахь шалгалт тохируулгатай багаж хэрэгслийн уншилтаас олж болно (тайлагнуудаас). METAR), интернетээс.
Жишээлбэл, ойролцоох Гомелийн нисэх онгоцны буудлын хувьд ( UMGG) Би бодит цаг агаарын тоймыг харж болно METAR ru.allmetsat.com/metar-taf/russia.php?icao=UMGG хаягаар:
UMGG 191800Z 16003MPS CAVOK M06 / M15 Q1014 R28 / CLRD // NOSIG ,
хаана Q1014- даралт QNHаэродром дээр энэ нь 1014 гПа-тай тэнцүү байна.
Түүхийн хураангуй METAR aviationwxchartsarchive.com/product/metar дээрээс авах боломжтой.
Хэвийн харьцангуй агаарын даралтын хувьд QNHдаралтыг 760 мм м.у.б гэж авна. Урлаг. эсвэл 1013.25 гПа (0 ° C температурт, хойд эсвэл өмнөд хагас бөмбөрцгийн 45 ° өргөрөгт).
Би анероид барометрийн даралтыг тохируулсан QNHмэдрэмжийн тохируулгын эрэг ашиглан:

Цаг агаарын урьдчилсан мэдээ

Даралтын өөрчлөлтийн дүн шинжилгээ нь цаг агаарын урьдчилсан мэдээг гаргах боломжийг олгодог бөгөөд түүний нарийвчлал өндөр байх тусам даралт огцом өөрчлөгддөг. Жишээлбэл, хуучин далайчдын дүрэмд 8 цагийн турш 10 гПа (7.5 мм м.у.б) даралт буурах нь хүчтэй салхи ойртож байгааг илтгэнэ.

Салхи хаанаас ирдэг вэ? Агаарын урсгал нам даралтын бүсийн төв рүү, салхи- өндөр даралттай газраас нам даралтын бүс рүү агаарын хэвтээ хөдөлгөөн (агаар мандлын өндөр даралт нь агаарын массыг бага даралттай хэсэгт шахдаг). Хэрэв даралт маш бага байвал салхи хүчтэй хүрч болно шуурга... Түүгээр ч зогсохгүй тухайн бүс нутагт буурсандаралт (даралтын уналт эсвэл циклон), дулаан агаар дээшилж, үүл үүсгэдэг бөгөөд энэ нь ихэвчлэн авчирдаг борооэсвэл цас.

Цаг уурын чиглэлээр салхины чиглэлийн хувьд салхины чиглэлийг авна.

Энэ чиглэлийг найман цэг болгон бууруулсан.

Агаар мандлын даралт, салхины чиглэлд үндэслэн цаг агаарын төлөвийг урьдчилан таамаглахад алгоритмыг ихэвчлэн ашигладаг Замбрети.

Чийгийн мэдрэгч

Агаарын харьцангуй чийгшлийг тодорхойлохын тулд би модулийг ашигладаг DHT11(зах зээл дээр худалдаж авсан eBay):

Чийгийн мэдрэгч DHT11гурван гаралттай - хүч ( + ), өгөгдөл ( гарч), Дэлхий ( - ):

мэдрэгчийн утас + гарч -
гаралт Arduino 5V D10 GND

Мэдрэгчтэй ажиллахын тулд би номын санг ашигладаг Адафрут- файлууд DHT.h, DHT.cpp.

Агаарын чийгшил нь агаарт агуулагдах усны уурын хэмжээг тодорхойлдог. Харьцангуй чийгшилодоогийн температурт хамгийн их боломжит хэмжээтэй харьцуулахад агаарын чийгийн хувийг харуулав. Харьцангуй чийгшлийг хэмжихийн тулд :

Хүний хувьд агаарын чийгшлийн оновчтой хэмжээ нь 40 ... 60% байна.

Бодит цагийн цаг

Бодит цагийн хувьд би модулийг ашигласан RTC DS1302(зах дээр цагтай ороолт худалдаж авсан eBay):

Модуль DS1302автобусанд холбогддог 3-утас... -тай хамт энэ модулийг ашиглах Arduinoномын сан боловсруулсан iarduino_RTC (-аас iarduino.ru).

Модуль бүхий самбар DS1302таван тээглүүртэй бөгөөд би үүнийг самбарын тээглүүртэй холбосон Arduino Nano:

гаралт RTC VCC GND RST CLK DAT
гаралт Arduino 5V GND D2 D1 D0

Цахилгаан унтарсан үед цагийг зөв уншихын тулд би самбар дээрх үүрэнд батарей оруулсан CR2032.

Миний цагийн модулийн нарийвчлал тийм ч өндөр биш болсон - цаг дөрвөн өдрийн дотор нэг минутаар яарч байна. Тиймээс би цаг уурын станцын хүчийг асаасны дараа Arduino-ийн A0 зүүтэй холбогдсон товчлуурыг дарж минутыг "тэг" болгож, цагийг хамгийн ойрын нэг рүү шилжүүлэв. Эхэлсэний дараа A0 зүү нь цуваа холболтоор өгөгдөл дамжуулахад ашиглагддаг.

Компьютерт өгөгдөл дамжуулах, MQTT протокол ашиглан ажиллах

Цуваа холболтоор өгөгдөл дамжуулахын тулд Arduinoхолбодог USB-UARTхувиргагч:

Гаралт Arduinoформатаар өгөгдөл дамжуулахад ашигладаг 8N1(8 өгөгдлийн бит, паритетгүй, 1 зогсолтын бит) 9600 бит/с. Өгөгдөл нь багц хэлбэрээр дамждаг бөгөөд багцын урт нь 4 тэмдэгт юм. Мэдээлэл дамжуулах нь " жаахан тэсрэлт"горим, техник хангамжийн цуваа порт ашиглахгүйгээр Arduino.

Дамжуулсан өгөгдлийн формат:

Параметр 1-р байт 2-р байт 3 дахь байт 4-р байт
гаднах температур о зай эсвэл хасах хэдэн арван градус эсвэл орон зай градусын нэгж
өрөөний температур би зай эсвэл хасах хэдэн арван градус эсвэл орон зай градусын нэгж
Агаар мандлын даралт х хэдэн зуун мм х. Урлаг. хэдэн арван мм м.у.б нэгж мм м.у.б хамт.
харьцангуй чийгшил h орон зай хэдэн арван хувь эсвэл зай хувийн нэгж
Одоогийн цаг хэдэн арван цаг цагийн нэгж хэдэн арван минут минутын нэгж

MQTT

Голангпрограм - протокол үйлчлүүлэгч MQTTцаг уурын станцаас хүлээн авсан мэдээллийг сервер рүү илгээх ( MQTT-брокер) :

Үйлчилгээ үнэгүй тарифын төлөвлөгөөтэй данс үүсгэх боломжийг танд олгоно " "(хязгаар: 10 холболт, 10 Кб / с):

Цаг уурын станцын заалтыг хянахын тулд та ашиглаж болно Android- өргөдөл :

Тэжээл

Би хуучин гар утасны цэнэглэгчээр цаг уурын станцыг тэжээдэг. Моторола, 5 В хүчдэлийг 0.55 А хүртэл гүйдэлтэй холбож, контактуудад холбосон. 5V(+) ба GND (-):

Та мөн контактуудад холбогдсон 9 В батерейг цахилгаан тэжээлд ашиглаж болно VIN(+) ба GND (-).

Цаг уурын станцын үйл ажиллагаа

Эхлэх үед мэдрэгчийг эхлүүлж, шалгана.

Мэдрэгч байхгүй тохиолдолд DS18x20мэдрэгч байхгүй тохиолдолд "E1" алдаа гарна - "E3" алдаа.

Дараа нь цаг уурын станцын ажлын мөчлөг эхэлнэ.

  • гаднах температурыг хэмжих, харуулах;
  • өрөөний температурыг хэмжих, харуулах;
  • атмосферийн даралт, түүний чиг хандлагыг хэмжих, харуулах;
  • агаарын харьцангуй чийгшлийг хэмжих, харуулах;
  • одоогийн цагийг харуулах;
  • сар, сарны өдрийн үе шатыг харуулах.


Миний цаг уурын станцын видео бичлэг дээр байна -суваг: https://youtu.be/vVLbirO-FVU

Температурын дэлгэц

Температурыг хэмжихдээ температурын хоёр оронтой тоо гарч ирдэг бөгөөд сөрөг температурын хувьд хасах тэмдэг (баруун талд байгаа градусын тэмдэгтэй);
Гаднах температурын хувьд градусын тэмдэг дээд талд харагдана:


өрөөний температурын хувьд - доод талд:

Даралтын дэлгэц

Даралтыг хэмжихдээ даралтын гурван цифрийг ммHg-ээр харуулдаг (" тэмдэгтэй" П"хамгийн баруун цифрт):

Хэрэв даралт огцом буурвал оронд нь " П"хамгийн баруун талын цифр нь тэмдгийг харуулдаг" Л"Хэрэв энэ нь огцом өссөн бол" Х". Өөрчлөлтийн хурц байдлын шалгуур нь 8 цагийн дотор 8 мм м.у.б.:

Миний цаг уурын станц үнэмлэхүй даралтыг харуулдаг тул ( QFE), дараа нь хураангуй мэдээлэлтэй харьцуулахад уншилт нь бага зэрэг дутуу үнэлэгдсэн байна METAR(үүнийг агуулсан QNH) (2018 оны 3-р сарын 28-нд 14 UTC):

Даралтын харьцаа (мэдээллийн дагуу ATIS) $ (1015 \ 998-аас дээш) = $ 1.017 байсан. Гомелийн нисэх онгоцны буудлын өндөр (ICAO код UMGG) далайн түвшнээс дээш 143.6 м. ATIS-ийн дагуу температур 1 ° байв C.

Миний цаг уурын станцын уншилтууд үнэмлэхүй даралттай бараг давхцсан QFEмэдээллийн дагуу ATIS!

Хамгийн их / хамгийн бага даралт ( 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 дээрх өөр цаг уурын станц ?! Тийм ээ, нэг зүйл бас нэг зүйл надад хэлж байна, зүйлсийн Интернэт дэх сүүлчийнх нь биш.


Програмист бүр "Сайн уу Дэлхий!" хөтөлбөр бичих үүрэгтэй шиг.
Интернетэд цаг уурын станцуудын нэлээд олон тооны аль хэдийн бий болсон төслүүдийг тайлбарласан бөгөөд уншигч тэдгээрийн аль нэгийг нь хэрэгжүүлэх боломжтой. Үнэнийг хэлэхэд, би үүнтэй төстэй арав орчим төсөл, холбогдох төслүүдийг сайтар судалж үзсэн. Тиймээс би бүх зүйлийг эхнээс нь бүтээсэн гэж хэлж болохгүй, мэдээжийн хэрэг би "аваргуудын мөрөн дээр зогссон".


Миний төлөвлөгөөнд өгөгдөл хадгалах, харуулах гуравдагч талын үйлчилгээг ашиглахгүй гэдгийг би шууд хэлэх ёстой. Энэ бүхэн эхнээсээ дуустал, А-аас Я хүртэл хэрхэн явагддагийг би хувьдаа мэдэрч, ойлгохыг хүссэн.


Тиймээс ямар нэг зүйлийг оргүй хоосноос хурдан эвдэхийг хүсдэг хүмүүст энэ цуврал нийтлэлүүд ажиллахгүй байх магадлалтай. Угсрах заавар бүхий бэлэн иж бүрдэл худалдаж авах нь илүү хялбар байдаг. Микроэлектроникийн мэргэжилтнүүдийн хувьд энд хийх зүйл огт байхгүй, магадгүй аяллын эхэнд өөрсдийгөө санаж, инээж магадгүй юм.
Харин үнэхээр ойлгохыг хүссэн хүмүүст таалагдана гэж бодож байна. Магадгүй энэ материал нь заах хэрэгсэл болгон ашиглахад хэрэг болно.



Энэ төсөл 2016 онд хэрэгжиж эхэлсэн боловч энэ нь хамааралтай хэвээр байна гэж найдаж байна.

Технологийн багц

Бид энгийн бөгөөд төвөгтэй зүйлсийг судалж, ажиллах болно:

  • температур, чийгшлийн мэдрэгч DHT22, DHT11
  • BMP180 төрлийн барометрийн даралт мэдрэгч
  • WiFi модуль ESP8266
  • радио модулийн төрөл nRF24 2.4 GHz
  • гэр бүлийн Arduino Pro Mini, Arduino Mega
  • нарны зай болон цэнэглэдэг батерей
  • C / C ++ програмчлалын хэл
  • PHP програмчлалын хэл
  • MySQL мэдээллийн сангийн удирдлагын систем
  • Java програмчлалын хэл болон Android хүрээ (ухаалаг утсан дээр цаг агаарын мэдээллийг харуулах Adnroid програмыг бий болгох).

Дээр дурдсан сэдвүүдийн зарим нь үнэ цэнэтэй зүйл биш бөгөөд заримыг нь олон жилийн турш судалж болно. Тиймээс бид нарийн төвөгтэй зүйлсийг зөвхөн энэ төсөлтэй шууд холбоотой хэсэгт л хөндөх болно, ингэснээр энэ бүхэн хэрхэн ажилладагийг ойлгох болно.


Гэхдээ бид эхнээсээ эхлэх болнозөв. Тухайлбал, ирээдүйн төхөөрөмжийн тодорхойлолт, дизайнаас "цаасан дээр"Ингэснээр тоосго бүр байрандаа унах болно.

Прототип хийх

Википедиа бидэнд зөв хэлсэнчлэн, прототип хийхажлын системийн хэрэгжилтийн хурдан төсөл юм. Тийм ээ, энэ нь бүрэн үр дүнгүй, зарим алдаатай ажиллахгүй, гэхдээ гар урлалыг үйлдвэрлэлийн загвар болгон хөгжүүлэх эсэх талаар санаа өгөх болно. Прототип хийх үйл явц нь урт байх албагүй. Прототип хийх үе шат дараа нь системийн шинжилгээ, түүнийг боловсронгуй болгох явдал юм.


Гэхдээ энэ нь ажилчид бүтэн цагаар ажилладаг салбар юм.


Оройн цагаар "интернет юмс"-ын төлөөх гэрийн тэжээмэл амьтдын төслүүдээ хавчуулж буй хүн бүр хагас боловсруулсан бүтээгдэхүүн болох анхны загвар бүтээж байгааг мэдэж байх ёстой. Энэ нь ердийн үйлдвэрийн бүтээгдэхүүний түвшнээс маш хол байна. Тийм ч учраас Манай сонирхогчийн гар урлалыг амьдралын чухал хэсгүүдэд бүү даатгамөн тэд биднийг урам хугарахгүй гэж найдаж байна.


Аж үйлдвэрийн бүтээгдэхүүн нь үйлдвэрлэлийн үндсэн суурь дээр бүтээгдсэн бөгөөд дараа нь борлуулалтын амжилт болохоос өмнө дибаг хийх, турших, засвар үйлчилгээ хийх зэрэг олон үе шатыг дамждаг.


Тиймээс энэ бүх ачааны оронд бид өөрсдийн тоглоомыг бүтээх болно, гэхдээ энгийн тоглоом биш. Техникийн бүтээлч байдлын элементүүд, програмчлалын үндэс суурь, танин мэдэхүйн (бүтээлийн явцад) бусад олон зүйлтэй холбоотой.


Мэдээжийн хэрэг, электроникийн инженерүүд програмчлалын шатанд хэцүү байх болно, програмистууд хэлхээний талаар хөлсөө урсгах болно, гэхдээ зохиогч бүх зүйлийг аль болох хүртээмжтэй байдлаар танилцуулахыг хичээж, яагаад тодорхой шийдлүүдийг ашигласан талаар тодорхой тайлбарлах болно.

Шаардлага

Энэ алхамыг ихэвчлэн алгасдаг. Яг одоо ийм зүйл хийхээр шийдэж, дараа нь жижиг нарийн ширийн зүйл гарч ирэх бөгөөд энэ нь төслийг бүхэлд нь зогсонги байдалд оруулах эсвэл бүр хэтэрхий хүнд болгодог. Бидний бүх хүслийг бүртгэх шаардлагатай, би үүнд зориулж Google диск ашигладаг, үүнийг компьютер болон хөдөлгөөнт төхөөрөмжөөс ашиглах боломжтой.


Тиймээс манай цаг уурын станц дараахь зүйлийг хийх ёстой.

  • гаднах температур, чийгшлийг хэмжих
  • байшин доторх температур, чийгшлийг хэмжих
  • атмосферийн даралтыг хэмжих
  • дэлгэц дээр заасан утгуудыг харуулах
  • Интернэт дэх сервер рүү өгөгдөл дамжуулах, өгөгдөл нь мэдээллийн санд хадгалагдаж, вэб хуудсан дээр харагдах эсвэл гар утасны програмд ​​​​хэрэглэгдэх болно.

Хамгийн энгийн бөгөөд хямд мэдрэгчийг ашигладаг. Жишээлбэл, урагшаа харахад DHT22 нь температурыг маш нарийн хэмждэг боловч чийгшилтэй бол энэ нь бага зэрэг буруу байна гэж би хэлэх болно. Гэхдээ дахин хэлье, энэ нь хамаагүй, учир нь бидний өмнө загвар байгаа бөгөөд 5% чийгшилд тархах нь бидний амьдралд чухал зүйлд нөлөөлөхгүй.


Системийн архитектур, техник хангамж, програм хангамж нь шинэ мэдрэгч, шинэ боломжуудыг нэмэхийн тулд системийг улам өргөжүүлэх ёстой.

Төмөр. Бүрэлдэхүүн хэсгүүдийн сонголт

Энэ бол гагнах, програмчлах биш хамгийн чухал хэсэг юм. Системд тавигдах шаардлагуудыг тодорхойлсны дараа тэдгээрийг яг юу хэрэгжүүлэхээ шийдэх хэрэгтэй.


Энд нэг нюанс бий. Бүрэлдэхүүн хэсгүүдийг сонгохын тулд та тэдгээрийн чадавхийг сайн мэдэх хэрэгтэй, та технологийг өөрсдөө мэдэх хэрэгтэй. Өөрөөр хэлбэл, энд та шинэхэн электроникийн инженер, програмистаас хол байх хэрэгтэй. Тэгэхээр та боломжит төхөөрөмжүүдийг бүрэн судлахын тулд хэдэн жилийг юунд зарцуулах ёстой вэ?


Харгис балмад тойрог? Гэвч тэднийг эвдэх харгис тойрог бий.


Гарц байгаа. Та зүгээр л хэн нэгний төслийг аваад давтаж болно. Би цаг уурын станцуудын одоо байгаа төслүүдийг судалж үзсэн бөгөөд урагшлах алхам хийсэн гэж найдаж байна.


Тэгэхээр. Цаг уурын станцын архитектур нь Arduino дээр суурилдаг. Учир нь Arduino нь нэвтрэх бага босготой бөгөөд би үүнийг аль хэдийн шийдсэн. Цаашид сонгох нь илүү хялбар байдаг.


Цаг уурын станц нь цонхны гаднах алсын зайн мэдрэгч, төв модулийг багтаах нь тэр даруй тодорхой болов.


Төв, үндсэн нэгж нь дотор байрлана. Үйл ажиллагааны температурын горим, цахилгаан хангамжийн "бүжиг" гэх мэт чухал шинж чанаруудаас эхлээд эхний шатанд үүнийг тодорхойлох нь чухал юм.


Алсын мэдрэгч (эсвэл мэдрэгч) нь "тархигүй" байх бөгөөд түүний даалгавар бол үе үе хэмжиж, төв гэрийн нэгж рүү өгөгдөл дамжуулах явдал юм. Төвийн нэгж нь бүх мэдрэгчээс өгөгдлийг хүлээн авч, дэлгэцэн дээр гаргаж, мэдээллийн сан руу интернет рүү илгээдэг. Өгөгдөл нь өгөгдлийн санд ормогц та хүссэн бүхнээ хийх, тэр ч байтугай график зурах боломжтой.


Гадаад ертөнцтэй харилцахын тулд интернетийг хоёрдмол утгагүйгээр сонгосон WiFi модулийг ESP8266 бараг өөр хувилбаргүйгээр сонгосон (ойролцоогоор одоо ийм хувилбарууд гарч ирсэн байж магадгүй). Arduino-д зориулсан Ethernet өргөтгөлийн самбарууд байдаг ч би кабельд холбогдохыг огт хүсээгүй.



Сонирхолтой асуулт бол цонхны гаднах мэдрэгч (эсвэл мэдрэгч, системийн өргөтгөлийн шаардлагыг санаж байна уу?) болон төвийн хоорондох холболтыг хэрхэн хангах вэ? 433 МГц гэрэлт цамхаг нь мэдээж тохиромжгүй (тэд ямар ч зүйлд тохиромжгүй).


ESP8266-г дахин ашиглах уу?


Энэ шийдлийн сул талууд:

    гэрээсээ гадуур тогтвортой WiFi шаардлагатай

    харилцааны хүрээ тийм ч урт биш байх болно

    найдвартай байдал алдагдах болно, хэрэв интернет унтарвал бид алсын мэдрэгчээ харахгүй

    илүү их эрчим хүчний хэрэглээ.

    Эрчим хүчний хэрэглээ ESP8266:

    120-170 мА дамжуулах үед

    50-56 мА хүлээн авах үед

    Гүн нойрны горимд 10 мкА (мкА)

    унтрах 5 мкА (мкА).

Эцэст нь nRF24L01 + чипийг нэг лонхонд 2.4 ГГц давтамжтай дамжуулагч ба хүлээн авагчтай алсын мэдрэгчийг гэрийн үндсэн төхөөрөмжтэй холбож, ханыг "нэвчих" нэмэлт гадаад антентай болгосон.



Эрчим хүчний хэрэглээ nRF24L01 + 2.4 GHz:

  • 11 мА хүлээн авах үед
  • 2Mbps хурдтай дамжуулах үед - 13 мА
  • зогсолтын I горимд - 26 мкА (мкА)
  • төлөвөөс гадуур 900 нА (нА).

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%
  • ± 2 ° С-ийн алдаатай температурын хэмжилтийн хүрээ 0-ээс + 50 ° C хүртэл
  • хэмжилтийн хүсэлт 1 Гц-ээс ихгүй байна - секундэд нэг удаа.

Та DHT22-ийг ойролцоогоор 3 доллараар худалдаж авах боломжтой. DHT11 нь 1 доллараар хямд боловч үнэн зөв биш юм.


Одоо дахин Arduino руугаа буцъя. Та аль самбарыг сонгох ёстой вэ?


Би системийн бие даасан хэсгүүдийг Arduino UNO дээр туршиж үзсэн. Тэдгээр. Би ESP модулийг uno-д холбож, судалж, салгаж, дараа нь nRF24 гэх мэтийг холбосон. Цонхны гаднах мэдрэгчийг эцсийн байдлаар хэрэгжүүлэхийн тулд би Arduino Pro Mini-г Uno-д хамгийн ойрхон гэж сонгосон.



Эрчим хүчний хэрэглээний хувьд Arduino Pro Mini нь бас сайн харагдаж байна:

  • USB-TTL хөрвүүлэгч байхгүй бөгөөд энэ нь өөрөө маш их "иддэг".
  • LED нь 10к резистороор холбогддог.

Эрчим хүчний дэвшилтэт хэмнэлтийн хувьд дараахь зүйлийг төлөвлөсөн болно.

  • LED - Arduino Pro Mini дээрх тэжээлийн индикаторыг салга (самбарыг эвдээгүйдээ харамсаж байна)
  • эсвэл Atmel ATmega328 микропроцессор дээр "нүцгэн" угсралт ашиглах (ашиглагдаагүй)
  • Бага эрчим хүчний номын сан эсвэл JeeLib ашиглана уу.

Миний сонгосон номын сангаас Low Power Library-г сонгосон бөгөөд энэ нь энгийн бөгөөд зөвхөн танд хэрэгтэй зүйлийг агуулдаг.


Төв нэгжийн хувьд олон тооны захын төхөөрөмжийг холбохоор төлөвлөж байсан тул Arduino Mega хавтанг сонгосон. Үүнээс гадна, энэ нь UNO-д бүрэн нийцдэг бөгөөд илүү их санах ойтой. Цаашид энэ сонголт бүрэн үндэслэлтэй байсан гэж би хэлэх болно.


Та Arduino Mega-г 8 доллараар худалдаж авах боломжтой.

Эрчим хүч ба эрчим хүчний хэрэглээ

Одоо эрчим хүч, эрчим хүчний хэрэглээний талаар.


Arduino Pro Mini нь хоёр төрлийн сонголттой:

  • тэжээлийн хүчдэл 5V ба 16МГц давтамжийн хувьд
  • 3.3V-ийн тэжээлийн хүчдэл ба 8МГц давтамжийн хувьд.

nRF24L01 + радио модуль нь тэжээлийн хангамжид 3.3V шаардлагатай бөгөөд хурд нь энд чухал биш тул 8MHz ба 3.3V давтамжтай Arduino Pro Mini худалдаж аваарай.


Энэ тохиолдолд Arduino Pro Mini-ийн тэжээлийн хүчдэлийн хүрээ нь:

  • 3.3V загварын хувьд 3.35-12V
  • 5V загварын хувьд 5-12V.

Би аль хэдийн 5V Arduino Pro Mini-тэй байсан тул би үүнийг ашигласан. Та Arduino Pro Mini-г ойролцоогоор 4 доллараар худалдаж авах боломжтой.


Төвийн нэгж нь гаралт дээр 12V, 450mA, 5W-ыг хангадаг жижиг тэжээлийн нэгжээр дамжуулан 220 В сүлжээнээс тэжээгдэнэ. Яг л 5 доллараар. Мөн 5V-д зориулсан тусдаа гаралт байдаг.



Хэрэв энэ нь хангалтгүй бол та үүнийг илүү хүчтэй болгож болно. Өөрөөр хэлбэл, төв нэгжийн эрчим хүчийг хэмнэх нь утгагүй юм. Гэхдээ алсын утасгүй мэдрэгчийн хувьд эрчим хүч хэмнэх нь хамгийн чухал хэсэг юм. Гэхдээ би функциональ байдлаа алдахыг хүсэхгүй байна.


Тиймээс Arduino Pro Mini болон nRF24 радио модуль нь 4 Ni-Mh батерейгаар тэжээгддэг.


Бас санаж байна орчин үеийн батерейны хамгийн их хүчин чадалойролцоогоор 2500-2700 мАч, энэ нь маркетингийн заль мэх (Ansmann 2850) эсвэл хууран мэхлэлт (UltraFire 3500) юм.


Би хэд хэдэн шалтгааны улмаас Li-Ion батерейг ашигладаггүй:

  • маш үнэтэй
  • орчны температур 0 хэмээс доош унах үед лити-ион батерейны хүч 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 төрөлд хувааж болно.

Сонголт А: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T

Сонголт В: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ дэлгэцүүд AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-818, Di624Gron, S624Gron, S624Gron, S6248, 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 / MGLS1924 / HD612

Тэд бараг адилхан харагдаж байна. Гэхдээ тэдгээрийн холболтын тээглүүр нь өөр өөр байдаг. Би сонгосон бөгөөд танд 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 Ом - + 5V 20 (BLK) - GND

Дэлгэц дээр тодосгогчийг тохируулахын тулд потенциометр байх ёстой. Үүнгүйгээр дэлгэцүүд байдаг, гэхдээ энэ нь одоо ховор тохиолддог:

5 вольтын хүчдэл нь арын гэрлийн диодыг санамсаргүйгээр шатаахгүйн тулд 100 ом эсэргүүцэл хэрэгтэй.

Алхам 2 Кейс үйлдвэрлэх.
Тохиолдлын хувьд Sega угтвар хайрцагнаас хайрцгийг авцгаая. Хэрэв та энэ хайрцгийг гартаа олоогүй бол өөр хэрэг ашиглаж болно. Хамгийн гол нь дэлгэц болон Arduino үүнд багтах явдал юм.

Хайрцагны дээд талд байгаа ил тод хальсыг хайчилж ав, ингэснээр ямар ч хэсэг үлдэхгүй.

Дараа нь бичиг хэргийн хутга ашиглан дэлгэцийн 37x69 хэмжээтэй цонхыг хайчилж ав.

Урвуу талд, зүсэлтийн ирмэгийн дагуу бид хоёр талт соронзон хальсыг нааж, илүү сайн хар өнгөтэй байна.

Бид хамгаалалтын цаасыг соронзон хальснаас салгаж, дээр нь дэлгэцээ наа.

Гаднаас нь харахад энэ нь иймэрхүү харагдах ёстой.

Дэлгэцийн доор, мөн хоёр талт соронзон хальс дээр бид USB порт болон цахилгаан залгуурт зориулж урьдчилсан зүсэлт хийж, Arduino-г хавсаргав.

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-г байнга ачаалах шаардлагагүй. Тиймээс, эхлээд бүх зүйлийг нэгтгэж, бид файл - Жишээнүүд - Даллас Температур - OneWireSearch цэсэнд байрлах Arduino-д ноорог бөглөнө. Дараа нь бид 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, 0x16, //x); гадаад мэдрэгчийн хаяг

Мэдрэгчийн байршилд тохирох хаягуудыг бид өөрсдийн хаягаар сольдог.
Манай цаг нь RTC (real time clock) модулийг ашигладаггүй тул цагийн хурдыг засах шаардлагатай. Тохиромжтой болгохын тулд мөрийн тайлбарыг арилгана уу (дэлгэц дээр секунд гарч ирнэ):

//u8g.setPrintPos(44, 50); u8g.print (сек); // Хөдөлгөөний зөв эсэхийг хянахын тулд секундийг харуул

Портын дэлгэцээр дамжуулан зөв цагийг тохируулна уу. Үүнийг хийхийн тулд портын дэлгэцийг нээж, температурын анхны хэмжилтийн төгсгөлийг хүлээж, одоогийн огноо, цагийг "өдөр, сар, жил, цаг, минут, секунд" форматаар оруулна уу. Хоосон зайгүй тоонуудыг таслал эсвэл цэгээр тусгаарлана.

Хэрэв цаг яарч байгаа бол утгыг том болгож өөрчил, би 100 нэгжийн алхамаар туршилт хийхийг зөвлөж байна. Хэрэв би хоцорч байвал та мөрийн утгыг багасгах хэрэгтэй:

Хэрэв (микро () - өмнөх микро> 494000) (// засахын тулд өөр зүйлээр соливол 500000 байсан.

Эмпирик байдлаар бид цаг хангалттай нарийвчлалтай ажиллах тоог тодорхойлдог. Хичээлийн нарийвчлалыг тодорхойлохын тулд секундын гаралт шаардлагатай. Тооныг үнэн зөв тохируулсны дараа секундийг тэмдэглэж, дэлгэцээс хасах боломжтой.
Ноорог бөглөнө үү.