আমার সমস্ত আরডুইনো বোর্ডের জন্য আমি কীভাবে একটি অনন্য আইডি পেতে পারি?


27

একবার আপনি আপনার আরডুইনো বোর্ডগুলির মধ্যে একটিতে স্কেচ আপলোড করার পরে, সোর্স কোডটি কীভাবে সেই স্কেচকে নেতৃত্ব দিয়েছে তা জানা খুব কঠিন।

প্রকৃতপক্ষে, আপনি আপনার পিসিতে আপনার স্কেচের উত্স কোডটি আপনার বোর্ডে আপডেট না করে (বাইনারি ফর্ম্যাটে) পরিবর্তন করতে পারেন।

আমার একটি বোর্ডে স্কেচ আপলোড করার সাথে সাথে এমন একটি " স্কেচ সংগ্রহস্থল " স্থাপনের ধারণা ছিল যা জনসাধারণের হয়ে উঠবে। তারপরে আমি আমার বোর্ডগুলিতে যে কোনও স্কেচ চলার জন্য সোর্স কোডটি পুনরুদ্ধার করতে পারি।

এই জাতীয় সংগ্রহস্থলের জন্য, আমার প্রথমে একটি " সূচক " থাকা দরকার যা স্কেচ উত্স কোডটি কোন বোর্ডের সাথে সংযুক্ত রয়েছে তা আমাকে জানতে সক্ষম করবে ।

সাধারণত, এই জাতীয় সূচি প্রতিটি একক আরডুইনো বোর্ডের জন্য অনন্য হওয়া উচিত।

সুতরাং আমার প্রশ্ন: আমি কীভাবে একটি আরডুইনো বোর্ডের জন্য একটি অনন্য আইডি পেতে পারি?

সম্পাদনা:

এটি আমার বর্তমান বোর্ডগুলির তালিকা (একক অনন্য আইডি পদ্ধতির দ্বারা সমর্থিত মিনিমিয়াম তালিকা):

  • ইউএনও আর 3
  • মেগা 2560
  • ইউন
  • আরডুইনো রোবট (এটি অবশ্যই 2 লিওনার্দো সমমানের বোর্ড হতে হবে)

ভবিষ্যতে, আমি নিজের বোর্ডগুলিও তৈরি করতে পারি (ইউএন সমতুল্য তবে খালি বোনস, এফটিডিআই ছাড়াই), সুতরাং যদি কোনও পদ্ধতিরও এগুলিকে সমর্থন করে তবে এটি আরও ভাল।


1
@ জেফপোইলাইটারেটস ... সাইটটি ব্যবহার করার সময় সবেমাত্র এই পোস্টটি দেখেছেন..আপনি কীভাবে এটি কার্যকর করবেন তার কোনও সমাধান, বা সেরা কেস দৃশ্যের সন্ধান করেছেন?
ডায়নোটম

উত্তর:


14

একটি অনন্য আইডি পেতে আপনি এখানে বেশ কয়েকটি কৌশল ব্যবহার করতে পারেন।

  1. এফটিডিআই চিপগুলিতে একটি অনন্য সিরিয়াল নম্বর প্রোগ্রাম করা আছে। আমি যতটা অবগত থাকি কেবল সংযোগের পিসি দিক থেকে এটি অ্যাক্সেস করা যায়।
  2. ইউএসবিতে অন্তর্নির্মিত কিছু চিপগুলির (যেমন এটিএমগা 8 ইউ 2/16 ইউ 2/32 ইউ 2) স্বাক্ষর ডেটাতে একটি স্বতন্ত্র আইডি থাকে যা সাধারণত ইউএসবির জন্য ব্যবহৃত হয়। সংযোগের উভয় দিক থেকে সহজেই অ্যাক্সেস করা যায়। এটিতে এটিএমগা 16 ইউ 2 অন্তর্ভুক্ত রয়েছে যা ইউএসবি-> সিরিয়াল ব্রিজ আরডুইনো ইউনো আর 3 হিসাবে ব্যবহৃত হয়।
  3. ইউএসবিতে অন্তর্নির্মিত কিছু চিপ তবে স্বাক্ষরের কোনও অনন্য আইডি এখনও ইউএসবি স্ট্যাকের (যেমন এলইউএফএ) বুটলোডার বা ডিএফইউ (ডিভাইস ফার্মওয়্যার আপগ্রেড) এর জন্য ব্যবহৃত একটি অনন্য আইডি প্রোগ্রাম করবে না।
  4. তাদের মধ্যে বিশ্বব্যাপী অনন্য সিরিয়াল আইডি সহ অনেকগুলি চিপ রয়েছে যেমন মাইক্রোচিপ 11AA02E48 , ডালাস 1-তারের সমস্ত সেন্সর (সাধারণ DS18B20 তাপমাত্রা সংবেদক সহ) এবং অন্যান্য সিরিয়াল ইপ্রোমস। আমি এগুলি উত্পাদন হার্ডওয়্যারটিতে ব্যবহার করেছি যার অবশ্যই একটি অনন্য ম্যাক ঠিকানা থাকতে হবে।
  5. আপনি স্ট্যান্ডার্ড Optiboot বুটলোডার (বা আপনি যে কোনও নৌকা লোডার ব্যবহার করেন) সংশোধন করতে পারেন যাতে এটি অনন্য আইডির সাথে ধরে রাখতে এবং প্রতিক্রিয়া জানাতে পারে।

এগুলির সাথে সমস্যাটি হ'ল 5 টি ছাড়া কোনও বিকল্প নেই যা সমস্ত বোর্ড জুড়ে কাজ করবে work

যদি আপনার সমাধানটি জেনেরিক হতে চলেছে তবে আমি পরামর্শ দেব যে কোনও ইউএসবি আইডি ব্যবহার করা সামনের দিকে নয়। আমার কাছে ~ 30 আরডুইনো-ভিত্তিক বোর্ড রয়েছে এবং তাদের মধ্যে কেবল 5 টিই ইউএসবি হার্ডওয়্যারটিতে তৈরি করেছেন। তাদের বাকি সমস্তগুলিকে প্রোগ্রাম করার জন্য একটি বাহ্যিক এফটিডিআই কেবল প্রয়োজন। এর অর্থ তাদের সকলের একই আইডি থাকত।


2
তোমরা যা কর না দিয়ে 30 বোর্ড?
asheeshr

মূলত ওয়্যারলেস সেন্সর নেটওয়ার্কগুলির জন্য। আমার কাছে কেবল কয়েকটি আসল আরডুইনো রয়েছে - একটি ডিউডিমিলানোভা, একটি সায়ডুইনো মেগা এবং একটি ইউনো। বাকি সমস্ত হ'ল টেনসি, জিনোডস, ওয়াইএনডস, ন্যানোডস এবং আরএফাস।
সাইবার্বিবনস

1
সম্ভাব্য বিকল্পগুলির একটি সম্পূর্ণ তালিকা জন্য +1, ধন্যবাদ! আমি বরং 4 এড়াতে চাই কারণ আমি আমার সমস্ত বোর্ডগুলিতে নির্দিষ্ট হার্ডওয়্যার যুক্ত করতে চাই না। ৫. বিপজ্জনক বলে মনে হচ্ছে (একই পরিবর্তিত বুটলোডারটিকে 2 টি পৃথক বোর্ডে আপলোড করা সহজ) এবং ভার্চুয়াল (প্রতিটি বোর্ডের জন্য আপলোড করার জন্য বিভিন্ন বুটলোডার উত্স কোড থাকা প্রয়োজন)। এখনও অবধি, ইউএসবি আইডি এবং এফটিডিআই বেশ ভাল সমাধান বলে মনে হচ্ছে, তবে তারা কি আমার সমস্ত বর্তমান বোর্ডের সাথে কাজ করে?
jfpoil ব্যাখ্যা

আরডুইনোর কি বিশ্বব্যাপী অনন্য সিরিয়াল আইডি রয়েছে? এটা কীভাবে পড়ব?
lanse7pty

13

আমি যতদূর জানি চিপটির কোনও ধরণের অনন্য আইডি নেই .... তবে আপনি আপনার বোর্ডগুলির ইপ্রোমে একটি প্রোগ্রাম করতে পারেন।

ইপ্রোম ডকুমেন্টেশন

আপনি একটি নির্দিষ্ট ঠিকানায় লিখতেন এবং তারপরে ভবিষ্যতের স্কেচগুলি আইডি পড়তে এবং এটি দিয়ে যা কিছু করতে পারে।


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

বিকল্পভাবে, কেবল একটি লেবেল প্রস্তুতকারক ব্যবহার করুন এবং প্রতিটি বোর্ডে একটি লেবেল রাখুন।


2
যতদূর প্রশ্নের অনন্য দিক হিসাবে, কোনও জিইউডি এটি সমাধান করতে পারে (ত্রুটির কিছু ক্ষুদ্র প্রান্তের মধ্যে)।
ম্যাথু জি।

আমি প্রথমে এর জন্য ইপ্রোম ব্যবহার করার কথা ভেবেছিলাম; তবে তার জন্য প্রতিটি বোর্ডের অতিরিক্ত কাজ দরকার: একটি নতুন অনন্য আইডি তৈরি করুন, তারপরে এটি EPROM এ লিখুন। এছাড়াও, আমার স্কেচগুলি দ্বারা ব্যবহৃত গ্রন্থাগারগুলির সাথে অসঙ্গতি থাকতে পারে (এটি একই EEPROM ঠিকানায় লিখতে পারে)। পরিশেষে আমার প্রসঙ্গে, আমার পিসি থেকে আইডিটি পড়তে হবে, এটি আরও কঠিন। ইউএসবি ইউনিক আইডিটি আমার কাছে আরও আকর্ষণীয় বলে মনে হচ্ছে।
jfpoil ব্যাখ্যা

আমার উত্তর অনুসারে, আপনি যদি এটি একটি জেনেরিক সমাধান হতে চান (বেশিরভাগ লোকের জন্য, এবং অনেকগুলি বোর্ডের জন্য), তবে ইউএসবি আইডির উপর নির্ভর করা মানে যে ইউএসবি-> সিরিয়াল ব্রিজ ছাড়াই বোর্ডগুলিতে এফটিডিডিআই কেবলগুলি ব্যবহার করা লোক না আপনার সিস্টেম ব্যবহার করতে সক্ষম।
সাইবার্বিবনস

8

কিছু বোর্ড, যখন কোনও কম্পিউটারের সাথে সংযুক্ত থাকে, তখন তাদের সিরিয়াল নম্বর প্রকাশ করে। আমার আরডুইনো ইউনো আর 3 বলে

[16818.451423] usb 3-2: SerialNumber: 85235353137351E02242

যদিও আমি নিশ্চিত না এটি কতটা অনন্য।


সমস্ত আরডুইনো বোর্ডের কি এ জাতীয় সংখ্যা রয়েছে? যে বোর্ডগুলির একটি রয়েছে (বা নেই) তার তালিকা থাকলে ভাল লাগবে।
jfpoil ব্যাখ্যা

1
খনিগুলির দিকে তাকিয়ে, 32u4 ভিত্তিকগুলি নেই, 328 এবং এসএএম 3 এক্স 8 ই রয়েছে
ফেডেরিকো ফিসোর

4

আমার জ্ঞানের সর্বোপরি ইউএসবি চিপস কমপক্ষে এফটিডিআই চিপসের জন্য একটি অনন্য সিরিয়াল নম্বর নিয়ে আসে। লিনাক্সে আপনি সহজেই অনন্য ডিভাইসের নাম নির্ধারণ করতে পারেন, আমার ওয়েবসাইটটি দেখুন

অন্য যে, তুমি কি বর্ণনা প্রায় কাছাকাছি একটি সহজ ফর্ম সংস্করণ নিয়ন্ত্রণ । আপনার উত্স ফাইলগুলির সংস্করণ নম্বর রয়েছে তা নিশ্চিত করুন। আপনার আরডুইনো সনাক্ত করতে, আপনি সময়টির সময় কোডটির Serial.Print();নাম এবং সংস্করণ তৈরি করতে পারেন setup();


হ্যাঁ সংস্করণ নিয়ন্ত্রণ আমি যা অর্জন করতে চাই তা কম বেশি; তবে কোডে একটি সংস্করণ স্থাপন করা এবং কোড প্রতিবার পরিবর্তন হওয়া এটিকে পরিবর্তন করা কোনও বিকল্প নয় (ভুলে যাওয়া খুব সহজ)। আমি বর্তমানে আমার স্কেচগুলির জন্য গিথুব ব্যবহার করি তবে আমি খুব সহজেই কোনও বোর্ডে স্কেচ কী সংস্করণে চলছে তার কোন সংস্করণটি সহজেই খুঁজে পেতে চাই।
jfpoil ব্যাখ্যা

4
সংকলনের তারিখ এবং সময় __DATE__এবং এর জন্য একটি ম্যাক্রো রয়েছে __TIME__। অন্ততপক্ষে আপনি নিজের তথ্যটি .jfpoil ব্যাখ্যা
জেপ্পি

ভালো কথা, সংস্করণটির জন্য আমি এই ম্যাক্রোগুলি সম্পর্কে ভাবিনি।
jfpoil ব্যাখ্যা

2

আমি সন্দেহ করি যে ইউনোতে ইউএসবি ইন্টারফেস আপনাকে একটি অনন্য সিরিয়াল নম্বর দেয়। যে কোনও সংখ্যা চিপটিতে আপলোড করা কোডের অংশ হবে যা একাধিক ইউনোর মধ্যে একই হবে।

একটি পদ্ধতির DS2401 "সিলিকন সিরিয়াল নম্বর" চিপ যা ওয়ান তারের ইন্টারফেস ব্যবহার করে। এর জন্য কেবল একটি ফ্রি পিন এবং কিছু কোড প্রয়োজন (কোডটি সম্ভবত সমস্যা হবে)।

স্বল্পতম অনুপ্রেরণীয় পদ্ধতি এবং সম্ভবত সবচেয়ে নির্ভরযোগ্য হ'ল কেবল কোডটি পুনরায় পড়া এবং এটির যোগফলটি পরীক্ষা করা check আমি আমার চিপ সিগনেচার ডিটেক্টর দিয়ে ঠিক তেমনটাই করি । তবে এটি কেবল বুটলোডার স্বাক্ষর সনাক্ত করে (বর্তমানে লিখিত হিসাবে)। মোটামুটি ছোটখাটো পরিবর্তন এবং এটি পুরো স্কেচ কোডের MD5-যোগ করতে পারে।

উদাহরণ আউটপুট:

Signature detector.
Written by Nick Gammon.
Signature = 1E  95  0F 
Fuses
Low = FF High = D6 Ext = FF Lock = CF

Processor = ATmega328P
Flash memory size = 32768
Bootloader in use: Yes
EEPROM preserved through erase: Yes
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 02 01 02 03 0405 06 07 08 09 0A 0B 0C 0D 0E 0F 
7E10: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7E20: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7E30: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
...
7FB0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7FC0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7FD0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7FE0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
7FF0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 

MD5 sum of bootloader = 56 72 75 2D 5D B5 0D BA 25 10 DF BE 87 D2 A1 27 

এমডি 5 যোগ (শেষ লাইন) কার্যকরভাবে সেই নির্দিষ্ট বুটলোডারের স্বাক্ষর। আসলে সবচেয়ে সাম্প্রতিক সংস্করণ এগুলি একটি টেবিলটিতে দেখায়:

MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F 
Bootloader name: optiboot_atmega328

সুতরাং আপনি যা করতে পারেন তা হল, স্কেচ আপলোড করার সময়, হেক্স কোডের একটি MD5 যোগ তৈরি করুন। এটি করার মোটামুটি সহজ উপায় আছে। তারপরে আপনি আপনার উত্স কোডে একটি "গিট ট্যাগ" অপারেশন করতে পারেন এবং তারপরে (কিছু স্বয়ংক্রিয় বা ম্যানুয়াল প্রক্রিয়া ব্যবহার করে) মনে রাখবেন যে একটি নির্দিষ্ট মুহূর্তে হেক্স কোডের একটি নির্দিষ্ট MD5 যোগগুলি স্কেচ কোডকে উপস্থাপন করে।

কিছু ধরণের ডাটাবেস যেমন:

Chip: Uno
MD5 sum: D8 8C 70 6D FE 1F DC 38 82 1E CE AE 23 B2 E6 E7 
Sketch: My_robot_sketch_42.ino
Git tag: version666

বোর্ড থেকে উত্সটি সনাক্ত করার জন্য, আপনি কোডটির MD5 যোগটি স্থাপন করুন (এটি বোর্ড থেকে ফিরে পড়ে) এবং তারপরে এটি আপনার ডাটাবেসে সন্ধান করুন।


1

আমি একটি তারের টেম্প সেন্সরটি সংযুক্ত করেছি যা প্রতিটিই একটি অনন্যচিত্রে আসে। সমস্ত স্কেচগুলি আমি বুট করতে চাইছিলাম এবং প্রতিটি সিরিয়াল সংযোগে ঠিকানাটি লিখেছিল। আমার প্রয়োজনীয় সমস্ত হার্ডওয়্যারগুলির সাথে আমি একটি ঝাল তৈরি করেছি যাতে আমার যদি ইউনো থেকে মেগায় আপগ্রেড করার প্রয়োজন হয় তবে ডিভাইসটি তার অনন্য রাখতে চাই।


0

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

https://github.com/skoumalcz/arduino-id-guard

দাবি অস্বীকার: আমি গ্রন্থাগারের লেখক :-)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.