সিরিয়াল.বেগিন (9600) কী?


22

আমি জানি যে এটি কিছু শুরু করার জন্য:

Serial.begin(9600);

তবে আমি জানতে চাই এর আসলে কী অর্থ?


3
ডকুমেন্টেশনের এটির একটি ভাল বর্ণনা রয়েছে। arduino.cc/en/Serial/begin
sachleen

উত্তর:


22

Serial.begin(9600)আসলে কিছুই মুদ্রণ করে না। তার জন্য আপনি Serial.print("Hello world!")"হ্যালো ওয়ার্ল্ড!" লেখাটি মুদ্রণ করতে ব্যবহার করতে চান সিরিয়াল কনসোল থেকে। বরং এটি প্রতি সেকেন্ডে 9600 বিটে সিরিয়াল সংযোগ শুরু করে।

সিরিয়াল সংযোগের উভয় পক্ষের (অর্থাত্ আরডুইনো এবং আপনার কম্পিউটার) যে কোনও ধরণের বোধগম্য ডেটা পেতে একই গতির সিরিয়াল সংযোগটি ব্যবহার করতে হবে। দুটি সিস্টেমের গতিটি কী মনে করে তার মধ্যে কোনও মিল নেই তবে ডেটা গার্ফ করা হবে।

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


2
বাউড এবং বিপিএস দুটি আলাদা জিনিস ... আমি যে লিঙ্কটি এখন খুঁজছিলাম তা খুঁজে পাচ্ছি না।
বেনামে পেঙ্গুইন

যদি আমি "সিরিয়াল.বেগিন (0)" রাখি; বা "সিরিয়াল.বেগিন (4000);"। মানে আমি জানতে চাই সংখ্যাগুলির মধ্যে পার্থক্য কী?
শাজিব0o

3
সিরিয়াল.বেগিন যোগাযোগের গতি সেট করতে ব্যবহৃত হয়, প্রতি সেকেন্ডে বিটে। একটি বাইট 8 বিটের সমান, তবে ক্রমিক সংযোগগুলি শুরুর শনাক্তকরণের জন্য স্টার্ট এবং স্টপ বিট প্রেরণ করে প্রাপ্ত সিস্টেমটিতে একটি নির্দিষ্ট বাইটের সমাপ্তি এবং শেষ হয়। সুতরাং, একটি অক্ষর প্রেরণের জন্য 10 বিট প্রয়োজন। ব্যবহার Serial.begin(0)যাও Arduino বলে যে এটা প্রতি সেকেন্ডে 0 বিট এ সিরিয়াল সাথে যোগাযোগ করা উচিত নয়। যেমনটি আপনি আশা করতে পারেন, এর অর্থ এই যে আরডিনো কখনই কোনও ডেটা প্রেরণ করবে না। Serial.begin(4000)আরডুইনো প্রতি সেকেন্ডে 4000 বিট এ ডেটা প্রেরণ করবে। এটি অ-মানক, তবে অন্যথায় জরিমানা।
হেইপেট

2
সংক্ষেপে: সংখ্যা পরিবর্তন করা গতি পরিবর্তন করে। সংখ্যাটি ছোট করা (যেমন Serial.begin(300)) আরডুইনো আরও ধীরে ধীরে ডেটা প্রেরণ করে। এটি বাড়িয়ে, 57600 বলুন ডেটা দ্রুত প্রেরণ করবে। প্রেরণ সিস্টেম এবং গ্রহণকারী সিস্টেম উভয়ই কোন গতিটি ব্যবহার করতে হবে সে সম্পর্কে একমত হওয়া দরকার: আপনার কম্পিউটারের সিরিয়াল প্রোগ্রাম, আরডুইনো সিরিয়াল মনিটর উইন্ডোর মতো, আপনাকে যে গতিতে আপনার কম্পিউটারে ডেটা গ্রহণ করবে সেট করতে দেয় তবে আপনি কেবল সাধারণ থেকে বেছে নিতে পারেন গতি: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 এবং 11520 বিট / সেকেন্ড। আপনি 4000 এর মতো অন্যান্য গতি প্রবেশ করতে পারবেন না 96 9600 সাধারণত ভাল।
হেইপেট

Baud and BPS are two different things... can't find the link I was looking for now.- এখানে একটি ব্যাখ্যা: পরিশিষ্ট সি: "বাউড" বনাম "বিপিএস"
নিক গ্যামন

21

একটি চিত্রের মূল্য 1000 শব্দের, তাই তারা বলে, (আপনি যদি কম্পিউটারের সাথে কাজ করেন তবে 1024 শব্দ) তাই আমি কিছু ছবি পোস্ট করব ...

আমি 9600 বাউডে "ফ্যাব" প্রেরণের জন্য আমার ইউনো সেট আপ করেছি এবং ফলাফলগুলি একটি যুক্তি বিশ্লেষকের কাছে ক্যাপচার করেছি।

সিরিয়াল কমস - 3 টি অক্ষর

লাল রঙের ছায়াযুক্ত অংশগুলি বাইটগুলির মধ্যে "অলস" সময়কাল।

উপরের গ্রাফিক নোট থেকে যে টিএক্স (সঞ্চারিত) ডেটা লাইনটি সাধারণত কোনও অক্ষর (বাইট) শুরুর ইঙ্গিতটি কম না হওয়া পর্যন্ত সাধারণত (1) বেশি থাকে। এটি শুরু বিট । তারপরে 8 টি তথ্য বিট (সাদা বিন্দু দ্বারা নির্দেশিত) বাড রেটে উপস্থিত হয় (প্রতি সেকেন্ডে 9600 নমুনা)। এরপরে লাইনটি আবার উঁচুতে আনা হয়। এটি স্টপ বিট (লাল অংশ)। তারপরে আমরা পরের চরিত্রের জন্য স্টার্ট বিট এবং আরও কিছু দেখতে পাই। "স্টপ" অংশটি অনির্দিষ্টকালের জন্য দীর্ঘ হতে পারে, তবে এটির জন্য কমপক্ষে একটি বিট দৈর্ঘ্য থাকতে হবে।


প্রথম অক্ষরের আরও বিশদ (অক্ষর "F" বা 0x46 বা 0b01000110) এখানে দেখা যাবে:

সিরিয়াল কমস - একক বাইট

  • এ - কোনও ডেটা নেই (টিএক্স বেশি)

  • বি - "স্টার্ট বিট"। কোনও অক্ষর (বাইট) প্রেরণ করা শুরু হচ্ছে তা প্রেরককে বলার জন্য লাইনটি কম নেওয়া হয়েছে। গ্রহীতা লাইনটি নমুনা দেওয়ার আগে দেড় ঘড়ির জন্য অপেক্ষা করে।

  • সি - প্রথম অক্ষর আসবে ("F" বা 0x46 বা 0b01000110 বর্ণটি)। এর মতো কোনও ক্লক বিট নেই, আগত ডেটা কেবল বাউড (সংক্রমণ) হারে নমুনাযুক্ত। এসপিআই যোগাযোগের বিপরীতে ডেটা সর্বনিম্ন-তাত্পর্যপূর্ণ বিট প্রথমে উপস্থিত হয় (আপনি যদি বাইট প্রতি 8 টি বিট প্রেরণ না করেন)। সুতরাং আমরা 01100010 (01000110 এর চেয়ে বেশি) দেখি।

  • ডি - স্টপ বিট এটি এই বাইটের শেষ এবং পরবর্তীটির শুরুতে পার্থক্য করতে পারে তা নিশ্চিত করার জন্য এটি সর্বদা উচ্চ। যেহেতু শুরুর বিটটি একটি শূন্য এবং স্টপ বিটটি এক, তাই সর্বদা একটি বাইট থেকে পরের দিকে একটি স্পষ্ট রূপান্তর থাকে।

  • ই - পরবর্তী অক্ষরের জন্য শুরু বিট bit


আপনি লজিক বিশ্লেষক ক্যাপচার থেকে দেখতে পারেন যা T1 - T20.1041667 এমএস, এবং এটি ঘটে যা 1/9600 হয়:

1 / 9600 = 0.00010416666 seconds

সুতরাং 9600 এর হার আপনাকে প্রতি সেকেন্ডে বিটের সংখ্যা দেয় এবং বিপরীতে বিটগুলির মধ্যে সময় ব্যবধান হয়


অন্যান্য বিবেচ্য বিষয়

  • সিরিয়াল কমস স্ব-ক্লকযুক্ত নয় (এসপিআই বা আই 2 সি এবং অন্যদের থেকে পৃথক) সুতরাং প্রেরক এবং রিসিভার উভয়কেই ঘড়ির হারের সাথে একমত হতে হবে।

  • আড়ডিনোতে ঘড়ির হার হুবহু নয়, কারণ একটি সিরিয়াল ঘড়ি পেতে হার্ডওয়্যারটিকে সিস্টেম ক্লকটি নীচে ভাগ করতে হয়, এবং বিভাগটি সর্বদা সঠিক হয় না। প্রায়শই একটি ত্রুটি থাকে, পরিমাণটি ডাটাশিটে দেওয়া হয় (ইউনোর মতো একটি 16 মেগাহার্টজ সিস্টেম ঘড়ির জন্য উদ্ধৃত পরিসংখ্যান):

    সিরিয়াল বাড রেট ত্রুটি

  • আপনি ডেটা বিটের সংখ্যা পৃথক করতে পারেন, আপনাকে তাদের 8 টি প্রেরণ করতে হবে না, বাস্তবে আপনি 5 থেকে 9 বিট প্রেরণ করতে পারেন।

  • ডেটা বিটের পরে বৈকল্পিকভাবে একটি প্যারিটি বিট প্রেরণ করা যেতে পারে ।

    • যদি আপনি "বিজোড়" প্যারিটি নির্দিষ্ট করে থাকেন তবে প্যারিটি বিটটি এমনভাবে সেট করা হয় যাতে মোট 1-বিটের সংখ্যা বিজোড় হয়।
    • আপনি যদি "সম" প্যারিটি নির্দিষ্ট করেন তবে প্যারিটি বিটটি এমনভাবে সেট করা হয় যাতে মোট 1-বিটের সংখ্যা সমান হয়।
    • যদি আপনি কোনও সমতা নির্দিষ্ট না করেন তবে প্যারিটি বিট বাদ দেওয়া হয়।

    এটি সঠিকভাবে ডেটা এসেছে কি না তা প্রাপককে সনাক্ত করতে সহায়তা করতে পারে।

  • সমতা বিট স্টপ বিটের আগে প্রেরণ করা হয়।

  • 9 টি ডাটা বিটের ক্ষেত্রে (সিটাল্ক প্রোটোকলে ব্যবহৃত হিসাবে) প্যারিটি বিটটি 9 তম ডেটা বিট হিসাবে পুনরায় উদ্দেশ্যযুক্ত করা হয়েছে। অতএব আপনার কাছে 9 টি ডেটা বিট এবং প্যারিটি বিট উভয়ই থাকতে পারে না।

  • আপনার দুটি স্টপ বিটও থাকতে পারে। এটি মূলত কেবল বাইটগুলির মধ্যে সময়কে দীর্ঘায়িত করে। "পুরাতন দিনগুলিতে" এটি এমন ছিল যাতে ধীর বৈদ্যুতিন সরঞ্জামগুলি পূর্ববর্তী বাইট প্রক্রিয়া করতে পারে (উদাহরণস্বরূপ এটি মুদ্রণ করতে)।


সম্ভাব্য দুর্নীতি

আপনি যদি কোনও স্ট্রিমের মাঝামাঝি সিরিয়াল ডেটা শুনতে শুরু করেন তবে এটি বেশ সম্ভব যে স্ট্রিমের মাঝখানে একটি 0-বিট একটি স্টার্ট বিট হিসাবে ব্যাখ্যা করা হবে এবং তারপরে রিসিভার তার পরে সমস্ত কিছু ভুলভাবে ব্যাখ্যা করবে।

এ থেকে পুনরুদ্ধারের একমাত্র আসল উপায় হ'ল সময়ে সময়ে, (যেমন। 10 বিট দীর্ঘ) এমনটি ঘটতে পারে না তার জন্য যথেষ্ট পরিমাণে ফাঁক have


উল্টানো যুক্তি

এখানে প্রদর্শিত বিটগুলি (যুক্তি-স্তর) বিপরীত নয়। অর্থাৎ, 1-বিট হাইট এবং 0-বিট কম OW আপনার কাছে যদি আরএস 232 সরঞ্জাম রয়েছে যা সম্ভবত 1-বিটের জন্য -12 ভি এবং 0-বিটের জন্য +12 ভি জাতীয় কিছু প্রেরণ করবে। এটি বিপরীত কারণ কোনও এক শূন্যের চেয়ে কম, ভোল্টেজযুক্ত।

আপনার যদি এই জাতীয় ডিভাইস থাকে তবে আপনার ভোল্টেজ রূপান্তর এবং লজিক বিপরীতটি করতে হবে। MAX232 এর মতো চিপগুলি আপনার জন্য উভয়ই করবে। তারা কয়েকটি ব্যবহারকারীর সরবরাহিত ক্যাপাসিটরের সাহায্যে অভ্যন্তরীণভাবে উত্পাদন করে এ জাতীয় সরঞ্জাম চালনা করার জন্য প্রয়োজনীয় -12 ভি সরবরাহ করতে পারে।


থাম্ব-এর গতির নিয়ম

যেহেতু, একটি স্টার্ট বিট, 8 ডেটা বিট এবং একটি স্টপ বিটের সাহায্যে থাম্বের দ্রুত নিয়ম হিসাবে আমাদের মোট 10 বিট রয়েছে, আপনি 10 দ্বারা বিট রেট ভাগ করে এক সেকেন্ডে যে পরিমাণ বাইট প্রেরণ করতে পারবেন তা গণনা করতে পারবেন ।

যেমন। 9600 বিপিএসে আপনি প্রতি সেকেন্ডে 960 বাইট পাঠাতে পারেন।


পুনরুত্পাদন করার কোড:

void setup() 
  { 
  Serial.begin(9600); 
  Serial.print("Fab"); 
  } 

void loop ()
  {
  }

1

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


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