- شرح العمل:
- المكونات المطلوبة:
- مخطط الرسم البياني:
- العمل مع وحدة الإرسال والاستقبال اللاسلكية nRF24L01 +:
- برمجة Arduinos:
- برنامج المعالجة:
- اختبارات:
أصبح إنشاء شبكة محلية لمشاركة الأفراد والبيانات السرية شبه مستحيل بالنسبة لرجل عادي في عالمنا الحديث. ويرجع ذلك أساسًا إلى أن جميع طرق الدردشة الشائعة مثل Whatsapp و Facebook و Hangout وكل شيء تقريبًا يتضمن اتصالاً بالإنترنت.
ماذا لو استطعنا مشاركة البيانات بدون وسيط الإنترنت ؟
كم سيكون رائعًا إذا كنت تستطيع التواصل مع أشخاص داخل منزلك أو مكان عملك بدون حزمة شبكة أو اتصال إنترنت؟
ماذا لو تمكنا من تخصيص شاشة الدردشة الخاصة بنا مع تخيلاتنا الخاصة؟
كل هذا ممكن باستخدام متحكم دقيق ووسيط إرسال لاسلكي. هذه غرفة الدردشة اردوينو باستخدام Project NRF24L01 سيرشدك حول إعداد تكلفة منخفضة غرفة الدردشة في منطقتك.
لذلك دعونا نقفز ونرى كيف يعمل.
شرح العمل:
بشكل أساسي لجعل هذا الشيء يعمل ، سنحتاج إلى زوج من لوحات Arduino ووحدات لاسلكية رخيصة. الوحدات اللاسلكية التي سنستخدمها هنا هي nRF24L01. والسبب في اختيار هذه الوحدات هو أن هؤلاء هم خلفاء Zigbee ويسهل العمل مع اتصال تم إعداده. تعمل هذه الوحدات أيضًا على 2.4 جيجاهرتز (نطاق ISM) مع طيف انتشار قفز التردد وخيارات انفجار الصدمات التي تجعلنا نشعر بالراحة من مشاكل التداخل.
يتم توصيل Arduino و NRF24L01 معًا لإنشاء اتصال تسلسلي حتى يتمكنوا من التحدث مع بعضهم البعض. NRF24L01 عبارة عن وحدات إرسال واستقبال نصف ثنائية الاتجاه ، وبالتالي يمكنها إرسال واستقبال البيانات. يتم جمع البيانات من المستخدم وإرسالها ويمكن استلامها بواسطة أي (أو وحدة واحدة معينة) وعرضها على شاشتها.
لكن!!!!! هل سنقوم بالدردشة باستخدام شاشة تصحيح Arduino؟ بالطبع لا. سنقوم ببناء وتخصيص شاشة الدردشة الخاصة بنا بمساعدة "المعالجة". المعالجة عبارة عن برنامج قادر على التواصل مع Arduino باستخدام UART. سننشئ ملف exe. بلغة المعالجة ، والتي يمكن تشغيلها على أي جهاز كمبيوتر باستخدام Java Runtime. من أجل الدردشة ، علينا فقط توصيل Arduino وفتح ملف exe هذا و Booooom !! نحن في غرفة الدردشة الخاصة بنا والمخصصة مجانًا تمامًا.
يقتصر هذا المشروع على إضافة عضوين فقط إلى غرفة الدردشة ، لكن nRF24L01 به 6 خطوط أنابيب ، وبالتالي يمكن أن يكون هناك 6 أعضاء كحد أقصى في غرفة الدردشة لدينا. يمكن أن تعمل غرفة char هذه في نطاق 100 متر اعتمادًا على وحدات nRF24L01.
لذلك دعنا نذهب للتسوق !!!!
المكونات المطلوبة:
- Arduino (أي إصدار أو نموذج) - 2Nos
- nRF24L01 + وحدة الإرسال والاستقبال اللاسلكية - عدد 2
- 3.3 منظم الجهد - 2Nos. (ليس إلزاميا)
- توصيل الأسلاك
- الفائدة (لولز)
مخطط الرسم البياني:
اردوينو ميجا مع nRF24L01:
اردوينو نانو مع nRF24L01:
لا يتضمن مشروعنا أي اتصالات معقدة. لقد استخدمت Arduino Mega و Arduino Nano واتصالاتهما مع nRF24L01 موضحة أعلاه. يمكنك استخدام أي من نماذج Arduino.
العمل مع وحدة الإرسال والاستقبال اللاسلكية nRF24L01 +:
ومع ذلك ، من أجل جعل nRF24L01 الخاص بنا يعمل بدون ضوضاء ، قد نرغب في التفكير في الأشياء التالية. لقد كنت أعمل على هذا nRF24L01 + لفترة طويلة وتعلمت أن النقاط التالية يمكن أن تساعدك في عدم التعرض للضرب على الحائط.
1. معظم وحدات nRF24L01 + في السوق مزيفة. المنتجات الرخيصة التي يمكننا العثور عليها على Ebay و Amazon هي الأسوأ (لا تقلق ، مع القليل من التعديلات يمكننا جعلها تعمل)
2. المشكلة الرئيسية هي مصدر الطاقة وليس الرمز الخاص بك. ستعمل معظم الرموز عبر الإنترنت بشكل صحيح ، ولديّ رمز عمل اختبرته شخصيًا ، أخبرني إذا كنت بحاجة إليها.
3. انتبه لأن الوحدات المطبوعة على هيئة NRF24L01 + هي في الواقع Si24Ri (نعم منتج صيني).
4. سوف تستهلك وحدات الاستنساخ والوحدات المزيفة مزيدًا من الطاقة ، وبالتالي لا تطور دائرة الطاقة الخاصة بك بناءً على ورقة بيانات nRF24L01 + ، لأن Si24Ri سيكون لديها استهلاك تيار مرتفع حوالي 250 مللي أمبير.
5. احذر من تموجات الجهد والارتفاعات الحالية ، فهذه الوحدات حساسة للغاية ويمكن أن تحترق بسهولة. (؛- (مقالي وحدتين حتى الآن)
6. تساعد إضافة مكثّفين (10 فائق التوهج و 0.1 فائق التوهج) عبر Vcc و Gnd للوحدة في جعل إمدادك نقيًا وهذا يعمل مع معظم الوحدات.
لا يزال إذا كان لديك مشاكل في الإبلاغ عن قسم التعليقات أو قراءة هذا.
برمجة Arduinos:
سيكون برنامج كل من Arduino Nano و Mega مشابهًا للتغيير في دبابيس CE و CS. سأشرح البرنامج بتقسيمه إلى أجزاء صغيرة.
نظرًا لأن Arduino و nRF24L01 يتواصلان من خلال SPI ، فقد طلبنا مكتبة SPI. لقد قمنا أيضًا بتضمين Maniacbug RF24 lib حتى تعمل وحدات التردد اللاسلكي الخاصة بنا. قم بتنزيل الملف من هنا وأضفهم إلى IDE الخاص بك.
#تضمن
وحدات NRF الخاصة بنا متصلة بالدبوس 8 و 10 إلى CE و CS على التوالي.
RF24 myRadio (8 ، 10) ؛
نقوم بإنشاء حزمة بيانات منظمة تسمى الحزمة . سيتم استخدام النص المتغير لنقل البيانات على الهواء.
حزمة البنية {char text؛ // نص للإرسال على الهواء} ؛ حزمة حزمة هيكلة typedef ؛ بيانات الحزمة
في وظيفة الإعداد الفارغ () ، نقوم بتهيئة معدل البث بالباود إلى 9600 وإعداد وحداتنا النمطية إلى 115 مع الحد الأدنى لاستهلاك الطاقة وسرعة 250 كيلو بايت في الثانية. يمكنك العبث بهذه القيم لاحقًا.
إعداد باطل () {Serial.begin (9600) ؛ تأخير (1000) ؛ //Serial.print("Setup Initialized ") ؛ myRadio.begin () ، myRadio.setChannel (115) ، // 115 نطاقًا فوق WIFI إشارات myRadio.setPALevel (RF24_PA_MIN) ؛ // MIN power low rage myRadio.setDataRate (RF24_250KBPS) ؛ // السرعة الدنيا}
تم تصميم الوحدة للعمل في وضع الإرسال إذا تم استلام البيانات من خلال المخزن المؤقت التسلسلي ، وإلا فسيكون في وضع المستقبل يبحث عن البيانات على الهواء. يتم تخزين البيانات من المستخدم في صفيف char وإرسالها إلى WriteData () لنقلها .
void loop () {while (Serial.available ()> 0) // احصل على قيم من المستخدم {val = Serial.peek () ؛ if (index <19) // واحد أقل من حجم المصفوفة {inChar = Serial.read () ؛ // قراءة حرف inData = inChar ؛ // تخزينه فهرس ++ ؛ // زيادة مكان الكتابة التالية inData = '\ 0' ؛ // Null إنهاء السلسلة} if (val == '#') {strcpy (data.text، inData)؛ WriteData () ؛ // ضع الوحدة في وضع الإرسال بينما (index! = 0) {inData = '' ؛ فهرس--؛ } } } إقرأ البيانات()؛ // وضع وضع استلام الوحدة}
تقوم وظيفة WriteData () الفارغة بكتابة البيانات الموجودة على عنوان 0xF0F0F0F0AA ، ويتم استخدام هذا العنوان كأنبوب كتابة على وحدة نمطية أخرى.
باطل WriteData () {myRadio.stopListening () ، // إيقاف الاستلام وابدأ في نقل myRadio.openWritingPipe (0xF0F0F0F066) ؛ // يرسل البيانات على هذا العنوان المكون من 40 بت myRadio.write (& data، sizeof (data)) ؛ تأخير (300) ؛ }
تقوم وظيفة ReadData () باطلة بكتابة البيانات الموجودة على هذا العنوان 0xF0F0F0F066 ، ويستخدم هذا العنوان كأنبوب قراءة في وحدة نمطية أخرى.
ReadData () باطل {myRadio.openReadingPipe (1، 0xF0F0F0F0AA) ؛ // أي أنبوب يجب قراءته ، 40 بت عنوان myRadio.startListening () ؛ // Stop Transminting وابدأ Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data، sizeof (data))؛ } Serial.println (data.text) ؛ }}
هذا كل شيء ، لقد انتهى جزء البرمجة لدينا. إذا كنت لا تستطيع فهم بعض الأشياء هنا ، فتحقق من البرنامجين لكل من Arduinos ، الوارد في قسم Code أدناه ، لقد أضفت سطور تعليق لشرح الأشياء بشكل أفضل.
برنامج المعالجة:
"المعالجة" هي برنامج مفتوح المصدر يستخدمه الفنانون لتصميم الرسومات. يستخدم هذا البرنامج لتطوير البرامج وتطبيقات Android. إنه سهل التطوير ويشبه إلى حد كبير IDE لتطوير Android. ومن ثم فقد اختصرت الشرح.
يتم توفير رمز المعالجة لشاشتى الدردشة هنا:
- رمز معالجة شاشة الدردشة 1
- رمز معالجة شاشة الدردشة 2
انقر بزر الماوس الأيمن عليها وانقر فوق "حفظ الرابط باسم.." لتنزيلها وفتحها على جهاز الكمبيوتر الخاص بك بعد إعداد Arduinos. تحتاج إلى تثبيت برنامج "معالجة" لفتح ملفات *.pde هذه ثم "تشغيل" لفتح صناديق الدردشة. قسم التعليق مفتوح للاستفسارات. رسم المعالجة لوحدة الإرسال والاستقبال متطابقان.
في قسم الكود أدناه ، يعتبر "المنفذ = تسلسلي جديد (هذا ، Serial.list () ، 9600) ؛ // يقرأ المنفذ الرابع عند 9600 باودرات" مهمًا لأنه يقرر من أي منفذ يتم نقل البيانات منه.
إعداد باطل () {size (510،500) ؛ المنفذ = مسلسل جديد (this، Serial.list ()، 9600) ؛ // يقرأ المنفذ الرابع عند 9600 baudrate println (Serial.list ()) ؛ الخلفية (0) ؛ }
لقد قرأت هنا البيانات من المنفذ الرابع من Arduino.
لذلك على سبيل المثال إذا كان لديك COM COM COM COM COM
ثم سيقرأ الكود أعلاه البيانات من COM.
اختبارات:
الآن بما أن رسم Arduino والمعالجة لدينا جاهز ، ما عليك سوى تحميل البرنامج على Arduino وتركه متصلاً بالكمبيوتر المحمول. افتح رسم المعالجة الخاص بك وابدأ في الكتابة واضغط على "أدخل" سيتم إرسال رسالتك إلى Arduino الآخر الذي سيعرض النص المستلم على تطبيق معالجة آخر متصل بجهاز كمبيوتر آخر. مزيد من التحقق من الفيديو أدناه للحصول على شرح كامل.
هكذا يمكنك التحدث إلى أصدقائك وعائلتك في منطقتك المحلية دون الحاجة إلى أي اتصال بالإنترنت ، باستخدام غرفة الدردشة Arduino الرخيصة هذه.