Всем привет.
Продовження цікавого мені, але не дуже актуального проекту (минуличастини:1, 2, 3, 4, 5).Поясню відразу:так, я рідко їжджу міжмістами.Так, мені не ліньки включити світло самому.Навіщо ж тодітакі складнощі? Просто хочеться зробити щось своє, щось нове, а некопіювати вже готові пристрої. До того ж краще розібратися зArduino і GPS-модулем. Не може не радувати.
Отже, розповім чим же я займався минулі дні три. Почалося все зтого, що я розчарувався в картах OpenStreetMap. Розставившиотримані точки на карті, з'ясувалося що вони описують кордон, якнабір відрізків, вказуючи точками тільки вузли цієї ламаної.Причомукоординати були повністю перемішані.Розставивши перші 100 крапок, явиявив їх по всій карті. Ось якось так це виглядає Нагадаю, визначення знаходження автомобіля всередині або поза областю, яроблю наступним чином:відбираю всі крапки з довготою такою ж, як іу нас. Далі перебираю широти цих точок попарно від меншого добільшого, і якщо у нас точка знаходиться всередині якоїсь області —то ми і є всередині міста. Надалі я навіть спростив цей момент, розповім трохи згодом. Крок широти та довготи — 0.001 градус (приблизно 100 м). Довелося розчехлити програму, яку я вже писав, ітрохи доопрацювати її. Суть у тому, що ми вказуємо точки замкнутоїобласті, після чого програма їх з'єднує і кожному відрізкувиставляє нам точки із заданим кроком (0.001, наприклад). Післяцього всі точки сортуються за довготою та записуються у файли. Зцим теж трохи схитрував, файли розбиваються по довготі з кроком 1градус для зменшення кількості даних у файлі та прискореннячитання. У файлі знаходиться максимум пару тисяч записів, читанняяких відбувається приблизно за секунду. А це мій варіант, 1663крапки! Ближче виглядає так …
… і так
І ось настав час писати під Ардуїну. Звичайно вилізло чималопідводних каменів, звичайно бісить відсутність налагодження в ІДЕ, але я впорався. Поки для тестування дані про положення я записую вком-порт, тобто GPS-модуль не задіяний, але незабаром я цевиправлю. Після отримання координат з кому -порту, ми прочитуємопотрібний файл доти, доки знайдемо точки з такою самою довготою які ми. І ось тут я вигадав свій фінт вухами. Замість того, щобстворювати масив широт, сортувати його, брати дані попарно, япросто знаходжу кількість широт менше і більше за нашу. Якщо цікількості непарні — ми знаходимося всередині області, якщо парні —поза. Ну і звичайно перевірка на те, що ми знаходимося прямі накордоні.
А тепер результат. На карті показано маркером точку, яку мивводимо. Вмикати або не вмикати світло написано в останньому рядкуком-порту.
На даний момент все, у найближчі пару днів постараюся допиляти GPSта провести польове тестування.






Коментарі18
Приємно спостерігати за розвитком теми! Чекаю на продовження.
Дякую, продовження буде
дааа, ну і заморочився). це ж треба такий паркан навколо міста налаштувати!)
Пару рядків коду і вперед)
Нехреново заморочився))
Згоден)
Блін! Дуже круто))) Мені як програмісту-аматору подобається затія)
Дякую)
Так треба буде під усі міста України точки прописувати?
Торетично так, хоча б під великі. Але тоді вже простіше поборотися з OpenStreetMap, і все-таки автоматизувати цей процес. Взагалі застосувань багато. Можна, наприклад, зробити додаткову охоронну систему, яка блокує двигун при виїзді за певний кордон.
дуже цікавий проект. Сам потихеньку вивчаю ази програмування. Правда пишу на Сі
Так тут теж сі-подібна мова. Wiring зветься
Знаю знаю. Але мені якось си ближче щоли. Видно через те що безпосередньо з контролером працюєш.
ну просто під АВРки писати звичайно на С. А ось ардуїна особлива зі своїм середовищем розробки. На неї простіше писати звідти.
загалом зараз починаю курити STM. Ось це тема!
Вірю, читав, але поки що часу немає ще щось починати
А навіщо? Все одно у вас найближчим часом введуть ДХО у місті. Ви ж до Європи рветесь, а там майже у всіх так
Ну я якраз до Європи не рвуся, а проект робиться заради задоволення та спортивного інтересу.