আমি আমার নিজের প্রশ্নের উত্তর দেওয়ার স্বাধীনতা নিচ্ছি যেহেতু আমি এটির বেশিরভাগ সন্ধান পেয়েছি এবং এটি আমার অনুসন্ধানগুলি ভাগ করার একটি ভাল উপায়। আমাকে শুরু করার জায়গা এবং কিছু ধারণা দেওয়ার চেষ্টা করার জন্য অলিন ল্যাথ্রপকে আমার ধন্যবাদ, তবে শেষ পর্যন্ত, প্রোটোকল অলিনের অনুমানের থেকে একেবারেই আলাদা হয়ে গেছে, এই কারণেই আমি এই উত্তরটি পোস্ট করছি।
আপডেট: আমি সর্বশেষ 8 টি বিট সম্পর্কিত একটি ফলো-আপ প্রশ্ন পোস্ট করেছি , যা আমি পুরোপুরি বুঝতে পারি নি, এবং ডেভ ট্যুইড এটি বের করে ফেলেছে । আমি এখানে বিশদগুলি অন্তর্ভুক্ত করব, সুতরাং এই উত্তরটি সম্পূর্ণ প্রোটোকল অনুমান হিসাবে কাজ করতে পারে তবে ডেভের উত্তরটি পরীক্ষা করে দেখুন।
এই চিত্রটি বের করার জন্য আমাকে কিছু ভিন্ন জিনিস চেষ্টা করতে হয়েছিল, তবে আমি যথেষ্ট আত্মবিশ্বাসী যে আমি এটি পেয়েছি। অদ্ভুতভাবে, আমি অন্য কোথাও এই প্রোটোকলের অনুরূপ কিছু পাইনি, তবে এটি খুব ভাল একটি সাধারণ প্রোটোকল হতে পারে যা আমি কেবল জানি না I
যাইহোক, আমি যা পেয়েছি তা এখানে:
প্রোটোকল / এনকোডিং
ডাল এবং এর মধ্যে ফাঁকা উভয়ই ডেটা এনকোড করতে ব্যবহৃত হয়। একটি দীর্ঘ নাড়ি / স্থান হ'ল বাইনারি এক (1), এবং একটি সংক্ষিপ্ত নাড়ি / স্থান বাইনারি শূন্য (0)। ডালগুলি 50% শুল্ক-চক্র @ স্ট্যান্ডার্ড কনজিউমার ইনফ্রারেড 38kHz মডুলেশন ব্যবহার করে পাঠানো হয়।
নাড়ি / স্থানের সময়গুলি মূল প্রশ্নে থাকে তবে আমি তাদের এখানে পূর্ণতার জন্য পুনরাবৃত্তি করব:
Bit Pulse Space
-----+---------+---------
0 | 275µs | 285µs
1 | 855µs | 795µs
সমস্ত ± 10µs সর্বোচ্চ।, 5 typ টাইপ টাইপ .. এটি 16MHz এ লজিক বিশ্লেষক দ্বারা ধরা নমুনাগুলির উপর ভিত্তি করে; আমার কাছে একটি অসিলোস্কোপ নেই, তাই সঠিক প্রোফাইলটি আমি জানি না (যেমন উত্থান / পতনের সময়)।
নিয়ন্ত্রণের ইনপুটগুলি প্রয়োগ করা হয় এবং প্যাকেজগুলি যতক্ষণ না পুনরাবৃত্তি করা হয় এবং সর্বনিম্ন 100 মিমি ব্যবধানে উপস্থিত থাকে।
প্যাকেট সংক্রমণ একটি "পালস 1" উপস্থাপনের সাথে শুরু হয়, যা স্থির এবং ডেটার অংশ নয়। নীচের স্থানটি প্যাকেটের প্রথম ডেটা বিটকে এনকোড করে এবং শেষ নাড়িটি শেষ বিটকে এনকোড করে।
প্রতিটি প্যাকেট 32 বিট দীর্ঘ, এবং প্রতিটি ইনপুট রিমোট কন্ট্রোল সরবরাহ করতে পারে contains মানগুলি ছোট এন্ডিয়ান হিসাবে প্রথমে পড়া হয়, অর্থাৎ এমএসবি প্রথমে।
তথ্য কাঠামো
নীচে পৃথক প্যাকেটগুলির মূল কাঠামোটি দেওয়া হচ্ছে। শেষ 8 টি বিট আমাকে বিভ্রান্ত করেছিল, তবে এটি এখনই বের করা হয়েছে (নীচে দেখুন)।
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
--+---------------------------+-----------+---+-------+-----------
P| Yaw | Throttle | Pitch | T | Chan. | Check
P: Preamble (always a pulse-1), T: Trim, Chan.: Channel
Bit Length Description (see note below)
-----------------------------------------------
0 1 Preamble. High 1
1-6 6 Yaw. Range 0-36 for left-right, 17 being neutral
7-14 8 Throttle. Range 0-134
15-20 6 Pitch. Range 0-38 for forward-back, 17 being neutral
21-22 2 Trim. Left = 1, right = 2, no trim = 0
23-26 4 Channel. A = 5, B = 2, C = 8
27-32 6 Check bits
দ্রষ্টব্য: সীমাগুলি আমি যে সর্বোচ্চ পঠন পেয়েছি তার উপর ভিত্তি করে। প্রোটোকল বৃহত্তর ব্যাপ্তিগুলিতে সক্ষম - থ্রোটলের জন্য 255 অবধি, পিচ / ইয়াওয়ের জন্য 63 - তবে প্রায় অর্ধেকের মধ্যে ক্যাপ আউট করে।
পিচ মানটির 14-21 (অন্তর্ভুক্ত) থেকে ডেডব্যান্ড রয়েছে বলে মনে হয়; কেবলমাত্র উপরে বা নীচের মানগুলি হেলিকপ্টারটি প্রতিক্রিয়া তৈরি করে। আমি জানি না যে এটি ইয়াওয়ার জন্য একই কিনা (বলা মুশকিল, হেলিকপ্টার যেভাবেই অস্থির এবং এটি কেবল নিজের থেকে কিছুটা স্পিন করতে পারে)।
এখানে এটি গ্রাফিকাল পদে রয়েছে (মূল প্রশ্নের গ্রাফিকের সাথে তুলনা করুন)
Check টি চেক বিট পূর্ববর্তী সমস্ত মানগুলি XOR' দ্বারা গণনা করা হয়। প্রতিটি মান 6 বিট হিসাবে বিবেচনা করা হয়। এর অর্থ হ'ল 8-বিট থ্রোটল মানের 2 টি এমএসবি সহজভাবে উপেক্ষা করা হবে। অর্থাত
check = yaw ^ (throttle & 0x3F) ^ pitch ^ trim ^ channel
ব্যবহারিক নোট
সিগন্যাল সময় এবং মড্যুলেশন সুপার নির্ভুল হতে হবে না। এমনকি আমার অরডিনো-অ-সঠিক-সঠিক সময়টি ডজি মড্যুলেশন সত্ত্বেও এবং রিমোট কন্ট্রোলের তুলনায় নাড়ি / স্থানের সময়সীমাগুলিতে কিছুটা হিট এন্ড মিস করে।
আমি বিশ্বাস করি - তবে পরীক্ষিত হয়নি - হেলিকপ্টারটি যে প্রথম সংকেত এটি খুঁজে পেয়েছে কেবল তার চ্যানেলে ল্যাচ করবে। যদি এটি খুব দীর্ঘ (কয়েক সেকেন্ডের) জন্য সিগন্যাল ছাড়াই ছেড়ে যায় তবে এটি আবার "সংকেত" অর্জন না করা অবধি তার "অনুসন্ধান" মোডে ফিরে যেতে দেখা যায়।
থ্রোটল শূন্য হলে হেলিকপ্টারটি পিচ এবং ইয়া মানগুলিকে উপেক্ষা করবে।
ট্রিম কমান্ডগুলি রিমোট কন্ট্রোলের প্রতি বোতাম-টিপুন কেবল একবার প্রেরণ করা হয়। সম্ভবত ট্রিমের মান হেলিকপ্টারটির নিজস্ব নিয়ামক হিসাবে কেবল একটি মূল্য বৃদ্ধি / হ্রাস করে; এটি রিমোট কন্ট্রোলের উপর নজর রাখে এমন কিছু নয়। সুতরাং এটির যে কোনও বাস্তবায়ন সম্ভবত সেই স্কিমের সাথে লেগে থাকবে এবং কেবলমাত্র মাঝে মাঝে ছাঁটাই বাম / ডান মান প্রেরণ করে তবে অন্যথায় প্যাকেটের শূন্য ট্রিম মানকে ডিফল্ট করে।
আমি একটি কিল সুইচ থাকার পরামর্শ দিচ্ছি যা কেবল থ্রোটলকে শূন্যে সেট করে। এর ফলে হেলিকপ্টারটি আকাশ থেকে ছিটকে পড়বে, তবে এটি যখন মোটরগুলি ঘুরছে না তখন এটি কম ক্ষতি বজায় রাখবে। সুতরাং আপনি যদি কিছুটা ক্র্যাশ বা আঘাত করতে চলেছেন তবে গিয়ারগুলি ছিনিয়ে নেওয়া বা ব্লেডগুলি না ভাঙতে কিল সুইচটি চাপুন।
আসল রিমোট কন্ট্রোলের আইআর এলইডিগুলিতে>> 900nm তরঙ্গদৈর্ঘ্য রয়েছে বলে মনে হয় তবে 850nm এলইডি ব্যবহার করে আমার কোনও সমস্যা হয়নি got
হেলিকপ্টারের আইআর রিসিভার ঠিক আছে, তবে সুপার সংবেদনশীল নয়, তাই আপনার আইআর উত্স যত উজ্জ্বল হবে তত ভাল। রিমোট কন্ট্রোলটি সিরিজে 3 টি এলইডি ব্যবহার করে, যুক্তিতে ব্যবহৃত 5 ভি রেলের পরিবর্তে 9 ভি রেলটিতে বসে। তাদের বর্তমান ড্র খুব সুনির্দিষ্টভাবে পরীক্ষা করে দেখেনি, তবে আমি এটি 50 এমএ বাজি ধরেছিলাম।
নমুনা তথ্য
আগ্রহী প্রত্যেকের জন্য এখানে একগুচ্ছ প্যাকেট রয়েছে (হ্যাঁ, আমি একটি ডিকোডার স্ক্রিপ্ট করেছি; আমি এই সমস্তটি হ্যান্ড-ডিকোড করি নি)। চ্যানেল এ প্যাকেটগুলি আসল প্রশ্নের গ্রাফগুলির মতো একই ক্যাপচার থেকে আসে।
Channel A
Yaw Throttle Pitch Tr Chan Check Description
-----------------------------------------------------------
000100 10000100 000000 00 0101 000101 Left Mid + Throttle
000000 10000110 010001 00 0101 010010 Left Max + Throttle
100001 10000110 000000 00 0101 100010 Right Mid + Throttle
100100 10000100 010001 00 0101 110100 Right Max + Throttle
010001 00000000 001011 00 0101 011111 Forward Min
010001 00000000 000000 00 0101 010100 Forward Max
010001 00000000 011000 00 0101 001100 Back Min
010001 00000000 100101 00 0101 110001 Back Max
010001 00000000 010001 01 0101 010101 Left Trim
010001 00000000 010001 10 0101 100101 Right Trim
010001 00000011 010001 00 0101 000110 Throttle 01 (min)
010001 00010110 010001 00 0101 010011 Throttle 02
010001 00011111 010001 00 0101 011010 Throttle 03
010001 00101111 010001 00 0101 101010 Throttle 04
010001 00111110 010001 00 0101 111011 Throttle 05
010001 01010101 010001 00 0101 010000 Throttle 06
010001 01011111 010001 00 0101 011010 Throttle 07
010001 01101100 010001 00 0101 101001 Throttle 08
010001 01111010 010001 00 0101 111111 Throttle 09
010001 10000101 010001 00 0101 000000 Throttle 10 (max)
Channel B
Yaw Throttle Pitch Tr Chan Check Description
-----------------------------------------------------------
000000 10000110 010001 00 0010 010101 Left Max + Throttle
100100 10000110 010001 00 0010 110001 Right Max + Throttle
010001 00000000 001001 00 0010 011010 Forward Min
010001 00000000 000000 00 0010 010011 Forward Max
010001 00000000 010111 00 0010 000100 Back Min
010001 00000000 100110 00 0010 110101 Back Max
010001 00000000 010001 01 0010 010010 Left Trim
010001 00000000 010001 10 0010 100010 Right Trim
010001 00000001 010001 00 0010 000011 Throttle Min
010001 00110100 010001 00 0010 110110 Throttle Mid
010001 01100111 010001 00 0010 100101 Throttle High
010001 10001111 010001 00 0010 001101 Throttle Max
Channel C
Yaw Throttle Pitch Tr Chan Check Description
-----------------------------------------------------------
000000 10000101 010001 00 1000 011100 Left Max + Throttle
100100 10000101 010001 00 1000 111000 Right Max + Throttle
010001 00000000 001010 00 1000 010011 Forward Min
010001 00000000 000000 00 1000 011001 Forward Max
010001 00000000 010111 00 1000 001110 Back Min
010001 00000000 100110 00 1000 111111 Back Max
010001 00000000 010001 01 1000 011000 Left Trim
010001 00000000 010001 10 1000 101000 Right Trim
010001 00000001 010001 00 1000 001001 Throttle Min
010001 00110100 010001 00 1000 111100 Throttle Mid
010001 01100110 010001 00 1000 101110 Throttle High
010001 10000101 010001 00 1000 001101 Throttle Max
উপরে উল্লিখিত হিসাবে, শেষ 8 টি বিটগুলি বের করা হয়েছে তবে কেবল উত্তরোত্তর জন্য এখানে আমার আসল চিন্তাভাবনা রয়েছে। এটিকে সম্পূর্ণ উপেক্ষা করতে দ্বিধা বোধ করুন, কারণ আমার অনুমানের দিক থেকে আমি বেশ ভুল ছিল।
শেষ 8 বিট
প্যাকেটের শেষ 8 টি বিট এখনও কিছুটা রহস্য।
বিট 23 থেকে 26 পর্যন্ত 4 টি বিটগুলি সম্পূর্ণরূপে রিমোট কন্ট্রোলের চ্যানেল সেটিং দ্বারা নির্ধারিত হয়। রিমোট কন্ট্রোলে চ্যানেল পরিবর্তন করা কোনওভাবেই প্রোটোকল বা মড্যুলেশনকে পরিবর্তন করে না; এটি কেবল সেই 4 বিট পরিবর্তন করে।
তবে 4 টি বিট দ্বিগুণ যা চ্যানেল সেটিংটি এনকোড করার জন্য প্রয়োজন; এখানে কেবল তিনটি চ্যানেল রয়েছে, সুতরাং 2 বিট প্রচুর। সুতরাং, উপরের কাঠামোর বিবরণে, আমি কেবলমাত্র প্রথম 2 বিটকে "চ্যানেল" হিসাবে লেবেল করেছি এবং অন্য দুটিটিকে "এক্স" হিসাবে লেবেল রেখেছি, তবে এটি অনুমান করা যায়।
নীচে প্রতিটি চ্যানেল সেটিংয়ের জন্য প্রাসঙ্গিক বিটের একটি নমুনা দেওয়া আছে।
Chan. Bits 23-26
-----+-------------
A | 0 1 0 1
B | 0 0 1 0
C | 1 0 0 0
মূলত, চ্যানেল সেটিংটি প্রেরণ করতে প্রয়োজনের তুলনায় 2 টি বিট বেশি রয়েছে। সম্ভবত আরও চ্যানেলগুলির জন্য পরে প্রোটোকলটিতে 4 টি বিট রেখে দেওয়া হয়েছে, বা প্রোটোকলটি সম্পূর্ণ আলাদা খেলনাগুলিতে ব্যবহার করা যেতে পারে, তবে আমি কেবল জানি না। বৃহত্তর মানগুলির জন্য, প্রোটোকল অতিরিক্ত বিট ব্যবহার করে যা বাদ যায় (ইয়া / থ্রোটল / পিচ প্রতিটি আরও কিছুটা কমিয়ে পেতে পারে), তবে ছাঁটাইয়ের জন্য - যার 3 টি রাজ্য রয়েছে - মাত্র 2 বিট ব্যবহৃত হয়। সুতরাং কেউ সন্দেহ করতে পারে যে চ্যানেলটিও মাত্র 2 বিট, তবে পরবর্তী 2 টি অ্যাকাউন্টবিহীন হয়ে যায় leaves
অন্য সম্ভাবনাটি হ'ল প্যাকেটের চেকসামটি 8 টি বিট দীর্ঘ, "এক্স বিটস" দিয়ে শুরু হয় এবং - চেকসামিং ম্যাজিকের মাধ্যমে - এগুলি কেবল চ্যানেল সেটিংসকে সর্বদা প্রতিফলিত করে। তবে আবার: আমি জানি না।
এবং কথা বলছি: এই চেক বিটগুলি কীভাবে গঠিত হয় আমার কোনও ধারণা নেই। আমি বলতে চাচ্ছি তারা হয় , চেক বিট, যেহেতু তারা কোন একক নিয়ন্ত্রণ ইনপুট সাথে সঙ্গতিপূর্ণ নয় এবং যদি আমি তাদের সাথে বেহালা হেলিকপ্টার সাড়া বলে মনে হচ্ছে না। আমি অনুমান করছি এটি কোনও ধরণের সিআরসি, তবে আমি এটি বের করতে সক্ষম হইনি। আপনি "এক্স বিটস" কীভাবে ব্যাখ্যা করেন তার উপর নির্ভর করে চেকটি 6-8 বিট দীর্ঘ হয়, তাই অনেকগুলি উপায় রয়েছে যা একসাথে রাখা যেতে পারে।