კონტაქტები

ამინდის სადგური არდუინოზე წნევის გრაფიკის მაგალითით. შიდა ამინდის სადგური Arduino-ზე

ნოემბერი გაუგებარი ამინდის თვეა: დილით მზე ანათებდა, მაგრამ ლანჩის დროს ფანჯრის გარეთ ყველაფერი უკვე თეთრი იყო თოვლისგან. კარგი ძველი მეტეოროლოგიური სადგური Arduino-ზე დაგეხმარებათ თვალყური ადევნოთ ამ ამინდის რიგმაროლს. შთაგონებული იყავით ყველაზე მაგარი თვითნაკეთი მეტეოროლოგიური სადგურების ჩვენი არჩევანით და შეაგროვეთ საკუთარი, რათა ყოველთვის მზად იყოთ ბუნების სიურპრიზებისთვის და ფაქტიურად არ მოხვდეთ გუბეში.

Bluetooth ამინდის ნათურა

საკონტროლო მოწყობილობა ათვალიერებს ინტერნეტს ამინდის შესახებ ინფორმაციას და Bluetooth-ის საშუალებით აგზავნის სიგნალებს ნათურის სერვომოტორზე, რომელიც ცვლის სურათებს პროგნოზის მიხედვით. მარტივი და ელეგანტური ამინდის სადგური, რომელსაც შეუძლია თქვენი ინტერიერის გაფორმება.

აქ პრინციპი დაახლოებით იგივეა, რაც წინა პროექტში, მაგრამ შემსრულებელი მოწყობილობა დამზადებულია ღრუბლის სახით, რომელიც იცვლის ფერს ტემპერატურის მიხედვით და სერვომოტორი მიუთითებს გარეთ თბილია თუ ცივი. ეს სახალისო მინი სადგური მშვენივრად გამოიყურება თქვენს სამუშაო მაგიდაზე.

მათთვის, ვისაც უფრო დიდი ღრუბლები მოსწონს, ეს ვარიანტიც არსებობს

ვინტაჟური ამინდის სადგური

ვინტაჟური ნივთების მოყვარულები და გამოცდილი ორთქლმავლები შეძლებენ დააფასონ ამინდის სადგური ანტიკვარული საათის სახით.

ამინდი Twitter-ზე

ეს ერთი შეხედვით შეუმჩნეველი ხის პირამიდა რეალურად არის მაღალტექნოლოგიური მეტეოროლოგიური სადგური, რომელსაც შეუძლია გაზომოს ტემპერატურა, ტენიანობა, წნევა, სინათლის დონე, CO-ს დონე და გამოგიგზავნოთ ყველა მონაცემი Twitter-ზე.

ტემპესკოპი

ტემპესკოპი არის ის, რაც შეგიძლიათ გამოიყენოთ წვიმის სახლში მოსატანად. ან ნისლი. ან თუნდაც ჭექა-ქუხილი. და იქ იცხოვრებენ. ახლა თქვენ არც კი გჭირდებათ ფანჯრიდან გახედვა, რომ იცოდეთ რა მოგიმზადა დედა ბუნებამ დღეს.

ამინდი კუბში

ამინდის პროგნოზი არა მხოლოდ ჩანს, არამედ შეხებაც. ეს ფოლადის კრიოსკოპის კუბი, რომელსაც ხელმძღვანელობს ქსელის მონაცემები, თბება ან გაცივდება გარე ტემპერატურამდე. თქვენ კუდს ქვემოთ ეყრებით და მაშინვე ცხადი ხდება, დღეს საცვლების მოხსნა გჭირდებათ თუ არა.

კომპონენტების დაკავშირებამდე მიზანშეწონილია ჩამოტვირთოთ firmware, რათა დარწმუნდეთ, რომ დაფა მუშაობს. აწყობის შემდეგ შეგიძლიათ ისევ აანთოთ, დაფა შეუფერხებლად უნდა გაცივდეს. დაფის 5 ვ ელექტრომომარაგების წრეში მძლავრი მომხმარებლების მქონე პროექტებში (მისამართიანი LED ზოლები, სერვოები, ძრავები და ა.შ.), Arduino-ს კომპიუტერთან დაკავშირებამდე აუცილებელია მიკროსქემის გარე 5 ვ დენის მიწოდება, რადგან USB არ უზრუნველყოფს საჭირო დენი, თუ, მაგალითად, ზოლი ამას მოითხოვს. ამან შეიძლება გამოიწვიოს დამცავი დიოდის დამწვრობა Arduino დაფაზე. პროგრამული უზრუნველყოფის ჩამოტვირთვისა და ატვირთვის სახელმძღვანელო შეგიძლიათ იხილოთ სპოილერის ქვეშ მომდევნო სტრიქონზე.

საქაღალდეების შინაარსი არქივში

  • ბიბლიოთეკები- პროექტის ბიბლიოთეკები. შეცვალეთ არსებული ვერსიები
  • firmware– firmware Arduino-სთვის
  • სქემები- კომპონენტების კავშირის დიაგრამები

დამატებით

  • როგორც ექსპერიმენტმა აჩვენა, ტემპერატურის სენსორი კორპუსის გარეთ აჩვენებს 0,5 გრადუსით ნაკლებს, ვიდრე შიგნით! აუცილებელია ელექტრონიკის უკეთ მოწყობა, გათბობის ელემენტების სითბოს მოცილება და დაცვა...

  • თუ ეკრანი აჩვენებს ძალიან ბნელს/თეთრ ფონზე
    დისპლეის დრაივერის დაფაზე არის კონტრასტული ღილაკი (რომელსაც უკავშირდება მავთულები), მისი დახმარებით შეგიძლიათ კონტრასტის მორგება სასურველზე. ასევე, კონტრასტი დამოკიდებულია დისპლეის ხედვის კუთხეზე (ეს არის LCD) და შეგიძლიათ დააყენოთ დისპლეი ისე, რომ ნათლად გამოჩნდეს თუნდაც კუთხით „ჩვენება ჭიპის დონეზე, ზემოდან ყურება“. და კონტრასტი ძლიერ დამოკიდებულია კვების წყაროზე: 5 ვ-დან ეკრანი აჩვენებს რაც შეიძლება მკაფიოდ და ნათელს, ხოლო USB-დან Arduino-ს საშუალებით კვებისას, ძაბვა იქნება დაახლოებით 4,5 ვ (მისი ნაწილი მოდის დამცავ დიოდზე USB ხაზის გასწვრივ. ), და ეკრანი აღარ არის ისეთი ნათელი. დაარეგულირეთ გამომავალი ღილაკის გამოყენებით გარე კვების წყაროდან 5 ვ-დან!

  • თუ CO2 სენსორი არ მუშაობს სწორად (ინფორმაცია ევგენი ივანოვისაგან)
    კარგად, არის ესკიზები კალიბრაციისთვის სენსორის ბიბლიოთეკის საქაღალდეში მაგალითებში. მისი დაწყება ასევე შესაძლებელია „HD“ კონექტორის ბრმად დაჭერით მიწასთან 7+ წამის განმავლობაში.
    რა თქმა უნდა, თქვენ არ გჭირდებათ ამის გაკეთება პირდაპირ გარეთ, სიცივეში... შეგიძლიათ უბრალოდ შეავსოთ ბოთლი სუფთა ჰაერით შიგნით სენსორით და დალუქოთ იგი. კალიბრაციას მინიმუმ 20 წუთი სჭირდება.
    ნაგულისხმევად, სენსორს გააჩნია ჩართული ავტომატური კალიბრაცია, რომელიც ხდება ყოველდღე, და თუ სენსორი გამოიყენება არავენტილაციურ ოთახში, მაშინ ეს კალიბრაცია სწრაფად გადააქვს მნიშვნელობებს ნორმას მიღმა, ამიტომ ის უნდა გამორთოთ.
    დოკუმენტაცია.

  • სენსორის ავტომატური კალიბრაცია CO2 გამორთულია ესკიზში!

  • Თუ თქვენ გაქვთ BME280 სენსორი არ მუშაობს, სავარაუდოდ მისი მისამართი განსხვავებულია. პროექტი იყენებს Adafruit_BME280 ბიბლიოთეკას, რომელსაც არ აქვს მისამართის შეცვლის ცალკე ფუნქცია, ამიტომ მისამართი ხელით არის დაყენებული Adafruit_BME280.h ბიბლიოთეკის ფაილში თითქმის ფაილის დასაწყისში ( არის Adafruit_BME280 საქაღალდეში თქვენს ბიბლიოთეკების საქაღალდეში, იქ უნდა დაინსტალიროთ), ჩემს მოდულს ჰქონდა მისამართი 0x76. როგორ გავიგო ჩემი BME280 მოდულის მისამართი? არსებობს სპეციალური ესკიზი სახელწოდებით i2c სკანერი. შეგიძლია დაგუგლო, შეგიძლია. თქვენ აანთებთ ამ ჩანახატს, გახსენით პორტი და მიიღეთ i2c ავტობუსთან დაკავშირებული მოწყობილობების მისამართების სია. იმისათვის, რომ სხვა მოდულებმა ხელი არ შეგიშალოთ, შეგიძლიათ გამორთოთ ისინი და დატოვოთ მხოლოდ BME280. ჩვენ მივუთითებთ მიღებულ მისამართს ბიბლიოთეკაში, ვინახავთ ფაილს და ვტვირთავთ ამინდის საათის firmware-ს. ყველა!

  • თუ საათი ნელია, პრობლემა დიდი ალბათობით მიკროსქემის ელექტრომომარაგებაშია. თუ პრობლემა არ გაქრება კვების წყაროს უკეთესზე შეცვლისას, მიამაგრეთ კონდენსატორი RTC მოდულის გასაძლიერებლად (შედუღება პირდაპირ დაფაზე VCC-ზე და GND-ზე): ყოველთვის კერამიკული, 0.1-1 μF (მარკირება 103 ან 104). იხილეთ მარკირების ცხრილი). თქვენ ასევე შეგიძლიათ მიაწოდოთ ელექტროლიტი (6.3V, 47-100 uF)

პროგრამული უზრუნველყოფის პარამეტრები

#define RESET_CLOCK 0 // გადატვირთეთ საათი, სანამ firmware იტვირთება (მოდულისთვის მოუხსნელი ბატარეით). არ დაგავიწყდეთ დააყენოთ 0 და ისევ გაანათოთ! #define SENS_TIME 30000 // ეკრანზე სენსორის წაკითხვის განახლების დრო, მილიწამები #define LED_MODE 0 // RGB LED ტიპი: 0 - მთავარი კათოდი, 1 - მთავარი ანოდი #განსაზღვრა LED_BRIGHT 255 // CO2 LED სიკაშკაშე (0 - 255) # განსაზღვრეთ BLUE_YELLOW 1 // ყვითელი ფერი ლურჯის ნაცვლად (1 დიახ, 0 არა), მაგრამ კავშირის მახასიათებლების გამო, ყვითელი არც ისე ნათელია #define DISP_MODE 1 // ეკრანი ზედა მარჯვენა კუთხეში: 0 - წელი, 1 - დღე კვირის, 2 - წამი #define WEEK_LANG 1 // კვირის დღის ენა: 0 - ინგლისური, 1 - რუსული (ტრანსლიტერირებული) #define DEBUG 0 // სენსორის ინიციალიზაციის ჟურნალის ჩვენება გაშვებისას #define PRESSURE 1 // 0 - წნევის გრაფიკი, 1 - წვიმის პროგნოზის გრაფიკი (წნევის ნაცვლად). არ დაგავიწყდეთ გრაფიკის საზღვრების კორექტირება // დიაგრამების ჩვენება ლიმიტები #define TEMP_MIN 15 #define TEMP_MAX 35 #define HUM_MIN 0 #define HUM_MAX 100 #define PRESS_MIN -100 #define PRESS_MAX 302MAX 100_define

ერთ დღეს ქალაქში სეირნობისას დავინახე ახალი რადიო ელექტრონიკის მაღაზია, რომელიც გაიხსნა. მასში შესვლისას აღმოვაჩინე დიდი რაოდენობით ფარები Arduino-სთვის, რადგან... სახლში მქონდა Arduino Uno და Arduino Nano და მაშინვე გამიჩნდა იდეა დისტანციური სიგნალის გადამცემებით მეთამაშა. მე გადავწყვიტე ვიყიდო ყველაზე იაფი გადამცემი და მიმღები 433 MHz-ზე:

სიგნალის გადამცემი.


სიგნალის მიმღები.

მონაცემთა გადაცემის მარტივი ესკიზის ჩაწერის შემდეგ (მაგალითი აქედან აღებული), აღმოჩნდა, რომ გადამცემი მოწყობილობები შეიძლება იყოს საკმაოდ შესაფერისი მარტივი მონაცემების გადასაცემად, როგორიცაა ტემპერატურა, ტენიანობა.

გადამცემს აქვს შემდეგი მახასიათებლები:
1. მოდელი: MX-FS - 03V
2. დიაპაზონი (დამბლოკავი ობიექტების არსებობის მიხედვით): 20-200 მეტრი
3. ოპერაციული ძაბვა: 3.5 -12V
4. მოდულის ზომები: 19 * 19 მმ
5. სიგნალის მოდულაცია: AM
6. გადამცემის სიმძლავრე: 10მვ
7. სიხშირე: 433MHz
8. გარე ანტენის საჭირო სიგრძე: 25სმ
9. მარტივი დასაკავშირებლად (მხოლოდ სამი მავთული): DATA ; VCC ; Დედამიწა.

მიმღების მოდულის მახასიათებლები:
1. სამუშაო ძაბვა: DC 5V
2. დენი: 4mA
3. ოპერაციული სიხშირე: 433,92 MHz
4. მგრძნობელობა: - 105dB
5. მოდულის ზომები: 30 * 14 * 7 მმ
6. საჭირო გარე ანტენა: 32 სმ.

ინტერნეტში ნათქვამია, რომ ინფორმაციის გადაცემის დიაპაზონი 2 კბ/წმ-ზე შეიძლება მიაღწიოს 150 მ-მდე. მე თვითონ არ შემიმოწმებია, მაგრამ ოროთახიან ბინაში ყველგან მიიღება.

სახლის ამინდის სადგურის აპარატურა

რამდენიმე ექსპერიმენტის შემდეგ გადავწყვიტე ტემპერატურის, ტენიანობის სენსორისა და გადამცემის დაკავშირება Arduino Nano-ს.


DS18D20 ტემპერატურის სენსორი უკავშირდება Arduino-ს შემდეგნაირად:

1) GND მიკროკონტროლერის მინუსამდე.
2) DQ ასაწევი რეზისტორის მეშვეობით მიწაზე და არდუინოს D2-ის დასამაგრებლად
3) Vdd +5V-მდე.

MX-FS - 03V გადამცემის მოდული იკვებება 5 ვოლტით, მონაცემთა გამომავალი (ADATA) დაკავშირებულია პინ D13-ზე.

მე შევაერთე LCD დისპლეი და BMP085 ბარომეტრი Arduino Uno-ს.


კავშირის დიაგრამა Arduino Uno-სთან

სიგნალის მიმღები დაკავშირებულია D10 პინთან.

მოდული BMP085 - ციფრული ატმოსფერული წნევის სენსორი. სენსორი საშუალებას გაძლევთ გაზომოთ ტემპერატურა, წნევა და სიმაღლე ზღვის დონიდან. კავშირის ინტერფეისი: I2C. სენსორის მიწოდების ძაბვა 1.8-3.6 ვ

მოდული უკავშირდება Arduino-ს ისევე, როგორც სხვა I2C მოწყობილობებს:

  • VCC - VCC (3.3 V);
  • GND - GND;
  • SCL - ანალოგურ პინ 5-მდე;
  • SDA - ანალოგურ პინ 4-ზე.
  • ძალიან დაბალი ღირებულება
  • სიმძლავრე და I/O 3-5 ვ
  • ტენიანობის განსაზღვრა 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. გენერალი

უკავშირდება Arduino-ს D8-ს.

სახლის ამინდის სადგურის პროგრამული ნაწილი

გადამცემი მოდული ზომავს და გადასცემს ტემპერატურას ყოველ 10 წუთში.

ქვემოთ მოცემულია პროგრამა:

/* ესკიზის ვერსია 1.0 გაგზავნეთ ტემპერატურა ყოველ 10 წუთში. */ #include #include #include #define ONE_WIRE_BUS 2 //Pin Dallas OneWire სენსორის დასაკავშირებლად oneWire(ONE_WIRE_BUS); Dallas-ის ტემპერატურის სენსორები (&oneWire); მოწყობილობის მისამართი შიგნით თერმომეტრი; void setup(void) (//Serial.begin(9600); vw_set_ptt_inverted(true); // აუცილებელია DR3100 vw_setup(2000); // დააყენეთ ბაუდის სიხშირე (bit/s) სენსორები.begin(); if (! სენსორები .getAddress(შიდათერმომეტრი, 0)); printAddress(შიდა თერმომეტრი); sensors.setResolution(შიდა თერმომეტრი, 9); ) void printTemperature(DeviceAddress deviceAddress) (float tempC = sensors.getTempC(deviceAddress); //Serial. 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_ (); / / დაელოდეთ გადაცემის დასრულებას delay(200); ) void loop(void) (for (int j=0; j<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } }

მიმღები მოწყობილობა იღებს მონაცემებს, ზომავს წნევას და ტემპერატურას ოთახში და გადასცემს მას ეკრანზე.

#include #include LiquidCrystal LCD (12, 10, 5, 4, 3, 2); #include dht11 სენსორი; #define DHT11PIN 8 #include #include BMP085 dps = BMP085(); ხანგრძლივი ტემპერატურა = 0, წნევა = 0, სიმაღლე = 0; void setup() ( Serial.begin(9600); vw_set_ptt_inverted(true); // აუცილებელია DR3100 vw_setup(2000); // დააყენეთ მიღების სიჩქარე vw_rx_start(); // დაიწყეთ მაუწყებლობის მონიტორინგი lcd.begin(16, 2) ; Wire.begin(); delay(1000); dps.init(); //lcd.setCursor(14,0); //lcd.write(byte(0)); //lcd.home(); ) void loop() ( uint8_t buf; // ბუფერი შეტყობინებისთვის uint8_t buflen = VW_MAX_MESSAGE_LEN; // ბუფერის სიგრძე if (vw_get_message(buf, &buflen)) // თუ შეტყობინება მიღებულია ( // დაიწყეთ გაანალიზება int i; // თუ შეტყობინება ჩვენთვის არ არის მიმართული, გამოდით, თუ (buf != "z") ( return; ) char ბრძანება = buf; // ბრძანება არის ინდექსში 2 // რიცხვითი პარამეტრი იწყება ინდექსით 4 i = 4; int ნომერი = 0; // ვინაიდან გადაცემა არის სიმბოლო-სიმბოლო, მაშინ თქვენ უნდა გადაიყვანოთ სიმბოლოების ნაკრები რიცხვად, ხოლო (buf[i] != "") (რიცხვი *= 10; ნომერი += buf[i] - "0"; i++; ) dps.getPressure(&Pressure); dps.getAltitude (&Altitude); dps.getTemperature(&Temperature); //Serial.print(ბრძანება); Serial.print(" "); Serial.println( ნომერი); lcd.print("T="); lcd.setCursor(2,0); lcd.print(ნომერი); lcd.setCursor(5,0); lcd.print("P="); lcd.print(Pressure/133.3); lcd.print ("mmH"); lcd.setCursor(0,1); lcd.print("T="); lcd.print(ტემპერატურა*0.1); lcd.print("H="); LCD.print(სენსორი.ტენიანობა); LCD.home(); //დაყოვნება(2000); int chk = sensor.read(DHT11PIN); გადამრთველი (chk) (ქეისი DHTLIB_OK: //Serial.println("OK"); შესვენება; ქეისი DHTLIB_ERROR_CHECKSUM: //Serial.println("Checksum error"); break; case DHTLIB_ERROR_TIMEOUT: //Serial.println("Time out შეცდომა"); შესვენება; ნაგულისხმევი: //Serial.println("უცნობი შეცდომა"); შესვენება; ) ))

P.S. სამომავლოდ ვგეგმავ დავამატო შემდეგი:
- ტენიანობის სენსორი გადამცემზე, გადაამუშავეთ მონაცემთა გადაცემის ალგორითმი
- სენსორი ქარის სიჩქარისა და მიმართულების გასაზომად.
- დაამატეთ სხვა დისპლეი მიმღებ მოწყობილობას.
- გადაიტანეთ მიმღები და გადამცემი ცალკე მიკროკონტროლერზე.

ქვემოთ მოცემულია მომხდარის ფოტო:

რადიოელემენტების სია

Დანიშნულება ტიპი დასახელება რაოდენობა შენიშვნაᲛაღაზიაჩემი ბლოკნოტი
გადამცემი ნაწილი.
არდუინოს დაფა

Arduino Nano 3.0

1 რვეულში
ტემპერატურის სენსორი

DS18B20

1 რვეულში
რეზისტორი

220 Ohm

1 რვეულში
გადამცემის მოდულიMX-FS-03V (433 MHz)1 რვეულში
რადიოს მიმღები ნაწილი.
არდუინოს დაფა

არდუინო უნო

1 რვეულში
ტრიმერის რეზისტორი 1 რვეულში
რეზისტორი

ერთ დღეს, ინტერნეტის შესწავლისას, შემხვდა საინტერესო Arduino დაფა. ძალიან დამაინტერესა ეს დაფა. მისი დახმარებით შეგიძლიათ გააკეთოთ თქვენი საკუთარი რობოტი, ამინდის სადგური, სიგნალიზაცია და კიდევ უფრო სერიოზული, მაგალითად, "ჭკვიანი სახლი".

ამ მოწყობილობის შეძენის შემდეგ დავიწყე მისი მახასიათებლების შესწავლა. საკმარისად ვითამაშე LED-ებით, ტემპერატურის სენსორით და LCD დისპლეით, გადავწყვიტე გამეკეთებინა რაღაც საინტერესო და რაც შეიძლება გამომეყენებინა სახლში.
და აი რა გამოვიდა აქედან...

დღეს მინდა ვისაუბრო ჩემი პატარა სახლის პროექტზე, კერძოდ, შიდა ამინდის სადგურზე Arduino-ს გამოყენებით. ვფიქრობ, ყველას სურს ნახოს, მაგალითად, როგორი ტემპერატურა ან ტენიანობაა მათ ოთახში, ამიტომ ჩემი პროექტი ამის საშუალებას მოგცემთ.

ასე გამოიყურება აწყობილი მეტეოროლოგიური სადგური:

თქვენ ალბათ გინდოდათ იგივე მოწყობილობის აწყობა, ნუ დავაგვიანებთ.

შესაძლებლობები

მაგრამ ჯერ ვნახოთ, რისი გაკეთება შეუძლია ჩვენს ამინდის სადგურს:

1) აჩვენეთ მიმდინარე თარიღი და დრო;
2) მიმდინარე ტემპერატურის ჩვენება;
3) აჩვენეთ მიმდინარე ტენიანობა;
4) აჩვენეთ მიმდინარე ატმოსფერული წნევა.

ნაერთი

რა გვჭირდება ამ ამინდის სადგურის განსახორციელებლად:

1) თავად Arduino მიკროკონტროლერი (გამოვიყენე Arduino nano v3);
2) ტემპერატურისა და ტენიანობის სენსორი Dht22 (მცირე შეცდომები წაკითხვაში);
3) ბარომეტრი BMP085, მას შეუძლია ბევრი რამის გაკეთება, მაგალითად, ატმოსფერული წნევის, ტემპერატურის, ზღვის დონის გაზომვა;
4) რეალურ დროში საათი DS3231 (ეს არის ძალიან ზუსტი და მარტივი კონფიგურაცია);
5) ამის ჩვენება მაინც გვჭირდება სადმე, მე ავირჩიე ცნობილი ეკრანი Nokia 5110-დან;
6) სწორი მკლავები, ამის გარეშე არ შეგიძლია.

აუცილებლობა:

7) ბატარეის ნაკრები მთელი სტრუქტურის კვებისათვის. USB-დან ვიკვებ. არ ძლებს რამდენიმე დღე ბატარეებზე;
8) გადართვა, აქ არის საჭირო ეკრანის განათების ჩართვა;
9) პლაივუდის ნაჭერი და ფეხები.
10) კონექტორი კვების წყაროს შესაერთებლად.

კავშირი

ახლა ვნახოთ სად და როგორ დავაკავშიროთ რა.

1) პირველი იქნება ჩვენი ეკრანი:
პინი 3 - სერიული საათი (SCLK)
pin 4 - სერიული მონაცემების გასვლა (DIN)
პინი 5 - მონაცემთა/ბრძანების შერჩევა (D/C)
პინი 7 - LCD ჩიპის შერჩევა (CS)
pin 6 - LCD გადატვირთვა (RST)
სიმძლავრე 3.3 ვ

3) მესამე იქნება ბარომეტრი:
pin 4 - SDA
pin 5 - SCL
კვების ბლოკი 5 ვ

არ დაგავიწყდეთ დენის და დამიწების დაკავშირება.

კოდი

ახლა ყველაზე საინტერესო ნაწილი ჩვენი კოდია.
შევეცადე კარგად გამომეთქვა, რომ გასაგები ყოფილიყო, მაგრამ ბიბლიოთეკებიდან ინგლისურ ენაზეც იქნება ჩანართები. ვფიქრობ, თარგმანის პრობლემა არ იქნება.

კოდი

#შეიცავს #include "DHT.h" #include #შეიცავს #include "RTClib.h" #define DHTPIN 10 // 10 pin for DHT22 sensor #define DHTTYPE DHT22 RTC_DS1307 RTC; BMP085 dps = BMP085(); DHT dht(DHTPIN, DHTTYPE); ხანგრძლივი ტემპ3 = 0, წნევა = 0, სიმაღლე = 0; // პინი 3 - სერიული საათის გამორთვა (SCLK) // პინი 4 - სერიული მონაცემების ამოღება (DIN) // პინი 5 - მონაცემთა/ბრძანების არჩევა (D/C) // პინი 7 - LCD ჩიპის არჩევა (CS) // პინი 6 - LCD გადატვირთვა (RST) LCD5110 myGLCD(3, 4, 5, 6, 7); გარე ხელმოუწერელი char SmallFont; void setup() ( myGLCD.InitLCD(); myGLCD.setFont(SmallFont); Wire.begin(); RTC.begin(); dht.begin(); delay(2000); dps.init(MODE_ULTRA_HIGHRES, 3200, true ); // 3200 არის 32 მეტრი ზღვის დონიდან (პიტერი მდებარეობს ამ სიმაღლეზე + თქვენ უნდა დაამატოთ რამდენიმე მეტრი იმის მიხედვით, თუ სართულზე ცხოვრობთ) ) void loop() ( dps.getPressure(&Pressure); dps.getAltitude (&Altitude); dps.getTemperature(&temp3); DateTime now = RTC.now(); // სენსორის წაკითხვები შეიძლება ასევე იყოს 2 წამამდე "ძველი" (ეს ძალიან ნელი სენსორია) float h = dht.readHumidity(); // ტემპერატურის წაკითხვა, როგორც ცელსიუსის float t = dht.readTemperature(); myGLCD.setFont(SmallFont); // დააყენეთ პატარა შრიფტის ზომა ეკრანზე myGLCD.clrScr(); // გაასუფთავეთ ეკრანი myGLCD.print("Time=" ", LEFT, 0); //დააყენეთ დრო myGLCD.printNumI(int(now.hour()), 32, 0); // 32.0 ნიშნავს 32=სტრიქონის ხარვეზების რაოდენობას, საიდანაც დავბეჭდავთ 0=სტრიქონის ნომერი myGLCD.print(": ", 45, 0); myGLCD.printNumI(int(now.minute()), 50, 0); myGLCD.print(":", 62, 0); myGLCD .printNumI(int(now.second()) , 67, 0); myGLCD.print("თარიღი=", LEFT, 10); //დააყენეთ თარიღი myGLCD.printNumI(int(now.day()), 32, 10); myGLCD.print("/", 44, 10); myGLCD.printNumI(int(now.month()), 50, 10); myGLCD.print("/", 62, 10); myGLCD.printNumI(int(now.year() - 2000), 68, 10); myGLCD.print("T=", LEFT, 20); //ტემპერატურის დაყენება myGLCD.printNumF(t, 2, 13, 20); //ეს არის ტემპერატურა DHT22 myGLCD.print("/", 45, 20); myGLCD.printNumF(temp3 * 0.1, 2, 53, 20); //ეს არის ტემპერატურა ბარომეტრიდან myGLCD.print("Hum=", LEFT, 30); // დააყენეთ ტენიანობა DHT22 myGLCD.printNumF(h, 2, 28, 30); myGLCD.print("%), 63, 30); myGLCD.print("Pres=", LEFT, 40); // დააყენეთ ატმოსფერული წნევა myGLCD.printNumF(Pressure / 133.3, 2, 31, 40); //ატმოსფერული წნევის გამოთვლა myGLCD.print("მმ", 68, 40); // Serial.print(" Alt(m):"); ვის აინტერესებს, ეს არის ამჟამინდელი სიმაღლე ზღვის დონიდან // Serial.print(Altitude / 100); myGLCD.update(); // დიდი ბუფერის გამოტანა ჩვენების დაყოვნებაზე (1000); // დაყოვნება 1 წმ)



მოგეწონათ სტატია? Გააზიარე