جدول المحتويات:
- اللوازم
- الخطوة 1: التوصيلات المادية
- الخطوة الثانية: كيفية استخدام المكتبة
- الخطوة 3: نقل البيانات الأساسية
- الخطوة 4: استلام البيانات الأساسية
- الخطوة 5: الاختبار
فيديو: الاتصالات التسلسلية من Arduino: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
تعتمد العديد من مشاريع Arduino على نقل البيانات بين العديد من Arduinos.
سواء كنت هاويًا تقوم ببناء سيارة RC ، أو طائرة RC ، أو تصمم محطة طقس مزودة بشاشة عرض عن بُعد ، فستحتاج إلى معرفة كيفية نقل البيانات التسلسلية بشكل موثوق من Arduino إلى آخر. لسوء الحظ ، يصعب على الهواة الحصول على اتصال بيانات تسلسلي يعمل في مشاريعهم الخاصة ، وذلك لأن البيانات التسلسلية تُرسل على شكل دفق من البايت.
بدون أي نوع من السياق داخل دفق البايت ، يكاد يكون من المستحيل تفسير البيانات. بدون القدرة على تفسير البيانات ، لن يتمكن Arduinos الخاص بك من التواصل بشكل موثوق. المفتاح هو إضافة بيانات السياق هذه إلى دفق البايت باستخدام تصميم الحزمة التسلسلي القياسي.
يعد تصميم الحزمة التسلسلية وحشوها وتحليلها أمرًا معقدًا ويصعب تحقيقه. لحسن الحظ بالنسبة لمستخدمي Arduino ، هناك مكتبات متاحة يمكنها القيام بكل هذا المنطق المعقد خلف الكواليس حتى تتمكن من التركيز على جعل مشروعك يعمل دون أي جهد إضافي. سيستخدم هذا Instructable المكتبة SerialTransfer.h لمعالجة الحزمة التسلسلية.
باختصار: سوف يتطرق هذا Instructable إلى كيفية تنفيذ البيانات التسلسلية القوية بسهولة في أي مشروع باستخدام مكتبة SerialTransfer.h. إذا كنت تريد معرفة المزيد حول نظرية المستوى المنخفض حول الاتصال التسلسلي القوي ، فراجع هذا البرنامج التعليمي.
اللوازم
-
2 اردوينوس
يوصى بشدة باستخدام Arduinos الذي يحتوي على أجهزة UART متعددة (مثل Arduino Mega)
- وصل الأسلاك
-
قم بتثبيت SerialTransfer.h
متاح عبر مدير مكتبات Arduino IDE
الخطوة 1: التوصيلات المادية
عند استخدام الاتصال التسلسلي ، يجب مراعاة بعض نقاط التوصيل:
- تأكد من أن جميع الأسباب متصلة!
- يجب توصيل دبوس Arduino TX (الإرسال) بدبوس Arduino's RX (الاستقبال) الآخر
الخطوة الثانية: كيفية استخدام المكتبة
يتيح لك SerialTransfer.h إرسال كميات كبيرة من البيانات بسهولة باستخدام بروتوكول حزمة مخصص. يوجد أدناه وصف لجميع ميزات المكتبة - سنستخدم العديد منها لاحقًا في هذا البرنامج التعليمي:
SerialTransfer.txBuff
هذه مصفوفة بايت حيث يتم تخزين جميع بيانات الحمولة التي سيتم إرسالها عبر المسلسل مؤقتًا قبل الإرسال. يمكنك تعبئة هذا المخزن المؤقت ببايت من البيانات لإرساله إلى Arduino آخر.
SerialTransfer.rxBuff
هذه مصفوفة بايت حيث يتم تخزين جميع بيانات الحمولة المستلمة من Arduino الأخرى مؤقتًا.
SerialTransfer.bytesRead
عدد بايتات الحمولة المستلمة بواسطة Arduino الآخر والمخزنة في SerialTransfer.rxBuff
SerialTransfer.begin (البث و _ المنفذ)
يقوم بتهيئة مثيل لفئة المكتبة. يمكنك تمرير أي كائن فئة "Serial" كمعامل - حتى كائنات فئة "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
هذا يجعل Arduino يرسل عدد "messageLen" من البايت في مخزن الإرسال المؤقت إلى Arduino الآخر. على سبيل المثال ، إذا كانت قيمة "messageLen" تساوي 4 ، فسيتم إرسال أول 4 بايت من SerialTransfer.txBuff عبر المسلسل إلى Arduino الآخر.
SerialTransfer.available ()
هذا يجعل Arduino الخاص بك يحلل أي بيانات تسلسلية مستلمة من Arduino الأخرى. إذا أعادت هذه الوظيفة القيمة المنطقية "true" ، فهذا يعني أنه تم تحليل حزمة جديدة بنجاح وأن بيانات الحزمة المستلمة حديثًا مخزنة / متوفرة في SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val، const uint16_t & len، const uint16_t & index = 0)
حشوات "لين" عدد بايتات كائن عشوائي (بايت ، int ، عدد عشري ، مزدوج ، هيكل ، إلخ …) في المخزن المؤقت للإرسال بدءًا من الفهرس كما هو محدد بواسطة الوسيطة "index".
SerialTransfer.rxObj (const T & val، const uint16_t & len، const uint16_t & index = 0)
يقرأ "len" عدد البايتات من المخزن المؤقت للاستلام (rxBuff) بدءًا من الفهرس كما هو محدد بواسطة الوسيطة "index" في كائن عشوائي (بايت ، int ، عدد عشري ، مزدوج ، هيكل ، إلخ …).
ملاحظة:
أسهل طريقة لنقل البيانات هي أولاً تحديد بنية تحتوي على جميع البيانات التي تريد إرسالها. يجب أن يكون للأردوينو على الطرف المستلم بنية متطابقة محددة.
الخطوة 3: نقل البيانات الأساسية
ينقل الرسم التخطيطي التالي كلاً من قيمة ADC لـ analogRead (0) وقيمة analogRead (0) المحولة إلى الجهد إلى Arduino # 2.
قم بتحميل الرسم التخطيطي التالي على Arduino # 1:
# تضمين "SerialTransfer.h"
SerialTransfer myTransfer ؛ هيكل STRUCT {uint16_t adcVal؛ الجهد العائم } البيانات؛ إعداد باطل () {Serial.begin (115200) ؛ Serial1.begin (115200) ؛ myTransfer.begin (المسلسل 1) ؛ } حلقة فارغة () {data.adcVal = analogRead (0)؛ data.voltage = (data.adcVal * 5.0) / 1023.0 ؛ myTransfer.txObj (data، sizeof (data)) ؛ myTransfer.sendData (sizeof (data)) ؛ تأخير (100) ؛ }
الخطوة 4: استلام البيانات الأساسية
يطبع الكود التالي قيم ADC والجهد المستلم من Arduino # 1.
قم بتحميل الكود التالي إلى Arduino # 2:
# تضمين "SerialTransfer.h"
SerialTransfer myTransfer ؛ هيكل STRUCT {uint16_t adcVal؛ الجهد العائم } البيانات؛ إعداد باطل () {Serial.begin (115200) ؛ Serial1.begin (115200) ؛ myTransfer.begin (المسلسل 1) ، } حلقة باطلة () {if (myTransfer.available ()) {myTransfer.rxObj (data، sizeof (data))؛ Serial.print (data.adcVal) ؛ Serial.print ('') ؛ Serial.println (data.voltage) ؛ Serial.println () ، } else if (myTransfer.status <0) {Serial.print ("ERROR:")؛ إذا (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")) ؛ وإلا إذا (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")) ؛ وإلا إذا (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")) ؛ }}
الخطوة 5: الاختبار
بمجرد تحميل كلا المخططين إلى Arduinos الخاصين بهما ، يمكنك استخدام Serial Monitor على Arduino # 2 للتحقق من أنك تتلقى البيانات من Arduino # 1!
موصى به:
Raspberry PI 3 - تمكين الاتصالات التسلسلية لـ TtyAMA0 إلى BCM GPIO 14 و GPIO 15: 9 خطوات
Raspberry PI 3 - تمكين الاتصالات التسلسلية من TtyAMA0 إلى BCM GPIO 14 و GPIO 15: لقد كنت مهتمًا مؤخرًا بتمكين UART0 على Raspberry Pi الخاص بي (3b) حتى أتمكن من توصيله مباشرة بجهاز مستوى إشارة RS-232 باستخدام معيار 9 -pin موصل d-sub دون الحاجة إلى المرور عبر محول USB إلى RS-232. جزء من داخلي
اردوينو 3.3 فولت مع ساعة خارجية 8 ميجا هرتز يتم برمجتها من Arduino Uno من خلال ICSP / ISP (مع المراقبة التسلسلية!): 4 خطوات
Arduino 3.3V W / ساعة خارجية 8 ميجاهرتز تتم برمجتها من Arduino Uno من خلال ICSP / ISP (مع المراقبة التسلسلية!): الأهداف: بناء Arduino مستقل يعمل على 3.3 فولت من ساعة خارجية 8 ميجاهرتز. لبرمجته عبر ISP (المعروف أيضًا باسم ICSP ، البرمجة التسلسلية داخل الدائرة) من Arduino Uno (يعمل بجهد 5 فولت) لتحرير ملف أداة تحميل التشغيل وحرق
بوابة UDP / IP التسلسلية لـ Arduino استنادًا إلى ESP8266 Shield: 8 خطوات
بوابة UDP / IP التسلسلية لـ Arduino استنادًا إلى ESP8266 Shield: لقد نشرت بالفعل في عام 2016 هذه التعليمات & quot؛ كيفية إنشاء بوابة Wifi الخاصة بك لتوصيل Arduino بشبكة IP & quot ؛. منذ أن أجريت بعض التحسينات على الكود وما زلت أستخدم هذا الحل. ومع ذلك ، هناك الآن بعض دروع ESP8266 t
اختبار الشاشة التسلسلية للوحة مفاتيح Arduino: 6 خطوات
اختبار الشاشة التسلسلية للوحة مفاتيح Arduino: هذا برنامج تعليمي بسيط للغاية لاختبار Arduino Serial Monitor إذا أعجبك هذا الدليل ، يرجى الاشتراك في قناتي https://www.youtube.com/ZenoModiff
الاتصالات التسلسلية من Arduino و Python - عرض لوحة المفاتيح: 4 خطوات
الاتصال التسلسلي Arduino و Python - عرض لوحة المفاتيح: تم تصميم هذا المشروع لمستخدمي mac ولكن يمكن أيضًا تنفيذه لنظامي Linux و Windows ، والخطوة الوحيدة التي يجب أن تكون مختلفة هي التثبيت