- Използвани материали
- GPS модул NEO6M
- 1,3-инчов I2C OLED дисплей
- Електрическа схема
- Програмиране на Arduino за OLED скоростомер Arduino
Спидометрите се използват за измерване на скоростта на движение на превозно средство. Преди това използвахме IR сензора и сензора на Hall, за да изградим съответно аналогов скоростомер и цифров скоростомер. Днес ще използваме GPS за измерване на скоростта на движещо се превозно средство. GPS скоростомерите са по-точни от стандартните скоростомери, тъй като той може непрекъснато да локализира автомобила и да изчислява скоростта. GPS технологията се използва широко в смартфони и превозни средства за навигация и сигнали за трафик.
В този проект ще изградим Arduino GPS скоростомер, използвайки NEO6M GPS модул с OLED дисплей.
Използвани материали
- Arduino Nano
- GPS модул NEO6M
- 1,3 инчов I2C OLED дисплей
- Макет
- Свързване на джъмпери
GPS модул NEO6M
Тук използваме NEO6M GPS модул. GPS модулът NEO-6M е популярен GPS приемник с вградена керамична антена, която осигурява силна възможност за сателитно търсене. Този приемник има способността да разпознава местоположенията и да проследява до 22 спътника и идентифицира местоположения навсякъде по света. С вградения индикатор за сигнал можем да наблюдаваме мрежовото състояние на модула. Той има батерия за архивиране на данни, така че модулът да може да запазва данните, когато основното захранване е изключено случайно.
Основното сърце в модула на GPS приемника е GPS чипът NEO-6M от u-blox. Той може да проследява до 22 сателита на 50 канала и има много впечатляващо ниво на чувствителност, което е -161 dBm. Този 50-канален u-blox 6 двигател за позициониране разполага с Time-To-First-Fix (TTFF) под 1 секунда. Този модул поддържа скорост на предаване от 4800-230400 bps и има обмен по подразбиране 9600.
Характеристика:
- Работно напрежение: (2.7-3.6) V DC
- Работен ток: 67 mA
- Скорост на предаване: 4800-230400 bps (9600 по подразбиране)
- Протокол за комуникация: NEMA
- Интерфейс: UART
- Външна антена и вграден EEPROM.
Pinout на GPS модул:
- VCC: ПИН за входно напрежение на модула
- GND: Заземен щифт
- RX, TX: UART комуникационни щифтове с микроконтролер
Преди това сме свързвали GPS с Arduino и изграждаме много проекти, използвайки GPS модули, включително проследяване на превозни средства.
1,3-инчов I2C OLED дисплей
Терминът OLED означава „ Органичен светодиод“, той използва същата технология, която се използва в повечето от нашите телевизори, но има по-малко пиксели в сравнение с тях. Истинско забавление е да имаме тези страхотно изглеждащи дисплейни модули, които да бъдат свързани с Arduino, тъй като това ще направи нашите проекти да изглеждат страхотно. Тук разгледахме пълна статия за OLED дисплеите и техните типове. Тук използваме монохромен 4-пинов SH1106 OLED 1.28 ”OLED дисплей. Този дисплей може да работи само в режим I2C.
Технически спецификации:
- IC на драйвера: SH1106
- Входно напрежение: 3.3V-5V DC
- Резолюция: 128x64
- Интерфейс: I2C
- Консумация на ток: 8 mA
- Цвят на пиксела: син
- Зрителен ъгъл:> 160 градуса
Описание на щифта:
VCC: Входно захранване 3.3-5V DC
GND: Заземен референтен щифт
SCL: Часовник на интерфейса I2C
SDA: ПИН за серийни данни на интерфейса I2C
Общността на Arduino вече ни даде много библиотеки, които могат да се използват директно, за да направят това много по-лесно. Изпробвах няколко библиотеки и установих, че библиотеката Adafruit_SH1106.h е много лесна за използване и има шепа графични опции, поради което ще използваме същата в този урок.
OLED изглежда много готино и може лесно да бъде свързан с други микроконтролери за изграждане на някои интересни проекти:
- Взаимодействие на SSD1306 OLED дисплей с Raspberry Pi
- Взаимодействие на SSD1306 OLED дисплей с Arduino
- Интернет часовник с използване на ESP32 и OLED дисплей
- Автоматичен контролер на температурата на променлив ток, използващ Arduino, DHT11 и IR Blaster
Електрическа схема
Електрическа схема за този GPS скоростомер Arduino с използване на OLED е дадена по-долу.
Пълната настройка ще изглежда по-долу:
Програмиране на Arduino за OLED скоростомер Arduino
Пълният код на проекта е даден в долната част на урока. Тук обясняваме пълния код ред по ред.
На първо място, включете всички библиотеки. Тук библиотеката TinyGPS ++. H се използва за получаване на GPS координати с помощта на модул GPS приемник, а Adafruit_SH1106.h се използва за OLED.
#include
След това се дефинира OLED I2C адресът, който може да бъде OX3C или OX3D, тук в случая е OX3C. Също така трябва да бъде дефиниран нулиращият щифт на дисплея. В моя случай тя се определя като -1, тъй като дисплеят споделя Reset pin на Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
След това обектите за клас TinyGPSPlus и Softwareserial се дефинират, както е показано по-долу. Серийният клас на софтуера се нуждае от Arduino pin no. за серийна комуникация, което тук е определено като 2 и 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Вътрешната настройка () се инициализира за серийна комуникация и OLED. Скоростта на предаване по подразбиране за серийната комуникация на Софтуера е определена като 9600. Тук SH1106_SWITCHCAPVCC се използва за генериране на дисплейно напрежение от 3.3V вътрешно, а функцията display.begin се използва за инициализиране на дисплея.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Вътре докато е истински цикъл, получените серийни данни се потвърждават, ако са получени валидни GPS сигнали, тогава се извиква displaypeed (), за да покаже стойността на скоростта на OLED.
докато (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Вътре displayspeed () функция, данните за скоростта от GPS модул се проверява с помощта на функцията gps.speed.isValid () и ако той отговаря с истинска стойност, а след това стойността на скоростта се показват на OLED дисплей. Тук размерът на текста на OLED се определя с помощта на функцията display.setTextSize и позицията на курсора се определя с помощта на функцията display.setCursor . Данните за скоростта от GPS модула се декодират с помощта на функцията gps.speed.kmph () и накрая се показват с помощта на display.display () .
ако (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
И накрая, качете кода в Arduino Uno и поставете системата в движещо се превозно средство и ще видите скоростта на OLED дисплея, както е показано на изображението по-долу.
Пълният код с демо видео е даден по-долу.