فهرست مطالب:

SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور: 3 مرحله (همراه با تصاویر)
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور: 3 مرحله (همراه با تصاویر)

تصویری: SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور: 3 مرحله (همراه با تصاویر)

تصویری: SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور: 3 مرحله (همراه با تصاویر)
تصویری: آموزش ASP.NET - جلسه اول - 1 2024, جولای
Anonim
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور
SilverLight: مانیتور محیطی مبتنی بر آردوینو برای اتاق سرور

یکبار به من وظیفه داده شد که به دنبال یک کاوشگر محیطی برای نظارت بر دما در اتاق سرور شرکت خود باشم. اولین ایده من این بود: چرا فقط از Raspberry PI و سنسور DHT استفاده نکنید ، می توان آن را در کمتر از یک ساعت با نصب سیستم عامل تنظیم کرد. برای این کار من از افراد سربلند با چشم بند پاسخ سرد دریافت کردم که ما این کار را نمی کنیم زیرا راه اندازی آن در ساعات کاری بیشتر از خرید یک دستگاه هزینه دارد. مجبور به پذیرفتن افراد تنگ نظر مانند این در بخشی از زندگی من یک چیز بود و من دستور دادم که برخی از EATON را از طریق وب سایت بی ارزش کرده و با آن تماس بگیرم ، اما در آن لحظه تصمیم گرفتم که برای اتاق سرور خودم یک آردوینو کاملاً متن باز بسازم. دستگاهی که بسیار بهتر از چیزی است که من الان سفارش دادم.

این پروژه با نام SilverLight نامیده می شود ، از من نپرسید این اسامی را از کجا می آورم:) من فقط به جعبه نیمه اکریلیک براق نگاه کردم و با این نام تصمیم گرفتم ، هیچ ربطی به محصول microhoof ندارد که بعد از آن متوجه شدم به

مرحله 1: طراحی سخت افزار

طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار

مروری بر سخت افزار تجاری

بسیار خوب ، بنابراین من حتی شروع به کار نمی کنم که ایده عالی آن قرار دادن یک مانیتور محیطی در بالارفتن بود ، اما بدیهی است که بازار آن وجود دارد ، بنابراین بیایید ببینیم اینها چه کاری می توانند انجام دهند:

سازگاری دستگاه نظارت بر محیط زیست

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

10/100 مگابایت ConnectUPS-X ، ConnectUPS-BD و ConnectUPS-E با FW V3.01 و بالاتر. ابعاد (LXWXH)

2.26 x 1.48 x 1.15 (اینچ) 57.6 x 37.6 x 29.3 (میلی متر) وزن

1.19 اونس (34 گرم)

این اطلاعات بسیار مفید است ، اینطور نیست؟ نگران نباشید زیرا نمی توانند کارهای زیادی انجام دهند. حتی برای شروع کار ، UPS شما باید کارت اضافی گران قیمت دیگری داشته باشد که این را با سنسور محیطی که به طور جداگانه خریداری می کنید متصل می کند ، معمولاً با کابل استاندارد CAT5 (حتی سعی نکنید چیزی را به آن پورت وصل کنید ، زیرا هیچ چیز استاندارد وجود ندارد) در مورد آن) آنها ادعا می کنند دستگاه برای گرم شدن به 10 دقیقه زمان نیاز دارد که در واقع ساعت ها بود و هنگامی که voila شد ، در رابط جاوا به آرامی به روز می شود و دما و رطوبت ما مشخص است. تنظیم شرایط مبتنی بر هشدارها از این نقطه آسان بود ، اما چه کسی اهمیت می دهد چیزی بهتر بسازیم.

این پروژه ترکیبی از چندین پروژه من است: ایستگاه هواشناسی ناتالیا ، سایه ققنوس. این جعبه قادر به نظارت بر محدودیت های محیطی زیر است:

  • شاخص دما/رطوبت/حرارت
  • LPG ، دود ، الکل ، پروپان ، هیدروژن ، متان و مونوکسید کربن در هوا (MQ2)
  • حساسیت خورشیدی (آیا نور اتاق سرور روشن است؟)
  • سنسور حرکت PIR (حتی می توانید به لطف سنسور حرکت هنگام ورود فردی به اتاق ، چراغ ها را از این به بعد به طور خودکار روشن/خاموش کنید)

همه این داده ها به خوبی روی صفحه LCD نمایش داده می شوند و برای پردازش و هشدارهای بیشتر به رایانه (Orange PI Zero) منتقل می شوند. اگرچه می توان سنسورهای دیجیتالی مانند DHT و پین دیجیتال MQ2 را مستقیماً به OrangePI متصل کرد ، اما من همیشه ترجیح می دهم از میکروهای اختصاصی برای این کارها استفاده کنم و هنگامی که شما نیاز دارید LCD را نیز به روز کنید و سایر سطوح پایین را انجام دهید. مسائل مربوط به آردوینو فقط بی رقیب است و می تواند سالها به طور قابل اطمینان بدون وقفه کار کند (در واقع هنوز هیچ آردوینویی که 24 ساعته و 7 روز کار می کند هنوز برای من شکست خورده است). OrangePI با کمبودهای خود (بیایید قبول کنیم که یک رایانه 10 دلاری است) مانند حجم زیاد کارکردن ، پشتیبانی از bsd ، وای فای یکپارچه و غیره غیرقابل استفاده است و می تواند به راحتی حجم کاری کمی مانند گرفتن قرائت سنسور از طریق سریال (USB) و پردازش آنها را مدیریت کند.

این یک پروژه بسیار ساده از نظر سخت افزاری است که به اجزای زیر نیاز دارد:

  • آردوینو پرو میکرو
  • صفحه LCD 2x16 کاراکتر RGB
  • ماژول تغذیه سوئیچ AC-DC 220V به 5V HLK-5M05 (اینها برای پروژه های Arduino/ESP بسیار خوب هستند) ، این نسخه 5V/5W است!
  • مقاومتهای 2x300 اهم
  • 2xleds (قرمز/سبز)
  • سنسور حرکت PIR
  • سنسور MQ2
  • DHT22
  • LDR
  • مقاومت 2X10Kohm
  • وزوز
  • نارنجی PI صفر
  • مینی کابل داده USB

من حتی زحمت ساخت PCB را برای این نانبرد معمولی استفاده نکردم زیرا قطعات را می توان به سادگی به آردوینو متصل کرد (تصاویر پیوست را ببینید):

-DHT22 نیاز به کشش 10K به VCC (دیجیتال) دارد

-LDR نیاز به کشیدن 10K به GND (آنالوگ) دارد

-MQ2 را می توان مستقیماً به هر پین آنالوگ (آنالوگ) متصل کرد <ترجیح می دهید از آنالوگ استفاده کنید زیرا چرا وقتی ما یک MCU با پین های آنالوگ داریم که به جای تنظیم مقداری گلدان در پشت دستگاه برای بدست آوردن HIGH یا مقدار دقیق ، مقدار دقیق آن را بدست آوریم. LOW از آن ، به دلیل چسبندگی در طرح من که به هر حال غیرقابل دسترسی است. بررسی کنید:

-PIR را می توان مستقیماً به هر پین (دیجیتال) متصل کرد

-LCD: می تواند با 4 پین هدایت شود ، می تواند به هر پین متصل شود (دیجیتال) به +2 RS/E (دیجیتال) نیاز دارد

-Buzzer: می تواند مستقیماً به هر پین آردوینو (دیجیتال) متصل شود

pinout مورد استفاده من در کد قابل مشاهده است. همه چیز را به هم متصل کنید بعد از این کار بسیار مستقیم است ، همچنین می توانید آنها را یکی یکی انجام دهید ، مطمئن شوید 1 سنسور به طور کامل کار می کند و سپس به حسگر بعدی بروید ، همه چیزهایی که می توانید اشتباه کنید اشتباه اتصال سیم ها به مکان های اشتباه است (به عنوان مثال تعویض vcc /gnd برای سنسور ، تا کنون هیچ یک از دستگاه های من کشته نشده است). آنچه در اینجا توجه می کنم این است که تعداد زیادی VCC و GND برای من جمع شده اند ، من نمی توانم آنها را از طریق نوار ترمینال فشار دهم ، بنابراین همه آنها را لحیم کردم.

همچنین در مورد DHT ها پروژه های دیگر من را فراموش نکنید: اگر کتابخانه DHT را در کد خود قرار دهید و سنسور DHT وصل نباشد یا DHT اشتباه باشد (به عنوان مثال 11 تعریف شده در کد که از 22 استفاده می کنید) که می تواند منجر به برنامه شود در ابتدا برای همیشه آویزان شود

در مورد سنسورهای تشخیص حرکت PIR ، همانطور که در تصویر من مشاهده می کنید تعداد زیادی جعلی از این تقلبی وجود دارد ، در حقیقت من حتی خرید یک دستگاه واقعی از Ebay را برایم دشوار می کند. تقلبی ها حتی در دراز مدت نیز به خوبی کار می کنند ، اما مدار آنها آینه شده است که باعث می شود پین های + و - معکوس شوند ، همچنین تشخیص این موارد به راحتی امکان پذیر است: همراه با pcb آبی ، نه رنگ سبز معمولی ، برچسب ها را از دست می دهید. دستگاه های دیگ بخار من خوش شانس بودم که یک جعبه اصلی در جعبه خود پیدا کردم ، در غیر این صورت تغییر موقعیت ، 2 led را برای من پوشش می دهد. من متوجه شده ام که هر دو قابلمه برای من در وسط کار می کند. این امر به شما اجازه می دهد تا حساسیت کافی را در هنگام حرکت داشته باشید ، پای دیجیتالی حدود یک دقیقه در موقعیت HIGH قرار می گیرد ، بنابراین لازم نیست کد را برای این کار جبران کنید. در تقلبی ها به راحتی می توان تعیین کرد که کدام طرف است - و + فقط به پایه های مربوطه برای درپوش های الکترولیتی متصل به پین ها نگاه کنید.

برای برش جعبه از سر الماس درمل (که بیش از حد بود اما عالی کار می کرد) و دستگاه حفاری معمولی استفاده کردم. کار با این جعبه های اتصال آسان است و اگرچه من چسباندن را دوست ندارم ، اما هنگام ساختن آن پیچ و مهره ای در دست نداشتم ، بنابراین چسباندن اجسام به هم معامله می شد (که همچنین می توان آنها را به راحتی گرم کرد و بعداً با استفاده از آنها جدا کرد) همان اسلحه چسبی بدون فیله در آن).

مرحله 2: طراحی نرم افزار

طراحی نرم افزار
طراحی نرم افزار
طراحی نرم افزار
طراحی نرم افزار

کد آردوینو نیز ساده است ، اساساً تمام قرائت سنسور را در ابتدای هر حلقه می کشد. در صورت حرکت یا دود LED ها را روشن می کند و همچنین در صورت وجود دود صدای زنگ در زنگ صدا پخش می شود (این تنها کد مسدود کننده است بنابراین من آن را کوتاه کردم) ، سپس داده ها را روی LCD نمایش می دهد و در نهایت آنها را بر روی کامپیوتر ارسال می کند. با نگه داشتن 10 ثانیه ، نه برای سیل بندر.

این پروژه از ارتباطات یک طرفه Arduino-> OrangePI استفاده می کند ، هیچ گونه دستوراتی از این قبیل اجرا نشده است. اگرچه این کار کاملاً امکان پذیر است ، همانطور که من در یکی از پروژه های دیگرم انجام دادم ، جایی که کامپیوتر می تواند LCD_PRINT1 یا LCD_PRINT2 را ارسال کند تا یک خط از صفحه LCD را با پیام خود بازنویسی کند (به عنوان مثال: آدرس IP ، زمان کار ، تاریخ سیستم ، استفاده از cpu) ، مساحت صفحه نمایش برای نمایش داده های 3 سنسور آنقدر کوچک است که حتی به خود زحمت ندادم. مقادیر SOL و SMK هر دو می توانند تا 4 رقم 0000-1023 افزایش یافته و از قبل 8 کاراکتر ارزشمند روی صفحه داشته باشند.

با استفاده از LCD می توانید یک ترفند کوچک در کد مشاهده کنید که پس از هر مقدار اندازه گیری شده ، چاپ فضاهای سفید ("") اعمال می شود ، سپس مکان نما را برای قرار دادن نمادها و داده های جدید به موقعیت های ثابت منتقل می کنم. اینها وجود دارند زیرا LCD برای درک اعداد آنقدرها هم هوشمند نیست ، فقط آنچه را که بدست می آورد می کشد و به عنوان مثال اگر مقدار خورشیدی شما 525 بود که ناگهان به 3 کاهش یافته بود ، 325 را نمایش می دهد که زباله های قدیمی را روی صفحه نمایش می دهد. آنجا.

یک کد کنترل C روی OrangePI اجرا می شود و اطلاعات محیطی را ثبت می کند و در صورت نیاز هشدارهای ایمیل ارسال می کند.

OrangePI Armbian را اجرا می کند (که در زمان نوشتن بر اساس Debian Stretch). من این را در قسمت نرم افزار قرار خواهم داد زیرا مشکلی بود که حل شد. در اینجا میانگین تخلیه قدرت دستگاه آمده است:

0.17 A - فقط آردوینو + سنسور

0.5-0.62 A - راه اندازی OrangePI

0.31 A - PI نارنجی در حالت آماده به کار

0.29 A - PI نارنجی خاموش است (واقعاً نمی توان آن را خاموش کرد ، ACPI یا مواردی از این قبیل ندارد)

0.60 A - تست استرس 100٪ استفاده از CPU در 4 هسته

من این OrangePI را مدتها در یک جعبه داشتم. با هسته قدیمی دستگاه ، جریان بسیار زیادی تخلیه شد (همانطور که متر در حدود 0.63 A به اوج خود رسید) چیزی که PSU احتمالاً نمی تواند ارائه دهد که به سادگی بوت نمی شود ، فرآیند بوت گیر کرد و من 2 چراغ اترنت را روشن کردم دائماً و کاری انجام نمی دهد

در حال حاضر این به نوعی آزاردهنده است زیرا HLK-5M05 ادعا می کند که می تواند 5 وات را روی 5 ولت کار کند و بتواند 1 آمپر را ارائه دهد ، اما با این دستگاه هایی که از چین خارج می شوند ، شما هرگز نمی دانید ، اوج 0.63 A بسیار پایین تر از حداکثر مجاز بود ارزش. بنابراین من آزمایش های راه اندازی مجدد ساده را انجام می دادم ، از 10 راه اندازی مجدد ، OrangePI فقط دو بار با موفقیت راه اندازی می شد ، که تقریباً باعث شد من آن را از پروژه کنار بگذارم ، زیرا رفتارهای ناسازگار اشکال را در مدارها دوست ندارم. بنابراین من شروع به جستجوی گوگل کردم شاید راهی برای کاهش مصرف برق در هنگام راه اندازی نرم افزار وجود داشته باشد (زیرا در آن زمان فقط مسئله ای وجود داشت) و مقاله ای یافت شد که در مورد تغییر تنظیمات script.bin صحبت می کرد ، اما برای رایانه Orange PI PC و فایلها در حافظه ذخیره نمی شوند بنابراین به عنوان آخرین راه حل ، "ارتقاء جادویی" جادویی را برای ارتقاء سیستم عامل ، هسته و سایر موارد انجام داده ام ، به این امید که کمتر تخلیه شود و دستگاه بتواند بوت شود و:

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 با هم بوت می شوند.

ماژول های هسته را نیز بررسی کرده ام:

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 TTM 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 (در حال حاضر hw خراب است) ما نیازی نداریم که همه اینها در لیست سیاه قرار گیرد. همچنین بعداً یک هسته دلخواه با ماژول های لازم ایجاد خواهم کرد.

آنچه ما نیاز داریم و به طور پیش فرض بارگیری نمی شود CDC ACM برای ارتباط با آردوینو است ، آن را با موارد زیر فعال کنید:

echo "cdc-acm" >> /etc /modules

پس از این شما می توانید اتصال را با موارد زیر آزمایش کنید:

screen /dev /ttyACM0 9600

شما باید داده های وضعیت را در هر 10 ثانیه ارسال کنید.

هشدارها و نظارت

در مورد هشدارها ، من فقط تماس های system () را در کد کنترل C قرار می دهم که داده ها را از سریال دریافت می کند ، بنابراین به ابزارهای خارجی نیاز نیست. چند نمونه هشدار:

- درجه حرارت بیش از 30 درجه سانتیگراد است

- رطوبت بیش از 70 goes (برای سرورها مناسب نیست)

- حرکت در اتاق تشخیص داده می شود (اگر در اتاق سرور خود ادامه دهید این می تواند آزاردهنده باشد)

- دود یا گاز تشخیص داده می شود (هشدارهای بیش از 100 را می توان جدی گرفت ، من با این سنسور بازی کرده ام و برای بسیاری از موارد روشن می شود ، به عنوان مثال ایجاد دود در کنار سنسور با لحیم کاری منجر به کمی بیش از 50 در هنگام کشیدن سیگار بعدی می شود o به 500 رسید ، حتی گاز را از دئودورانت معمولی از راه دور تشخیص داد)

برای حفظ داده های تاریخی ، من زحمتی برای توسعه ابزاری نمی کشیدم ، چرا وقتی چارچوب های نظارتی فوق العاده ای در اختیار داریم ، چرخ را دوباره اختراع کنیم. من یک مثال از نحوه ادغام این مورد در مورد علاقه شخصی خودم ، Zabbix ، نشان خواهم داد:

apt-get zabbix-agent را نصب کنید

به انتهای: /etc/zabbix/zabbix_agentd.conf اضافه کنید

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

UserParameter = silverlight.tmp ، head -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 من 2 عملکرد ورود به سیستم را اجرا کرده ام ، اولین مورد تمام داده ها را در قالب کاربر پسند وارد می کند:

[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] داده های دریافتی در 09-09-2019 -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"، text)؛ fclose (f)؛ برگشت؛ }

این یک ورود 1 خطی را در حافظه قرار می دهد (عملیات غیر ضروری rw را روی کارت sdcard حذف می کند) که دفعه بعدی همیشه رونویسی می شود. این گزارش فقط شامل 6 ستون داده و بدون علامت زمانی است ، به راحتی برای Zabbix قابل خواندن است.

بعنوان آخرین امتیاز: چگونه می توان Arduino را مستقیماً از طریق OrangePI برنامه ریزی کرد تا نیازی نباشد هر بار تا دستگاه حرکت کرده و لپ تاپ خود را وصل کنید.

2 راه وجود دارد:

راه آسان: نصب کامل Arduino IDE و کتابخانه ها از برخی از دسکتاپ های راه دور مانند X11 با حمل و نقل ، Xrdp ، Xvnc ، Nxserver و غیره استفاده کنید.

روش سخت: Arduino IDE را نصب کرده و از خط فرمان استفاده کنید

ما این بار به سختی کار می کنیم زیرا من علاقه ای به نصب X11 روی سرورها ندارم. برای این کار شما به 6 جزء نیاز دارید:

1 ، Arduino IDE برای ARM 32 بیت ->

2 ، سریال پایتون-> apt-get install python-serial

3 ، پروژه Arduino Makefile -> git clone

4 ، کتابخانه DHT

5 ، تعاریف تخته Sparkfun

6 ، SilverLight.ino ، کد اصلی

برای سهولت کار ، من فایلهای مورد نیاز برای 4 نقطه آخر (sketchbook.tgz) را بسته بندی کرده ام ، بنابراین شما فقط به 2 مورد اول نیاز دارید

ابتدا بهتر است یک کاربر معمولی ایجاد کنید که دسترسی rw به پورت USB داشته باشد:

نقره افزودنی

usermod -a -G نقره dialout

sketchbook.tgz را در دستگاهی که در فهرست اصلی کاربر ایجاد شده است SCP کرده و درست در آنجا استخراج کنید:

سی دی /خانه /نقره ای

tar xvzf sketchbook.tgz

برای اینکه کمی بفهمید وقتی از IDE گرافیکی استفاده می کنید در زیر کاپوت چه می گذرد:

روند کار ایجاد طرح Arduino هنگام استفاده از Arduino IDE در وب سایت Arduino https://www.arduino.cc/fa/Hacking/BuildProcess و جزئیات بیشتر در اینجا شرح داده شده است: https://www.arduino.cc/ fa/Hacking/BuildProcess

به طور کلی ، فرایند استاندارد ساخت آردوینو به شرح زیر است:

فایل های.ino را در فایل اصلی طرح ترکیب کنید. تبدیل فایل طرح اصلی: عبارت #include را اضافه کنید. ایجاد اعلانات عملکرد (نمونه اولیه) همه توابع در فایل اصلی طرح ؛ محتویات فایل main.cxx هدف را به فایل اصلی طرح اضافه کنید. کد فایلهای آبجکت را کامپایل کنید. فایلهای شیء را به یک فایل.hex آماده بارگذاری در Arduino متصل کنید.

تفاوتهای جزئی بین روند ساخت استاندارد آردوینو و فرایند ساخت با استفاده از آردوینو-Makefile وجود دارد:

فقط یک فایل.ino پشتیبانی می شود. اعلان های تابع به صورت خودکار در فایل.ino ایجاد نمی شوند. کاربر باید از ایجاد اعلانات عملکرد صحیح مراقبت کند.

قلب فرآیند ساخت Makefile است. نگران نباشید ، همه چیز برای شما آماده شده است ، هنگام تدوین این روش برای تخته های غیر استاندارد مانند سری SparkFun ، کمی پیچیده تر است.

BOARD_TAG = پرومیکرو

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT =/dev/ttyACM0 USER_LIB_PATH =/home/silver/sketchbook/libraries ARDUINO_DIR = /opt/arduino-1.8.9 شامل /home/silver/silver/

و تنها چیزی که برای تایپ کردن نیاز دارید این است: ایجاد بارگذاری (که ابتدا فایل های.hex را ایجاد می کند و سپس از avrdude برای بارگذاری آنها استفاده می کند) ، در نهایت چیزی شبیه به موارد زیر را نشان می دهد:

mkdir -p build-promicro-16MHzatmega32U4

make reset make [1]: ورود به فهرست «/home/silver/sketchbook»/home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina/dev/ttyACM0 make [1]: خروج از فهرست /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/دفترچه طرح. hex: i اتصال به برنامه نویس:. برنامه نویس یافت شده: Id = "CATERIN"؛ type = S نسخه نرم افزاری = 1.0؛ نسخه سخت افزاری داده نشده است برنامه نویس از افزودن خودکار افزونه پشتیبانی می کند. برنامه نویس از دسترسی حافظه بافر با اندازه بافر = 128 بایت پشتیبانی می کند. برنامه نویس از دستگاه های زیر پشتیبانی می کند: کد دستگاه: 0x44 avrdude: دستگاه AVR اولیه شده و آماده پذیرش دستورالعمل ها avrdude: امضای دستگاه = 0x1e9587 (احتمالاً m32u4) avrdude: خواندن فایل ورودی "build-promicro-16MHzatmega32U4/sketchbook.hex" avrdude: نوشتن فلش (11580 بایت): avrdude: 11580 بایت فلش نوشته avrdude: safemode: فیوزها OK (E: CB، H: D8، L: FF) avrdude انجام شده است. متشکرم.

خوب متشکرم avrdude ، و در حال حاضر Arduino ما تنظیم مجدد شده و با کد جدید برنامه ریزی شده است ، آنچه می توانید فقط با vi یا ویرایشگر مورد علاقه خود به صورت محلی ویرایش کنید ، بدون نیاز به هیچ IDE. لازم به ذکر است که هنگام بارگذاری ، باید برنامه کنترل C ، صفحه نمایش یا هر چیز دیگری که به arduino دسترسی دارد را ببندید ، در غیر این صورت پورت پس از بازنشانی به صورت /dev /ttyACM1 باز می گردد.

مرحله 3: بستن و لیست Todo

بسته شدن و لیست Todo
بسته شدن و لیست Todo
بسته شدن و لیست Todo
بسته شدن و لیست Todo
بسته شدن و لیست Todo
بسته شدن و لیست Todo

اگرچه من این جعبه حسگر محیطی را برای اتاق سرور ایجاد کردم ، اما می توانید از آن برای آزمایشگاه های شیمی/الکترونیک ، انبارها ، اتاقهای معمولی و هر چیز دیگری استفاده کنید. و بله ، زیرا از TCP/IP استفاده می کند ، این یک دستگاه IoT است ، G من باید آن را نیز در عنوان قرار دهم تا کارآمدتر شود:)

شما می توانید سخت افزار و نرم افزار را به راحتی تغییر دهید تا بتوانید چراغ های اتاق را نیز به طور خودکار روشن کنید. نگاهی به پروژه دیگر من بیندازید: Shadow of Phoenix چگونه برای کنترل نور کار می کند ، شما همه سخت افزار را در اختیار دارید تا بتوانید همان کار را انجام دهید (از تایمرهای نگهدارنده برای روشن نگه داشتن چراغ ها تا زمانی که حرکت در یک حرکت تشخیص داده شود استفاده می کند. در بازه زمانی ، در صورت حرکت مجدد یک تایمر به هم می خورد).

با اجرای OrangePI با یک پشته کامل Armbian ، امکانات نامحدود است ، می توانید یک رابط وب محلی ایجاد کنید که از ابتدا در php نوشته شده است تا داده های تاریخی را روی نمودارها نمایش دهد. آیا این بهتر نیست که شما یک دستگاه کاملاً متن باز داشته باشید و اتاق سرور خود را تحت نظارت داشته باشد ، اگر فکر می کنید این را خودتان بسازید ، می توانید به ساختن آن افتخار کنید!

توصیه شده: