Სარჩევი:
- ნაბიჯი 1: პროგრამული ლოგიკა: სისტემის არქიტექტურა
- ნაბიჯი 2: ნაბიჯი 1: აპარატურის გაყვანილობა
- ნაბიჯი 3: ნაბიჯი 2: არდუინო
- ნაბიჯი 4: ნაბიჯი 3: NodeJS
- ნაბიჯი 5: ნაბიჯი 4: ვებ ინტერფეისი
- ნაბიჯი 6: შედეგი
ვიდეო: Arduino პროექტი: ელექტრონიკის კონტროლი ინტერნეტში Nodejs + SQL მონაცემთა ბაზისა და ვებსაიტის გამოყენებით .: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
პროექტი ავტორი: Mahmed.tech
დამზადების თარიღი: 2017 წლის 14 ივლისი
სირთულის დონე: დამწყები პროგრამირების გარკვეული ცოდნით.
აპარატურის მოთხოვნა:
- არდუინო უნო, ნანო, მეგა (მე ვფიქრობ, რომ სერიული კავშირის მქონე MCU– ს უმეტესობა იმუშავებს)
- ერთი LED და მიმდინარე შეზღუდვის რეზისტორი. გამოიყენეთ ეს კალკულატორი, თუ არ ხართ დარწმუნებული: Ohms Law კალკულატორი
- 10K პოტენომეტრი.
პროგრამული უზრუნველყოფის მოთხოვნა:
- Arduino IDE
- Node. JS (ეს არის პროგრამული უზრუნველყოფა კომპიუტერზე, ძალიან მარტივი ინსტალაცია)
- MySQL სერვერი (უმარტივესი გზა ვიპოვე იაფი ვებ ჰოსტინგის გამოყენება. ასევე შეგიძლიათ მიიღოთ უფასო დომენური სახელები)
გამოიყენება პროგრამირების და სკრიპტირების ენა:
Arduino (შეცვლილი C/C ++), JavaScript (Nodejs), PHP, HTML და CSS
შესავალი ეს პროექტი მოკლედ: Arduino მიკროკონტროლის კონტროლი ვებ ინტერფეისიდან. ამიტომ აკონტროლეთ ნებისმიერი ელექტრო მოწყობილობა ნებისმიერი ადგილიდან ინტერნეტით. მინდოდა გამეფართოვებინა პროგრამირების და ვებ განვითარების შესახებ და რა უკეთესი გზა ამის გაკეთება, ვიდრე მარტივი, მაგრამ ეფექტური პროექტის გაკეთება. აპარატურა მინიმალურია, ასე რომ მე შემიძლია უფრო მეტი ყურადღება გავამახვილო პროგრამულ უზრუნველყოფაზე. ამიტომ მივედი მარტივი LED, ქოთნის კონფიგურაციით. ქოთანი გაგზავნის მონაცემებს და led მიიღებს (PWM სიკაშკაშე). NodeJS– ის გამოყენებით წაიკითხეს სერიული მონაცემები (პოტენომეტრის მნიშვნელობა) და დაიწერა (led სიკაშკაშე). ამ პროექტის რთული ნაწილი იყო მონაცემების შეყვანა დისტანციური მდებარეობიდან (ვებ სერვერი)
ნაბიჯი 1: პროგრამული ლოგიკა: სისტემის არქიტექტურა
პოტენომეტრის მონაცემები:
ეს იწყება არდუინოში, წაკითხული ქოთნის ღირებულება არის სერიული ბეჭდვა. თუმცა, ამჯერად ჩვენ გამოვიყენებთ Node. JS მნიშვნელობის წასაკითხად. NodeJS გახსნის სერიულ კომუნიკაციას იმავე პორტზე, როგორც Arduino უკავშირდება და წაიკითხავს დაბეჭდილ ქოთნის მნიშვნელობას. შემდეგ NodeJS ატვირთავს მონაცემებს დისტანციურ SQL მონაცემთა ბაზაში, ეს მოხდება ყოველ ჯერზე, როდესაც ახალი ბანკის ღირებულება იბეჭდება. ვებ გვერდი დაუკავშირდება SQL მონაცემთა ბაზის მითითებულ ინტერვალს და მიიღებს პოტენომეტრის მნიშვნელობას. შემდეგ ეს გამოჩნდება ვებგვერდზე.
Led მონაცემები:
LED- ისთვის PWM სიკაშკაშე იქნება მომხმარებლის მიერ დისტანციურ ვებგვერდზე, ამიტომ მისი მოგზაურობა იწყება სპექტრის საპირისპირო ბოლოდან. შეყვანილი მონაცემები ინახება SQL მონაცემთა ბაზაში, მონაცემთა ბაზის თითოეული ნაკრები შემოწმებულია led PWM- ის ცვლილებისთვის, ამას აკეთებს NodeJS. თუ მნიშვნელობა განსხვავდება წინა მნიშვნელობისა, მაშინ ახალი მნიშვნელობა გადაეცემა Arduino– ს სერიული ავტობუსის საშუალებით. Arduino ცვლის led– ის გამომავალ PWM მნიშვნელობას და ცვლის მის სიკაშკაშეს.
Ohms კანონის გამომთვლელი იყენებს ფორმულის V = IR და P = IV = I²R = V²/R ამ პროექტისათვის მე გამოვიყენებ ლურჯ led- ს. ეს მნიშვნელოვანია, რადგან სინათლის სიხშირის მატებასთან ერთად იზრდება ძაბვის ვარდნაც. მას შემდეგ, რაც ლურჯ შუქს უფრო მაღალი სიხშირე აქვს, ვიდრე წითელ ლედს. ეს ნიშნავს უფრო მაღალ წინ ძაბვას. მარკის, ტიპისა და ზომის მიხედვით სამუშაო დიაპაზონი იცვლება. ჩემი კონფიგურაციისთვის, მე გამოვიყენე 220 Ω რეზისტორი სერიულად, უარყოფითი მიწასთან და დადებითი PWM პინზე არდუინოზე. ქოთანი დაკავშირებულია ანალოგიურ პინთან. 5VCC ერთი ბოლოთი GND მეორე და შუა პინი უკავშირდება ანალოგიურ პინს (ჩემს შემთხვევაში A0).
ნაბიჯი 2: ნაბიჯი 1: აპარატურის გაყვანილობა
ეს ძალიან მარტივია: უბრალოდ დააკავშირეთ თქვენი ამჟამინდელი შემზღუდველი რეზისტორი სერიულად LED– ით და დარწმუნდით, რომ თქვენ მიდიხართ სწორი გზით. ერთი წერტილი გადადის GND– ზე, ხოლო მეორე ბოლო იქნება Arduino pin– ზე. ჩემი კონფიგურაციისთვის, მე გამოვიყენე pin 12 led და A7 Pot. მე არ მაქვს სქემა, რადგან მისი ძალიან მარტივი წრე. თუმცა, მე ეს ვიპოვე ინტერნეტში (სურათი)
ნაბიჯი 3: ნაბიჯი 2: არდუინო
პირველ რიგში, ლიდერი და ქოთანი შემოწმდა, მუშაობდნენ თუ არა როგორც მოსალოდნელი იყო. ეს შემცირდა მარტივი პროგრამით, სადაც ქოთნის ღირებულება აკონტროლებს led- ს. მე ვიყენებ შეზღუდვის ფუნქციას ქოთნის დიაპაზონის შესაცვლელად 0 -დან 1023 -მდე 0 -დან 255 -მდე, მაგრამ მარტივი /4 ასევე მუშაობს. ქოთნის ღირებულება გათანაბრდა საშუალო ზედიზედ 10 კითხვის საშუალო მაჩვენებლით, ეს არის ნაპერწკლების მოსაშორებლად. (თუმცა, ამ გამარტივებამ გამოიწვია NodeJS– ის პრობლემები, ასე რომ ეს მოგვიანებით მოიხსნა პროექტში - უფრო მეტი)
კოდი Arduino
სერიალის კითხვა / დაწერა ამისათვის გამოიყენება serial.parseInt (), რომელიც იღებს მთელ მნიშვნელობას და იგნორირებას უკეთებს სტრიქონს. ასევე, შეცდომის შემოწმება ემატება კოდს. PWM მნიშვნელობის მოქმედი დიაპაზონი არის 0 - 255, როდესაც მომხმარებელი შეიყვანს> 255 -ს, მაშინ ის მიანიჭებს მნიშვნელობას 255 და თუ მომხმარებელი შეიყვანს მნიშვნელობას ან <+/- 5 მე ეს გავაკეთე იმისთვის, რომ კითხვა იყოს უფრო სტაბილური, რადგან ეს იყო მერყეობა რა რატომ არის ეს დიდი პრობლემა, რომელიც დაკავშირებულია SQL განახლებასთან, უფრო ვრცლად მოგვიანებით.
ნაბიჯი 4: ნაბიჯი 3: NodeJS
მე არ ვაპირებ გაჩვენოთ როგორ მიიღოთ ან დააყენოთ და SQL სერვერი. არსებობს უამრავი გაკვეთილი.
NodeJS პროგრამას აქვს 3 ძირითადი ასპექტი:
სერიული მონაცემების წაკითხვა
დაწერე სერიული მონაცემები
განაახლეთ SQL მონაცემთა ბაზა
NodeJS– ში სერიული კავშირის შესაქმნელად, თქვენ უნდა გადმოწეროთ მოდული სახელწოდებით serialport, რაც შეიძლება გაკეთდეს npm ბრძანების გამოყენებით. გახსენით CMD საქაღალდეში, სადაც შეინახება NodeJS პროგრამა, დააინსტალირეთ აკრეფით: npm დააინსტალირეთ სერიული პორტი ასევე SQL მოდული უნდა იყოს დაინსტალირებული sql მონაცემთა ბაზასთან დასაკავშირებლად: npm დააინსტალირეთ mysql NodeJS - სერიული პორტი ჩემი პირველი ნაბიჯი NodeJS– თან პროგრამა იყო ნაბეჭდი მონაცემების წაკითხვა და pwm სიკაშკაშის გაგზავნა არდუინოში. ეს გაკეთდა იმავე braudrate და პორტში სერიული კავშირის გახსნით. კავშირის დამყარების შემდეგ მე წავიკითხე შემომავალი შეტყობინებები და დავბეჭდე კონსოლის ფანჯარაში. პრობლემა წამოიჭრა, როდესაც ვცდილობდი დაეწერა pwm მნიშვნელობა სიკაშკაშის გასაკონტროლებლად.
ის იშურებდა შეცდომებს: პორტი არ არის გახსნილი, ჩემი საწყისი გამოსავალი იყო ჩაწერის ფუნქციის გამოძახება შემომავალი მონაცემების დროს. თუმცა ეს იყო ცუდი გამოსავალი და მე საკმაოდ უკმაყოფილო ვიყავი გამოსავლით, მიუხედავად იმისა, რომ ის მუშაობდა, ის მხოლოდ მაშინ გაიგზავნებოდა, როდესაც ქოთნის ღირებულება შეიცვლებოდა. სერიული მოდულის მაგალითი კოდი არ იმუშავებს არც ერთი და იგივე შეცდომის დაშვებით. მოგვიანებით გავარკვიე, რომ პროგრამა ცდილობდა შეასრულოს ჩაწერის ფუნქცია პორტის გახსნის გარეშე, რამაც გამოიწვია ეს შეცდომა. მე აღმოვაჩინე ეს პრობლემა setInterval () ფუნქციის გამოყენებით
NodeJS - MySQL MySQL ბიბლიოთეკა გამოიყენეს (npm დააინსტალირეთ MySQL) SQL მონაცემთა ბაზასთან დასაკავშირებლად, ვინაიდან სერვერზე შორეულ ადგილას სერვერის IP მისამართი გამოიყენეს ლოკალური ჰოსტის ნაცვლად.
var con ინახავს კავშირის ინფორმაციას JSON ფორმატში, მას შემდეგ რაც კავშირი წარმატებით მოხდება, მონაცემთა ბაზას შეუძლია შეკითხვის გაკეთება. შეიქმნა 2 ფუნქცია, ერთი ცხრილის განახლებისთვის და სხვა შერჩევა SQL მოთხოვნის პარამეტრებით. განახლების ცხრილი ეწოდება, როდესაც მიიღება ახალი ქოთნის მნიშვნელობა და სიკაშკაშის შემოწმების მოთხოვნა პერიოდულად გააქტიურდება.
NodeJSCode ბმული
ნაბიჯი 5: ნაბიჯი 4: ვებ ინტერფეისი
ვებ ინტერფეისი
მთავარი ვებ – გვერდი დაიწერა PHP– ით, რადგან მე უკვე მქონდა გამოცდილება CO323 მონაცემთა ბაზებიდან და უნივერსიტეტის ვებ მოდულიდან. Html ცხრილი და ფორმა გამოიყენეს sql მონაცემების საჩვენებლად.
PHP SQL წვდომის კოდი: ბმული გადადით ვებ ინტერფეისის განყოფილებაში.
HTML & CSS * Javascript ვებ გვერდის კოდი: ბმული გადაახვიეთ ბოლოში
საბოლოო ვებ გვერდი
გირჩევთ:
ამინდის სადგური: ESP8266 ღრმა ძილით, SQL, გრაფიკული შეფუთვა და ნაკვეთი: 3 ნაბიჯი
მეტეოროლოგიური სადგური: ESP8266 ღრმა ძილით, SQL, გრაფიკული შეფუთვა და ნაკვეთი: სასიამოვნო იქნება იცოდეთ ტემპერატურა, ტენიანობა ან სინათლის ინტენსივობა თქვენს აივანზე? ვიცი რომ გავაკეთებ. ასე რომ, მე გავაკეთე მარტივი ამინდის სადგური ასეთი მონაცემების შესაგროვებლად. შემდეგი სექციები არის ის ნაბიჯები, რომლებიც მე გადავიღე ერთის ასაშენებლად. მოდი დავიწყოთ