ردیاب GPS بر اساس GY-NEO6M را خودتان انجام دهید آسان است. توضیح مختصری در مورد پنجره تنظیمات ردیاب جی پی اس آردوینو Hatire Arduino

پس از چندین آزمایش با آردوینو، تصمیم گرفتم یک ردیاب GPS ساده و نه چندان گران قیمت با مختصات ارسال شده از طریق GPRS به سرور بسازم.
آردوینو مگا 2560 استفاده شده ( آردوینو اونو SIM900 - ماژول GSM/GPRS (برای ارسال اطلاعات به سرور)، گیرنده GPS SKM53 GPS.

همه چیز در ebay.com خریداری شد، در مجموع حدود 1500 روبل (حدود 500 روبل برای آردوینو، کمی کمتر برای ماژول GSM، کمی بیشتر برای GPS).

گیرنده جی پی اس

ابتدا باید نحوه کار با GPS را بدانید. ماژول انتخاب شده یکی از ارزان ترین و ساده ترین است. با این حال، سازنده قول باتری برای ذخیره داده های ماهواره ای را داده است. طبق دیتاشیت، شروع سرد باید 36 ثانیه طول بکشد، اما در شرایط من (طبقه 10 از طاقچه، بدون ساختمان نزدیک) 20 دقیقه طول کشید. با این حال، شروع بعدی در حال حاضر 2 دقیقه است.

یکی از پارامترهای مهم دستگاه های متصل به آردوینو مصرف برق است. اگر مبدل آردوینو را بیش از حد بارگذاری کنید، ممکن است بسوزد. برای گیرنده استفاده شده، حداکثر توان مصرفی 45 میلی آمپر @ 3.3 ولت است. اینکه چرا مشخصات باید قدرت جریان را در ولتاژی غیر از ولتاژ مورد نیاز (5 ولت) نشان دهد برای من یک راز است. با این حال، مبدل آردوینو 45 میلی آمپر را تحمل خواهد کرد.

ارتباط
GPS کنترل نمی شود، اگرچه دارای پین RX است. برای چه هدفی مشخص نیست. اصلی ترین کاری که می توانید با این گیرنده انجام دهید خواندن داده ها از طریق پروتکل NMEA از پین TX است. سطوح - 5 ولت، فقط برای آردوینو، سرعت - 9600 باد. VIN را به VCC آردوینو، GND را به GND، TX را به RX سریال مربوطه وصل می کنم. من داده ها را ابتدا به صورت دستی خواندم، سپس با استفاده از کتابخانه TinyGPS. با کمال تعجب همه چیز قابل خواندن است. پس از تغییر به Uno، مجبور شدم از SoftwareSerial استفاده کنم و سپس مشکلات شروع شد - برخی از کاراکترهای پیام گم شدند. این خیلی مهم نیست، زیرا TinyGPS پیام های نامعتبر را قطع می کند، اما بسیار ناخوشایند است: می توانید فرکانس 1 هرتز را فراموش کنید.

نکته ای سریع در مورد SoftwareSerial: هیچ درگاه سخت افزاری در Uno وجود ندارد (به غیر از پورت متصل به سریال USB)، بنابراین باید از نرم افزار استفاده کنید. بنابراین، فقط می تواند داده ها را روی پینی دریافت کند که برد روی آن وقفه ها را پشتیبانی می کند. در مورد Uno، اینها 2 و 3 هستند. علاوه بر این، تنها یک چنین پورت می تواند در یک زمان داده را دریافت کند.

این همان چیزی است که "پایگاه آزمون" به نظر می رسد.

گیرنده/فرستنده GSM


حالا قسمت جالب تر می آید. ماژول GSM - SIM900. از GSM و GPRS پشتیبانی می کند. نه EDGE و نه به خصوص 3G پشتیبانی نمی شوند. برای انتقال داده های مختصات، این احتمالاً خوب است - هیچ تأخیر یا مشکلی در هنگام جابجایی بین حالت ها وجود نخواهد داشت، به علاوه GPRS اکنون تقریباً در همه جا در دسترس است. با این حال، برای برخی از برنامه های پیچیده تر این ممکن است کافی نباشد.

ارتباط
ماژول همچنین از طریق پورت سریال با همان سطح - 5 ولت کنترل می شود. و در اینجا ما به هر دو RX و TX نیاز خواهیم داشت. ماژول شیلد است، یعنی روی آردوینو نصب شده است. علاوه بر این، آن را با هر دو mega و uno سازگار است. سرعت پیش فرض 115200 است.

ما آن را روی مگا مونتاژ می کنیم و اینجا اولین سورپرایز ناخوشایند در انتظار ما است: پین TX ماژول روی پایه هفتم مگا می افتد. وقفه در پایه هفتم مگا موجود نیست، به این معنی که شما باید پایه هفتم را مثلاً به پایه ششم متصل کنید، که در آن وقفه ممکن است. بنابراین، یک پین آردوینو را هدر خواهیم داد. خوب، برای یک مگا خیلی ترسناک نیست - از این گذشته، پین های کافی وجود دارد. اما برای Uno این در حال حاضر پیچیده تر است (به شما یادآوری می کنم که فقط 2 پین وجود دارد که از وقفه ها پشتیبانی می کند - 2 و 3). به عنوان راه حلی برای حل این مشکل می توان پیشنهاد داد که ماژول را روی آردوینو نصب نکنید، بلکه آن را با سیم وصل کنید. سپس می توانید از Serial1 استفاده کنید.

پس از اتصال، سعی می کنیم با ماژول "صحبت کنیم" (فراموش نکنید آن را روشن کنید). ما سرعت پورت را انتخاب می کنیم - 115200، و خوب است که تمام پورت های سریال داخلی (4 در مگا، 1 در uno) و همه پورت های نرم افزار با سرعت یکسان کار کنند. به این ترتیب می توانید به انتقال داده با ثبات تری دست پیدا کنید. نمی دانم چرا، اگرچه می توانم حدس بزنم.

بنابراین، ما کدهای اولیه را برای ارسال اطلاعات بین پورت های سریال می نویسیم، Atz را ارسال می کنیم و سکوت را در پاسخ دریافت می کنیم. چه اتفاقی افتاده است؟ آه، به حروف کوچک و بزرگ حساس است. ATZ، ما خوب می شویم. هورای، ماژول می تواند صدای ما را بشنود. آیا باید از روی کنجکاوی با ما تماس بگیرید؟ ATD +7499 ... تلفن ثابت زنگ می زند، دود از آردوینو می آید، لپ تاپ خاموش می شود. مبدل آردوینو سوخت. تغذیه 19 ولت ایده بدی بود، هرچند نوشته شده که از 6 تا 20 ولت کار می کند، 7-12 ولت توصیه می شود. دیتاشیت ماژول GSM هیچ جایی در مورد مصرف برق تحت بار بیان نمی کند. خب مگا میره انبار لوازم یدکی. با نفس بند آمده لپ تاپ را روشن می کنم که +19 ولت از طریق خط +5 ولت از USB دریافت می کرد. کار می کند و حتی USB هم نسوخت. از لنوو برای محافظت از ما متشکریم.

بعد از سوختن مبدل دنبال مصرف جریان گشتم. بنابراین، اوج - 2A، معمولی - 0.5A. این به وضوح فراتر از توانایی های مبدل آردوینو است. نیاز به غذای جداگانه دارد.

برنامه نويسي
این ماژول قابلیت انتقال داده گسترده ای را ارائه می دهد. شروع از تماس های صوتی و پیامک و پایان دادن به خود GPRS. علاوه بر این، برای دومی امکان اجرا وجود دارد درخواست HTTPبا استفاده از دستورات AT شما باید چندین مورد را ارسال کنید، اما ارزشش را دارد: واقعاً نمی خواهید درخواستی را به صورت دستی ایجاد کنید. چند تفاوت در باز کردن یک کانال انتقال داده از طریق GPRS وجود دارد - کلاسیک AT+CGDCONT=1، "IP"، "apn" را به خاطر دارید؟ بنابراین، در اینجا به همان چیز نیاز است، اما کمی حیله گری بیشتر.

برای دریافت یک صفحه در یک URL خاص، باید دستورات زیر را ارسال کنید:
AT+SAPBR=1,1 // حامل باز (Carrier) AT+SAPBR=3,1,"CONTYPE"، "GPRS" //نوع اتصال - GPRS AT+SAPBR=3،1"APN"،"اینترنت" //APN، برای Megafon - اینترنت AT+HTTPINIT //Initialize HTTP AT+HTTPPARA="CID",1 //شناسه حامل برای استفاده. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //نشانی اینترنتی واقعی، پس از sprintf با مختصات AT+HTTPACTION=0 // درخواست داده با استفاده از روش GET // منتظر پاسخ AT+HTTPTERM //توقف HTTP

در نتیجه در صورت وجود ارتباط، پاسخی از سرور دریافت خواهیم کرد. یعنی در واقع، ما قبلاً می دانیم که چگونه داده مختصات را اگر سرور از طریق GET دریافت کند، ارسال کنیم.

تغذیه
از آنجایی که تغذیه ماژول GSM از مبدل آردوینو، همانطور که متوجه شدم، ایده بدی است، تصمیم گرفته شد که یک مبدل 12v->5v، 3A در همان ebay خریداری شود. با این حال، ماژول منبع تغذیه 5 ولت را دوست ندارد. بیایید هک کنیم: 5 ولت را به پینی که 5 ولت از آردوینو می آید وصل کنید. سپس مبدل داخلی ماژول (بسیار قدرتمندتر از مبدل آردوینو، MIC 29302WU) از 5 ولت آنچه ماژول نیاز دارد را می سازد.

سرور

سرور یک نمونه ابتدایی نوشت - ذخیره مختصات و ترسیم در Yandex.maps. در آینده، امکان افزودن ویژگی‌های مختلفی از جمله پشتیبانی از بسیاری از کاربران، وضعیت «مسلح/غیر مسلح»، وضعیت سیستم‌های خودرو (اشتعال، چراغ‌های جلو و غیره) و احتمالاً حتی کنترل سیستم‌های خودرو وجود دارد. البته با پشتیبانی مناسب از ردیاب که به آرامی به یک سیستم هشدار تمام عیار تبدیل می شود.

تست های میدانی

این چیزی است که دستگاه مونتاژ شده بدون قاب به نظر می رسد:

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

سیم ها را لحیم کردم و چندین کنتاکت از بلوک های آردوینو برداشتم. آنها به این شکل هستند:

من 12 ولت را در ماشین وصل کردم، در اطراف مسکو رانندگی کردم و مسیر را دریافت کردم:


نقاط مسیر بسیار دور از یکدیگر هستند. دلیل آن این است که ارسال اطلاعات از طریق GPRS زمان نسبتاً طولانی دارد و در این مدت مختصات خوانده نمی شود. این به وضوح یک خطای برنامه نویسی است. اولاً با ارسال فوری بسته ای از مختصات در طول زمان و ثانیاً با کار ناهمزمان با ماژول GPRS درمان می شود.

زمان جستجوی ماهواره در صندلی سرنشین خودرو چند دقیقه است.

نتیجه گیری

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

خوب، ما همچنین باید کد را برای یک مسیر صاف تر تصحیح کنیم، اگرچه ردیاب از قبل وظیفه اصلی را انجام می دهد.

دستگاه های مورد استفاده

  • آردوینو مگا 2560
  • آردوینو اونو
  • GPS SkyLab SKM53
  • سپر GSM/GPRS مبتنی بر SIM900
  • مبدل DC-DC 12v->5v 3A

فرستنده GPS شخصی

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

اینگونه بود که دستگاه‌های مبتنی بر فناوری GPS به ابزارهای جیبی رسیدند و محکم در آنجا مستقر شدند و فرصت‌های جدیدی را در اختیار مردم قرار دادند. به ویژه ارزش برجسته کردن فرستنده های GPS فردی را دارد.

در اصل، اینها همان ردیاب های GPS هستند که فقط برای استفاده نه در وسیله نقلیه، بلکه توسط یک فرد در زندگی روزمره طراحی شده اند.

بسته به مدل، چندین دستگاه های مختلف. در ساده ترین شکل آن، به سادگی یک جعبه کوچک بدون نمایشگر است که به شما این امکان را می دهد که حرکات کودکان، حیوانات یا برخی از اشیاء دیگر را کنترل کنید، که روی آن ثابت شده است.

داخل آن قرار دارد ماژول GPS، که مختصات را روی زمین تعیین می کند، یک ماژول GSM/GPRS که اطلاعات را ارسال می کند و دستورات کنترلی را دریافت می کند، و همچنین منبع تغذیه ای که عملکرد مستقل را برای مدت طولانی تضمین می کند.

عملکرد فرستنده های GPS

با افزایش عملکرد، قابلیت های زیر دستگاه ظاهر می شود:


گزینه هایی برای فرستنده های GPS

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

طراحی رنگارنگ نسخه‌های ویژه و افزودنی‌های مفید به کودکان این امکان را می‌دهد که با این دستگاه‌ها نه به عنوان «جاسوس‌های والدین»، بلکه به‌عنوان ابزارهای شیک و کاربردی رفتار کنند.

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

مقالاتی در مورد ردیاب های GPS

در این مقاله نحوه استفاده از ماژول gsm با آردوینو را با استفاده از sim800L به عنوان مثال نشان خواهم داد. دستورالعمل های مشابه برای استفاده از هر ماژول gsm دیگر، به عنوان مثال، sim900 و غیره کاملاً مناسب است، زیرا همه ماژول ها تقریباً به یک شکل کار می کنند - این تبادل دستورات AT از طریق پورت است.

من استفاده از ماژول را با آردوینو با استفاده از مثال یک رله SMS نشان خواهم داد که می توان از آن برای کنترل دستگاه از راه دور از طریق دستورات SMS استفاده کرد. این را می توان همراه با دزدگیر ماشین و غیره استفاده کرد.

این ماژول از طریق رابط UART یک پورت سریال نرم افزاری که روی 2 و 3 پین دیجیتال آردوینو نانو کار می کند به آردوینو متصل می شود.

کار با آردوینو با ماژول های GSM

برای تغذیه ماژول، ولتاژی در محدوده 3.6 ولت تا 4.2 ولت مورد نیاز است، این بدان معنی است که شما باید از تثبیت کننده ولتاژ اضافی استفاده کنید، زیرا آردوینو دارای یک تثبیت کننده 3.3 ولتی است که برای تغذیه ماژول مناسب نیست. ، دومین دلیل برای نصب تثبیت کننده اضافی این است که ماژول GSM بار جدی دارد، زیرا فرستنده ضعیفی دارد که ارائه می کند. اتصال پایداربا یک ایستگاه تلفن همراه برق آردوینو نانو به پین ​​VIN تامین می شود - این یک تثبیت کننده است که در آردوینو تعبیه شده است که تضمین می کند ماژول در محدوده ولتاژ وسیع (6-10 ولت) کار می کند. ماژول رله مطابق متن برنامه داده شده به پایه 10 نانو آردوینو متصل می شود و به راحتی می توان آن را به هر دیگری که به عنوان خروجی دیجیتال کار می کند تغییر داد.

این کار به این صورت است: یک سیم کارت را در ماژول GSM نصب کنید، برق را روشن کنید و یک پیام کوتاه با متن "1" به شماره ارسال کنید. سیم کارت هابرای اینکه رله خود را روشن کنیم، برای خاموش کردن آن پیامکی با متن "0" ارسال می کنیم.

#عبارتند از
SoftwareSerial gprsSerial(2, 3); // پایه های 2 و 3 را برای پورت نرم افزار تنظیم کنید
int LedPin = 10; // برای رله

تنظیم خالی ()
{
gprsSerial.begin(4800);
pinMode (LedPin، OUTPUT)؛

// تنظیم دریافت پیام

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
تاخیر (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
تاخیر (500); // تاخیر برای پردازش فرمان
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
تاخیر(700);
}

String currStr = "";
// اگر این خط یک پیام باشد، متغیر مقدار True را می گیرد
boolean isStringMessage = false;

حلقه خالی()
{
if (!gprsSerial.available())
برگشت؛

char currSymb = gprsSerial.read();
اگر ('\r' == currSymb) (
if (isStringMessage) (
// اگر خط فعلی یک پیام است، پس...
if (!currStr.compareTo("1")) (
digitalWrite (LedPin، HIGH)؛
) else if (!currStr.compareTo("0")) (
digitalWrite (LedPin، LOW)؛
}
isStringMessage = false;
) دیگر (
if (currStr.startsWith("+CMT")) (
// اگر خط فعلی با "+CMT" شروع شود، پیام بعدی
isStringMessage = true;
}
}
currStr = "";
) else if ('\n' != currSymb) (
currStr += رشته (currSymb);
}
}

نسخه ویدیویی مقاله:

برچسب‌ها: آردوینو #SIM800L

علامت شما:

محصولات استفاده شده در این مقاله:

← GPS Logger در آردوینو | کنترل رله از طریق پورت COM →

اسکنر GSM در RTL-SDR

| خانه| انگلیسی | توسعه | سوالات متداول |

ویژگی های اصلی اسکنر

اسکنر GSM کانال های downlink GSM را اسکن می کند و اطلاعات مربوط به قدرت سیگنال و مالکیت کانال یکی از سه اپراتور اصلی را نمایش می دهد. ارتباطات سلولی MTS، Beeline و Megafon. بر اساس نتایج کار خود، اسکنر به شما امکان می دهد لیستی از شناسه ها را ذخیره کنید ایستگاه های پایه MCC، MNC، LAC و CI برای همه کانال های اسکن شده.
یک اسکنر GSM می تواند برای ارزیابی سطح سیگنال GSM و مقایسه کیفیت سیگنال استفاده شود اپراتورهای مختلفارزیابی پوشش رادیویی، هنگام تصمیم گیری در مورد نصب تقویت کننده سیگنال سلولی و تنظیم پارامترهای آنها، برای اهداف آموزشی و غیره.
اسکنر تحت ویندوز اجرا می شود و از یک گیرنده ساده و ارزان استفاده می کند - RTL-SDR. شما می توانید در مورد RTL-SDR در اینجا بخوانید:
RTL-SDR (RTL2832U) و نرم افزار تعریف شده اخبار و پروژه های رادیویی،
RTL-SDR – OsmoSDR،
RTL-SDR در روسی.
پارامترهای RTL-SDR مشخصه های اصلی اسکنر را تعیین می کنند. البته اسکنر GSM جایگزینی برای تجهیزات اندازه گیری معمولی نیست.
اسکنر به صورت رایگان و بدون هیچ گونه محدودیتی در استفاده توزیع می شود.
نسخه فعلیاز باند GSM 900 پشتیبانی می کند و از GSM 1800 پشتیبانی نمی کند. این با این واقعیت مشخص می شود که فرکانس کاری RTL-SDR با تیونر R820T به 1760 مگاهرتز محدود شده است. این امید وجود دارد که استفاده از درایور آزمایشی RTL-SDR امکان عملکرد حداقل در محدوده 1800 مگاهرتز را فراهم کند.

راه اندازی اسکنر

آخرین نسخه اسکنر را می توانید از این لینک دانلود کنید. فقط فایل را در یک مکان مناسب از حالت فشرده خارج کرده و gsmscan.exe را اجرا کنید.
نسخه های قبلیاسکنر، پیوندی به مخزن با منابع و سایر اطلاعات مربوط به توسعه در صفحه توسعه وجود دارد.
برای کارکرد اسکنر، نصب درایورهای RTL-SDR مورد نیاز است؛ اگر قبلاً نصب نشده‌اند، می‌توان این کار را به راحتی با استفاده از برنامه Zadig برای توصیف مراحل نصب انجام داد.

با استفاده از اسکنر

در زیر نمایی از پنجره برنامه اسکنر را مشاهده می کنید:

محور افقی شماره کانال GSM را به صورت ARFCN یا بر حسب مگاهرتز نشان می دهد و محور عمودی سطح سیگنال را بر حسب dBm نشان می دهد. ارتفاع خط قدرت سیگنال را نشان می دهد.

ارتباط ماژول GSM NEOWAY M590 با آردوینو

اگر شناسه‌های BS با موفقیت رمزگشایی شده باشند و با شناسه‌های سه اپراتور اصلی مخابراتی مطابقت داشته باشند، خطوط به رنگ‌های مربوطه رنگ می‌شوند.
لیست های کشویی در بالای صفحه به شما امکان می دهد یک گیرنده SDR را انتخاب کنید، در صورتی که چندین گیرنده وصل شده باشند، محدوده کار جی اس ام 900 یا GSM 1800 و واحدهای محور افقی ARFCN یا MHz.
دکمه ها به شما امکان می دهند گزارشی از عملکرد اسکنر را در قالب لیستی از ایستگاه های پایه رمزگشایی شده ذخیره کنید، نتایج رمزگشایی BS را پاک کنید و اطلاعاتی در مورد برنامه به دست آورید.

اصول و ویژگی های کار.

در حین کار، برنامه محدوده فرکانس کاری را با یک مرحله 2.0 مگاهرتز (10 کانال GSM) اسکن می کند و سیگنال را با فرکانس نمونه برداری 2.4 مگاهرتز دیجیتالی می کند. فرآیند اسکن شامل یک عبور سریع از کل محدوده برای اندازه گیری قدرت سیگنال و یک گذر آهسته برای رمزگشایی شناسه های BS است.

یک مرحله رمزگشایی پس از پیمایش کل محدوده برای اندازه گیری توان انجام می شود. بنابراین، در محدوده GSM 900، سطح سیگنال تقریباً هر 2 ثانیه یک بار به روز می شود و یک رمزگشایی کامل حدود 1 دقیقه طول می کشد.
به دلیل کیفیت پایین سیگنال دریافتی از RTL-SDR، احتمال رمزگشایی صحیح اطلاعات سیستم (SI) کانال کنترل پخش BS (BCCH) زیاد نیست. نوسانات سطح سیگنال در نتیجه انتشار چند مسیری نیز احتمال رمزگشایی اطلاعات سیستم را کاهش می دهد. به این دلایل، برای به دست آوردن شناسه های BS، لازم است اسکنر اطلاعات را در مدت زمان حدود 10 دقیقه جمع آوری کند. اما حتی در این مورد، همه کانال ها ارائه نمی دهند این مکانسطح سیگنال و کیفیت کافی برای رمزگشایی حتی توسط ایده آل ترین گیرنده. علاوه بر این، همه کانال های GSM برای کار کردن استفاده نمی شوند استاندارد GSMهمانطور که در شکل بالا مشاهده می شود، کانال های 975 - 1000 توسط مگافون اشغال شده اند تا روی آنها کار کنند. استاندارد UMTS.
در حین کار، اسکنر اطلاعات سیستم در مورد کانال های رمزگشایی شده جدید را به مجموعه اطلاعات کلی کانال ها اضافه می کند. اما زمانی که اطلاعات سیستم در این مرحله رمزگشایی نشده باشد، اطلاعات مربوط به کانال های رمزگشایی شده قبلی پاک نمی شود و در آرایه باقی می ماند. برای پاک کردن این اطلاعات، از دکمه پاک کردن نتایج رمزگشایی BS استفاده کنید.
وقتی روی دکمه ذخیره گزارش کلیک می کنید، نتایج انباشته شده در آن ذخیره می شود فایل متنیبا نامی که از نام برنامه تشکیل شده است، تاریخ و زمان ذخیره داده ها. در زیر نمونه ای از بخشی از فایل گزارش آورده شده است:
این اسکنر برای کار در ویندوزهای 7، 8.1 و 10 طراحی شده است. این کار با سه نسخه از RTL-SDR با تیونر R820T آزمایش شد؛ انواع دیگر تیونرها آزمایش نشدند.
نسخه ویژه ای از برنامه برای کار در ویندوز XP کامپایل شده است؛ این برنامه چندین برابر کندتر از نسخه استاندارد اجرا می شود.

توسعه.

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

پس از چندین آزمایش با آردوینو، تصمیم گرفتم یک ردیاب GPS ساده و نه چندان گران قیمت با مختصات ارسال شده از طریق GPRS به سرور بسازم.
Arduino Mega 2560 (Arduino Uno)، SIM900 - ماژول GSM/GPRS (برای ارسال اطلاعات به سرور)، گیرنده GPS SKM53 GPS.

همه چیز در ebay.com خریداری شد، در مجموع حدود 1500 روبل (حدود 500 روبل برای آردوینو، کمی کمتر برای ماژول GSM، کمی بیشتر برای GPS).

گیرنده جی پی اس

ابتدا باید نحوه کار با GPS را بدانید. ماژول انتخاب شده یکی از ارزان ترین و ساده ترین است. با این حال، سازنده قول باتری برای ذخیره داده های ماهواره ای را داده است. طبق دیتاشیت، شروع سرد باید 36 ثانیه طول بکشد، اما در شرایط من (طبقه 10 از طاقچه، بدون ساختمان نزدیک) 20 دقیقه طول کشید. با این حال، شروع بعدی در حال حاضر 2 دقیقه است.

یکی از پارامترهای مهم دستگاه های متصل به آردوینو مصرف برق است. اگر مبدل آردوینو را بیش از حد بارگذاری کنید، ممکن است بسوزد. برای گیرنده استفاده شده، حداکثر توان مصرفی 45 میلی آمپر @ 3.3 ولت است. اینکه چرا مشخصات باید قدرت جریان را در ولتاژی غیر از ولتاژ مورد نیاز (5 ولت) نشان دهد برای من یک راز است. با این حال، مبدل آردوینو 45 میلی آمپر را تحمل خواهد کرد.

ارتباط

GPS کنترل نمی شود، اگرچه دارای پین RX است. برای چه هدفی مشخص نیست. اصلی ترین کاری که می توانید با این گیرنده انجام دهید خواندن داده ها از طریق پروتکل NMEA از پین TX است. سطوح - 5 ولت، فقط برای آردوینو، سرعت - 9600 باد. VIN را به VCC آردوینو، GND را به GND، TX را به RX سریال مربوطه وصل می کنم. من داده ها را ابتدا به صورت دستی خواندم، سپس با استفاده از کتابخانه TinyGPS. با کمال تعجب همه چیز قابل خواندن است. پس از تغییر به Uno، مجبور شدم از SoftwareSerial استفاده کنم و سپس مشکلات شروع شد - برخی از کاراکترهای پیام گم شدند. این خیلی مهم نیست، زیرا TinyGPS پیام های نامعتبر را قطع می کند، اما بسیار ناخوشایند است: می توانید فرکانس 1 هرتز را فراموش کنید.

نکته ای کوتاه در مورد SoftwareSerial: هیچ پورت سخت افزاری در Uno وجود ندارد، بنابراین باید از نرم افزار استفاده کنید. بنابراین، فقط می تواند داده ها را روی پینی دریافت کند که برد روی آن وقفه ها را پشتیبانی می کند. در مورد Uno، اینها 2 و 3 هستند. علاوه بر این، تنها یک چنین پورت می تواند در یک زمان داده را دریافت کند.

این همان چیزی است که "پایگاه آزمون" به نظر می رسد.


گیرنده/فرستنده GSM


حالا قسمت جالب تر می آید. ماژول GSM - SIM900. از GSM و GPRS پشتیبانی می کند. نه EDGE و نه به خصوص 3G پشتیبانی نمی شوند. برای انتقال داده های مختصات، این احتمالاً خوب است - هیچ تأخیر یا مشکلی در هنگام جابجایی بین حالت ها وجود نخواهد داشت، به علاوه GPRS اکنون تقریباً در همه جا در دسترس است. با این حال، برای برخی از برنامه های پیچیده تر این ممکن است کافی نباشد.

ارتباط

ماژول همچنین از طریق پورت سریال با همان سطح - 5 ولت کنترل می شود. و در اینجا ما به هر دو RX و TX نیاز خواهیم داشت. ماژول شیلد است، یعنی روی آردوینو نصب شده است. علاوه بر این، آن را با هر دو mega و uno سازگار است. سرعت پیش فرض 115200 است.

ما آن را روی مگا مونتاژ می کنیم و اینجا اولین سورپرایز ناخوشایند در انتظار ما است: پین TX ماژول روی پایه هفتم مگا می افتد. وقفه در پایه هفتم مگا موجود نیست، به این معنی که شما باید پایه هفتم را مثلاً به پایه ششم متصل کنید، که در آن وقفه ممکن است. بنابراین، یک پین آردوینو را هدر خواهیم داد. خوب، برای یک مگا خیلی ترسناک نیست - از این گذشته، پین های کافی وجود دارد. اما برای Uno این در حال حاضر پیچیده تر است (به شما یادآوری می کنم که فقط 2 پین وجود دارد که از وقفه ها پشتیبانی می کند - 2 و 3). به عنوان راه حلی برای حل این مشکل می توان پیشنهاد داد که ماژول را روی آردوینو نصب نکنید، بلکه آن را با سیم وصل کنید. سپس می توانید از Serial1 استفاده کنید.

پس از اتصال، سعی می کنیم با ماژول "صحبت کنیم" (فراموش نکنید آن را روشن کنید). ما سرعت پورت را انتخاب می کنیم - 115200، و خوب است که تمام پورت های سریال داخلی (4 در مگا، 1 در uno) و همه پورت های نرم افزار با سرعت یکسان کار کنند. به این ترتیب می توانید به انتقال داده با ثبات تری دست پیدا کنید. نمی دانم چرا، اگرچه می توانم حدس بزنم.

بنابراین، ما کدهای اولیه را برای ارسال اطلاعات بین پورت های سریال می نویسیم، Atz را ارسال می کنیم و سکوت را در پاسخ دریافت می کنیم. چه اتفاقی افتاده است؟ آه، به حروف کوچک و بزرگ حساس است. ATZ، ما خوب می شویم. هورای، ماژول می تواند صدای ما را بشنود. آیا باید از روی کنجکاوی با ما تماس بگیرید؟ ATD +7499 ... تلفن ثابت زنگ می زند، دود از آردوینو می آید، لپ تاپ خاموش می شود. مبدل آردوینو سوخت. تغذیه 19 ولت ایده بدی بود، هرچند نوشته شده که از 6 تا 20 ولت کار می کند، 7-12 ولت توصیه می شود. دیتاشیت ماژول GSM هیچ جایی در مورد مصرف برق تحت بار بیان نمی کند. خب مگا میره انبار لوازم یدکی. با نفس بند آمده لپ تاپ را روشن می کنم که +19 ولت از طریق خط +5 ولت از USB دریافت می کرد. کار می کند و حتی USB هم نسوخت. از لنوو برای محافظت از ما متشکریم.


بعد از سوختن مبدل دنبال مصرف جریان گشتم. بنابراین، اوج - 2A، معمولی - 0.5A. این به وضوح فراتر از توانایی های مبدل آردوینو است. نیاز به غذای جداگانه دارد.

برنامه نويسي

این ماژول قابلیت انتقال داده گسترده ای را ارائه می دهد. شروع از تماس های صوتی و پیامک و پایان دادن به خود GPRS. علاوه بر این، برای دومی امکان اجرای یک درخواست HTTP با استفاده از دستورات AT وجود دارد. شما باید چندین مورد را ارسال کنید، اما ارزشش را دارد: واقعاً نمی خواهید درخواستی را به صورت دستی ایجاد کنید. چند تفاوت در باز کردن یک کانال انتقال داده از طریق GPRS وجود دارد - کلاسیک AT+CGDCONT=1، "IP"، "apn" را به خاطر دارید؟ بنابراین، در اینجا به همان چیز نیاز است، اما کمی حیله گری بیشتر.

برای دریافت یک صفحه در یک URL خاص، باید دستورات زیر را ارسال کنید:

AT+SAPBR=1,1 // حامل باز (Carrier) AT+SAPBR=3,1,"CONTYPE"، "GPRS" //نوع اتصال - GPRS AT+SAPBR=3،1"APN"،"اینترنت" //APN، برای Megafon - اینترنت AT+HTTPINIT //Initialize HTTP AT+HTTPPARA="CID",1 //شناسه حامل برای استفاده. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //نشانی اینترنتی واقعی، پس از sprintf با مختصات AT+HTTPACTION=0 // درخواست داده با استفاده از روش GET // منتظر پاسخ AT+HTTPTERM //توقف HTTP

در نتیجه در صورت وجود ارتباط، پاسخی از سرور دریافت خواهیم کرد. یعنی در واقع، ما قبلاً می دانیم که چگونه داده مختصات را اگر سرور از طریق GET دریافت کند، ارسال کنیم.

تغذیه

از آنجایی که تغذیه ماژول GSM از مبدل آردوینو، همانطور که متوجه شدم، ایده بدی است، تصمیم گرفته شد که یک مبدل 12v->5v، 3A در همان ebay خریداری شود. با این حال، ماژول منبع تغذیه 5 ولت را دوست ندارد. بیایید هک کنیم: 5 ولت را به پینی که 5 ولت از آردوینو می آید وصل کنید. سپس مبدل داخلی ماژول (بسیار قدرتمندتر از مبدل آردوینو، MIC 29302WU) از 5 ولت آنچه ماژول نیاز دارد را می سازد.

سرور

سرور یک نمونه ابتدایی نوشت - ذخیره مختصات و ترسیم در Yandex.maps. در آینده، امکان افزودن ویژگی‌های مختلفی از جمله پشتیبانی از بسیاری از کاربران، وضعیت «مسلح/غیر مسلح»، وضعیت سیستم‌های خودرو (اشتعال، چراغ‌های جلو و غیره) و احتمالاً حتی کنترل سیستم‌های خودرو وجود دارد. البته با پشتیبانی مناسب از ردیاب که به آرامی به یک سیستم هشدار تمام عیار تبدیل می شود.

تست های میدانی

این چیزی است که دستگاه مونتاژ شده بدون قاب به نظر می رسد:


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

سیم ها را لحیم کردم و چندین کنتاکت از بلوک های آردوینو برداشتم. آنها به این شکل هستند:

من 12 ولت را در ماشین وصل کردم، در اطراف مسکو رانندگی کردم و مسیر را دریافت کردم:


معلوم می شود که مسیر پاره شده است. دلیل آن این است که ارسال اطلاعات از طریق GPRS زمان نسبتاً طولانی دارد و در این مدت مختصات خوانده نمی شود. این به وضوح یک خطای برنامه نویسی است. اولاً با ارسال فوری بسته ای از مختصات در طول زمان و ثانیاً با کار ناهمزمان با ماژول GPRS درمان می شود.

نمودار پروژه:

سلام دوستان، ما تعداد زیادی فضاپیمای مختلف بالای سرمان داریم. در میان آنها تقریباً 90 ماهواره ناوبری بسیار مفید از سیستم GPS آمریکایی، GLONASS روسی، Galileo اروپایی و BeiDou چینی وجود دارد. و امروز سیگنالی از آنها خواهیم گرفت.

اول، یک نظریه کوچک: یک سیستم ناوبری ماهواره ای شبکه ای از فضاپیماها است که در امتداد مسیرهای شناخته شده قبلی پرواز می کنند، مدار و مسیر حرکت خود را به دقت مشاهده می کنند، یا در یک نقطه ثابت شناخته شده در یک مدار زمین ثابت یا ژئوسنکرون قرار دارند. ماهواره ها به طور متوسط ​​در ارتفاع حدود 20 هزار کیلومتری پرواز می کنند و هر کدام یک ساعت اتمی بسیار دقیق هستند که به طور مداوم زمان خود را به کل سیاره پخش می کنند. زمان فعلی.

یک سیگنال رادیویی که با سرعت نور منتشر می شود با تاخیر 60 تا 90 میلی ثانیه به زمین می رسد، این بستگی به فاصله ماهواره دارد. با دانستن محل دقیق منبع سیگنال رادیویی با تأخیر زمانی انتشار آن، می توانید از فاصله دقیق تا ماهواره مطلع شوید. و سپس، با مثلث کردن فواصل تا چندین جرم شناخته شده، می توانید بفهمید در کجای فضا هستید.

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

اندازه گیری فاصله تا هر ماهواره بعدی دقت موقعیت یابی را افزایش می دهد و امروزه بین 1 تا 3 متر با دید استاندارد حدود 10 ماهواره ناوبری متغیر است.

ما تئوری را مرتب کردیم، بیایید به سمت عمل برویم. امروزه ماژول های ناوبری مختلف به طور جداگانه فروخته می شوند. ساده‌ترین و قدیمی‌ترین آن‌ها فقط سیگنال‌های سیستم رصد GPS آمریکا را پشتیبانی می‌کنند، به طور متوسط ​​5-7 ماهواره. ماژول های پیشرفته تر همچنین می توانند سیگنال هایی را از صورت فلکی گلوناس روسیه دریافت کنند و تعداد کل ماهواره های مشاهده شده را به طور متوسط ​​دو برابر افزایش دهند. همچنین ماژول هایی در فروش وجود دارد که با قطب نما ترکیب شده اند؛ آنها برای ناوبری دقیق و نگهداری دوره استفاده می شوند.

ماهواره های سیستم های ناوبری مختلف روی صفحه گوشی من قابل مشاهده است. دایره ها GPS، مثلث ها GLONASS و ستاره ها BeiDou چینی هستند. بنابراین گوشی من از سه مختلف پشتیبانی می کند سیستم های ناوبریو ترکیب سیگنال های آنها، دقت تعیین مکان را افزایش می دهد. الان 28 ماهواره بالای سر من هست و سیگنال فقط از 7 تا در دسترس است. یعنی. تلفن من از قبل می داند هر ماهواره کجاست. و سیگنال گم شده از 21 ماهواره به این معنی است که آنها از خط دید خارج هستند. سیگنال ناوبری بسیار ضعیف است، از کلمه VASCHE، تقریباً منعکس نمی شود، توسط زمین، ساختمان ها، سقف اتومبیل مسدود شده است - هر فلزی بالای سر شما یا در کناره. حتی برفی که بیرون از پنجره می‌بارد، در پذیرش خوب اختلال ایجاد می‌کند.

برای اجرای پروژه، به تعدادی ماژول الکترونیکی نیاز دارید: یک پلت فرم قابل برنامه ریزی Arduino Nano، یک صفحه نمایش OLED 128 در 32 نقطه (از طریق اتوبوس I2C متصل می شود)، یک ماژول GPS برای اتصال از طریق UART، هر باتری لیتیومیبا ظرفیت بالای 200 میلی آمپر، ماژول شارژ محافظ لیتیوم و مبدل تقویت کننده برای دریافت ولتاژ 5 ولت. من در اینجا سه ​​نوع مختلف دارم، هر کسی این کار را انجام خواهد داد. من همچنین قصد داشتم از یک LED رنگی RGB برای نشان دادن وضعیت استفاده کنم، اما با پیشرفت پروژه این کار را رها کردم.

صفحه را به آردوینو وصل می کنیم و با اولین مشکل مواجه می شویم. کتابخانه استانداردصفحه نمایش OLED 20 کیلوبایت اشغال می کند که 70 درصد از حافظه میکروکنترلر را تشکیل می دهد و عملاً فضایی برای برنامه باقی نمی گذارد. قبلاً در حال مونتاژ ارتفاع سنج بودم و با این واقعیت روبرو شدم که هر خط کد جدیدی منجر به سرریز حافظه می شود و میکروکنترلر در حین کار منجمد می شود. بنابراین، من بسیار بیشتر استفاده خواهم کرد کتابخانه نور. با گرافیک کار نمی کند و فقط متن را روی صفحه OLED نمایش می دهد و تنها 1 کیلوبایت حافظه را اشغال می کند.

من به طور جداگانه ماژول GPS را به تخته نان وصل می کنم و اولین داده های ناوبری را می بینم - سیگنالی از فضا گرفته شده و پردازش شده است. اکنون اطلاعات را روی صفحه نمایش می دهم. کلاس! 4 ماهواره می بیند، اکنون 3، و دوباره 4، در حال حاضر 5! برای دریافت بهتر GPS، ماژول خارج از پنجره روی یک سیم آویزان می شود.

در طول توسعه پروژه من از ماژول های GPS استفاده کردم انواع متفاوت. GPS ساده و GPS ترکیبی با Glonass. ما مجبور شدیم یک سری آزمایش های چند ساعته را برای بررسی پایداری عملیات انجام دهیم. معلوم شد که ماژول ها کار می کنند، اما با کتابخانه های نرم افزاریمجبور شدم سرهم کنم چندین مورد را امتحان کرد کتابخانه های مختلفو TinyGPS+ تنها موردی بود که با همه ماژول های GPS به طور همزمان کار می کرد.

به طور کلی، کتابخانه پروتکل NMEA را تجزیه می کند؛ به سادگی داده هایی را که ماژول GPS دو بار در ثانیه می ریزد، تجزیه می کند. این همان چیزی است که یک جریان داده پردازش نشده به نظر می رسد.

در نتیجه، سیستم عامل من به شما امکان می دهد تقریباً هر ماژول GPS را از طریق UART با پروتکل انتقال داده NMEA متصل کنید. در واقع، اینها اکثر ماژول هایی هستند که دارای پین های RX و TX هستند. توصیه میکنم ماژول جی پی اس رو از گلوناس بگیرید، ماهواره های بیشتری میبینه پس دقتش بالاتره. لینک تمامی کامپوننت ها و ماژول ها در توضیحات این ویدیو می باشد.

برد برد عملکرد کامل سیستم را نشان داد، اکنون می توانید همه چیز را در سخت افزار جمع آوری کنید. من از باتری لیتیومی به عنوان برق استفاده خواهم کرد؛ با شارژ به برد محافظ وصل خواهد شد. در این برد، مقاومت پایین R3 جریان شارژ باتری را تنظیم می کند، پیش فرض 1 آمپر است، این مقدار برای باتری های کوچک زیاد است، بنابراین مقاومت باید تعویض شود. در صفحه نمایش صفحه ای با مقادیر مقاومت برای جریان های شارژ مختلف مشاهده می کنید. اگر باتری شما 500 میلی آمپر ساعت ظرفیت دارد، باید جریان شارژ را بالاتر از این مقدار تنظیم نکنید. آن ها می توانید 200 یا 300 میلی آمپر تنظیم کنید و از 500 تجاوز نکنید.

در مرحله بعد، ولتاژ باید افزایش یابد؛ صفحه نمایش و ماژول GPS با ولتاژ 5 ولت تغذیه می شوند. ما این کار را با استفاده از مبدل ولتاژ تقویتی انجام خواهیم داد. اینها معمولاً در پاوربانک ها نصب می شوند تا ولتاژ را از 3.7 به 5 ولت افزایش دهند. من از ماژول سبز کوچک استفاده خواهم کرد، می تواند تا 300 میلی آمپر خروجی داشته باشد و برای این پروژه بیش از اندازه کافی است.

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

اندازه همه ماژول‌ها را اندازه‌گیری می‌کنم و سعی می‌کنم تا حد امکان آنها را فشرده مرتب کنم. اما هر چقدر تلاش کردم، صفحه نازک با صفحه عریض جور در نمی آمد. گیرنده جی پی اساهم بنابراین، تصمیم گرفتم صفحه نمایش را با یک پیکسل OLED 128x64 دیگر جایگزین کنم. این باعث ارگونومیک تر شدن آن می شود و امکان دکمه بزرگتر را فراهم می کند. صفحه نمایش های OLED کاملاً سازگار هستند و به حداقل تصحیح کد نیاز دارند، بنابراین سیستم عامل برای هر دو نسخه دستگاه با صفحه نمایش کوچک و بزرگ در دسترس خواهد بود.

نمودار مونتاژ ساده است. شما باید صفحه را به گذرگاه I2C وصل کنید، اینها پین های A4 و A5 هستند، ماژول gps به پورت سریال نرم افزار روی پین های D3 و D4 متصل است. دکمه روی پایه D7. برق باتری از طریق ماژول محافظآن را به سوییچ بکشید، سپس به مبدل تقویت کننده، و آردوینو را به 5 ولت وصل کنید.

برای قرار دادن راحت اجزا از تخته نان سبز رنگ 7 در 3 سانتی متر استفاده می کنم. برای جلوگیری از آویزان شدن صفحه نمایش روی کانکتور آن را روی پایه های پلاستیکی با اسپیسرهای 5 میلی متری نصب می کنم. بین صفحه نمایش و دکمه یک گیرنده GPS وجود خواهد داشت. در پشت برد یک کنترلر آردوینو، یک باتری و یک برد محافظ وجود خواهد داشت. باتری از لیتیوم نازک 350 میلی آمپر استفاده می کند، اگر اشتباه نکنم در سیگارهای الکترونیکی استفاده می شود، اما همانطور که گفتم می توانید از هر باتری لیتیومی استفاده کنید.

همه چیز را دوباره اندازه می‌گیرم، اندازه می‌گیرم و طرحی برای محفظه برای چاپ روی چاپگر سه بعدی آماده می‌کنم. به معنای واقعی کلمه 15 دقیقه در وب سایت TinkerCAD و پروژه آماده چاپ است. من فایل را به فلش درایو منتقل می کنم، آن را راه اندازی می کنم و می رویم. زمان چاپ حدود 40 دقیقه است، این اولین بدنه مشاهده برای آزمایش قرار دادن ماژول ها است.

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

لبه ثابت پلاستیک را جدا می کنم و تمیز می کنم. از آنجایی که من از پلاستیک ABS استفاده کردم، در معرض پس پردازش با استون است. من آن را با یک برس اعمال می کنم، لایه ها علاوه بر این به هم می چسبند، و بدن قوی تر می شود و براق می شود.

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

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

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

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

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

هنگام اتصال حتما به رنگ سیم ها توجه کنید. رنگ های نادرست گاهی از چین می آیند. در این مورد، من تصمیم گرفتم کانکتور را جدا کنم و سیم ها را مستقیماً لحیم کنم تماس بهتر. این روش پیچیده است و به دقت و مراقبت در هنگام لحیم کاری نیاز دارد. علاوه بر این، من تماس ها را با چسب حرارتی پر می کنم، این کار باعث می شود که مسیرها و سیم از بیرون کشیدن تصادفی محافظت شود. و ما بلافاصله کل ماژول GPS را در انقباض حرارتی قرار می دهیم؛ این لازم نیست، اما علاوه بر این از آن محافظت می کند آسیب مکانیکیو اتصال کوتاه در هنگام نصب بر روی تخته نان.

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

به هر حال من یک دریل شارژی خنک را توصیه می کنم. با یک باتری 18650 کار می کند و به شما امکان می دهد به سرعت سوراخ های مشابهی را روی بردها و کیس ها سوراخ کنید. قبلاً برای چنین کاری باید Dremel را از کیس بیرون می آوردم و به پریز برق وصل می کردم اما اکنون همیشه این را دارم. مته در دست

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

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

ما مونتاژ را طبق طرح انجام می دهیم ، در اینجا هیچ مشکل یا تفاوت ظریفی وجود ندارد. فقط به اضافه به مثبت، منهای به منفی توجه کنید. سوئیچ را مستقیماً به خروجی ماژول شارژ وصل می کنیم. این کار کل مدار برق را خاموش می کند و از تخلیه باتری جلوگیری می کند.

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

ماژول محافظ را لحیم می کنم و با چسب حرارتی در جای خود محکم می کنم.

کنتاکت های باتری را گود می زنم و سیم را سریع به آنها لحیم می کنم تا باتری بیش از حد داغ نشود. از یک طرف و از طرف دیگر. پس از این باید وصل شوید میکرو USBکابل و منبع تغذیه ماژول محافظ، این کار باعث فعال شدن عملکرد آن می شود.

تمام شد، اکنون باید سیستم عامل را آپلود کنید. ما آردوینو را به کامپیوتر وصل می کنیم، به صفحه پروژه می رویم، لینک آن در توضیحات ویدیو است. بایگانی را دانلود کنید، فایل ها را باز کنید، کتابخانه ها را نصب کنید، نسخه سیستم عامل مورد نیاز را برای صفحه 32 یا 64 نقطه ای باز کنید و آن را در کنترلر بارگذاری کنید. همه چیز برای اولین بار کار کرد! داده ها از میله GPS. سرد!

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

در ابتدا فکر کردم مبدل برق کوچک مقصر است. اما بررسی با مولتی متر 5 ولت ثابت را نشان داد. بعد، من یک ماژول برق مستقل را که از پروژه دیگری باقی مانده بود وصل کردم، روی یک مبدل تقویت کننده بزرگ ساخته شده است - و ببینید، ردیاب راه اندازی شد، اما پس از چند ثانیه منجمد شد.

باتری آن را شارژ کردم و ردیاب را روی پنجره گذاشتم تا ماهواره ها را بگیرم. سه دقیقه بعد از 4 ماهواره سیگنال گرفت و مکان را مشخص کرد. خوب، یعنی کار می کند و احتمالاً می توان آن را مونتاژ کرد؟ مبدل بوست را عوض می کنیم، ظاهراً کوچک از منبع تغذیه صدای زیادی می دهد.

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

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

من سعی کردم خازن ها را روی منبع تغذیه نصب کنم - هیچ کمکی نکرد. ردیاب از کار مستقل خودداری کرد، هم از مبدل های تقویت کننده و هم از منبع تغذیه آزمایشگاهی - یخ زد یا اصلاً روشن نشد. اما در عین حال از کانکتور USB آردوینو کاملاً کار می کرد.

با استفاده از روش خاموش کردن متوالی، توانستم متوجه شوم که صفحه OLED مقصر این موضوع است - اما هنوز دلیل آن را نمی‌دانم. راه حل به طور ناگهانی پیدا شد. در بررسی بعدی منبع تغذیه مستقل، من به طور تصادفی 5 ولت را به پین ​​VIN اعمال کردم. من توجه داشته باشید که این پین! نه! برای تامین برق 5 ولت طراحی شده و به ولتاژ 7 تا 12 ولت نیاز دارد.

اما با این وجود، ردیاب بلافاصله شروع به کار کرد و به طور پایدار شروع به کار کرد. آن ها معلوم شد که تثبیت کننده کوچک منشا مشکل نبوده، چیز دیگری بوده است.

در همان زمان تصمیم گرفتم مصرف فعلی را بررسی کنم. ردیاب از 5 ولت حدود 70 میلی آمپر مصرف می کرد. و از 4 ولت از طریق یک مبدل تقویت کننده معلوم شد که حدود 110 میلی آمپر است. بنابراین باتری کوچک 350 میلی آمپری من سه ساعت دوام می آورد عمر باتری. و من هنوز منبع تغذیه را بهینه نکرده‌ام، می‌توانید LED‌هایی را که همیشه روشن هستند قطع کنید و همچنان باتری را ذخیره کنید.

ردیاب کاملاً ثابت شروع به کار کرد، آن را روی پنجره گذاشتم و بعد از چند دقیقه 4 ماهواره را گرفت. عالی

اگر می خواهید به من کمک کنید تا دلیل رفتار عجیب آردوینو را بفهمم، در اینجا یک مقدمه است:

1 – اگر ردیاب از طریق کانکتور USB آردوینو تغذیه شود کار می کند.

2 – اگر ردیاب را از طریق پین 5 ولت آردوینو با اعمال 5 ولت از هر منبع برقی به آن تغذیه کنید، یخ می زند و روشن نمی شود.

3 – اگر 7 ولت یا بیشتر از طریق پین Arduino VIN به آن وارد شود، ردیاب یخ می زند و روشن نمی شود.

4- ردیاب در صورتی کار می کند که با ولتاژ غیر استاندارد 5 ولت از طریق همان پین VIN تغذیه شود.

دستگاه تمام شده یک سرعت سنج خودکار جهانی، مسافت یاب، کیلومتر شمار و ساعت دقیق زمان ماهواره ای در یک محفظه است.

در صفحه اصلی پس از بارگذاری، زمان و تاریخ جاری در گرینویچ در بالا نمایش داده می شود، خط دوم سرعت فعلی 0.3 کیلومتر در ساعت و حداکثر مقدار سرعت ثبت شده از زمان روشن شدن - 26 است. کیلومتربرساعت. در خط سوم فاصله فعلی تا نقطه صفر 530 متر و حداکثر فاصله ای که از زمان روشن شدن به دست آمده است 580 متر است. در خط چهارم کیلومتر شمار 923 متر و تعداد ماهواره های استفاده شده را نشان می دهد.

کاراکترهای خط پایین مقدار داده دریافتی از ماژول GPS است.

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

با فشار دادن طولانی دکمه روی صفحه با این پارامترها می توانید کیلومترشمار و مقادیر حداکثر را تنظیم مجدد کنید. آن ها به صفحه کیلومترشمار بروید و دکمه فشار داده شده را برای تنظیم مجدد آن نگه دارید.

بیایید به سراغ آزمایش برویم. اکنون ردیاب 12 ماهواره را می بیند. نقطه صفر فعلی را تنظیم کردم و کیلومتر شمار را صفر کردم. من همین کار را روی کیلومتر شمار ماشین انجام می دهم. من که 1.2 کیلومتر را طبق سرعت سنج ماشین طی کردم، همان 1205 متر را روی ردیاب GPS دیدم. فاصله فعلی تا نقطه صفر در یک خط مستقیم 0.93 کیلومتر است. و طبق نقشه همون 930 متر تا اینجا همه چیز دقیق است.

تصمیم گرفتم مسافت بیشتری را اندازه گیری کنم. دوباره خوانش ها را روی ردیاب و ماشین صفر کردم. پس از طی 8.4 کیلومتر، در ردیاب متوجه شدم که این فاصله کوتاهتر است - فقط 7974 متر. در این حالت فاصله فعلی تا نقطه صفر 4930 متر است. روی نقشه چک کنیم خیلی دقیق معلوم میشه همون 4930 متر. مشخص نیست، اما چرا کیلومترشمار در 400 متری قرار دارد و کدام کیلومترشمار روی ماشین یا GPS قرار دارد.

خوب، زمان چاپ فرا رسیده است جلد پشتیو دوباره تست خواهیم کرد دارم میبندم وزن دستگاه تمام شده 55 گرم است، بسیار زیاد، اما مهم نیست - در پایان به شما نشان خواهم داد که چگونه آن را کاهش دهید.

به پیست اسکیت رسیدم و تصمیم گرفتم سرعت بازیکن هاکی را اندازه بگیرم. لعنتی، او هنوز برای سرعت بخشیدن به درپوش ها نیاز دارد. نتیجه یک سرعت شدید، مانند یک "موشک روسی" - 5 کیلومتر در ساعت بود. من راه می رفتم و همه اینها به این دلیل است که سقف پیست اسکیت با فویل انعکاسی عایق شده است تا از سرما جلوگیری کند. سیگنالی از ماهواره ها وجود دارد، اما دقیق نیست.

بیایید آخرین آزمایش را با تلفن همراه. گوشی 7 ماهواره می بیند و ردیاب 9 تا. خب... بریم. پس از سه کیلومتر رانندگی، تلفن و ردیاب مقادیر یکسانی را روی کیلومتر شمار نشان دادند. 3017 در مقابل 3021 متر یک نتیجه فوق العاده است، من انتظار چنین دقتی را نداشتم.

اما کیلومترشمار به اندازه 12 هزار کیلومتر مشکل داشت. ترش نیست قبلاً هنگام اشکال زدایی یک برنامه ، قبلاً با چنین نقصی روبرو شده بودم و ردیاب بلافاصله 7 هزار کیلومتر جابجا شد. وقتی به خانه رسیدم، یک نقطه در گوگل با طول و عرض جغرافیایی صفر ایجاد کردم. معلوم شد که در اقیانوس اطلس، نه چندان دور از ساحل غنا واقع شده است. با اندازه‌گیری فاصله آن تا مکانم، همان 7 هزار کیلومتر را گرفتم. معلوم می شود که ماژول GPS گاهی اوقات از صفرها در امتداد مختصات می گذرد. این را می توان به راحتی با اضافه کردن یک شرط به کد برنامه برطرف کرد. و این اشکال در طول آزمایش مشاهده نشد.

فکر می‌کنم ردیاب فوق‌العاده بود؛ این اولین تجربه من از کار مستقیم با ماژول‌های GPS است. چرا نیاز است؟ چنین ردیاب می تواند به عنوان یک سرعت سنج مستقل یا یک کیلومتر شمار مستقل عمل کند. می توان آن را روی دوچرخه، ماشین، اسباب بازی یا کوادکوپتر قرار داد. همچنین به شما امکان می دهد فاصله را در یک خط مستقیم تا یک نقطه مشخص اندازه گیری کنید، مقادیر صفر در آن ذخیره می شود حافظه غیر فرار. حداکثر سرعت و مسافت بدست آمده را به خاطر می آورد. همه این کارها را به صورت مستقل انجام می دهد و به هیچ کس غیر از ماهواره ها وابسته نیست. و البته، این یک ساعت زمان دقیق است. برای اندازه گیری حداکثر سرعت و حداکثر فاصله از اجسام به آن نیاز دارم. درست است، شما باید ارتفاع بیشتری را به صفحه نمایش اضافه کنید تا میزان ارتفاع خود را اندازه بگیرید!

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

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

همین امروز است، اگر این ویدیو را دوست داشتید، مطمئن هستم که آن را دوست خواهید داشت و لینک ویدیو را با دوستان خود به اشتراک بگذارید.

از تماشای شما متشکریم، برای همه موفق باشید و شما را در ویدیوهای جدید ببینیم! خداحافظ!

داده ها در صفحه گسترده dataGPS.csv ذخیره می شوند که فرمت آن مطابق با الزامات سرویس است. Google My Maps.

    زبان برنامه نویسی: آردوینو (C++)

آموزش تصویری

آنچه شما نیاز دارید

نحوه مونتاژ

gps-tracker.ino // کتابخانه برای کار با دستگاه ها از طریق SPI#عبارتند از // کتابخانه برای کار با کارت SD#عبارتند از // کتابخانه برای کار با دستگاه GPS#عبارتند از // یک شی از کلاس GPS ایجاد کنید و شی Serial1 را به آن ارسال کنید GPS GPS (Serial1) ; // پین LED#define LED_PIN A0 // پین دکمه #define BUTTON_PIN 13 // کارت CS micro-sd را پین کنید#define CHIP_SELECT_PIN 9 // فاصله زمانی برای نوشتن اطلاعات روی کارت#تعریف INTERVAL 5000 // اندازه آرایه را برای زمان، تاریخ، عرض جغرافیایی و طول جغرافیایی تنظیم کنید#define MAX_SIZE_MASS 16 // آرایه برای ذخیره زمان جاریزمان کاراکتر[MAX_SIZE_MASS]؛ // وضعیت رکورد bool stateRec = false ; // زمان فعلی را به خاطر می آوردطولانی شروعMillis = millis(); void setup() ( // پورت سریال را برای نظارت بر اقدامات در برنامه باز کنید Serial.begin(115200); // صبر کنید تا مانیتور باز شود درگاه سریال // به منظور ردیابی تمام رویدادهای برنامه// while (!Serial) ( // ) Serial.print ("Serial init OK \r\n") ; // یک اتصال سریال با ماژول GPS باز کنید Serial1.begin(115200); // LED را روی حالت خروجی قرار دهید pinMode(LED_PIN، OUTPUT) ; // دکمه را روی حالت ورود قرار دهید pinMode(BUTTON_PIN، INPUT_PULLUP)؛ // اطلاعات خروجی در مورد مقداردهی اولیه به پورت سریال Serial.println("در حال راه اندازی کارت SD...") ; // کارت SD را مقداردهی اولیه کنید while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("کارت ناموفق، یا موجود نیست" ) ؛ تاخیر(1000 ) ؛ ) // اطلاعات خروجی به پورت سریال Serial.println("کارت اولیه شد"); // یک شی dataFile از کلاس File برای کار با فایل ها ایجاد کنیدفایل dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // اگر فایل وجود داشته باشد if (dataFile) ( // نام داده های آینده را روی کارت حافظه بنویسید dataFile.println("زمان، مختصات، سرعت"); // فایل را ببندید dataFile.close(); Serial.println("Save OK"); ) else ( Serial.println ("خطا در باز کردن test.csv") ; ) ) void loop() ( // فشار دکمه را ضبط کنیداگر (! DigitalRead(BUTTON_PIN) ) ( // وضعیت "ضبط" / "نوشتن" را به کارت حافظه تغییر دهید stateRec = ! stateRec; // وضعیت LED نشانگر را تغییر دهید digitalWrite(LED_PIN، stateRec) ; ) // اگر داده ها از ماژول GPS آمده باشد if (gps.available()) ( // داده ها را بخوانید و تجزیه کنید gps.readParsing(); // وضعیت ماژول GPS را بررسی کنیدسوئیچ (gps.getState () ) ( // همه چیز درست است مورد GPS_OK: Serial.println ("GPS خوب است" ) ; // اگر بازه زمانی مشخص شده گذشته باشد if (millis() - startMillis > INTERVAL && stateRec) ( // داده ها را در کارت حافظه ذخیره کنید saveSD(); // زمان فعلی را به خاطر بسپارید startMillis = millis(); ) زنگ تفريح ؛ // مورد خطای داده GPS_ERROR_DATA: Serial.println("GPS داده های خطا" )؛ زنگ تفريح ؛ // بدون ارتباط با ماهوارهکیس GPS_ERROR_SAT: Serial.println ( "GPS بدون اتصال به ماهواره") ؛ زنگ تفريح ؛ )))) // عملکرد برای ذخیره داده ها در کارت حافظه void saveSD() ( File dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // اگر فایل وجود داشته باشد و باز شده باشد if (dataFile) ( // زمان فعلی را می خواند gps.getTime (زمان، MAX_SIZE_MASS)؛ // زمان را روی کارت حافظه بنویسید dataFile.print(" \" " ) ؛ dataFile.print(time); dataFile.print(" \" " ) ؛ dataFile.print ("" ); dataFile.print(" \" " ) ; // خواندن و نوشتن مختصات طول و عرض جغرافیایی در کارت حافظه dataFile.print(gps.getLatitudeBase10(), 6); dataFile.print ("" ); dataFile.print(gps.getLongitudeBase10(), 6); dataFile.print(" \" " ) ؛ dataFile.print ("" ); dataFile.print(gps.getSpeedKm()); dataFile.println("km/h"); dataFile.close(); Serial.println("Save OK"); ) else ( Serial.println ( "خطا در باز کردن test.csv" ) ) )