Სარჩევი:

არდუინოს და Ethernet– ის დაწყება: 8 ნაბიჯი
არდუინოს და Ethernet– ის დაწყება: 8 ნაბიჯი

ვიდეო: არდუინოს და Ethernet– ის დაწყება: 8 ნაბიჯი

ვიდეო: არდუინოს და Ethernet– ის დაწყება: 8 ნაბიჯი
ვიდეო: Сравнение протоколов TCP и UDP 2024, ნოემბერი
Anonim
დაწყება Arduino და Ethernet– ით
დაწყება Arduino და Ethernet– ით

თქვენს Arduino– ს შეუძლია მარტივად დაუკავშირდეს გარე სამყაროს სადენიანი Ethernet კავშირის საშუალებით. თუმცა სანამ დავიწყებდით, ვივარაუდოთ, რომ თქვენ გაქვთ კომპიუტერული ქსელის ძირითადი გაგება, როგორიცაა ცოდნა, თუ როგორ დაუკავშიროთ კომპიუტერები ცენტრს/როუტერს RJ45 კაბელებით, რა არის IP და MAC მისამართი და ა. გარდა ამისა, აქ არის კარგი სწრაფი მიმოხილვა Ethernet– ის შესახებ.

თქვენ დაგჭირდებათ Arduino Uno ან თავსებადი დაფა Ethernet ფარით, რომელიც იყენებს W5100 Ethernet კონტროლერის IC (თითქმის ყველა მათგანს) სურათის მიხედვით.

გარდა ამისა, თქვენ დაგჭირდებათ დაფის ჩართვა გარე DC სოკეტის საშუალებით - W5100 IC უფრო მეტ დენს იყენებს, ვიდრე USB დენის მიწოდება. 9V 1.5A დანამატის პაკეტი/კედლის მეჭეჭა საკმარისი იქნება.

Ნაბიჯი 1:

გამოსახულება
გამოსახულება

დაბოლოს - ფარები ცხელდება - ასე რომ ფრთხილად იყავით, რომ W5100 არ შეეხოთ გაფართოებული გამოყენების შემდეგ. თუ არ ხართ დარწმუნებული - ეს არის W5100 IC.

ნაბიჯი 2:

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

თქვენ უნდა მიუთითოთ Ethernet ფარის IP მისამართი - რომელიც კეთდება ესკიზის შიგნით. ეს მარტივია, გადადით ხაზზე:

IPAddress ip (10, 1, 1, 77);

და შეცვალეთ იგი თქვენს საკუთარ პარამეტრებს. მაგალითად, ჩვენს სახლში როუტერის IP მისამართია 10.1.1.1, პრინტერი არის 10.1.1.50 და ყველა კომპიუტერი ქვემოთ არის… 50. მე დავაყენებ ჩემს ფარის IP- ს 10.1.1.77 ხაზის შეცვლით:

ბაიტი mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

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

ნაბიჯი 3:

გამოსახულება
გამოსახულება

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

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

Რა ხდება?

Arduino არის დაპროგრამებული, რომ შესთავაზოს მარტივი ვებ გვერდი, ანალოგური საშუალებებით შეფასებული მნიშვნელობებით. შეგიძლიათ განაახლოთ ბრაუზერი განახლებული მნიშვნელობების მისაღებად. ამ ეტაპზე - გთხოვთ გაითვალისწინოთ, რომ Ethernet ფარები იყენებენ ციფრულ ქინძისთავებს 10 ~ 13, ასე რომ თქვენ არ შეგიძლიათ გამოიყენოთ ისინი სხვა რამეში. ზოგიერთ Arduino Ethernet ფარს შეიძლება ჰქონდეს microSD ბარათის ბუდე, რომელიც ასევე იყენებს სხვა ციფრულ პინს - ასე რომ შეამოწმეთ დოკუმენტაცია, რომ გაარკვიოთ რომელი.

ნაბიჯი 4:

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

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("ანალოგური შეყვანა"); client.print (analogChannel); client.print ("არის"); client.print (sensorReading); client.println (""); } client.println ("");

იმედია ესკიზის ეს მონაკვეთი ნაცნობი უნდა იყოს - დაიმახსოვრეთ როგორ გამოვიყენეთ serial.print (); წარსულში მონაცემების სერიული მონიტორის ყუთში გაგზავნისას? ახლა ჩვენ შეგვიძლია იგივე გავაკეთოთ, მაგრამ ჩვენი Ethernet ფარიდან მონაცემების გაგზავნა ვებ ბრაუზერში - სხვა სიტყვებით რომ ვთქვათ, ძალიან ძირითადი ტიპის ვებ გვერდი. თუმცა არის რაღაც რისი სწავლაც შეიძლება გინდ არ გინდოდეს გამომავალი წაკითხული ფორმატით - HTML კოდი. მე არ ვარ ვებ – გვერდის შემქმნელი (!), ასე რომ, მე არ ჩავუღრმავდები HTML– ს ძალიან ბევრს.

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

client.print ("არის");

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

client.println ("");

რომელიც უგზავნის HTML კოდს ვებ ბრაუზერში და ეუბნება მას დაიწყოს ახალი ხაზი. ნაწილი, რომელიც რეალურად იწვევს ვაგონის დაბრუნებას/ახალ ხაზს არის

რომელიც არის HTML კოდი (ან "ტეგი") ახალი ხაზისთვის.

ასე რომ, თუ თქვენ ქმნით უფრო დახვეწილ ვებ გვერდის ჩვენებებს, შეგიძლიათ უბრალოდ ჩადოთ სხვა HTML ტეგები client.print (); განცხადება. თუ გსურთ მეტი გაიგოთ HTML ბრძანებების შესახებ, აქ არის კარგი სამეურვეო საიტი.

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

ნაბიჯი 5: თქვენს Arduino– ზე წვდომა ინტერნეტით

თქვენს Arduino– ზე წვდომა ინტერნეტით
თქვენს Arduino– ზე წვდომა ინტერნეტით

ჯერჯერობით - კარგად. რა მოხდება, თუ გსურთ თქვენს Arduino– ზე წვდომა ადგილობრივი ქსელის გარედან?

თქვენ დაგჭირდებათ სტატიკური IP მისამართი - ანუ IP მისამართი, რომელსაც თქვენი ინტერნეტ სერვისის პროვაიდერი მიანიჭებს თქვენს კავშირს, უნდა დარჩეს იგივე. თუ არ გაქვთ სტატიკური IP, სანამ არ დატოვებთ თქვენს მოდემს/როუტერს, რომელიც სამუდამოდ გადართულია თქვენს IP– ზე, არ უნდა შეიცვალოს. თუმცა, ეს არ არის ოპტიმალური გადაწყვეტა.

თუ თქვენი ინტერნეტ პროვაიდერი საერთოდ ვერ შემოგთავაზებთ სტატიკურ IP– ს, თქვენ მაინც შეგიძლიათ გააგრძელოთ პროექტი იმ ორგანიზაციის გამოყენებით, რომელიც გთავაზობთ დინამიურ DNS– ს. ეს ორგანიზაციები გთავაზობთ თქვენს საკუთარ სტატიკურ IP მასპინძლის სახელს (მაგ. Mojo.monkeynuts.com) ნომრის ნაცვლად, თვალყური ადევნეთ თქვენს ცვალებად IP მისამართს და დაუკავშირეთ მას ახალი მასპინძლის სახელთან. რაც შემიძლია შევიკრიბო, თქვენს მოდემს სჭირდება DDNS სერვისების მხარდაჭერა (გყავთ ჩაშენებული კლიენტი …).

მაგალითად, ორი კომპანიაა No-IP დაDynDNS.com. გთხოვთ გაითვალისწინოთ, რომ მე არ გამომიყენებია ეს ორი, ისინი მხოლოდ მაგალითის სახით არის შემოთავაზებული. ახლა, თქვენი IP მისამართის საპოვნელად … ჩვეულებრივ ამის პოვნა შესაძლებელია თქვენი როუტერის ადმინისტრაციის გვერდზე შესვლით - ის ჩვეულებრივ არის 192.168.0.1, მაგრამ შეიძლება განსხვავებული იყოს. შეამოწმეთ თქვენს მომწოდებელთან ან ინტერნეტ პროვაიდერთან, თუ მათ მიაწოდეს ტექნიკა. ამ მაგალითისთვის, თუ ვებ ბრაუზერში შევა 10.1.1.1 და მოდემის ადმინისტრაციის პაროლის შეყვანის შემდეგ, შემდეგი ეკრანი წარმოდგენილია სურათის მიხედვით.

ნაბიჯი 6:

გამოსახულება
გამოსახულება

რასაც თქვენ ეძებთ არის თქვენი WAN IP მისამართი, როგორც ხედავთ სურათზე ზემოთ. ხუმრობების მოშორების მიზნით, მე გავაფუქე ჩემი ზოგიერთი მისამართი.

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

EthernetServer სერვერი (125);

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

ნაბიჯი 7:

გამოსახულება
გამოსახულება

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

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

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

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

ნაბიჯი 8: სენსორული მონაცემების ჩვენება ვებ გვერდზე

სენსორული მონაცემების ჩვენება ვებ გვერდზე
სენსორული მონაცემების ჩვენება ვებ გვერდზე

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

შეაერთეთ DHT22 მონაცემთა პინით Arduino D2– თან, Vin 5V პინთან და GND– ით… GND. ახლა ჩვენი ესკიზისთვის - ჩვენება ტემპერატურა და ტენიანობა ვებ გვერდზე. თუ თქვენ არ იცით HTML, შეგიძლიათ გამოიყენოთ მსგავსი სერვისები კოდის შესაქმნელად, რომლის შეცვლა შეგიძლიათ ესკიზში გამოსაყენებლად. ქვემოთ მოყვანილ მაგალითში DHT22– ის ტემპერატურისა და ტენიანობის მონაცემები მოცემულია მარტივ ვებ გვერდზე:

#მოიცავს "SPI.h"#მოიცავს "Ethernet.h"

// DHT22 სენსორისთვის

#ჩართეთ "DHT.h" #განსაზღვრეთ DHTPIN 2 #განსაზღვრეთ DHTTYPE DHT22

// შეიყვანეთ MAC მისამართი და IP მისამართი თქვენი კონტროლერისთვის ქვემოთ.

// IP მისამართი დამოკიდებული იქნება თქვენს ადგილობრივ ქსელზე: ბაიტი mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// Ethernet სერვერის ბიბლიოთეკის ინიციალიზაცია

// IP მისამართით და პორტით, რომლის გამოყენება გსურთ // (პორტი 80 ნაგულისხმევია HTTP– ისთვის): EthernetServer სერვერი (125); DHT dht (DHTPIN, DHTTYPE);

ბათილად დაყენება ()

{dht.begin (); // გახსენით სერიული კომუნიკაციები და დაელოდეთ პორტის გახსნას: Serial.begin (9600); ხოლო (! სერიული) {; // დაელოდეთ სერიული პორტის დაკავშირებას. საჭიროა მხოლოდ ლეონარდოსთვის} // დაიწყეთ Ethernet კავშირი და სერვერი: Ethernet.begin (mac, ip); server.begin (); Serial.print ("სერვერი არის"); Serial.println (Ethernet.localIP ()); }

ბათილი მარყუჟი ()

{// მოუსმინეთ შემომავალ კლიენტებს EthernetClient client = server.available (); if (კლიენტი) {Serial.println ("ახალი კლიენტი"); // http მოთხოვნა მთავრდება ცარიელი ხაზით ლოგიკური currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); სერიული. დაწერეთ (გ); // თუ თქვენ მიაღწიეთ ხაზის ბოლოს (მიიღეთ ახალი ხაზი // სიმბოლო) და ხაზი ცარიელია, http მოთხოვნა დასრულდა, // ასე რომ თქვენ შეგიძლიათ გამოაგზავნოთ პასუხი, თუ (c == 'n' && currentLineIsBlank) {// გაგზავნეთ სტანდარტული http პასუხის სათაური client.println ("HTTP/1.1 200 OK"); client.println ("შინაარსი-ტიპი: ტექსტი/html"); client.println ("კავშირი: დახურვა"); // კავშირი დაიხურება პასუხის კლიენტის დასრულების შემდეგ. println ("განახლება: 30"); // განაახლეთ გვერდი ავტომატურად ყოველ 30 წმ client.println (); client.println ("");

client.println ("");

// მიიღეთ მონაცემები DHT22 სენსორიდან

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); სერიული. ბეჭდვა (თ);

// აქედან ჩვენ შეგვიძლია ჩავწეროთ ჩვენი საკუთარი HTML კოდი ვებ გვერდის შესაქმნელად

client.print ( ოფისის ამინდი

ოფისის ტემპერატურა - );

client.print (t);

client.print ( გრადუსი ცელსიუსი

);

client.print ("

ტენიანობა - );

კლიენტი. ბეჭდვა (თ);

client.print ( პროცენტი

);

client.print ("

გვერდი განახლდება ყოველ 30 წამში <

. );

შესვენება;

} if (c == 'n') {// თქვენ იწყებთ ახალ ხაზს currentLineIsBlank = true; } else if (c! = 'r') {// თქვენ გაქვთ მიღებული ხაზი მიმდინარე ხაზზე currentLineIsBlank = false; }}} // მიეცით დრო ბრაუზერს, რომ მიიღოს მონაცემთა შეფერხება (1); // კავშირის დახურვა: client.stop (); Serial.println ("კლიენტი გათიშულია"); }}

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

client.println ("განახლება: 30"); // განაახლეთ გვერდი ავტომატურად ყოველ 30 წამში

… და ჩვენი ვებ გვერდის პერსონალური HTML იწყება ხაზის ქვემოთ:

// აქედან ჩვენ შეგვიძლია შევიტანოთ ჩვენი საკუთარი HTML კოდი ვებ გვერდის შესაქმნელად

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

ასე რომ თქვენ გაქვთ ეს, კიდევ ერთი სასარგებლო გზა თქვენი Arduino– ს ურთიერთქმედებას გარე სამყაროსთან. ეს პოსტი მოაქვს pmdway.com– ით - ყველაფერი შემქმნელებისთვის და ელექტრონიკის მოყვარულთათვის, უფასო მიწოდებით მთელს მსოფლიოში.

გირჩევთ: