Busolă cu sistem de avertizare

Introducere

Navigarea pe mare presupune, printre altele, stabilirea unui curs. Cursul este un număr între 0 și 359, reprezentând direcția în care se dorește deplasarea, în grade de cerc1). Metoda tipică de menținere a cursului pe mare este urmărirea acului busolei de lângă cârmă/timonă:

sailing.jpg

Odată stabilit un curs, se dorește menținerea sa cât mai stabilă. Multe bărci moderne sunt dotate cu sisteme autopilot, dar acestea nu sunt foolproof. De aceea voi încerca să creez un sistem de avertizare care atrage atenția timonierului asupra devierii de la cursul stabilit cu intensitate crescândă, ajungând să trimită semnale SOS dacă nu este resetat după o anumită perioadă de siguranță (15 minute2)).

Descriere generală

Sistemul va funcționa conform pașilor următori:

  1. Se introduce cursul format din 3 cifre.
  2. Se navighează.
  3. Dacă apare o deviere de la cursul stabilit (cu eroare de 3 grade), se aprind imediat LED-urile sistemului.
  4. Dacă devierea persistă cel puțin 5 minute, pornește un semnal sonor de avertizare, suficient de tare cât să poată fi auzit din cabina bărcii.
  5. Dacă devierea persistă cel puțin 15 minute, semnalul sonor ajunge la amplitudine maximă și devine codul Morse pentru SOS. În același timp, este trimis un SMS către un contact de urgență.
  6. În orice punct, sistemul poate fi resetat introducând un nou curs.
  7. [Opțional] Pe un ecran va fi desenat în timp real traseul parcurs.

schema_busola.jpg

Hardware

Componente utilizate:

  • Arduino Uno R3
  • Modul busolă QMC5883L
  • Modul GSM/GPRS
  • Tastatură numerică
  • Matrice LED
  • Buzzer
  • Ecran LCD
  • Carcasă
  • Breadboard
  • Baterii AA x4

Proiectul cu toate piese conectate și cu cel puțin o piesă funcțională arată așa:

10_la_pm.jpg

Schema electrică:

Modulul busolă și ecranul LCD comunică prin protocolul I2C și sunt conectați la pinii analogici Arduino corespunzători. Restul pinilor analogici sunt folosiți ca pini digitali de tastatura numerică. Matricea LED comunică prin SPI și este conectată la pinii digitali Arduino corespunzători.

Software

Ce merge:

  • Introducerea cursului, cu tot cu verificarea validității (543 nu e valid, 361 nu e valid, *12 nu e valid etc)
  • Aprinderea matricei LED după un interval de timp
  • Pornirea buzzerului după un interval de timp

Ce nu merge:

  • Modulul busolă - pur și simplu nu e detectat
  • Modulul GSM - RIP

Am folosit biblioteci pentru modulele folosite:

  • LiquidCrystal_I2C - pentru ecranul LCD (are modul I2C integrat)
  • LedControl - pentru matricea LED
  • Keypad - pentru tastatura numerică
  • QMC5883LCompass - pentru modulul busolă

Din cadrul laboratoarelor, am folosit comunicare I2C și SPI, întreruperi, UART pentru comunicare pe serial (citirea cursului). Prin I2C comunică ecranul LCD și modulul busolă. Prin SPI comunică matricea LED. Întreruperi am folosit pentru resetarea buzzerului.

Pentru implementarea software, am testat fiecare componentă în parte. Partea centrală constă într-un automat de stări.

1) Faptul că sunt suficiente 360 de grade pentru a putea ajunge oriunde demonstrează că Pământul este plat. Dacă nu ar fi fost plat, am fi avut nevoie de coordonate sferice, logic.
2) Cam atât este limita la toaletele publice inteligente.
pm/prj2024/sseverin/iulia_maria.dumitru.txt · Last modified: 2024/05/27 17:00 by iulia_maria.dumitru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0