В ما اشاره کردیم که در ماه آگوست، مسابقهای با جوایز در انتظار همه کاربران Habrahabr است. وقت آن رسیده که پرده از رازداری برداریم. به ذهنمان رسید که عبارت "سرور در ابرها" میتواند به معنای واقعی کلمه باشد. بیایید واقعاً یک سرور فعال را به آسمان پرتاب کنیم که بتوانیم آن را پینگ کنیم! در ابتدا، این ایده دیوانهوار به نظر میرسید، اما پس از بازی کردن با آن و بحث در مورد آن به هر طریق ممکن، سرانجام راهی برای فرستادن سرور به سمت پرندگان پیدا کردیم. پرتاب مهم در پایان ماه آگوست انجام خواهد شد و در این میان، ما در حال تنظیم دقیق سختافزار برای این پروژه هستیم. جزئیات در زیر آمده است.
- این سرور بر پایه رزبری پای ۳ خواهد بود.
بلند کردن یک سرور تک واحدی به هوا جالب خواهد بود، اما وزن آن به علاوه وزن یک UPS ... همه اینها به نیروی بالابری قابل توجهی نیاز دارد. و چرا باید خودمان را به زحمت بیندازیم، وقتی که میتوان از یک Raspberry Pi 3 جمع و جور برای استقرار یک سرور کاملاً مناسب با قدرت محاسباتی چند صد برابر بیشتر از دستگاهی که تیم برنرز-لی در سال ۱۹۹۱ برای تفریح استفاده کرد، استفاده کرد؟
- ما سرور را با یک بالن هوای گرم پرتاب خواهیم کرد.
ما به بلند کردن سرور با یک بالن هلیومی فکر کردیم، اما در آن صورت سرور برای مدت طولانی قابل پینگ نبود و قبل از اینکه بالن در ارتفاع بالا در جو رقیق منفجر شود و کل سازه به زمین بیفتد، بالن منفجر میشد. ما میخواستیم مدت زمان پرواز را به یک ساعت و نیم افزایش دهیم. بنابراین تصمیم گرفتیم از یک بالن هوای گرم استفاده کنیم. مدت پرواز دو ساعت است. علاوه بر این، در حالی که پرواز کاملاً کنترل نمیشود، مهندس ما میتواند در سبد باشد و در صورت بروز نقص، میتواند به سرعت آن را در همانجا "روشن و خاموش" کند.
- ما از ارتباطات سلولی به عنوان یک شبکه حمل و نقل استفاده خواهیم کرد.
آنتنهای وایفای مدرن میتوانند به فواصل بسیار طولانی برسند، اما برای انجام این کار به یک سیستم ارتباطی نیاز است که تقریباً به اندازه یک ایستگاه رادار نظامی قدرتمند باشد. ساخت چنین سیستمی برای فقط ۱.۵ تا ۲ ساعت ارتباط، منطقی نیست، زیرا خدمات تلفن همراه باید در ارتفاع پرواز یک بالن هوای گرم قابل اعتماد باشد.
پس از تدوین این «فرضیهها»، پروژه دیگر غیرممکن به نظر نمیرسید و خیلی زود ما شروع به کار در هر سه جهت به طور همزمان کردیم.
اول از همه، ما به بچه ها مراجعه کردیم ، که با پرتاب انواع اشیاء آهنی به هوا (با جستجو و نجات بعدی) سگی را خورده است.
سپس رزبری پای ۳ را که روی میز کنار تخت مدیرمان بود، بیرون آوردیم و شروع به راهاندازی آن کردیم.

دوربین را وصل کرد:

و ما آن را روی "سمیون" خود آزمایش کردیم:

سمیون به عنوان مدل و دستیار بسیار راحت است - او غذا نمیخواهد، حواسش با تلفن همراهش پرت نمیشود و همیشه با لبخندی گشاده بر کلاه کاسکتش، حال و هوای بسیار خوبی دارد. البته، ما برای پرواز به چنین لباس فضایی نیاز نداریم، اما او فضای مناسبی را در دفتر ایجاد میکند.
طرح کلی پروژه به شرح زیر است:

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

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

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

سپس این کد رشته را به یک آرایه تبدیل میکند و دادهها را به وبسایت ارسال میکند:
$str = 'N:647;T:10m55s;MP.Stage:0;MP.Alt:49;MP.VSpeed:0.0;MP.AvgVSpeed:0.0;Baro.Press:1007.06;Baro.Alt:50;Baro.Temp:35.93;GPS.Coord:N56d43m23s,E37d55m68s;GPS.Home:N56d43m23s,E37d55m68s;Dst:5;GPS.HSpeed:0;GPS.Course:357;GPS.Time:11h17m40s;GPS.Date:30.07.2018;DS.Temp:[fc]=33.56;Volt:5.19,0.00,0.00,0.00,0.00,0.00,0.00,0.00';
parse_str(strtr($str, [
':' => '=',
';' => '&'
]), $result);
print_r($result);شرح برخی از دادهها:
- N:2432; — تعداد بستههای داده، همواره در حال افزایش
- T:40m39s; — مدت زمان از روشن شدن کنترلکننده پرواز
- مرحله پرواز (0 - روی زمین یا زیر 1 کیلومتر، 1 - صعودی، 2 - معلق در ارتفاع، 3 - نزولی)
- MP.Alt:54; — ارتفاع بارومتریک از سطح دریا بر حسب متر — باید نمایش داده شود
- MP.VSpeed:0.0; — سرعت عمودی بر حسب متر بر ثانیه با فیلتر میانه
- MP.AvgVSpeed:0.0; — سرعت عمودی بر حسب متر بر ثانیه با فیلتر میانگینگیری
- فشار بارومتریک: ۱۰۰۶.۴۹؛ — فشار بارومتریک بر حسب میلیبار
- ارتفاع بر اساس فشارسنج
- دمای فشارسنج: ۳۶.۹۹؛ — دمای خود فشارسنج
- مختصات GPS: N56d43m23s,E37d55m68s — مختصات فعلی
- GPS.Home:N56d43m23s,E37d55m68s; — مختصات نقطه شروع
- GPS.Alt:165; — ارتفاع GPS بر حسب متر
- GPS.Dst:10; — فاصله از نقطه شروع بر حسب متر
- DS.Temp:[fc]=34.56; — سنسور دما روی برد
خروجی به چه صورت است:
Array
(
[N] => 647
[Т] => 10m55з
[MP_Stage] => 0
[MP_Alt] => 49
[MP_VSpeed) => 0.0
[MP_AvgVSpeed] => 0.0
[Baro Рrеss] => 1007.06
[Baro_Alt] => 50
[Baro_Temp] => 35.93
[GPS_Coord] => N56d43m23s,E37d55m68s
[GPS_Home) => N56d43m23s,E37d55m68s
[Dst] => 5
[GPS_HSpeed] => 0
[GPS_Course] => 357
[GPS_Time] => 11h17m40s
[GPS_Date] => 30.07.2018
[DS_Temp] => [fс] ЗЗ.56
[Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00
)
اگر اتصال تلفن همراه قطع شود چه؟ برای این حالت، ما یک سیمکارت دوم داریم؛ دو سیمکارت در مودم قرار داده شدهاند (هر بار یک اسلات):

اگر کانال اصلی ناگهان از کار بیفتد، میتواند بهطور خودکار به کانال پشتیبان تغییر وضعیت دهد.
اگر هر دو شبکه تلفن همراه از دسترس خارج شوند چه اتفاقی میافتد؟
(پسری از بیدلیل نیست که او «نظریه احتمال» میخواند.
برای این مورد، ما یک ردیاب GPS مستقل خواهیم داشت که سیگنالی ارسال میکند که موقعیت مکانی آن را نشان میدهد. توجه داشته باشید که این کار را نه از طریق شبکه تلفن همراه، که در دسترس بودن آن در مسافتهای طولانی تضمین شده نیست، بلکه از طریق ماهواره انجام میدهد.

بله، ردیاب GPS کمی بزرگتر از آن چیزی است که زیر پوست جیمز باند کار گذاشته شده است. از آنجایی که مسابقه ما به مختصات سرور پرواز بستگی دارد، این بخش از دادههای دریافتی از هواپیما مهمترین خواهد بود. اما در پست بعدی در مورد آن صحبت خواهیم کرد. خیلی زود با وبلاگ ما همراه باشید!
ما آنقدر به موفقیت کل پروژه ایمان داریم که حتی مسابقهای برای هر کسی که میخواهد حدس بزند بالن کجا فرود خواهد آمد، اعلام کردهایم. جزئیات در ... .
منبع: www.habr.com
