جدول المحتويات:
فيديو: SilverLight: مراقب بيئي قائم على Arduino لغرف الخادم: 3 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
بمجرد أن تم تكليفي بمهمة البحث عن مسبار بيئي لمراقبة درجة الحرارة في غرفة الخادم في شركتي. كانت فكرتي الأولى هي: لماذا لا تستخدم فقط 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
على الرغم من أنني قمت بإنشاء صندوق المستشعر البيئي هذا لغرف الخوادم ، يمكنك استخدامه في مختبرات الكيمياء / الإلكترونية والمستودعات والغرف العادية وأي شيء آخر. ونعم نظرًا لأنه يستخدم TCP / IP فهو جهاز إنترنت الأشياء ، كان يجب أن أضع ذلك في العنوان أيضًا لجعله أكثر روح المبادرة:)
يمكنك بسهولة تعديل كل من الأجهزة والبرامج لتتمكن أيضًا من تشغيل الأضواء في الغرفة تلقائيًا. ألقِ نظرة على مشروعي الآخر: Shadow of Phoenix كيف يعمل ذلك للتحكم في الضوء ، لديك كل الأجهزة في متناول اليد للقيام بنفس الشيء (تستخدم مؤقتات تعليق لإبقاء الأضواء مضاءة طالما تم اكتشاف حركة داخل فترة زمنية ، إذا كانت هناك حركة مرة أخرى ، فسيتم رفع عداد الوقت).
مع تشغيل OrangePI لمجموعة Armbian الكاملة ، فإن الاحتمالات لا حدود لها ، يمكنك إنشاء واجهة ويب محلية مكتوبة من البداية في php لعرض البيانات التاريخية على الرسوم البيانية. أليس من الأفضل بالفعل أن يكون لديك جهاز مفتوح المصدر بالكامل يراقب غرفة الخادم الخاصة بك ما يمكنك أن تفخر ببنائه ، إذا كنت تعتقد أنه يمكنك بناءه بنفسك!
موصى به:
مراقب غرفة الخادم: 4 خطوات
مراقب غرفة الخادم: إحدى مشكلات غرفة الخادم هي درجة الحرارة. مع المعدات المختلفة التي تنتج الحرارة ، يرتفع هذا بسرعة. وإذا فشل تكييف الهواء ، فإنه يوقف كل شيء بسرعة. للتنبؤ بهذه المواقف يمكننا الحصول على واحدة من عدة بيئات
بطاقة نظام بيئي للحشرات مع دوائر ورقية: 10 خطوات (بالصور)
بطاقة نظام بيئي للحشرات مع دوائر ورقية: اصنع صورة تعلم الدوائر! تستخدم هذه التعليمات شريطًا نحاسيًا مع دعامة لاصقة موصلة وملصقات دوائر Chibitronic. إنها حرفة رائعة لفعلها مع طفل. الحشرات الموجودة على البطاقة هي فراشة مونراش وملك
جهاز تحكم عن بعد قائم على Arduino لـ Eskate أو Hydrofoil: 5 خطوات (بالصور)
جهاز التحكم عن بعد القائم على Arduino لـ Eskate أو Hydrofoil: سيوضح لك هذا التوجيه كيفية إنشاء جهاز تحكم عن بعد فعليًا لاستخدامه مع eskate أو القارب المحلق الكهربائي بما في ذلك جميع التعليمات البرمجية والأجهزة التي تحتاجها. هناك الكثير من عمليات اللحام المتضمنة ، ولكن من الممتع أيضًا القيام بها. ماذا يمكن أن يفعل جهاز التحكم عن بعد؟ شارك
إدارة الخادم / لوحة الاستضافة على الويب لـ Raspberry Pi (Ajenti): 5 خطوات
مسؤول الخادم / لوحة الاستضافة على الويب لـ Raspberry Pi (Ajenti): مرحبًا ومرحبًا بكم في أول Instructable. هذا الدليل يدور حول تثبيت Ajenti على Raspberry Pi. ولكن يمكن أيضًا استخدام هذا الدليل لتثبيت ajenti على أي نظام تشغيل قائم على دبيان. ما هو Ajenti؟ Ajenti هي لوحة مشرف خادم مفتوحة المصدر
التحايل على جدار الحماية / الخادم الوكيل: 3 خطوات
تجاوز جدار الحماية / الخادم الوكيل: جاء العديد من الطلاب الآخرين وسألوني عن كيفية تجاوز جدران الحماية والوكلاء. يصبح موظفو تكنولوجيا المعلومات في المدرسة أكثر ذكاءً بشأن الطلاب الذين يستخدمون الوكلاء. فكرت في هذه المشكلة لبعض الوقت ولدي حل. لماذا لا تنشئ صفحات الويب الخاصة بك