جدول المحتويات:

SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم: 3 خطوات (بالصور)
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم: 3 خطوات (بالصور)

فيديو: SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم: 3 خطوات (بالصور)

فيديو: SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم: 3 خطوات (بالصور)
فيديو: راهنمای خرید چراغ مطالعه سیلورلایت Silverlight 2024, يوليو
Anonim
SilverLight: مراقب بيئي قائم على اردوينو لغرف الخادم
SilverLight: مراقب بيئي قائم على اردوينو لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم
SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم

بمجرد أن تم تكليفي بمهمة البحث عن مسبار بيئي لمراقبة درجة الحرارة في غرفة الخادم في شركتي. كانت فكرتي الأولى هي: لماذا لا تستخدم فقط Raspberry PI ومستشعر DHT ، يمكن إعداده في أقل من ساعة بما في ذلك تثبيت نظام التشغيل. لهذا تلقيت استجابة باردة من أشخاص متسلطين معصوبي الأعين مفادها أننا لن نفعل ذلك لأن إعداده سيكلف في ساعات العمل أكثر من شراء جهاز. كان الاضطرار إلى قبول الأشخاص ذوي الأفق الضيق مثل هذا لجزء من حياتي شيئًا واحدًا ، وقد طلبت بعضًا من فئة EATON غير المرغوب فيها من فئة المؤسسات من موقع Ebay وأطلق عليها اسمًا ، لكنني قررت في تلك اللحظة أنه بالنسبة لغرفة الخادم الخاصة بي سأبني Arduino مفتوح المصدر بالكامل الجهاز الذي سيكون أفضل بكثير مما طلبته للتو.

هذا المشروع هو رمز اسمه SilverLight ، لا تسألني من أين أحصل على هذه الأسماء من:) لقد نظرت للتو إلى صندوق نصف أكريليك لامع وقررت بهذا الاسم ، لا علاقة له بمنتج microhoof الذي اكتشفته بعد.

الخطوة 1: تصميم الأجهزة

تصميم الأجهزة
تصميم الأجهزة
تصميم الأجهزة
تصميم الأجهزة
تصميم الأجهزة
تصميم الأجهزة

نظرة عامة على الأجهزة التجارية.

حسنًا ، لذلك لم أبدأ حتى مع من كانت فكرته العظيمة هي وضع مراقب البيئة داخل عمليات الشراء ولكن من الواضح أن هناك سوقًا له ، لذلك دعونا نرى ما يمكن أن يفعله هؤلاء:

توافق جهاز المراقبة البيئية

10 / 100Mb Network-MS و PXGUPS و PXGPDP و PXGMS.

10 / 100Mb ConnectUPS-X و ConnectUPS-BD و ConnectUPS-E مع FW V3.01 وما بعده. الأبعاد (الطول × العرض × الارتفاع)

2.26 × 1.48 × 1.15 (بوصة) 57.6 × 37.6 × 29.3 (مم) الوزن

1.19 أوقية (34 جم)

هذه معلومات مفيدة جدا أليس كذلك؟ لا تقلق لأنهم لا يستطيعون فعل الكثير. حتى لتبدأ ، سيحتاج UPS إلى بطاقة إضافية باهظة الثمن لهذا الغرض والتي تربط هذا بالمستشعر البيئي الذي تشتريه بشكل منفصل ، عادةً باستخدام كبل CAT5 القياسي (لا تحاول حتى توصيل أي شيء بهذا المنفذ لأنه لا يوجد شيء قياسي حوله). يزعمون أن الجهاز يحتاج إلى 10 دقائق "للإحماء" في الواقع كانت ساعات ، وبمجرد أن يتم ذلك ، ظهرت في واجهة جافا التي يتم تحديثها ببطء ولدينا درجة حرارة ورطوبة. كان إعداد الظروف المستندة إلى التنبيهات أمرًا سهلاً من هذه النقطة ، ولكن من يهتم فلنقم ببناء شيء أفضل.

هذا المشروع هو مزيج من عدة مشاريع لي: محطة الطقس ناتاليا ، شادو أوف فينيكس. الصندوق قادر على مراقبة القيود البيئية التالية:

  • درجة الحرارة / الرطوبة / مؤشر الحرارة
  • تركيزات غاز البترول المسال والدخان والكحول والبروبان والهيدروجين والميثان وأول أكسيد الكربون في الهواء (MQ2)
  • حساسية الشمس (هل الضوء مضاء في غرفة الخادم؟)
  • مستشعر Motion PIR (يمكنك حتى تشغيل / إطفاء الأنوار تلقائيًا من الآن فصاعدًا بفضل مستشعر الحركة عندما يدخل شخص ما الغرفة)

يتم عرض كل هذه البيانات بشكل جيد على شاشة LCD أثناء نقلها أيضًا إلى جهاز كمبيوتر (Orange PI Zero) لمزيد من المعالجة والتنبيهات. على الرغم من أنه سيكون من الممكن توصيل المستشعرات الرقمية مثل DHT والدبوس الرقمي الخاص بـ MQ2 بـ OrangePI مباشرةً ، إلا أنني أفضل دائمًا استخدام وحدات الميكرو المخصصة لهذه المهام وعندما تحتاج إلى تحديث شاشة LCD أيضًا والقيام بمستوى منخفض آخر الأشياء ، فإن Arduino لا يهزم ويمكنه العمل بشكل موثوق بدون توقف لسنوات عديدة (في الواقع ، لم يفشلني أحد من Arduino يعمل على مدار الساعة طوال أيام الأسبوع). إن OrangePI مع عيوبه (دعنا نواجه الأمر هو جهاز كمبيوتر بقيمة 10 دولارات) مثل غير قابل للاستخدام بسبب عبء العمل الثقيل ، ولا يوجد دعم bsd ، وشبكة wifi المدمجة ، وما إلى ذلك ، يمكنه بسهولة التعامل مع أعباء العمل الصغيرة مثل أخذ قراءات المستشعر من خلال المسلسل (USB) ومعالجتها.

هذا هو جهاز مشروع بسيط للغاية ويتطلب المكونات التالية:

  • اردوينو برو مايكرو
  • شاشة LCD 2x16 حرف RGB
  • وحدة طاقة مفتاح عزل AC-DC 220 فولت إلى 5 فولت HLK-5M05 (هذه جيدة جدًا لمشاريع Arduino / ESP) ، هذا هو الإصدار 5V / 5W!
  • مقاومات 2x300ohm
  • 2xleds (أحمر / أخضر)
  • مستشعر الحركة PIR
  • مستشعر MQ2
  • دهت 22
  • LDR
  • 2X10Kohm المقاوم
  • صفارة
  • أورانج بي زيرو
  • كابل بيانات USB صغير

لم أكن حتى عناء صنع PCB لهذا اللوح العادي المستخدم فقط لأنه يمكن توصيل المكونات ببساطة بـ Arduino (انظر الصور المرفقة):

- سيتطلب DHT22 سحب 10 كيلو إلى VCC (رقمي)

- سيتطلب LDR سحب 10 كيلو بايت إلى GND (تناظري)

-يمكن توصيل MQ2 مباشرة بأي دبوس تناظري (تناظري) <يفضل استخدام التناظرية لأنه لم لا عندما يكون لدينا MCU مع دبابيس تمثيلية حيث يمكننا الحصول على القيمة الدقيقة بدلاً من ضبط بعض الوعاء على الجزء الخلفي من الجهاز للحصول على HIGH أو ضعيف ، بسبب الالتصاق في تصميمي الذي لا يمكن الوصول إليه على أي حال. تحقق:

- يمكن توصيل PIR مباشرة بأي دبوس (رقمي)

-LCD: يمكن تشغيله باستخدام 4 دبابيس ، ويمكن توصيله بأي دبوس (رقمي) سيحتاج +2 RS / E (رقمي)

-Buzzer: يمكن توصيله مباشرة بأي دبابيس Arduino (رقمية)

يمكن رؤية pinout الذي استخدمته في الكود. ربط كل شيء معًا بعد أن يكون هذا أمرًا مستقيمًا إلى الأمام ، يمكنك أيضًا القيام به واحدًا تلو الآخر ، والتأكد من عمل مستشعر واحد بشكل مثالي ثم الانتقال إلى المستشعر التالي ، كل ما يمكن أن تخطئ هو توصيل الأسلاك بأماكن خاطئة (مثل تبديل vcc / gnd بالنسبة لجهاز الاستشعار ، لم يقتل هذا حتى الآن أيًا من أجهزتي). ما أود أن أشير إليه هنا هو أنه كان هناك عدد كبير جدًا من VCC و GNDs مكدسة بالنسبة لي ، لم أتمكن من الضغط عليهم من خلال شريط طرفي لذلك قمت بلحامهم جميعًا.

أيضًا حول DHTs لا تنسى من مشاريعي الأخرى: إذا وضعت مكتبة DHT في الكود الخاص بك وكان مستشعر DHT غير متصل أو تم توصيل DHT بشكل خاطئ (على سبيل المثال ، 11 محددًا في الكود الذي تستخدمه 22) يمكن أن يؤدي إلى البرنامج لتعلق إلى الأبد في البداية.

حول مستشعرات اكتشاف الحركة PIR ، كما ترون في صورتي ، هناك الكثير من المنتجات المزيفة المزيفة ، في الواقع ، سأجد صعوبة في شراء واحدة أصلية من Ebay. تعمل المنتجات المقلدة أيضًا ، حتى على المدى الطويل ، ولكن لديهم دائرتها معكوسة مما يؤدي إلى عكس الدبابيس + و- ، كما يسهل التعرف عليها من: تأتي مع ثنائي الفينيل متعدد الكلور الأزرق وليس الأخضر المعتاد ، ويفقد الملصقات الخاصة بـ مقاييس الفخار. كنت محظوظًا لأنني وجدت أصليًا في صندوقي وإلا فإن تغيير الموضع سيغطي المصابيح 2 بالنسبة لي. لقد وجدت أن كلا الوعاءين مرنين إلى منتصف الطريق يعملان بالنسبة لي. سيمنحك هذا نطاقًا طويلًا بما يكفي للاستشعار أيضًا عندما تكون هناك حركة ، سيتم الاحتفاظ بالساق الرقمية في وضع مرتفع لمدة دقيقة تقريبًا ، لذلك لا يتعين عليك تعويض ذلك في الكود. على المنتجات المقلدة ، من السهل تحديد أي جانب هو - و + فقط انظر إلى الأرجل المقابلة لأغطية التحليل الكهربائي المتصلة بالدبابيس.

لقطع الصندوق ، استخدمت رأس دريميل الماسي (الذي كان مبالغة ولكنه عمل بشكل رائع) وآلة حفر عادية. يسهل العمل مع صناديق التوصيل هذه ، وعلى الرغم من أنني لا أحب الالتصاق ، لم يكن لدي براغي ومسامير في متناول اليد عند بناء هذا ، لذا فقد أخذت صفقة لصق الأشياء معًا (والتي يمكن أيضًا إعادة تسخينها بسهولة وتفكيكها لاحقًا باستخدام نفس gluegun دون حشو فيه).

الخطوة الثانية: تصميم البرمجيات

تصميم البرمجيات
تصميم البرمجيات
تصميم البرمجيات
تصميم البرمجيات

كود Arduino بسيط أيضًا ، فهو يسحب بشكل أساسي جميع قراءات المستشعر في بداية كل حلقة. يقوم بتشغيل مصابيح LED في حالة وجود حركة أو دخان ، كما يقوم بتشغيل صوت إنذار على الجرس إذا كان هناك دخان (هذا هو رمز الحظر الوحيد لذلك قمت باختصاره) ، ثم يعرض البيانات على شاشة LCD وأخيرًا أرسلها عبر جهاز الكمبيوتر لمدة 10 ثوانٍ ، حتى لا تغمر المنفذ.

يستخدم هذا المشروع طريقة اتصال واحدة من Arduino-> OrangePI ، ولا توجد أوامر من أي نوع يتم تنفيذها. على الرغم من أن هذا سيكون ممكنًا تمامًا للقيام بذلك كما فعلت في أحد مشروعي الآخر حيث يمكن للكمبيوتر إرسال LCD_PRINT1 أو LCD_PRINT2 للكتابة فوق سطر واحد من شاشة LCD برسالة خاصة به (على سبيل المثال: عنوان IP ، ووقت التشغيل ، وتاريخ النظام ، استخدام وحدة المعالجة المركزية) ، مساحة الشاشة صغيرة جدًا لعرض البيانات من 3 مستشعرات لم أزعجني حتى. يمكن أن تصل قيمتا SOL و SMK إلى 4 أرقام 0000-1023 مع وجود ما يصل إلى 8 أحرف قيمة على الشاشة.

باستخدام شاشة LCD ، يمكنك ملاحظة خدعة صغيرة في الكود أنه بعد كل قيمة مُقاسة ، يتم تطبيق طباعة للمسافات البيضاء ("") ، ثم أقوم بتحريك المؤشر إلى مواضع ثابتة لوضع الرموز والبيانات الجديدة. هذه موجودة لأن شاشة LCD ليست ذكية في فهم الأرقام ، فهي ترسم فقط ما تحصل عليه ، وعلى سبيل المثال ، إذا كانت لديك قيمة شمسية تبلغ 525 والتي انخفضت فجأة إلى 3 ، فستعرض 325 تاركًا الخردة القديمة على الشاشة هناك.

كود تحكم C يعمل على OrangePI ويسجل البيانات البيئية ويرسل تنبيهات بالبريد الإلكتروني عند الحاجة.

يقوم OrangePI بتشغيل Armbian (والذي كان يعتمد وقت كتابة هذا التقرير على Debian Stretch). سأقوم بتضمين هذا في جزء البرنامج لأنه كان يمثل مشكلة ما الذي تم حله. فيما يلي متوسط استنزاف الطاقة للجهاز:

0.17 أ - اردوينو فقط + مجسات

0.5-0.62 أ - تمهيد OrangePI

0.31 أ - Orange PI في وضع الخمول

0.29 أ - تم إيقاف تشغيل Orange PI (لا يمكن إيقاف تشغيله بالفعل ، فهو لا يحتوي على ACPI أو أي شيء من هذا القبيل)

0.60 أ - اختبار الإجهاد استخدام وحدة المعالجة المركزية بنسبة 100٪ على 4 مراكز

كان لدي هذا OrangePI في صندوق منذ وقت طويل. مع النواة القديمة ، استنزف الجهاز الكثير من التيار (كما قال العداد بلغ ذروته حوالي 0.63 أ) ما لم يستطع PSU توفيره لأنه ببساطة لم يتم تشغيله ، كانت عملية التمهيد عالقة وحصلت على 2 إيثرنت LED يضيء باستمرار ولا تفعل شيئًا.

الآن هذا مزعج نوعًا ما حيث تدعي HLK-5M05 أنها تستطيع أن تفعل 5 وات على 5 فولت مما يجعلها قادرة على توفير 1 أمبير ولكن مع خروج هذه الأجهزة من الصين ، فأنت لا تعرف أبدًا ، كانت القمة 0.63 A أقل بكثير من الحد الأقصى المصنف. القيمة. لذلك كنت أقوم بإجراء اختبارات إعادة تشغيل بسيطة ، من 10 عمليات إعادة تشغيل ، لن يتم تشغيل OrangePI إلا مرتين بنجاح ، الأمر الذي جعلني أتخلص منه تقريبًا من المشروع لأنني لا أحب سلوك عربات التي تجرها الدواب غير المتسقة في الدوائر. لذلك بدأت البحث في googling ، ربما تكون هناك طريقة لخفض استهلاك الطاقة في وقت التمهيد من البرنامج (نظرًا لأنها كانت مشكلة فقط في ذلك الوقت) ووجدت بعض المقالات تتحدث عن تعديل البرنامج النصي. كانت الملفات مفقودة من التخزين ، لذا أياً كان الملاذ الأخير ، فقد قمت بإجراء "الترقية المناسبة" السحرية لترقية البرامج الثابتة والنواة وكل شيء آخر ، على أمل أن تستنزف أقل ويمكن للجهاز التمهيد و:

Linux silverlight 4.14.18-sunxi # 24 SMP الجمعة 9 فبراير 16:24:32 CET 2018 armv7l GNU / Linux

Linux silverlight 4.19.62-sunxi # 5.92 SMP الأربعاء 31 يوليو 22:07:23 CEST 2019 armv7l GNU / Linux

انها عملت! عادةً ما يكون إلقاء الأجهزة في مشكلة برمجية هو مطورو جافا الكسول ليذهبوا إلى مكانهم ولكن في هذه الحالة قمنا بحل مشكلة في الأجهزة مع البرنامج ، وهو ما حقق نجاحًا كبيرًا. لقد قمت بإجراء 20 اختبارًا آخر لإعادة التشغيل ، حيث قام الجهاز بتمهيد كل حالة على حدة. ما زلت ألاحظ أن زيادة الطاقة الناتجة عن تشغيل Opi (الاتصال / الفصل) كبيرة جدًا لدرجة أنها ستعيد تعيين Arduino في أي وقت معين (إعادة التشغيل البسيطة ستؤدي إلى وميض شاشة LCD فقط ولكنها لا تسبب مشاكل أخرى) ، ولكن تظل هذه المشكلة مخفي حيث سيتم تمهيد 2 معًا.

لقد نظرت أيضًا في وحدات kernel:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 ليما sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils الايراد sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer SND sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple

ما الذي نحتاجه حقًا من هؤلاء؟ حسنًا ، قد يكون pwr والحراري مفيدًا ولكن الصوت ، المنفذ التسلسلي ، wifi (معطل بالفعل) لا نحتاج إلى إدراج كل هذه في القائمة السوداء. سأقوم أيضًا بإنشاء نواة مخصصة مع الوحدات الضرورية فقط لاحقًا.

ما نحتاجه ولا يتم تحميله افتراضيًا هو CDC ACM للتواصل مع Arduino ، وقم بتمكينه باستخدام:

صدى "cdc-acm" >> / etc / modules

بعد ذلك يمكنك بالفعل اختبار الاتصال مع:

شاشة / ديف / ttyACM0 9600

من المفترض أن ترى بيانات الحالة يتم إرسالها كل 10 ثوانٍ.

التنبيهات والمراقبة

اعتبارًا من التنبيهات ، قمت للتو بإجراء مكالمات system () في كود التحكم C الذي يتلقى البيانات من المسلسل لذلك لا توجد أدوات خارجية مطلوبة. بعض أمثلة التنبيهات:

- تزيد درجة الحرارة عن 30 درجة مئوية

- تزيد الرطوبة عن 70٪ (غير صحي للخوادم)

- تم الكشف عن الحركة في الغرفة (قد يكون هذا مزعجًا إذا واصلت الذهاب في غرفة الخادم الخاصة بك)

- اكتشاف دخان أو غاز (يمكن أخذ التنبيهات التي تزيد عن 100 على محمل الجد ، لقد لعبت مع هذا المستشعر وتشغيله للعديد من الأشياء ، على سبيل المثال ، أدى إنشاء دخان بجوار المستشعر باستخدام مكواة لحام إلى ما يزيد قليلاً عن 50 أثناء تدخين السيجارة التالية o ارتفع إلى 500 ، حتى أنه اكتشف الغاز من مزيل العرق العادي من بعيد)

للاحتفاظ بالبيانات التاريخية ، لم أزعج نفسي في تطوير أداة لأنني أعيد اختراع العجلة عندما حصلنا على أطر مراقبة ممتازة هناك. سأعرض مثالاً على كيفية دمج هذا في مفضلتي الشخصية ، Zabbix:

apt-get install zabbix-agent

أضف إلى نهاية: /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum ، رأس -1 /dev/shm/silverlight-zbx.log | awk -F "،" {print $ 1}"

UserParameter = silverlight.tmp ، رأس -1 /dev/shm/silverlight-zbx.log | awk -F "،" '{print $ 2}' UserParameter = silverlight.sol، head -1 /dev/shm/silverlight-zbx.log | awk -F "،" '{print $ 4}' UserParameter = silverlight.mot، head -1 /dev/shm/silverlight-zbx.log | awk -F "،" '{print $ 5}' UserParameter = silverlight.smk، head -1 /dev/shm/silverlight-zbx.log | awk -F "،" {print $ 6}"

يجب أن يؤدي تشغيل zabbix_agentd -p الآن إلى إرجاع القيم الصحيحة:

silverlight.hum [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

مؤشر الحرارة ، أقوم بجمعه ولكن لا أرى أي استخدام عملي له لذلك يتم تسجيله فقط. في كود التحكم C ، قمت بتنفيذ وظيفتين للتسجيل ، الأولى سوف تسجل جميع البيانات بتنسيق سهل الاستخدام:

[SILVERLIGHT] البيانات المستلمة في 2019-09-10 23:36:08 => الرطوبة: 44 ، درجة الحرارة: 22 ، مرحبًا: 25 ، الطاقة الشمسية: 0 ، الحركة: 0 ، الدخان: 21

[SILVERLIGHT] البيانات المستلمة في 2019-09-10 23:36:18 => الرطوبة: 44 ، درجة الحرارة: 22 ، مرحبًا: 25 ، الطاقة الشمسية: 0 ، الحركة: 0 ، الدخان: 21 [SILVERLIGHT] تم استلام البيانات في 2019-09 -10 23:36:29 => الرطوبة: 44 ، درجة الحرارة: 22 ، مرحبًا: 25 ، الطاقة الشمسية: 0 ، الحركة: 0 ، الدخان: 22 [SILVERLIGHT] البيانات المستلمة في 2019-09-10 23:36:39 => الرطوبة: 44 ، درجة الحرارة: 22 ، عالي: 25 ، شمسي: 0 ، حركة: 0 ، دخان: 21

الثاني:

void logger2 (char * text) {

FILE * f = fopen ("/ dev / shm / silverlight-zbx.log"، "w")؛ if (f == NULL) {printf ("خطأ في فتح ملف سجل الذاكرة! / n")؛ إرجاع؛ } fprintf (f، "٪ s"، نص)؛ fclose (و) ؛ إرجاع؛ }

سيؤدي هذا إلى وضع سجل سطر واحد في الذاكرة (التخلص من عمليات rw غير الضرورية على بطاقة sdcard) والتي سيتم استبدالها دائمًا في المرة القادمة. سيحتوي هذا السجل على أعمدة البيانات الستة فقط ولا يحتوي على طابع زمني ، ويمكن قراءته بسهولة لـ Zabbix.

كمكافأة أخيرة: كيفية برمجة Arduino مباشرة من OrangePI حتى لا تضطر إلى الصعود إلى الجهاز في كل مرة وتوصيل الكمبيوتر المحمول.

هناك طريقتان:

-طريقة سهلة: تثبيت Arduino IDE الكامل والمكتبات تستخدم بعض سطح المكتب البعيد مثل X11 مع إعادة التوجيه ، Xrdp ، Xvnc ، Nxserver إلخ

-طريقة صعبة: قم بتثبيت Arduino IDE واستخدم سطر الأوامر

سنفعل بالطريقة الصعبة هذه المرة لأنني لست مغرمًا بتثبيت X11 على الخوادم. لهذا سوف تحتاج إلى 6 مكونات:

1 ، Arduino IDE لـ ARM 32 بت ->

2 ، مسلسل Python -> apt-get install python-serial

3 ، مشروع Arduino Makefile -> git clone

4 ، مكتبة DHT

5 ، تعريفات لوحة Sparkfun

6 ، SilverLight.ino ، الرمز الرئيسي

لتسهيل الأمر ، قمت بتجميع الملفات المطلوبة لآخر 4 نقاط (sketchbook.tgz) لذلك ستحتاج فقط إلى أول 2

أولاً ، من الأفضل إنشاء مستخدم عادي لديه وصول RW إلى منفذ USB:

adduser الفضة

usermod -a -G Dialout الفضة

اضغط على sketchbook.tgz إلى الجهاز في الدليل الرئيسي للمستخدم الذي تم إنشاؤه حديثًا واستخرجه من هناك:

القرص المضغوط / المنزل / الفضة

tar xvzf sketchbook.tgz

لفهم ما يحدث تحت الغطاء عند استخدام IDE الرسومي:

سير عمل البناء لبناء رسم Arduino عند استخدام Arduino IDE موصوف على موقع Arduino على الويب https://www.arduino.cc/en/Hacking/BuildProcess وبمزيد من التفاصيل هنا: https://www.arduino.cc/ ar / القرصنة / BuildProcess

بشكل عام ، عملية بناء Arduino القياسية هي:

اجمع ملفات.ino في ملف الرسم الرئيسي. تحويل ملف الرسم الرئيسي: أضف العبارة #include ؛ إنشاء إعلانات وظائف (نماذج أولية) لجميع الوظائف في ملف الرسم الرئيسي ؛ قم بإلحاق محتويات ملف main.cxx الخاص بالهدف بملف الرسم الرئيسي. تجميع التعليمات البرمجية لكائن الملفات. اربط ملفات الكائن لإنتاج ملف.hex جاهز لتحميله على Arduino.

توجد بعض الاختلافات الطفيفة بين عملية البناء القياسية لـ Arduino وعملية البناء باستخدام Arduino-Makefile:

يتم دعم ملف.ino واحد فقط. لا يتم إنشاء إقرارات الوظائف تلقائيًا في ملف.ino. يجب على المستخدم الاهتمام بإنشاء إعلانات الوظائف الصحيحة.

قلب عملية البناء هو Makefile. لا تقلق ، فكل شيء جاهز من أجلك ، يكون الأمر أكثر تعقيدًا بعض الشيء عند التجميع بهذه الطريقة للوحات غير القياسية مثل سلسلة SparkFun.

BOARD_TAG = بروميكرو

ALTERNATE_CORE = SparkFun BOARD_SUB = 16 ميجاهرتزatmega32U4 ARDUINO_PORT = / dev / ttyACM0 USER_LIB_PATH = / home / silver / sketchbook / libraries ARDUINO_DIR = /opt/arduino-1.8.9 تشمل /home/silver/Arduino/Ardu

وكل ما تحتاج إلى كتابته هو: إجراء تحميل (والذي سيبني ملفات.hex أولاً ثم يستخدم avrdude لتحميلها) ، سينتهي الأمر بشيء مثل:

mkdir -p build-promicro-16 ميجا هرتز

make reset make [1]: إدخال الدليل "/ home / silver / sketchbook" / home / silver / sketchbook / Arduino-Makefile / bin / ard-reset-arduino --caterina / dev / ttyACM0 make [1]: Leaving Directory ' / home / silver / sketchbook "make do_upload make [1]: إدخال الدليل" / home / silver / sketchbook "/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P / dev / ttyACM0 / -U flash: w: build-promicro-16MHzatmega32U4 / sketchbook. عرافة: أنا الاتصال بالمبرمج:. تم العثور على مبرمج: Id = "CATERIN" ؛ اكتب = إصدار برنامج S = 1.0 ؛ لم يتم إعطاء إصدار من الأجهزة. يدعم المبرمج زيادة العنوان التلقائي. يدعم المبرمج الوصول إلى الذاكرة المخزنة بحجم مؤقت = 128 بايت. يدعم المبرمج الأجهزة التالية: رمز الجهاز: 0x44 avrdude: جهاز AVR مهيأ وجاهز لقبول التعليمات avrdude: توقيع الجهاز = 0x1e9587 (ربما m32u4) avrdude: قراءة ملف الإدخال "build-promicro-16MHzatmega32U4 / sketchbook.hex" avrdude: كتابة فلاش (11580 بايت): avrdude: 11580 بايت من فلاش مكتوب avrdude: safemode: Fuses OK (E: CB ، H: D8 ، L: FF) تم إنجازه. شكرا لك.

حسنًا ، شكرًا لك avrdude ، والآن تمت إعادة تعيين Arduino وبرمجته باستخدام الكود الجديد ، وما يمكنك تعديله باستخدام vi أو المحرر المفضل لديك محليًا ، دون الحاجة إلى أي IDEs. أود أن أشير إلى أنه يجب عليك إغلاق كل من برنامج التحكم C أو الشاشة أو أي شيء آخر يصل إلى arduino أثناء التحميل ، وإلا سيعود المنفذ كـ / dev / ttyACM1 بعد إعادة التعيين.

الخطوة 3: الإغلاق وقائمة Todo

قائمة الإغلاق و Todo
قائمة الإغلاق و Todo
قائمة الإغلاق و Todo
قائمة الإغلاق و Todo
قائمة الإغلاق و Todo
قائمة الإغلاق و Todo

على الرغم من أنني قمت بإنشاء صندوق المستشعر البيئي هذا لغرف الخوادم ، يمكنك استخدامه في مختبرات الكيمياء / الإلكترونية والمستودعات والغرف العادية وأي شيء آخر. ونعم نظرًا لأنه يستخدم TCP / IP فهو جهاز إنترنت الأشياء ، كان يجب أن أضع ذلك في العنوان أيضًا لجعله أكثر روح المبادرة:)

يمكنك بسهولة تعديل كل من الأجهزة والبرامج لتتمكن أيضًا من تشغيل الأضواء في الغرفة تلقائيًا. ألقِ نظرة على مشروعي الآخر: Shadow of Phoenix كيف يعمل ذلك للتحكم في الضوء ، لديك كل الأجهزة في متناول اليد للقيام بنفس الشيء (تستخدم مؤقتات تعليق لإبقاء الأضواء مضاءة طالما تم اكتشاف حركة داخل فترة زمنية ، إذا كانت هناك حركة مرة أخرى ، فسيتم رفع عداد الوقت).

مع تشغيل OrangePI لمجموعة Armbian الكاملة ، فإن الاحتمالات لا حدود لها ، يمكنك إنشاء واجهة ويب محلية مكتوبة من البداية في php لعرض البيانات التاريخية على الرسوم البيانية. أليس من الأفضل بالفعل أن يكون لديك جهاز مفتوح المصدر بالكامل يراقب غرفة الخادم الخاصة بك ما يمكنك أن تفخر ببنائه ، إذا كنت تعتقد أنه يمكنك بناءه بنفسك!

موصى به: