สารบัญ:

เริ่มต้นใช้งาน Arduino และอีเธอร์เน็ต: 8 ขั้นตอน
เริ่มต้นใช้งาน Arduino และอีเธอร์เน็ต: 8 ขั้นตอน

วีดีโอ: เริ่มต้นใช้งาน Arduino และอีเธอร์เน็ต: 8 ขั้นตอน

วีดีโอ: เริ่มต้นใช้งาน Arduino และอีเธอร์เน็ต: 8 ขั้นตอน
วีดีโอ: EP18 Arduino IoT มาสร้างระบบการควบคุมการปิดเปิดอุปกรณ์ไฟฟ้าผ่านอินเตอร์เนต ด้วยเวลาเพียง 35 นาที 2024, กรกฎาคม
Anonim
เริ่มต้นใช้งาน Arduino และ Ethernet
เริ่มต้นใช้งาน Arduino และ Ethernet

Arduino ของคุณสามารถสื่อสารกับโลกภายนอกได้อย่างง่ายดายผ่านการเชื่อมต่ออีเทอร์เน็ตแบบมีสาย อย่างไรก็ตาม ก่อนที่เราจะเริ่มต้น จะถือว่าคุณมีความเข้าใจพื้นฐานเกี่ยวกับระบบเครือข่ายคอมพิวเตอร์ เช่น ความรู้วิธีเชื่อมต่อคอมพิวเตอร์กับฮับ/เราเตอร์ด้วยสายเคเบิล RJ45 IP และที่อยู่ MAC คืออะไร เป็นต้น นอกจากนี้ นี่คือบทสรุปสั้นๆ ที่ดีเกี่ยวกับอีเทอร์เน็ต

คุณจะต้องใช้ Arduino Uno หรือบอร์ดที่เข้ากันได้กับอีเทอร์เน็ตชิลด์ที่ใช้ตัวควบคุมอีเธอร์เน็ต W5100 (เกือบทั้งหมด) ตามภาพ

นอกจากนี้ คุณจะต้องจ่ายไฟให้กับบอร์ดผ่านซ็อกเก็ต DC ภายนอก - W5100 IC ใช้กระแสไฟมากกว่าที่จ่ายไฟ USB ได้ ปลั๊ก 9V 1.5A / หูดที่ผนังก็เพียงพอแล้ว

ขั้นตอนที่ 1:

ภาพ
ภาพ

สุดท้าย - เกราะป้องกันจะร้อน ดังนั้น ระวังอย่าแตะ W5100 หลังจากใช้งานเป็นเวลานาน ในกรณีที่คุณไม่แน่ใจ – นี่คือ W5100 IC

ขั้นตอนที่ 2:

เมื่อคุณมี Arduino ที่เปิดใช้งานอีเธอร์เน็ตและเชื่อมต่อแหล่งจ่ายไฟภายนอกแล้ว คุณควรตรวจสอบว่าใช้งานได้ดีหรือไม่ เปิด Arduino IDE และเลือก File > Examples > Ethernet > Webserver นี่เป็นการโหลดภาพร่างอย่างง่ายซึ่งจะแสดงข้อมูลที่รวบรวมจากอินพุตแบบอะนาล็อกบนเว็บเบราว์เซอร์ อย่างไรก็ตาม อย่าเพิ่งอัปโหลด ต้องมีการแก้ไขเล็กน้อย

คุณต้องระบุที่อยู่ IP ของอีเธอร์เน็ตชิลด์ - ซึ่งทำในร่าง ง่าย ๆ ไปที่บรรทัด:

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

และปรับเปลี่ยนให้เข้ากับการตั้งค่าของคุณเอง ตัวอย่างเช่น ในบ้านของเรา ที่อยู่ IP ของเราเตอร์คือ 10.1.1.1 เครื่องพิมพ์คือ 10.1.1.50 และพีซีทั้งหมดต่ำกว่า …50 ดังนั้นฉันจะตั้งค่า Shield IP เป็น 10.1.1.77 โดยเปลี่ยนบรรทัดเป็น:

ไบต์ mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

อย่างไรก็ตาม หากคุณมีโล่เพียงอันเดียวก็ปล่อยให้มันเป็นไป อาจมีโอกาสน้อยมากที่จะมีที่อยู่ MAC เหมือนกับฮาร์ดแวร์ที่มีอยู่ของคุณ ดังนั้นจึงเป็นอีกครั้งในการเปลี่ยนแปลง

ขั้นตอนที่ 3:

ภาพ
ภาพ

อย่างไรก็ตาม หากคุณมีโล่เพียงอันเดียวก็ปล่อยให้มันเป็นไป อาจมีโอกาสน้อยมากที่จะมีที่อยู่ MAC เหมือนกับฮาร์ดแวร์ที่มีอยู่ของคุณ ดังนั้นจึงเป็นอีกครั้งในการเปลี่ยนแปลง

เมื่อคุณทำการเปลี่ยนแปลงแล้ว ให้บันทึกและอัปโหลดภาพร่าง ตอนนี้เปิดเว็บเบราว์เซอร์และไปที่ที่อยู่ IP ที่คุณป้อนในภาพร่าง และคุณควรได้รับสิ่งที่คล้ายกับรูปภาพ

เกิดอะไรขึ้น?

Arduino ได้รับการตั้งโปรแกรมให้นำเสนอหน้าเว็บอย่างง่ายพร้อมค่าที่วัดโดยอินพุตแบบอะนาล็อก คุณสามารถรีเฟรชเบราว์เซอร์เพื่อรับค่าที่อัปเดตได้ ณ จุดนี้ – โปรดทราบว่าอีเทอร์เน็ตชิลด์ใช้หมุดดิจิทัล 10 ~ 13 ดังนั้นคุณจึงไม่สามารถใช้สิ่งเหล่านั้นเพื่อสิ่งอื่นได้ ชิลด์ Arduino Ethernet บางตัวอาจมีช่องเสียบการ์ด microSD ซึ่งใช้พินดิจิทัลอื่นด้วย ดังนั้นให้ตรวจสอบกับเอกสารประกอบเพื่อค้นหาว่าอันไหน

ขั้นตอนที่ 4:

อย่างไรก็ตาม ตอนนี้เราเห็นแล้วว่าอีเทอร์เน็ตชิลด์ทำงาน เราสามารถดำเนินการต่อไปเพื่อทำสิ่งที่มีประโยชน์มากขึ้น มาวิเคราะห์ตัวอย่างก่อนหน้านี้ด้วยวิธีง่ายๆ และดูว่าเราจะเผยแพร่และแสดงข้อมูลที่น่าสนใจมากขึ้นผ่านเครือข่ายได้อย่างไร สำหรับการอ้างอิง ฟังก์ชันที่เกี่ยวข้องกับอีเทอร์เน็ตทั้งหมดจะได้รับการจัดการโดยไลบรารี Ethernet Arduino หากคุณตรวจสอบภาพร่างก่อนหน้านี้ที่เราเพิ่งใช้ ส่วนที่น่าสนใจคือ:

สำหรับ (int analogChannel = 0; analogChannel <6; analogChannel ++) { int sensorReading = analogRead (analogChannel); client.print("อินพุตแบบอะนาล็อก"); client.print(ช่องอนาล็อก); client.print(" คือ "); client.print(เซ็นเซอร์การอ่าน); client.println(""); } client.println("");

หวังว่าส่วนนี้ของภาพสเก็ตช์น่าจะคุ้นเคย – จำไว้ว่าเราใช้ serial.print(); ในอดีตเมื่อส่งข้อมูลไปยังกล่องมอนิเตอร์แบบอนุกรม? ตอนนี้เราก็สามารถทำสิ่งเดียวกันได้ แต่การส่งข้อมูลจากอีเทอร์เน็ตชิลด์ของเรากลับไปยังเว็บเบราว์เซอร์ – กล่าวคือ เป็นหน้าเว็บประเภทพื้นฐาน อย่างไรก็ตาม มีบางสิ่งที่คุณอาจหรืออาจไม่ต้องการเรียนรู้เพื่อจัดรูปแบบ ผลลัพธ์ในรูปแบบที่อ่านได้ – โค้ด 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 ของคุณก็ไม่ควรเปลี่ยนแปลง อย่างไรก็ตาม นั่นไม่ใช่ทางออกที่ดีที่สุด

หาก ISP ของคุณไม่สามารถเสนอ IP แบบคงที่ให้กับคุณได้ คุณยังสามารถดำเนินการโครงการต่อไปได้โดยใช้องค์กรที่มี Dynamic DNS องค์กรเหล่านี้เสนอชื่อโฮสต์ IP แบบคงที่ของคุณเอง (เช่น mojo.monkeynuts.com) แทนที่จะเป็นตัวเลข ติดตามที่อยู่ IP ที่เปลี่ยนแปลงของคุณและเชื่อมโยงกับชื่อโฮสต์ใหม่ จากสิ่งที่ฉันสามารถรวบรวมได้ โมเด็มของคุณต้องรองรับ (มีไคลเอนต์ในตัวสำหรับ…) บริการ DDNS เหล่านี้

ตัวอย่างเช่น สองบริษัทคือ No-IP และDynDNS.com โปรดทราบว่าฉันไม่ได้ใช้ทั้งสองอย่าง พวกเขาเป็นเพียงตัวอย่างเท่านั้น ในตอนนี้ เพื่อค้นหาที่อยู่ IP ของคุณ… โดยปกติแล้วจะพบได้โดยการลงชื่อเข้าใช้หน้าการดูแลระบบของเราเตอร์ของคุณ ซึ่งมักจะเป็น 192.168.0.1 แต่อาจแตกต่างกัน ตรวจสอบกับซัพพลายเออร์หรือ ISP ของคุณว่าพวกเขาจัดหาฮาร์ดแวร์ให้หรือไม่ สำหรับตัวอย่างนี้ หากฉันป้อน 10.1.1.1 ในเว็บเบราว์เซอร์ และหลังจากป้อนรหัสผ่านการดูแลระบบโมเด็ม หน้าจอต่อไปนี้จะแสดงตามภาพ

ขั้นตอนที่ 6:

ภาพ
ภาพ

สิ่งที่คุณต้องการคือที่อยู่ IP WAN ของคุณ ดังที่คุณเห็นในภาพด้านบน เพื่อกันไม่ให้พวกเล่นพิเรนทร์ ฉันได้ปิดบังที่อยู่ของฉันแล้ว

สิ่งต่อไปที่ต้องทำคือเปิดการส่งต่อพอร์ต สิ่งนี้จะบอกเราเตอร์ว่าจะเปลี่ยนเส้นทางคำขอที่เข้ามาจากโลกภายนอกได้ที่ไหน เมื่อโมเด็มได้รับคำขอดังกล่าว เราต้องการส่งคำขอนั้นไปยังหมายเลขพอร์ตของอีเทอร์เน็ตชิลด์ของเรา ใช้:

เซิร์ฟเวอร์ EthernetServer(125);

ฟังก์ชันในภาพร่างของเราได้ตั้งค่าหมายเลขพอร์ตไว้ที่ 125 หน้าจอการกำหนดค่าของโมเด็มแต่ละอันจะมีลักษณะแตกต่างกัน แต่ในที่นี้จะเป็นหนึ่งตัวอย่างในภาพ

ขั้นตอนที่ 7:

ภาพ
ภาพ

ดังนั้นคุณจึงเห็นได้จากบรรทัดที่ 1 ในภาพด้านบน หมายเลขพอร์ตขาเข้าได้รับการตั้งค่าเป็น 125 และที่อยู่ IP ของแผงป้องกันอีเทอร์เน็ตได้รับการตั้งค่าเป็น 10.1.1.77 ซึ่งเหมือนกับในภาพร่าง

หลังจากบันทึกการตั้งค่า เราก็พร้อมแล้ว ที่อยู่ภายนอกของอีเทอร์เน็ตชิลด์ของฉันคือ WAN:125 ดังนั้นในการเข้าถึง Arduino ฉันจะพิมพ์ที่อยู่ WAN ของฉันด้วย:125 ที่ส่วนท้ายในเบราว์เซอร์ของอุปกรณ์เว็บระยะไกล ซึ่งจะติดต่อกับฮาร์ดแวร์อีเทอร์เน็ตที่โดดเดี่ยวกลับบ้าน

นอกจากนี้ คุณอาจต้องเปลี่ยนการตั้งค่าไฟร์วอลล์ของโมเด็มของคุณ เพื่อให้พอร์ต 125 "เปิด" สำหรับคำขอที่เข้ามา โปรดตรวจสอบเอกสารของโมเด็มของคุณสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำเช่นนี้ ตอนนี้จากอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ตในโลกเสรี ฉันสามารถป้อน WAN และหมายเลขพอร์ตของฉันลงในช่อง URL และรับผลลัพธ์ได้ ตัวอย่างเช่น จากโทรศัพท์เมื่อเชื่อมต่อกับอินเทอร์เน็ตผ่านข้อมูลมือถือ LTE

ดังนั้นในขั้นตอนนี้ คุณสามารถแสดงข้อมูลบนเว็บเพจอย่างง่ายที่สร้างโดย Arduino และเข้าถึงได้จากทุกที่ด้วยการเข้าถึงอินเทอร์เน็ตที่ไม่จำกัด ด้วยความรู้เกี่ยวกับ Arduino ก่อนหน้านี้ คุณสามารถใช้ข้อมูลจากเซ็นเซอร์หรือส่วนอื่นๆ ของภาพสเก็ตช์และแสดงข้อมูลดังกล่าวเพื่อเรียกค้นข้อมูลได้

ขั้นตอนที่ 8: การแสดงข้อมูลเซ็นเซอร์บนเว็บเพจ

การแสดงข้อมูลเซ็นเซอร์บนเว็บเพจ
การแสดงข้อมูลเซ็นเซอร์บนเว็บเพจ

ตัวอย่างการแสดงข้อมูลเซ็นเซอร์บนหน้าเว็บ ลองใช้เซ็นเซอร์อุณหภูมิและความชื้นที่มีราคาไม่แพงและเป็นที่นิยมอย่าง DHT22 คุณจะต้องติดตั้งไลบรารี DHT22 Arduino ซึ่งสามารถพบได้ในหน้านี้ หากนี่เป็นครั้งแรกของคุณกับ DHT22 ให้ทดลองกับภาพร่างตัวอย่างที่รวมอยู่ในไลบรารีเพื่อให้คุณเข้าใจว่ามันทำงานอย่างไร

เชื่อมต่อ DHT22 กับดาต้าพินกับ Arduino D2, Vin กับพิน 5V และ GND ถึง … GND สำหรับภาพสเก็ตช์ของเรา – เพื่อแสดงอุณหภูมิและความชื้นบนหน้าเว็บ หากคุณไม่ได้ใช้ HTML คุณสามารถใช้บริการออนไลน์เช่นนี้เพื่อสร้างรหัส ซึ่งคุณสามารถปรับเปลี่ยนเพื่อใช้ในแบบร่างได้ ในตัวอย่างด้านล่าง ข้อมูลอุณหภูมิและความชื้นจาก DHT22 จะแสดงในหน้าเว็บอย่างง่าย:

#include "SPI.h"#include "Ethernet.h"

// สำหรับเซ็นเซอร์ DHT22

#รวม "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// ป้อนที่อยู่ MAC และที่อยู่ IP สำหรับคอนโทรลเลอร์ของคุณด้านล่าง

// ที่อยู่ IP จะขึ้นอยู่กับเครือข่ายท้องถิ่นของคุณ: byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(10, 1, 1, 77);

// เริ่มต้นไลบรารีเซิร์ฟเวอร์อีเทอร์เน็ต

// ด้วยที่อยู่ IP และพอร์ตที่คุณต้องการใช้ // (พอร์ต 80 เป็นค่าเริ่มต้นสำหรับ HTTP): เซิร์ฟเวอร์ EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

การตั้งค่าเป็นโมฆะ ()

{ dht.begin(); // เปิดการสื่อสารแบบอนุกรมและรอให้พอร์ตเปิด: Serial.begin(9600); ในขณะที่ (!Serial) {; // รอให้พอร์ตอนุกรมเชื่อมต่อ จำเป็นสำหรับ Leonardo เท่านั้น } // เริ่มการเชื่อมต่ออีเทอร์เน็ตและเซิร์ฟเวอร์: Ethernet.begin(mac, ip); เซิร์ฟเวอร์.begin(); Serial.print("เซิร์ฟเวอร์อยู่ที่ "); Serial.println(Ethernet.localIP()); }

วงเป็นโมฆะ ()

{ // ฟังไคลเอ็นต์ขาเข้า ไคลเอ็นต์ EthernetClient = server.available (); if (ไคลเอนต์) { Serial.println ("ไคลเอนต์ใหม่"); // คำขอ http ลงท้ายด้วยบูลีนบรรทัดว่าง currentLineIsBlank = true; ในขณะที่ (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // หากคุณไปถึงจุดสิ้นสุดของบรรทัด (ได้รับการขึ้นบรรทัดใหม่ // อักขระ) และบรรทัดว่างเปล่า คำขอ http ได้สิ้นสุดลงแล้ว // ดังนั้น คุณสามารถตอบกลับได้หาก (c == 'n' && currentLineIsBlank) {// ส่งส่วนหัวตอบกลับ http มาตรฐาน client.println ("HTTP/1.1 200 OK"); client.println("ประเภทเนื้อหา: ข้อความ/html"); client.println("การเชื่อมต่อ: ปิด"); // การเชื่อมต่อจะถูกปิดหลังจากการตอบสนองเสร็จสิ้น client.println("Refresh: 30"); // รีเฟรชหน้าโดยอัตโนมัติทุก ๆ 30 วินาที client.println(); client.println("");

client.println("");

// รับข้อมูลจากเซ็นเซอร์ DHT22

ลอย h = dht.readHumidity(); float t = dht.readTemperature(); Serial.println(t); Serial.println(ซ);

// จากที่นี่เราสามารถป้อนโค้ด HTML ของเราเองเพื่อสร้างหน้าเว็บ

client.print( สำนักงานสภาพอากาศ

อุณหภูมิสำนักงาน - );

client.print(t);

client.print( องศาเซลเซียส

);

ลูกค้า.print("

ความชื้น - );

client.print(h);

client.print( เปอร์เซ็นต์

);

ลูกค้า.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 ที่จำเป็นลงในฟังก์ชัน client.print() เพื่อสร้างเลย์เอาต์ที่คุณต้องการ สุดท้าย นี่คือภาพหน้าจอตัวอย่างของภาพสเก็ตช์ตัวอย่างในที่ทำงาน

คุณมีแล้ว ซึ่งเป็นอีกวิธีที่มีประโยชน์ในการให้ Arduino ของคุณโต้ตอบกับโลกภายนอก โพสต์นี้นำเสนอโดย pmdway.com - ทุกอย่างสำหรับผู้ผลิตและผู้ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์ พร้อมบริการจัดส่งฟรีทั่วโลก

แนะนำ: