Съдържание:

GPS мониторинг с OLED дисплей: 5 стъпки (със снимки)
GPS мониторинг с OLED дисплей: 5 стъпки (със снимки)

Видео: GPS мониторинг с OLED дисплей: 5 стъпки (със снимки)

Видео: GPS мониторинг с OLED дисплей: 5 стъпки (със снимки)
Видео: СОВЕРШЕННЫЙ ПОМОЩНИК 🔥 УМНЫЕ ЧАСЫ TicWatch Pro 5 Wear OS NFC 80 ч СМАРТ ЧАСЫ НОВОГО ВЕКА 2024, Ноември
Anonim
GPS мониторинг с OLED дисплей
GPS мониторинг с OLED дисплей
GPS мониторинг с OLED дисплей
GPS мониторинг с OLED дисплей
GPS мониторинг с OLED дисплей
GPS мониторинг с OLED дисплей
GPS мониторинг с проект за OLED дисплей
GPS мониторинг с проект за OLED дисплей

Здравейте всички, в тази бърза статия ще споделя с вас моя проект: ATGM332D GPS модул с микроконтролер SAMD21J18 и SSD1306 OLED 128*64 дисплей, изградих специална платка за него на Eagle Autodesk и го програмирам с помощта на Atmel studio 7.0 и ASF4 така в тази статия ще споделя с вас това пътуване и файловете, които използвах, ако ви е интересно да го направите сами.

Сега, ако програмирате своя MCU/борд за разработка с помощта на Arduino, този проект би трябвало да ви бъде сравнително лесен, но тук ще използвам ASF4 (Advanced software framwork 4) от Atmel/Microchip, който е базиран на език C и бих ви дал представа за това как да прочетете съобщението GPS NMEA с помощта на USART Asynchronous driver (Callback) и да ви предоставим проста библиотека, която можете да използвате с всеки микроконтролер и различна платформа, като просто добавите подходящия драйвер, който използвате, за да получите съобщението от GPS (съобщение NMEA).

Ще разделя тази статия на:

  1. Дизайн на печатни платки.
  2. BOM трябва да сглобите печатната платка
  3. Бърз поглед към софтуера и самия код и тест за хардуера и софтуера.
  4. накрая, но не на последно място някои подобрения в този проект.

Всички материали, свързани с този проект, ще намерите вGithub (Тук)

Стъпка 1: Дизайн на печатни платки с помощта на Eagle

Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle
Дизайн на печатни платки с помощта на Eagle

Този проект се основава главно на GPS модул ATGM332D, прост GPS за използване, тъй като се нуждае само от няколко пасивни компонента, за да работи, и бихме могли да добавим резервна батерия, за да спестим времето/датата, ако изключим основния източник на захранване от модула.

и за да контролирам всички сигнали във веригата, отидох с микроконтролер ATSAMD21J18B, пакет TQFP64, тъй като има 128KByte памет за програмиране и 32KByte памет за данни (и имам много от тях, разположени около работната ми маса).

веригата трябва да се захранва от USB 5V източник, също така USB може да действа като виртуален COM порт (CDC USB) и можете да добавите код за него, ако искате да комуникирате с устройството чрез USB.

за дисплея избрах SSD1306 0.96 'OLED дисплей с SPI шина, той е малък, но е подходящ за размера на печатната платка, който исках, размерът на платката 100x31 мм.

програмирането на микроконтролера ще бъде чрез SWD програмист (използвам Atmel ICE) и ще го свърже чрез 1,27 мм 10p пинов хедър.

също използвах Fusion360, за да получа 3D изглед за дъската и можете да видите и някои изобразявани изображения за нея.

Стъпка 2: Запояване на печатната платка

Запояване на печатната платка
Запояване на печатната платка
Запояване на печатната платка
Запояване на печатната платка
Запояване на печатната платка
Запояване на печатната платка

Имате избор да поръчате шаблон с вашата печатна платка, по -лесно е да нанесете спояващата паста върху дъската с помощта на шаблона, използвах гореща плоча, за да споя компонентите заедно, използването на горещ въздух също е ОК, но бъдете внимателни, докато запоявате светодиода, тъй като те са толкова чувствителни към топлина.

запояването на долната страна е малко по -лесно, тъй като има само заглавката на щифта SWD и резервната батерия, която можете да ги запоявате с поялник.

преди да свържете веригата с USB източник на захранване, проверете за късо съединение.

свържете вашата GPS антена и се уверете, че сте запоявали правилно конектора, фиксирах антената от долната страна на дъската.

Стъпка 3: Софтуер … Функционалност … резултати

Image
Image
Софтуер … Функционалност … резултати
Софтуер … Функционалност … резултати
Софтуер … Функционалност … резултати
Софтуер … Функционалност … резултати

Софтуерът ще бъде разделен на 4 части:

  1. USART за комуникация с ATGM332 GPS модул.
  2. SPI за комуникация с OLED.
  3. USB CDC.
  4. GPIO за управление на светодиоди

първо свържете USB конектора към захранването на веригата и след това свържете лентов кабел с SWD конектор.

Изтеглете кода от github (Връзка тук).

за да получите геолокация, имате 3 различни опции за съобщения на NMEA:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Използвах GPRMC изречение, за да получа местоположението, часа и датата (часът е 0,0 GMT), така че в кода ще намерите:

GPRMC. Enable = 1;/*0, ако няма нужда от това съобщение*/

GPGGA. Enable = 0;/*0, ако няма нужда от това съобщение*/

GPGLL. Enable = 0;/*0, ако няма нужда от това съобщение*/

можете да ги активирате заедно и да ги четете едновременно, за да получите необходимите данни.

след като има валидно GPRMC изречение, GPRMC. Ready ще стане 1 и можете да получите всички налични данни в това изречение, проверете тази връзка, за да видите наличните данни в това изречение.

просто ако Fix е "A", това означава, че местоположението е налично, ако Fix е "V", това означава, че местоположението не е налично.

забележете, че ATSAMD21 има вътрешен RTC, но тук не го използвам и вместо това използвам време и дата директно от GPS, така че ако не искате да използвате резервната батерия CR1220, след като изключите USB източника на захранване, ще загубите часа/датата и при следващото включване на веригата областта за час/дата на дисплея ще бъде празна, докато GPS няма валидна стойност за час/дата.

дисплеят ще ви покаже текущото състояние на GPS и ще покаже геолокацията, след като е налична, но на борда има 3 светодиода:

  1. Зелен светодиод, свързан към PA06, и ще мига, ако има валидна стойност за геолокация.
  2. Оранжев светодиод, свързан към PA07 и ще мига веднъж в секунда, ако няма валидно геолокация.
  3. Червеният светодиод този е свързан към PPS щифт на GPS модула и ще мига само когато има валиден сигнал, свързан с местоположението.

Резултати

Схемата работеше много добре с мен, получаването на геолокацията от GPS отне 20-30 секунди на открито с ясна гледка към небето и между сгради без никакъв проблем дори с антена от долната страна на дъската.

Стъпка 4: Калъф с 3D печат … Сорт

Калъф с 3D печат … Сорт
Калъф с 3D печат … Сорт

Подготвих обикновен калъф (по-прецизен държач) за тази верига, но поради епидемията от COVID-19 и блокирането, в което се намирам в момента, не можах да достигна до моя 3D принтер, за да го отпечатам, така че ще актуализирам този раздел със stl файл и снимки за притежателя, след като е наличен.

Стъпка 5: Неща за подобряване …

Неща за подобряване…
Неща за подобряване…
Неща за подобряване…
Неща за подобряване…
Неща за подобряване…
Неща за подобряване…
  1. Преместване на SWD конектора към горната страна, тъй като е по -лесно да го свържете с вашия програмист.
  2. Захранвайки веригата от литиева батерия, направих го чрез запояване на джъмпер и той работи добре, като се има предвид, че линейният (LDO) регулатор има напрежение на спадане на V, ако (Vbat - Vout) по -малко от границата на Vdrop веригата може да не работи правилно.
  3. като направите потребителския бутон малко по -голям, така че ще бъде по -лесно да го натиснете.
  4. добавяне на USB CDC код, за да можете да комуникирате/проектирате специална програма за MAC/PC/linux.
  5. За GPS антената използвах активна антена за този проект, като е възможно използването на пасивна антена, чрез добавяне на нискошумов оп-усилвател като AT2659 (проверете и схемата на листа с данни ATGM332 P.14).
  6. за OLED 0.96 'SSD1306, официалната библиотека от микрочип първоначално за дисплей 128*32, за да промените кода, за да работи с 128*64, трябва да отидете на ssd1306.c и да промените кода (проверете изображението).

Препоръчано: