Სარჩევი:

SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის: 3 ნაბიჯი (სურათებით)
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის: 3 ნაბიჯი (სურათებით)

ვიდეო: SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის: 3 ნაბიჯი (სურათებით)

ვიდეო: SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის: 3 ნაბიჯი (სურათებით)
ვიდეო: Arduino with Silverlight 2024, ივლისი
Anonim
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის
SilverLight: Arduino დაფუძნებული გარემოს მონიტორი სერვერის ოთახებისთვის

ერთხელ მომცეს დავალება, ეძებო გარემოსდაცვითი ზონდი, რომ მონიტორინგი გაუწიოს ტემპერატურას ჩემი კომპანიის სერვერის ოთახში. ჩემი პირველი იდეა იყო: რატომ არ გამოვიყენოთ Raspberry PI და DHT სენსორი, მისი დაყენება შესაძლებელია ერთ საათზე ნაკლებ დროში, ოპერაციული სისტემის ინსტალაციის ჩათვლით. ამისათვის მე მივიღე ცივი პასუხი თვალდახუჭული უფროსებისგან, რომ ჩვენ ამას არ გავაკეთებთ, რადგან სამუშაო საათებში უფრო ძვირი დაჯდება, ვიდრე მოწყობილობის ყიდვა. ვიწრო მოაზროვნე ადამიანების მიღება ჩემი ცხოვრების ნაწილისათვის იყო ერთი რამ და მე უბრძანა EATON– ის საწარმოს უსარგებლო ნაგავი Ebay– დან და დაურეკე, მაგრამ იმ მომენტში გადავწყვიტე, რომ ჩემი საკუთარი სერვერის ოთახისთვის ავაშენებ სრულიად ღია კოდის Arduino– ს დაფუძნებული მოწყობილობა, რომელიც ბევრად უკეთესი იქნება, ვიდრე ახლახან შევუკვეთე.

ამ პროექტს ეწოდება კოდი SilverLight, არ მკითხოთ საიდან მოვიტანე ეს სახელები:) მე უბრალოდ შევხედე ბრწყინვალე ნახევრად აკრილის ყუთს და გადავწყვიტე ეს სახელი, მას საერთო არაფერი აქვს მიკროჰოფის პროდუქტთან, რის შესახებაც აღმოვაჩინე რა

ნაბიჯი 1: აპარატურის დიზაინი

აპარატურის დიზაინი
აპარატურის დიზაინი
აპარატურის დიზაინი
აპარატურის დიზაინი
აპარატურის დიზაინი
აპარატურის დიზაინი

კომერციული ტექნიკის მიმოხილვა.

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

გარემოს მონიტორინგის მოწყობილობა თავსებადობა

10/100Mb ქსელი-MS, PXGUPS, PXGPDP და PXGMS.

10/100Mb ConnectUPS-X, ConnectUPS-BD და ConnectUPS-E FW V3.01 და უფრო მაღალი. განზომილებები (LXWXH)

2.26 x 1.48 x 1.15 (ინჩი) 57.6 x 37.6 x 29.3 (მმ) წონა

1.19 უნცია (34 გ)

ძალიან სასარგებლო ინფორმაციაა, არა? არ ინერვიულოთ, რადგან მათ ბევრი რამის გაკეთება არ შეუძლიათ. დასაწყებად თქვენს UPS– ს დასჭირდება კიდევ ერთი ძვირადღირებული დამატებითი ბარათი, რომელიც აკავშირებს ამას ცალკე შეძენილ გარემოს სენსორთან, ჩვეულებრივ სტანდარტული CAT5 კაბელით (არც კი სცადოთ ამ პორტში რაიმე შეაერთოთ, რადგან სტანდარტული არაფერია ამის შესახებ). ისინი აცხადებენ, რომ მოწყობილობას სჭირდება 10 წუთი "გასათბობად", რაც სინამდვილეში იყო საათები და როდესაც ის voila გამოჩნდა, ის გამოჩნდა მათ ნელა განახლებულ java ინტერფეისში და ჩვენ გვაქვს ტემპერატურა და ტენიანობა. გაფრთხილებებზე დაფუძნებული პირობების შექმნა ადვილი იყო ამ მომენტიდან, მაგრამ ვის აინტერესებს, ავაშენოთ რამე უკეთესი.

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

  • ტემპერატურა/ტენიანობა/სითბოს ინდექსი
  • LPG, კვამლი, ალკოჰოლი, პროპანი, წყალბადი, მეთანი და ნახშირბადის მონოქსიდის კონცენტრაცია ჰაერში (MQ2)
  • მზის მგრძნობელობა (არის თუ არა შუქი სერვერის ოთახში?)
  • მოძრაობის PIR სენსორი (თქვენ შეგიძლიათ განათება ავტომატურად ჩართოთ/გამორთოთ ამიერიდან მოძრაობის სენსორის წყალობით, როდესაც ვინმე შემოდის ოთახში)

ყველა ეს მონაცემი ლამაზად არის ნაჩვენები LCD ეკრანზე, ასევე გადაეცემა კომპიუტერს (Orange PI Zero) შემდგომი დამუშავებისა და სიგნალებისთვის. მიუხედავად იმისა, რომ შესაძლებელი იქნებოდა ციფრული სენსორების, როგორიცაა DHT და MQ2 ციფრული პინის დაკავშირება OrangePI– სთან, მე ყოველთვის მირჩევნია ამ ამოცანებისათვის გამოყოფილი მიკროების გამოყენება და როდესაც თქვენ ასევე გჭირდებათ LCD– ის განახლება და სხვა დაბალი დონის გაკეთება. პერსონალი Arduino უბრალოდ დაუმარცხებელია და შეუძლია საიმედოდ იმუშაოს გაუჩერებლად მრავალი წლის განმავლობაში (ფაქტობრივად, არც ერთი Arduino, რომელიც მუშაობს 24/7 ჯერ არ გამომივიდა). OrangePI თავისი ნაკლოვანებებით (ვაღიაროთ, რომ ეს არის $ 10 კომპიუტერი), როგორც გამოუსადეგარი მძიმე დატვირთვისთვის, bsd მხარდაჭერის გარეშე, ინტეგრირებული wifi არის გაბერილი და ა.

ეს არის ძალიან მარტივი პროექტი ტექნიკური თვალსაზრისით, რომელიც მოითხოვს შემდეგ კომპონენტებს:

  • Arduino PRO მიკრო
  • LCD ეკრანი 2x16 სიმბოლო RGB
  • AC-DC საიზოლაციო გადამრთველის დენის მოდული 220V 5V HLK-5M05 (ეს ძალიან კარგია Arduino/ESP პროექტებისთვის), ეს არის 5V/5W ვერსია!
  • 2x300ohm რეზისტორები
  • 2xleds (წითელი/მწვანე)
  • PIR მოძრაობის სენსორი
  • MQ2 სენსორი
  • DHT22
  • LDR
  • 2X10Kohm რეზისტორი
  • ბუზერი
  • ნარინჯისფერი PI ნულოვანი
  • მინი USB მონაცემთა კაბელი

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

-DHT22 დასჭირდება 10K გაყვანა VCC– ზე (ციფრული)

-LDR დაგჭირდებათ 10K გადატვირთვა GND– ზე (ანალოგი)

-MQ2 შეიძლება პირდაპირ იყოს დაკავშირებული ნებისმიერ ანალოგიურ პინთან (ანალოგი) <უპირატესობა მიანიჭეთ ანალოგს, რადგან რატომაც არა, როდესაც ჩვენ გვაქვს MCU ანალოგური ქინძისთავებით, სადაც შეგვიძლია მივიღოთ ზუსტი მნიშვნელობა მოწყობილობის უკანა ნაწილზე ქოთნის მორგების ნაცვლად, რათა მივიღოთ HIGH ან LOW გარეთ, ჩემი დიზაინის წებოვნების გამო, რომელიც მაინც მიუწვდომელია. შეამოწმეთ:

-PIR შეიძლება პირდაპირ იყოს დაკავშირებული ნებისმიერ პინთან (ციფრული)

-LCD: შეიძლება მართოს 4 ქინძისთავით, შეიძლება იყოს დაკავშირებული ნებისმიერ პინთან (ციფრული) დასჭირდება +2 RS/E (ციფრული)

-Buzzer: შეიძლება პირდაპირ იყოს დაკავშირებული Arduino- ს ნებისმიერ პინთან (ციფრული)

Pinout, რომელიც მე გამოვიყენე, ჩანს კოდში. ყოველივე ამის შემდეგ ერთმანეთთან დაკავშირება საკმაოდ სწორია, თქვენ ასევე შეგიძლიათ გააკეთოთ ისინი სათითაოდ, დარწმუნდით, რომ 1 სენსორი მშვენივრად მუშაობს, შემდეგ გადადით შემდეგზე, ყველაფერი რისი შეცდომაც შეგიძლიათ შეცდომით შეაერთოთ მავთულხლართებს არასწორ ადგილას (მაგ. Vcc- ის შეცვლა /gnd სენსორისთვის, ჯერჯერობით ამან არასოდეს მოკლა ჩემი ნებისმიერი მოწყობილობა). რასაც მე აქ აღვნიშნავდი, რომ იყო ძალიან ბევრი VCC და GND, რომლებიც დაყენებული იყო ჩემთვის, მე არ შემეძლო მათი შეკუმშვა ტერმინალის ზოლში, ასე რომ მე შევაერთე ყველა.

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

PIR მოძრაობის გამოვლენის სენსორების შესახებ, როგორც ხედავთ ჩემს სურათზე არის უამრავი ყალბი ეს ყალბი, სინამდვილეში კი მე გამიჭირდებოდა ორიგინალის ყიდვა Ebay– დან. ყალბი მუშაობს ისევე კარგად, თუნდაც გრძელვადიან პერსპექტივაში, მაგრამ მათ აქვთ მიკროსქემის სარკე, რაც იწვევს + და - ქინძისთავების უკუქცევას, ასევე ადვილია მათი ამოცნობა: ლურჯი pcb– ით მოყვება არა ჩვეულებრივი მწვანე, აკლია ეტიკეტები ქოთნები. გამიმართლა, რომ ჩემს ყუთში ვიპოვე ნამდვილი, წინააღმდეგ შემთხვევაში პოზიციის შეცვლა დაფარავს ჩემთვის 2 ლიდერს. აღმოვაჩინე, რომ ორივე ქოთანი შუა გზაზე მუშაობს ჩემთვის. ეს მოგცემთ საკმარისად დიდ დიაპაზონს შეგრძნებისათვის, ასევე მოძრაობის დროს ციფრული ფეხი დარჩება HIGH პოზიციაში დაახლოებით ერთი წუთის განმავლობაში, ასე რომ თქვენ არ გჭირდებათ შეადგინოთ კოდი ამისათვის. ყალბებზე ადვილია იმის დადგენა, თუ რომელი მხარეა - და + უბრალოდ შეხედეთ შესაბამის ფეხებს ქინძისთავებთან დაკავშირებული ელექტროლიტური ხუფებისთვის.

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

ნაბიჯი 2: პროგრამული უზრუნველყოფის დიზაინი

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

Arduino კოდი ასევე მარტივია, ის ძირითადად იზიდავს ყველა სენსორის კითხვას ყოველი მარყუჟის დასაწყისში. ჩართავს LED- ებს, თუ მოძრაობა ან კვამლია და ასევე უკვამს სიგნალის სიგნალს ზარის შესახებ, თუ კვამლია (ეს არის ერთადერთი დაბლოკვის კოდი, ამიტომ მოკლედ გავაკეთე), შემდეგ აჩვენებს მონაცემებს LCD- ზე და ბოლოს აგზავნის კომპიუტერზე 10 წამიანი დაყოვნების პერიოდით, რომ არ დაიტბოროს პორტი.

ეს პროექტი იყენებს ცალმხრივ კომუნიკაციას Arduino-> OrangePI– დან, არ არის განხორციელებული რაიმე სახის ბრძანებები. მიუხედავად იმისა, რომ ამის გაკეთება სავსებით შესაძლებელი იქნებოდა, როგორც ეს გავაკეთე ჩემს ერთ სხვა პროექტში, სადაც კომპიუტერს შეუძლია გამოაგზავნოს LCD_PRINT1 ან LCD_PRINT2, რომ გადაწეროს LCD ეკრანის ერთი ხაზი საკუთარი შეტყობინებით (მაგ.: IP მისამართი, დრო, სისტემის თარიღი, cpu გამოყენება), ეკრანის ფართობი იმდენად მცირეა 3 სენსორის მონაცემების საჩვენებლად, რომ მე არც კი შემაწუხებია. SOL და SMK მნიშვნელობები შეიძლება გაიზარდოს 4 ციფრამდე 0000-1023 და მიიღოს ეკრანზე უკვე 8 ღირებული სიმბოლო.

LCD– ით თქვენ შეგიძლიათ შეამჩნიოთ პატარა ხრიკი კოდში, რომ ყოველი გაზომილი მნიშვნელობის შემდეგ გამოიყენება თეთრი სივრცეების ბეჭდვა (""), შემდეგ კურსორს გადავიყვან ფიქსირებულ პოზიციებზე ახალი ხატებისა და მონაცემების განთავსებისთვის. ეს არის იქ, რადგან LCD არ არის ისეთი ჭკვიანი, რომ გაიგოს რიცხვები, ის უბრალოდ ხატავს იმას, რასაც იღებს და მაგალითად, თუკი მზის ენერგია გქონდა 525, რომელიც მოულოდნელად 3 -მდე შემცირდა, ის აჩვენებს 325 -ს, რაც ძველ ნაგავს ტოვებს ეკრანზე. იქ

C კონტროლის კოდი მუშაობს OrangePI– ზე და აფიქსირებს გარემოს მონაცემებს და აგზავნის ელ.ფოსტის შეტყობინებებს საჭიროების შემთხვევაში.

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

0.17 A - მხოლოდ Arduino + სენსორები

0.5-0.62 A - OrangePI ჩატვირთვა

0.31 A - ნარინჯისფერი PI უმოქმედოდ

0.29 A - ნარინჯისფერი PI გამორთულია (ნამდვილად არ შეიძლება მისი გამორთვა, მას არ აქვს ACPI ან მსგავსი რამ)

0.60 A - სტრესის ტესტი 100% პროცესორის გამოყენება 4 ბირთვზე

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

ახლა ეს არის ერთგვარი შემაშფოთებელი, რადგან HLK-5M05 აცხადებს, რომ მას შეუძლია 5W 5V– ზე გაზარდოს, რაც მას შეუძლია უზრუნველყოს 1 Amp, მაგრამ როდესაც ჩინეთიდან გამოდის ეს მოწყობილობები, თქვენ უბრალოდ არ იცით, რომ 0.63 პიკი ბევრად დაბალი იყო ვიდრე რეიტინგული მაქსიმალური ღირებულება. ასე რომ, მე ვატარებდი გადატვირთვის მარტივ ტესტებს, 10 გადატვირთვიდან OrangePI მხოლოდ ორჯერ წარმატებით ჩამტვირთავდა, რამაც თითქმის გამაგდო პროექტიდან, რადგან არ მომწონს სქემებში შეცდომების არათანმიმდევრული ქცევა. ასე რომ, მე დავიწყე გუგლი, ალბათ არსებობს რაიმე საშუალება პროგრამული უზრუნველყოფის ჩატვირთვისას ენერგიის მოხმარების შემცირების მიზნით (ვინაიდან ეს მხოლოდ მაშინ იყო პრობლემა) და აღმოვაჩინე სტატია, რომელიც საუბრობდა სკრიპტის შეცვლაზე. ბინ, მაგრამ ეს იყო ნარინჯისფერი PI კომპიუტერისთვის და ფაილები არ იყო დაცული, ასე რომ რაც არ უნდა იყოს, მე გავაკეთე ჯადოსნური "ხელსაყრელი განახლება" firmware- ის, ბირთვისა და სხვა ყველაფრის გასაუმჯობესებლად, იმ იმედით, რომ ის ნაკლებად დაიშლება და მოწყობილობა ჩაირთვება და:

Linux silverlight 4.14.18-sunxi #24 SMP პარ 9 თებ 16:24:32 CET 2018 armv7l GNU/Linux

Linux silverlight 4.19.62-sunxi #5.92 SMP ოთხ ივლ 31, 22:07:23 CEST 2019 armv7l GNU/Linux

იმუშავა! პროგრამული უზრუნველყოფის პრობლემაზე ტექნიკის გადაყრა, როგორც წესი, ზარმაცი ჯავა დეველოპერებია, მაგრამ ამ შემთხვევაში ჩვენ გადავწყვიტეთ აპარატურის პრობლემა პროგრამულ უზრუნველყოფასთან, რაც დიდი წარმატებაა. მე ჩავატარე კიდევ 20 გადატვირთვის ტესტი, როდესაც მოწყობილობა ჩატვირთავდა თითოეულ შემთხვევას. მე მაინც აღვნიშნავ, რომ Opi– ს ჩართვისას ენერგიის მომატება (დაკავშირება/გათიშვა) იმდენად დიდია, რომ ის ნებისმიერ დროს გადატვირთავს Arduino– ს (უბრალო გადატვირთვა უბრალოდ ციმციმებს LCD– ს, მაგრამ არ გამოიწვევს სხვა პრობლემებს), მაგრამ ეს საკითხი რჩება იმალება ვინაიდან 2 ჩატვირთული იქნება ერთად.

მე ასევე გადავხედე ბირთვის მოდულებს:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils ttm sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer SND sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq uio thermal_sys pwrseq_simple

რა გვჭირდება მათგან სინამდვილეში? კარგი pwr და თერმული შეიძლება იყოს სასარგებლო, მაგრამ ხმოვანი, სერიული პორტი, wifi (უკვე გატეხილი hw) ჩვენ არ გვჭირდება ეს ყველაფერი შავ სიაშია. მე ასევე შევქმნი საბაჟო ბირთვს მხოლოდ შემდგომში საჭირო მოდულებით.

რაც ჩვენ გვჭირდება და ის არ არის დატვირთული სტანდარტულად არის CDC ACM Arduino– სთან კომუნიკაციისთვის, მისი ჩართვის მიზნით:

ექო "cdc-acm" >> /etc /მოდულები

ამის შემდეგ თქვენ უკვე შეგიძლიათ შეამოწმოთ კავშირი:

ეკრანი /dev /ttyACM0 9600

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

გაფრთხილებები და მონიტორინგი

რაც შეეხება სიგნალებს, მე უბრალოდ ჩავსვი სისტემის () ზარებს C კონტროლის კოდში, რომელიც იღებს მონაცემებს სერიიდან, ამიტომ გარე ინსტრუმენტები არ არის საჭირო. გაფრთხილების რამდენიმე მაგალითი:

- ტემპერატურა აღემატება 30 გრადუსს

- ტენიანობა აღემატება 70 % -ს (არ არის ჯანსაღი სერვერებისთვის)

- მოძრაობა გამოვლინდა ოთახში (ეს შეიძლება იყოს შემაშფოთებელი, თუ გააგრძელებთ თქვენს სერვერის ოთახში)

- აღმოჩენილია კვამლი ან გაზი (100 -ზე მეტი გაფრთხილება შეიძლება სერიოზულად იქნას მიღებული, მე ვთამაშობ ამ სენსორთან და ის ბევრ რამეზე ირთვება, მაგალითად, სენსორის გვერდით კვამლის შედუღება რამოდენიმეჯერ 50 -ზე მეტს მიაღწია სიგარეტის მოწევის შემდგომ o ის 500 -მდე გაიზარდა, მან აღმოაჩინა გაზი ჩვეულებრივი დეოდორანტიდან შორიდან)

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

apt-get დააინსტალირეთ zabbix-agent

დაამატეთ ბოლოს: /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 1}'

UserParameter = silverlight.tmp, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 2}' UserParameter = silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 4}' UserParameter = silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 5}' UserParameter = silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{ბეჭდვა $ 6}'

გაშვებული zabbix_agentd -p უნდა დააბრუნოს შესაბამისი მნიშვნელობები:

ვერცხლისფერი.ჰუმ [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

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

[SILVERLIGHT] მონაცემები მიღებული 2019-09-10 23:36:08 => ტენიანობა: 44, ტემპერატურა: 22, გამარჯობა: 25, მზე: 0, მოძრაობა: 0, მოწევა: 21

[SILVERLIGHT] მიღებული მონაცემები 2019-09-10 23:36:18 => ტენიანობა: 44, ტემპერატურა: 22, გამარჯობა: 25, მზე: 0, მოძრაობა: 0, მოწევა: 21 [SILVERLIGHT] მონაცემები მიღებულია 2019-09 წლებში -10 23:36:29 => ტენიანობა: 44, ტემპერატურა: 22, გამარჯობა: 25, მზე: 0, მოძრაობა: 0, მოწევა: 22 [SILVERLIGHT] მონაცემები მიღებულია 2019-09-10 23:36:39 => ტენიანობა: 44, ტემპერატურა: 22, გამარჯობა: 25, მზე: 0, მოძრაობა: 0, მოწევა: 21

მეორე:

void logger2 (char *text) {

FILE *f = fopen ("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) {printf ("შეცდომა მეხსიერების ჟურნალის ფაილის გახსნისას! / n"); დაბრუნების; } fprintf (f, "%s", ტექსტი); დახურვა (ვ); დაბრუნების; }

ეს მეხსიერებაში დააყენებს 1 ლაინერის ჟურნალს (გამორიცხავს sdcard– ზე არასაჭირო rw ოპერაციებს), რომელიც ყოველთვის გადაწერილი იქნება შემდეგ ჯერზე. ეს ჟურნალი შეიცავს მხოლოდ მონაცემთა 6 სვეტს და დროის ნიშნულს, ის ადვილად იკითხება Zabbix– ისთვის.

როგორც საბოლოო ბონუსი: როგორ დავგეგმოთ Arduino პირდაპირ OrangePI– დან, ასე რომ თქვენ არ მოგიწევთ მოწყობილობასთან ყოველ ჯერზე სიარული და ლეპტოპის ჩართვა.

არსებობს 2 გზა:

-მარტივი გზა: დააინსტალირეთ სრული Arduino IDE და ბიბლიოთეკები იყენებენ დისტანციურ სამუშაო მაგიდას, როგორიცაა X11 გადაგზავნით, Xrdp, Xvnc, Nxserver და ა.

-ძნელი გზა: დააინსტალირეთ Arduino IDE და გამოიყენეთ ბრძანების სტრიქონი

ჩვენ ამჯერად ურთულეს გზას გავაკეთებთ, რადგან მე არ მიყვარს სერვერებზე X11 დაყენება. ამისათვის დაგჭირდებათ 6 კომპონენტი:

1, Arduino IDE for ARM 32 bit ->

2, პითონის სერიალი-> apt-get install python-serial

3, Arduino Makefile პროექტი -> git clone

4, DHT ბიბლიოთეკა

5, Sparkfun დაფის განმარტებები

6, SilverLight.ino, მთავარი კოდი

გასაადვილებლად, მე შევაჯამე ბოლო 4 ქულისთვის საჭირო ფაილები (sketchbook.tgz), ასე რომ თქვენ დაგჭირდებათ მხოლოდ პირველი 2

პირველ რიგში უმჯობესია შექმნათ რეგულარული მომხმარებელი, რომელსაც აქვს rw წვდომა USB პორტზე:

დამატებული ვერცხლი

usermod -a -G dialout ვერცხლი

დააწკაპუნეთ sketchbook.tgz მოწყობილობაზე ახლადშექმნილი მომხმარებლის სახლის დირექტორიაში და ამოიღეთ იგი იქ:

cd /მთავარი /ვერცხლი

tar xvzf sketchbook.tgz

იმის გასაგებად, თუ რა ხდება ხუფის ქვეშ, როდესაც იყენებთ გრაფიკულ IDE– ს:

Arduino ესკიზის მშენებლობის სამუშაო პროცესი Arduino IDE– ს გამოყენებისას აღწერილია Arduino– ს ვებგვერდზე https://www.arduino.cc/en/Hacking/BuildProcess და უფრო დეტალურად აქ: https://www.arduino.cc/ jw.org ka/Hacking/BuildProcess

საერთოდ, Arduino– ს მშენებლობის სტანდარტული პროცესია:

. Ino ფაილები შეაერთეთ მთავარ ესკიზის ფაილში. ძირითადი ესკიზის ფაილის გარდაქმნა: დაამატეთ #include განცხადება; მთავარ ესკიზურ ფაილში ყველა ფუნქციის ფუნქციის დეკლარაციის (პროტოტიპების) შექმნა; დაამატეთ სამიზნე main.cxx ფაილის შინაარსი მთავარ ესკიზურ ფაილს. შეადგინეთ კოდი ობიექტის ფაილებისთვის. ობიექტის ფაილების მიბმა.

არსებობს უმნიშვნელო განსხვავებები არდუინოს სტანდარტული მშენებლობის პროცესსა და არდუინო-მაკეფილის გამოყენებით მშენებლობის პროცესს შორის:

მხოლოდ ერთი.ino ფაილია მხარდაჭერილი. ფუნქციის დეკლარაციები არ არის ავტომატურად შექმნილი.ino ფაილში. მომხმარებელმა უნდა იზრუნოს სწორი ფუნქციის დეკლარაციების შექმნაზე.

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

BOARD_TAG = პრომიკრო

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT =/dev/ttyACM0 USER_LIB_PATH =/მთავარი/ვერცხლი/ჩანახატი/ბიბლიოთეკები ARDUINO_DIR = /opt/arduino-1.8.9 მოიცავს /home/silvera

და ყველაფერი რაც თქვენ გჭირდებათ აკრიფეთ არის: განახორციელეთ ატვირთვა (რომელიც ააშენებს. Hex ფაილებს და შემდეგ იყენებს avrdude მათ ასატვირთად), ის დასრულდება მსგავსი რამით:

mkdir -p build-promicro-16MHzatmega32U4

გააკეთე გადატვირთვა make [1]: შეიყვანე დირექტორია '/home/silver/sketchbook'/home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina/dev/ttyACM0 make [1]: ტოვებს დირექტორიას ' /home/silver/sketchbook 'make do_upload make [1]: შედის დირექტორია'/home/silver/sketchbook '/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P/dev/ttyACM0 / -U flash: w: build -promicro -16MHzatmega32U4/ესკიზის წიგნი. hex: i პროგრამისტთან დაკავშირება:. ნაპოვნია პროგრამისტი: Id = "CATERIN"; ტიპი = S პროგრამული უზრუნველყოფის ვერსია = 1.0; აპარატურის ვერსია არ არის მოცემული. პროგრამისტი მხარს უჭერს ავტომატური დამატების ზრდას. პროგრამისტი მხარს უჭერს ბუფერულ მეხსიერებაზე წვდომას ბუფერული ზომა = 128 ბაიტი. პროგრამისტი მხარს უჭერს შემდეგ მოწყობილობებს: მოწყობილობის კოდი: 0x44 avrdude: AVR მოწყობილობა ინიციალიზირებულია და მზად არის მიიღოს ინსტრუქციები avrdude: მოწყობილობის ხელმოწერა = 0x1e9587 (ალბათ m32u4) (11580 ბაიტი): avrdude: 11580 ბაიტი flash დაწერილი avrdude: safemode: Fuses OK (E: CB, H: D8, L: FF) avrdude done. Გმადლობთ.

კარგი მადლობა avrdude, და ახლა ჩვენი Arduino გადატვირთულია და დაპროგრამებულია ახალი კოდით, რისი რედაქტირებაც შეგიძლიათ vi ან თქვენი საყვარელი რედაქტორით ადგილობრივად, არ გჭირდებათ რაიმე IDE. მე აღვნიშნავ, რომ თქვენ უნდა დახუროთ როგორც C კონტროლის პროგრამა, ეკრანი ან სხვა რამ, რაც წვდება arduino– ს ატვირთვისას, წინააღმდეგ შემთხვევაში პორტი დაბრუნდება როგორც /dev /ttyACM1 გადატვირთვის შემდეგ.

ნაბიჯი 3: დახურვა და Todo სია

დახურვა და Todo სია
დახურვა და Todo სია
დახურვა და Todo სია
დახურვა და Todo სია
დახურვა და Todo სია
დახურვა და Todo სია

მიუხედავად იმისა, რომ მე შევქმენი ეს გარემოსდაცვითი სენსორული ყუთი სერვერის ოთახებისთვის, შეგიძლიათ გამოიყენოთ იგი ქიმიის/ელექტრონული ლაბორატორიებისთვის, საწყობებისთვის, რეგულარული ოთახებისთვის და სხვა რამისთვის. და მას შემდეგ, რაც ის იყენებს TCP/IP– ს, ეს არის IoT მოწყობილობა, G მე უნდა ჩავსვა ეს სათაურშიც, რათა ის უფრო საქმიანი გამხდარიყო:)

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

OrangePI– ით Armbian– ის სრული დასტით, შესაძლებლობები უსაზღვროა, თქვენ შეგიძლიათ შექმნათ ადგილობრივი ვებ ინტერფეისი, რომელიც ნულიდან არის დაწერილი php– ში, რათა აჩვენოთ ისტორიული მონაცემები გრაფიკებზე. განა ეს უკვე უკეთესი არ არის, რომ თქვენ გაქვთ სრულიად ღია კოდის მოწყობილობა, რომელიც აკონტროლებს თქვენს სერვერის ოთახს, რისი აშენებითაც შეგიძლიათ იამაყოთ, თუ ასე ფიქრობთ, თავად ააშენეთ იგი!

გირჩევთ: