التواصل التسلسلي بين الكمبيوتر الشخصي واردوينو عبر RS232 باستخدام C ++
-
21-12-2019 - |
سؤال
أحاول التواصل مع بلدي arduino duemilanove عبر سلك RS232. أريد ببساطة أن أكون قادرا على إرسال البايت (أو char) إلى Arduino الخاص بي من تطبيق سطح المكتب. يعمل Arduino في USB Com5 على جهاز الكمبيوتر الخاص بي. لدي موصول RS232 في COM1، ثم لدي دبابيس 2 3 و 5 في الطرف الآخر من RS232 المتصل ب Arduino Pins TX و RX و GND، على التوالي.
وجدت فئة بلسم تسلسلي ل C ++ على الرابط التالي:
p> http://playground.arduino.cc/interfacing/cppwindows
لقد أضفت ملفات .h و .cpp من المثال أعلاه مثل التسلسل. h serial.cpp (أعتقد أن المثال يستخدم serialclass.h و serialclass.cpp، أنا فقط يغير الأسماء).
على بلدي Arduino، لدي التعليمات البرمجية التالية:
giveacodicetagpre.وبرنامج C ++ الخاص بي هو ما يلي:
giveacodicetagpre.عندما أستخدم عارض المنفذ التسلسلي Arduino لمعرفة ما يجلب المطبوع، أحصل على قيم غريبة للغاية لا تتطابق مع ما أرسله (بقدر ما أستطيع أن أقول).
عندما أرسل "Hello Arduino!"، يطبع Arduino ما يلي:
giveacodicetagpre.هذا لا يبدو أن HEX الصحيح ل "Hello Arduino!"، لكن ليس لدي أي فكرة عن سبب عدم صواب. هل لدى أي شخص أي دليل ما أفعله خطأ؟
المحلول
arduino مستعملة TTL Logic للاتصال التسلسلي.تتوقع القيم في 0 و 5V.استخدم RS232 جهد مختلف إلى + v.قد تحتاج إلى محول.
نصائح أخرى
ehm ... لا! سحب صعودا وهبوطا ليس لهذه السبب ..
-
ttl= Low: 0V، High: 5V
-
rs232= منخفض: +3: + 15V، مرتفع: -3: -15V
نتيجة لذلك .. تحتاج إلى محول الجهد (والعاكس)، مثل ديفيد سكوجان أشار بشكل صحيح.
أمثلة:
- باستخدام مكونات منفصلة (يحتوي على ميزة Echo التلقائية، أي على جهاز الكمبيوتر سترى البيانات التي ترسلها): http://project.irone.org/simple-rs232-to-ttl-level-converter.html أو