সুচিপত্র:

Arduino এবং ইথারনেট দিয়ে শুরু করা: 8 টি ধাপ
Arduino এবং ইথারনেট দিয়ে শুরু করা: 8 টি ধাপ

ভিডিও: Arduino এবং ইথারনেট দিয়ে শুরু করা: 8 টি ধাপ

ভিডিও: Arduino এবং ইথারনেট দিয়ে শুরু করা: 8 টি ধাপ
ভিডিও: কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখবো? কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ আমার জন্য ভালো হবে? Jhankar Mahbub 2024, জুন
Anonim
Arduino এবং ইথারনেট দিয়ে শুরু করা
Arduino এবং ইথারনেট দিয়ে শুরু করা

আপনার Arduino সহজেই একটি তারযুক্ত ইথারনেট সংযোগের মাধ্যমে বাইরের বিশ্বের সাথে যোগাযোগ করতে পারে। যাইহোক, আমরা শুরু করার আগে, এটি ধরে নেওয়া হবে যে আপনার কম্পিউটার নেটওয়ার্কিং সম্পর্কে প্রাথমিক ধারণা আছে, যেমন RJ45 তারের সাথে একটি হাব/রাউটারের সাথে কম্পিউটার কিভাবে সংযুক্ত করা যায়, একটি আইপি এবং ম্যাক ঠিকানা কি, ইত্যাদি সম্পর্কে জ্ঞান। তদুপরি, এখানে ইথারনেট সম্পর্কে একটি ভাল দ্রুত অবস্থান রয়েছে।

আপনার একটি Arduino Uno বা ইথারনেট ieldাল সহ সামঞ্জস্যপূর্ণ বোর্ডের প্রয়োজন হবে যা ছবি অনুযায়ী W5100 ইথারনেট কন্ট্রোলার আইসি (তাদের বেশিরভাগই) ব্যবহার করে।

তদুপরি আপনাকে বাহ্যিক ডিসি সকেটের মাধ্যমে বোর্ডকে শক্তি দিতে হবে - W5100 IC ইউএসবি পাওয়ার সরবরাহ করতে পারে তার চেয়ে বেশি বর্তমান ব্যবহার করে। একটি 9V 1.5A প্লাগ প্যাক/ওয়াল ওয়ার্ট যথেষ্ট হবে।

ধাপ 1:

ছবি
ছবি

অবশেষে - ieldsালগুলি গরম হয়ে যায় - তাই বর্ধিত ব্যবহারের পরে W5100 স্পর্শ না করার বিষয়ে সতর্ক থাকুন। যদি আপনি নিশ্চিত না হন - এটি W5100 আইসি।

ধাপ ২:

একবার আপনার ইথারনেট-সমর্থিত আরডুইনো হয়ে গেলে এবং বাহ্যিক শক্তি সংযুক্ত হয়ে গেলে-এটি সব কাজ পরীক্ষা করা একটি ভাল ধারণা। Arduino IDE খুলুন এবং ফাইল> উদাহরণ> ইথারনেট> ওয়েবসাইট সার্ভার নির্বাচন করুন। এটি একটি সাধারণ স্কেচ লোড করে যা একটি ওয়েব ব্রাউজারে এনালগ ইনপুট থেকে সংগৃহীত তথ্য প্রদর্শন করবে। তবে এটি এখনও আপলোড করবেন না, এটির সামান্য পরিবর্তন প্রয়োজন।

আপনাকে ইথারনেট ieldালের IP ঠিকানা নির্দিষ্ট করতে হবে - যা স্কেচের ভিতরে করা হয়। এটি সহজ, লাইনে যান:

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

এবং আপনার নিজের সেটআপের সাথে মিলিয়ে এটি পরিবর্তন করুন। উদাহরণস্বরূপ, আমাদের বাড়িতে রাউটারের আইপি ঠিকানা 10.1.1.1, প্রিন্টার 10.1.1.50 এবং সমস্ত পিসি নিচে… 50। তাই আমি লাইন পরিবর্তন করে আমার ieldাল আইপি 10.1.1.77 সেট করব:

বাইট ম্যাক = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

তবে আপনার যদি কেবল একটি ieldাল থাকে তবে তা ছেড়ে দিন। আপনার বর্তমান হার্ডওয়্যারের মতোই MAC ঠিকানা থাকার খুব, খুব, পরিসংখ্যানগতভাবে বিরল সুযোগ থাকতে পারে, তাই এটি পরিবর্তন করার আরেকটি সময় হবে।

ধাপ 3:

ছবি
ছবি

তবে আপনার যদি কেবল একটি ieldাল থাকে তবে তা ছেড়ে দিন। আপনার বর্তমান হার্ডওয়্যারের মতোই MAC ঠিকানা থাকার খুব, খুব, পরিসংখ্যানগতভাবে বিরল সুযোগ থাকতে পারে, তাই এটি পরিবর্তন করার আরেকটি সময় হবে।

একবার আপনি আপনার পরিবর্তন করা হলে, সংরক্ষণ করুন এবং স্কেচ আপলোড করুন। এখন একটি ওয়েব ব্রাউজার খুলুন এবং স্কেচে আপনি যে আইপি ঠিকানাটি প্রবেশ করেছেন তাতে নেভিগেট করুন এবং আপনাকে চিত্রের অনুরূপ কিছু উপস্থাপন করা উচিত।

কি হচ্ছে?

Arduino এনালগ ইনপুট দ্বারা পরিমাপ করা মান সহ একটি সহজ ওয়েব পেজ অফার করার জন্য প্রোগ্রাম করা হয়েছে। আপডেট মান পেতে আপনি ব্রাউজার রিফ্রেশ করতে পারেন এই সময়ে - দয়া করে মনে রাখবেন যে ইথারনেট ieldsালগুলি ডিজিটাল পিন 10 ~ 13 ব্যবহার করে, তাই আপনি সেগুলি অন্য কিছুর জন্য ব্যবহার করতে পারবেন না। কিছু Arduino ইথারনেট ieldsালগুলিতে একটি মাইক্রোএসডি কার্ড সকেটও থাকতে পারে, যা অন্য ডিজিটাল পিন ব্যবহার করে - তাই কোনটি খুঁজে বের করতে ডকুমেন্টেশন দিয়ে পরীক্ষা করুন।

ধাপ 4:

তবুও, এখন আমরা দেখতে পাচ্ছি যে ইথারনেট ieldাল কাজ করছে আমরা আরও দরকারী কিছুতে যেতে পারি। আসুন একটি সহজ উপায়ে পূর্ববর্তী উদাহরণটি বিচ্ছিন্ন করি এবং দেখি কিভাবে আমরা নেটওয়ার্কে আরও আকর্ষণীয় ডেটা বিতরণ এবং প্রদর্শন করতে পারি। রেফারেন্সের জন্য, ইথারনেট-সম্পর্কিত সমস্ত ফাংশন ইথারনেট আরডুইনো লাইব্রেরি দ্বারা পরিচালিত হয়। আপনি যদি আমাদের ব্যবহার করা আগের স্কেচটি পরীক্ষা করেন, যে বিভাগটি আগ্রহী হবে তা হল:

জন্য (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("এনালগ ইনপুট"); client.print (analogChannel); client.print ("is"); client.print (sensorReading); client.println (""); } client.println ("");

আশা করি স্কেচের এই অংশটি পরিচিত হওয়া উচিত - মনে রাখবেন কিভাবে আমরা serial.print () ব্যবহার করেছি; অতীতে সিরিয়াল মনিটর বক্সে ডেটা পাঠানোর সময়? ঠিক আছে এখন আমরা একই কাজ করতে পারি, কিন্তু আমাদের ইথারনেট ieldাল থেকে ডেটা একটি ওয়েব ব্রাউজারে ফেরত পাঠাচ্ছি - অন্য কথায়, একটি খুব প্রাথমিক ধরনের ওয়েব পেজ। একটি পাঠযোগ্য বিন্যাসে আউটপুট - এইচটিএমএল কোড। আমি ওয়েবসাইট ডেভেলপার নই (!) তাই খুব বেশি এইচটিএমএল -এ প্রবেশ করবো না।

যাইহোক, যদি আপনি আপনার Arduino এর সাথে সুন্দরভাবে বিন্যাসিত ওয়েব পৃষ্ঠাগুলি পরিবেশন করতে চান এবং তাই, এখানে একটি ভাল শুরু হবে। সরলতার স্বার্থে, নিম্নলিখিত দুটি ফাংশন সবচেয়ে দরকারী হবে:

client.print ("is");

ক্লায়েন্ট.প্রিন্ট (); আমাদের ওয়েব পেজে টেক্সট বা ডেটা ফেরত পাঠাতে দেয়। এটি serial.print () এর মতো কাজ করে, তাই সেখানে নতুন কিছু নেই। আপনি সিরিয়াল.প্রিন্ট () এর মতো ডেটা টাইপও নির্দিষ্ট করতে পারেন। স্বাভাবিকভাবেই আপনি ডেটা ফেরত পাঠাতেও এটি ব্যবহার করতে পারেন। অন্য দরকারী লাইন হল:

client.println ("");

যা এইচটিএমএল কোডটি ওয়েব ব্রাউজারে ফেরত পাঠায় যাতে এটি একটি নতুন লাইন শুরু করতে বলে। যে অংশটি প্রকৃতপক্ষে ক্যারেজ রিটার্ন/নতুন লাইন সৃষ্টি করে তা হল

যা একটি নতুন লাইনের জন্য একটি HTML কোড (বা "ট্যাগ")।

সুতরাং যদি আপনি আরো বিস্তৃত ওয়েব পেজ প্রদর্শন তৈরি করেন, তাহলে আপনি শুধু ক্লায়েন্ট.প্রিন্ট () এ অন্যান্য HTML ট্যাগ সন্নিবেশ করতে পারেন; বিবৃতি আপনি যদি HTML কমান্ড সম্পর্কে আরো জানতে চান, এখানে একটি ভাল টিউটোরিয়াল সাইট আছে।

পরিশেষে - মনে রাখবেন যে স্কেচ শুধুমাত্র তখনই পাঠানো হবে যখন এটি অনুরোধ করা হয়েছে, অর্থাৎ যখন এটি ওয়েব ব্রাউজার থেকে একটি অনুরোধ পেয়েছে।

ধাপ 5: ইন্টারনেটের মাধ্যমে আপনার Arduino অ্যাক্সেস করা

ইন্টারনেটে আপনার Arduino অ্যাক্সেস
ইন্টারনেটে আপনার Arduino অ্যাক্সেস

এ পর্যন্ত সব ঠিকই. কিন্তু আপনি যদি স্থানীয় নেটওয়ার্কের বাইরে থেকে আপনার Arduino অ্যাক্সেস করতে চান?

আপনার একটি স্ট্যাটিক আইপি অ্যাড্রেস লাগবে - অর্থাৎ আপনার ইন্টারনেট সার্ভিস প্রোভাইডার আপনার কানেকশনের জন্য যে আইপি অ্যাড্রেস বরাদ্দ করে তা একই থাকতে হবে। আপনার যদি স্ট্যাটিক আইপি না থাকে, যতক্ষণ আপনি আপনার মডেম/রাউটারটি স্থায়ীভাবে আপনার আইপিতে স্যুইচ করে রাখবেন ততক্ষণ এটি পরিবর্তন করা উচিত নয়। তবে এটি একটি অনুকূল সমাধান নয়।

যদি আপনার আইএসপি আপনাকে মোটেও স্ট্যাটিক আইপি না দিতে পারে, তাহলে আপনি ডাইনামিক ডিএনএস অফার করে এমন একটি সংস্থা ব্যবহার করে প্রকল্পের সাথে এগিয়ে যেতে পারেন। এই সংস্থাগুলি আপনাকে একটি সংখ্যার পরিবর্তে আপনার নিজের স্ট্যাটিক আইপি হোস্ট নাম (উদা mo mojo.monkeynuts.com) অফার করে, আপনার পরিবর্তিত আইপি ঠিকানা এবং এটিকে নতুন হোস্ট নামের সাথে সংযুক্ত করুন। আমি যা সংগ্রহ করতে পারি তা থেকে, আপনার মডেমকে এই DDNS পরিষেবাগুলি সমর্থন করতে হবে (একটি অন্তর্নির্মিত ক্লায়েন্ট আছে …)

উদাহরণস্বরূপ, দুটি কোম্পানি হল No-IP এবংDynDNS.com। দয়া করে মনে রাখবেন যে আমি এই দুটি ব্যবহার করি নি, সেগুলি কেবল উদাহরণ হিসাবে দেওয়া হয়েছে। এখন, আপনার আইপি ঠিকানা খুঁজে পেতে … সাধারণত এটি আপনার রাউটারের প্রশাসন পৃষ্ঠায় লগ ইন করে পাওয়া যেতে পারে - এটি সাধারণত 192.168.0.1 হয় কিন্তু ভিন্ন হতে পারে। আপনার সরবরাহকারী বা আইএসপি যদি হার্ডওয়্যার সরবরাহ করে তা পরীক্ষা করে দেখুন। এই উদাহরণের জন্য, যদি আমি একটি ওয়েব ব্রাউজারে 10.1.1.1 প্রবেশ করি, এবং আমার মডেম প্রশাসন পাসওয়ার্ড প্রবেশ করার পরে, নিম্নলিখিত স্ক্রিনটি চিত্র অনুযায়ী উপস্থাপন করা হয়।

ধাপ 6:

ছবি
ছবি

আপনি যা খুঁজছেন তা হল আপনার WAN IP ঠিকানা, যেমন আপনি উপরের ছবিতে দেখতে পাচ্ছেন। ঠকবাজদের দূরে রাখতে, আমি আমার কিছু ঠিকানা ব্ল্যাক আউট করেছি।

পরের কাজটি হল পোর্ট-ফরওয়ার্ডিং চালু করা। এটি রাউটারকে বলে যে বাইরের বিশ্ব থেকে আগত অনুরোধগুলি কোথায় পুনirectনির্দেশিত করতে হবে। যখন মডেম এই ধরনের অনুরোধ পায়, আমরা সেই অনুরোধটি আমাদের ইথারনেট ieldালের পোর্ট নম্বরে পাঠাতে চাই। ব্যবহার করে:

ইথারনেট সার্ভার সার্ভার (125);

আমাদের স্কেচে ফাংশনটি পোর্ট নম্বর 125 তে সেট করেছে

ধাপ 7:

ছবি
ছবি

সুতরাং আপনি উপরের ছবিতে লাইন নম্বর এক থেকে দেখতে পারেন, ইনবাউন্ড পোর্ট নম্বরগুলি 125 এ সেট করা হয়েছে, এবং ইথারনেট শিল্ডের আইপি ঠিকানা 10.1.1.77 এ সেট করা হয়েছে - স্কেচের মতোই।

সেটিংস সেভ করার পর, আমরা সব প্রস্তুত। আমার ইথারনেট shালের বাহ্যিক ঠিকানা হবে WAN: 125, তাই Arduino অ্যাক্সেস করার জন্য আমি আমার WAN ঠিকানা টাইপ করব: 125 শেষে রিমোট ওয়েব ডিভাইসের ব্রাউজারে, যা বাড়ি ফিরে একাকী ইথারনেট হার্ডওয়্যারের সাথে যোগাযোগ করবে।

উপরন্তু, আপনার মডেমের ফায়ারওয়াল সেটিংস পরিবর্তন করতে হতে পারে, যাতে পোর্ট 125 কে আগত অনুরোধের জন্য "উন্মুক্ত" করা যায়। এটি কীভাবে করবেন সে সম্পর্কে আরও তথ্যের জন্য অনুগ্রহ করে আপনার মডেম ডকুমেন্টেশন দেখুন। এখন মূলত মুক্ত বিশ্বের যেকোন ইন্টারনেট সংযুক্ত ডিভাইস থেকে, আমি URL ক্ষেত্রের মধ্যে আমার WAN এবং পোর্ট নম্বর প্রবেশ করতে পারি এবং ফলাফল গ্রহণ করতে পারি। উদাহরণস্বরূপ, একটি ফোন থেকে যখন এটি এলটিই মোবাইল ডেটার মাধ্যমে ইন্টারনেটের সাথে সংযুক্ত থাকে।

সুতরাং এই পর্যায়ে আপনি এখন আপনার আরডুইনো দ্বারা তৈরি একটি সাধারণ ওয়েব পেজে ডেটা প্রদর্শন করতে পারেন এবং অনিয়ন্ত্রিত ইন্টারনেট অ্যাক্সেস সহ যে কোন জায়গা থেকে এটি অ্যাক্সেস করতে পারেন। আপনার আগের Arduino জ্ঞানের সাহায্যে আপনি এখন সেন্সর বা স্কেচের অন্যান্য অংশ থেকে ডেটা ব্যবহার করতে পারেন এবং পুনরুদ্ধারের জন্য এটি প্রদর্শন করতে পারেন।

ধাপ 8: একটি ওয়েব পেজে সেন্সর ডেটা প্রদর্শন করা

একটি ওয়েব পেজে সেন্সর ডেটা প্রদর্শন করা
একটি ওয়েব পেজে সেন্সর ডেটা প্রদর্শন করা

একটি ওয়েব পেজে সেন্সর ডেটা প্রদর্শনের উদাহরণ হিসাবে, আসুন একটি সস্তা এবং জনপ্রিয় তাপমাত্রা এবং আর্দ্রতা সেন্সর ব্যবহার করি - DHT22। আপনাকে DHT22 Arduino লাইব্রেরি ইনস্টল করতে হবে যা এই পৃষ্ঠায় পাওয়া যাবে। যদি এটি আপনার প্রথমবার DHT22 এর সাথে হয়, তাহলে লাইব্রেরিতে অন্তর্ভুক্ত উদাহরণ স্কেচ দিয়ে পরীক্ষা করুন যাতে আপনি বুঝতে পারেন যে এটি কীভাবে কাজ করে।

DHT22 কে ডাটা পিনের সাথে Arduino D2, Vin থেকে 5V pin এবং GND to… GND এর সাথে সংযুক্ত করুন। এখন আমাদের স্কেচের জন্য - একটি ওয়েব পৃষ্ঠায় তাপমাত্রা এবং আর্দ্রতা প্রদর্শন করতে। যদি আপনি এইচটিএমএল -এ না থাকেন তবে আপনি কোড তৈরি করতে এইরকম অনলাইন পরিষেবা ব্যবহার করতে পারেন, যা আপনি স্কেচে ব্যবহার করার জন্য সংশোধন করতে পারেন। নীচের উদাহরণে, DHT22 থেকে তাপমাত্রা এবং আর্দ্রতার তথ্য একটি সাধারণ ওয়েব পেজে দেওয়া হয়:

#অন্তর্ভুক্ত "SPI.h"#অন্তর্ভুক্ত "Ethernet.h"

// DHT22 সেন্সরের জন্য

#"DHT.h" অন্তর্ভুক্ত করুন #DHTPIN 2 নির্ধারণ করুন #DHTTYPE DHT22 নির্ধারণ করুন

// নীচে আপনার নিয়ামকের জন্য একটি ম্যাক ঠিকানা এবং আইপি ঠিকানা লিখুন।

// আইপি ঠিকানা আপনার স্থানীয় নেটওয়ার্কের উপর নির্ভর করবে: বাইট ম্যাক = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// ইথারনেট সার্ভার লাইব্রেরি শুরু করুন

// IP ঠিকানা এবং পোর্ট দিয়ে আপনি ব্যবহার করতে চান // (পোর্ট 80 HTTP এর জন্য ডিফল্ট): ইথারনেট সার্ভার সার্ভার (125); DHT dht (DHTPIN, DHTTYPE);

অকার্যকর সেটআপ()

{dht.begin (); // সিরিয়াল যোগাযোগ খুলুন এবং পোর্ট খোলার জন্য অপেক্ষা করুন: Serial.begin (9600); while (! সিরিয়াল) {; // সিরিয়াল পোর্ট সংযোগের জন্য অপেক্ষা করুন। শুধুমাত্র লিওনার্দোর জন্য প্রয়োজন} // ইথারনেট সংযোগ এবং সার্ভার শুরু করুন: Ethernet.begin (mac, ip); server.begin (); Serial.print ("সার্ভার এ আছে"); Serial.println (Ethernet.localIP ()); }

অকার্যকর লুপ ()

{// আগত ক্লায়েন্টদের জন্য শুনুন EthernetClient client = server.available (); যদি (ক্লায়েন্ট) {Serial.println ("নতুন ক্লায়েন্ট"); // একটি http অনুরোধ একটি ফাঁকা লাইন বুলিয়ান currentLineIsBlank = true দিয়ে শেষ হয়; while (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 ("বিষয়বস্তু-প্রকার: পাঠ্য/এইচটিএমএল"); client.println ("সংযোগ: বন্ধ"); // প্রতিক্রিয়া client.println ("রিফ্রেশ: 30") শেষ হওয়ার পর সংযোগ বন্ধ হয়ে যাবে; // প্রতি 30 সেকেন্ড ক্লায়েন্টে স্বয়ংক্রিয়ভাবে পৃষ্ঠাটি রিফ্রেশ করুন। client.println ("");

client.println ("");

// DHT22 সেন্সর থেকে ডেটা পান

ভাসা h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// এখান থেকে আমরা ওয়েব পেজ তৈরি করতে আমাদের নিজস্ব HTML কোড লিখতে পারি

client.print ( অফিসের আবহাওয়া

অফিস তাপমাত্রা - );

client.print (t);

client.print ( ডিগ্রী সেলসিয়াস

);

client.print ("

আর্দ্রতা - );

client.print (h);

client.print ( শতাংশ

);

client.print ("

পৃষ্ঠা প্রতি 30 সেকেন্ডে রিফ্রেশ হয় <

. );

বিরতি;

} if (c == 'n') {// আপনি একটি নতুন লাইন currentLineIsBlank = true শুরু করছেন; } অন্যথায় যদি (c! = 'r') {// আপনি বর্তমান লাইনে একটি অক্ষর পেয়েছেন currentLineIsBlank = false; }}} // ওয়েব ব্রাউজারকে ডেটা গ্রহণের জন্য বিলম্ব দিন (1); // সংযোগ বন্ধ করুন: client.stop (); Serial.println ("ক্লায়েন্ট সংযোগ বিচ্ছিন্ন"); }}

এটি আইডিই এর ওয়েব সার্ভারের উদাহরণ স্কেচের একটি পরিবর্তন যা আমরা আগে ব্যবহার করেছি - কিছু পরিবর্তন সহ। প্রথমে, ওয়েবপৃষ্ঠাটি প্রতি 30 সেকেন্ডে স্বয়ংক্রিয়ভাবে রিফ্রেশ হবে - এই প্যারামিটারটি লাইনে সেট করা আছে:

client.println ("রিফ্রেশ: 30"); // প্রতি 30 সেকেন্ডে স্বয়ংক্রিয়ভাবে পৃষ্ঠাটি রিফ্রেশ করুন

… এবং আমাদের ওয়েব পেজের জন্য কাস্টম এইচটিএমএল লাইন থেকে শুরু হয়:

// এখান থেকে আমরা ওয়েব পেজ তৈরি করতে আমাদের নিজস্ব HTML কোড লিখতে পারি

আপনি তারপর আপনার প্রয়োজনীয় লেআউট তৈরির জন্য client.print () ফাংশনের ভিতরে প্রয়োজনীয় HTML সন্নিবেশ করতে পারেন। শেষ পর্যন্ত - এখানে কাজের স্কেচের উদাহরণ স্ক্রিন শট।

তাই আপনার কাছে এটি আছে, আপনার আরডুইনো বাইরের বিশ্বের সাথে যোগাযোগ করার আরেকটি উপকারী উপায়।

প্রস্তাবিত: