{"id":4564,"date":"2025-10-15T09:31:35","date_gmt":"2025-10-15T16:31:35","guid":{"rendered":"https:\/\/www.donluc.com\/?p=4564"},"modified":"2025-10-15T09:31:35","modified_gmt":"2025-10-15T16:31:35","slug":"project-15-environment-gnss-gps-mk34","status":"publish","type":"post","link":"https:\/\/www.donluc.com\/?p=4564","title":{"rendered":"Project #15: Environment &#8211; GNSS GPS &#8211; Mk34"},"content":{"rendered":"<div style=\"width: 1200px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-4564-1\" width=\"1200\" height=\"675\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01W.mp4?_=1\" \/><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01W.mp4\">https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01W.mp4<\/a><\/video><\/div>\n<p>&#8212;&#8212;<\/p>\n<p>#DonLucElectronics #DonLuc #GNSS #IoT #Project #DFRobot #Fritzing #Programming #Electronics #Microcontrollers #Consultant<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01a.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01a.jpg\" alt=\"GNSS GPS\" width=\"720\" height=\"649\" class=\"alignnone size-full wp-image-4566\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01a.jpg 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01a-300x270.jpg 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01b.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01b.jpg\" alt=\"GNSS GPS\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-4567\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01b.jpg 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01b-300x200.jpg 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01c.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01c.jpg\" alt=\"GNSS GPS\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-4568\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01c.jpg 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2025\/10\/DL2510Mk01c-300x200.jpg 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>Gravity: GNSS GPS BeiDou Receiver Module<\/strong><\/p>\n<p>GNSS stands for Global Navigation Satellite System. The main GNSS systems include GPS, GLONASS, QZSS, and BeiDou. These satellite systems transmit signals to the earth, allowing the receiver to determine its own position by calculating the propagation time of the signals and the position of the receiving satellite, thus achieving functions such as positioning and navigation.<\/p>\n<p>This GNSS BeiDou positioning module supports multi-satellite system joint positioning and provides high-precision, high-speed, and stable data such as longitude, latitude, time, and altitude. It is suitable for various outdoor positioning scenarios, such as vehicle positioning, item tracking, weather stations, and outdoor positioning.<\/p>\n<p>This GNSS receiver module uses the GNSS positioning system and support satellite systems such as BeiDou, GPS, GLONASS, QZSS, etc. Compared with traditional single GPS positioning, joint positioning using multiple systems increases the number of visible and usable satellites, which improves positioning accuracy and speed. It can also achieve stable high-precision positioning even in complex environments, providing more accurate positioning data.<\/p>\n<p><strong>DL2510Mk01<\/strong><\/p>\n<p>1 x FireBeetle 2 ESP32-P4 AI<br \/>\n1 x IO Expansion Board<br \/>\n1 x Adafruit SHARP Memory Display Breakout &#8211; 1.3&#8243; 168&#215;144 Monochrome<br \/>\n1 x Gravity: GNSS GPS BeiDou Receiver Module<br \/>\n1 x USB Battery Pack<br \/>\n1 x USB 3.1 Cable A to C<\/p>\n<p>DL2510Mk01p<\/p>\n<p><strong>DL2510Mk01p.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/****** Don Luc Electronics \u00a9 ******\r\nSoftware Version Information\r\nProject #15: Environment - GNSS GPS - Mk34\r\n15-34\r\nDL2509Mk01p.ino\r\nDL2509Mk01\r\n1 x FireBeetle 2 ESP32-P4 AI\r\n1 x IO Expansion Board\r\n1 x Adafruit SHARP Memory Display Breakout - 1.3&quot; 168x144 Monochrome\r\n1 x Gravity: GNSS GPS BeiDou Receiver Module\r\n1 x USB Battery Pack\r\n1 x USB 3.1 Cable A to C\r\n*\/\r\n\r\n\/\/ Include the Library Code\r\n\/\/ EEPROM Library to Read and Write EEPROM\r\n\/\/ with Unique ID for Unit\r\n#include &quot;EEPROM.h&quot;\r\n\/\/ SHARP Memory Display\r\n#include &lt;Adafruit_SharpMem.h&gt;\r\n#include &lt;Adafruit_GFX.h&gt;\r\n\/\/ GNSS\r\n#include &quot;DFRobot_GNSS.h&quot;\r\n\r\n\/\/ Use I2C for communication, but use the serial port for communication if the line of codes were masked \r\n#define I2C_COMMUNICATION \r\n\r\n\/\/ ESP32 user hardware uart\r\nDFRobot_GNSS_I2C gnss(&amp;Wire ,GNSS_DEVICE_ADDR);\r\nString sDate = &quot;&quot;;\r\nString sUTC = &quot;&quot;;\r\nString sLat = &quot;&quot;;\r\nString sLon = &quot;&quot;;\r\n\r\n\r\n\/\/ SHARP Memory Display\r\n\/\/ any pins can be used\r\n#define SHARP_SCK  30\r\n#define SHARP_MOSI 29\r\n#define SHARP_SS   28\r\n\/\/ Set the size of the display here, e.g. 144x168!\r\nAdafruit_SharpMem display(SHARP_SCK, SHARP_MOSI, SHARP_SS, 144, 168);\r\n\/\/ The currently-available SHARP Memory Display (144x168 pixels)\r\n\/\/ requires &gt; 4K of microcontroller RAM; it WILL NOT WORK on Arduino Uno\r\n\/\/ or other &lt;4K &quot;classic&quot; devices!  The original display (96x96 pixels)\r\n\/\/ does work there, but is no longer produced.\r\n#define BLACK 0\r\n#define WHITE 1\r\n\r\n\/\/ EEPROM Unique ID Information\r\n#define EEPROM_SIZE 64\r\nString uid = &quot;&quot;;\r\n\r\n\/\/ Software Version Information\r\nString sver = &quot;15-34&quot;;\r\n\r\nvoid loop() {\r\n\r\n\r\n  \/\/ isGNSS\r\n  isGNSS();\r\n\r\n  \/\/ isGNSS Display\r\n  isDisplayGNSS();\r\n\r\n  \/\/ Delay 1 Second\r\n  delay( 1000 );\r\n\r\n}\r\n<\/pre>\n<p><strong>getDisplay.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ SHARP Memory Display\r\n\/\/ SHARP Memory Display - UID\r\nvoid isDisplayUID(){\r\n\r\n  \/\/ text display\r\n  display.clearDisplay();\r\n  display.setRotation(4);\r\n  display.setTextSize(2);\r\n  display.setTextColor(BLACK);\r\n  display.setCursor(0,0);\r\n  \/\/ Don Luc\r\n  display.println( &quot;Don Luc&quot; );\r\n  \/\/ EEPROM\r\n  display.setCursor(0,25);\r\n  display.println( &quot;EEPROM&quot; );\r\n  display.setCursor(0,55);\r\n  display.println( uid );\r\n  \/\/ Version\r\n  display.setCursor(0,85);\r\n  display.println( &quot;Version&quot; );\r\n  display.setCursor(0,115);\r\n  display.println( sver );\r\n  display.refresh();\r\n  delay( 100 );\r\n\r\n}\r\n\/\/ isGNSS Display\r\nvoid isDisplayGNSS(){\r\n\r\n  \/\/ text display Date and Time\r\n  display.clearDisplay();\r\n  display.setRotation(4);\r\n  display.setTextSize(2);\r\n  display.setTextColor(BLACK);\r\n  display.setCursor(0,0);\r\n  display.print( &quot;Lan: &quot; );\r\n  display.println( sLat );\r\n  display.setCursor(0,25);\r\n  display.print( &quot;Lon: &quot; );\r\n  display.println( sLon );\r\n  display.setCursor(0,55);\r\n  display.println( &quot;UTC&quot; );\r\n  display.setCursor(0,85);\r\n  display.println( sDate );\r\n  display.setCursor(0,115);\r\n  display.println( sUTC );\r\n  display.refresh();\r\n  delay( 100 );\r\n  \r\n}\r\n<\/pre>\n<p><strong>getEEPROM.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ EEPROM\r\n\/\/ isUID EEPROM Unique ID\r\nvoid isUID() {\r\n  \r\n  \/\/ Is Unit ID\r\n  uid = &quot;&quot;;\r\n  for (int x = 0; x &lt; 7; x++)\r\n  {\r\n    uid = uid + char(EEPROM.read(x));\r\n  }\r\n\r\n}\r\n<\/pre>\n<p><strong>getGNSS.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ GNSS\r\n\/\/ isSetupGNSS\r\nvoid isSetupGNSS(){\r\n\r\n  \/\/ GNSS\r\n  \/\/while(!gnss.begin()){\r\n    \/\/Serial.println(&quot;NO Deivces !&quot;);\r\n   \/\/ delay(1000);\r\n  \/\/}\r\n\r\n  gnss.begin();\r\n  \r\n  \/\/ GNSS\r\n  gnss.enablePower();      \r\n\r\n\/** Set the galaxy to be used\r\n *   eGPS              USE gps\r\n *   eBeiDou           USE beidou\r\n *   eGPS_BeiDou       USE gps + beidou\r\n *   eGLONASS          USE glonass\r\n *   eGPS_GLONASS      USE gps + glonass\r\n *   eBeiDou_GLONASS   USE beidou +glonass\r\n *   eGPS_BeiDou_GLONASS USE gps + beidou + glonass\r\n *\/\r\n  gnss.setGnss(eGPS_BeiDou_GLONASS);\r\n\r\n  \/\/ GNSS\r\n  \/\/ gnss.setRgbOff();\r\n  gnss.setRgbOn();\r\n  \r\n  \r\n}\r\n\/\/ isGNSS\r\nvoid isGNSS(){\r\n\r\n  \/\/ GNSS\r\n  sTim_t utc = gnss.getUTC();\r\n  sTim_t date = gnss.getDate();\r\n  sLonLat_t lat = gnss.getLat();\r\n  sLonLat_t lon = gnss.getLon();\r\n  \r\n  sDate = &quot;&quot;;\r\n  sUTC = &quot;&quot;;\r\n  sLat = &quot;&quot;;\r\n  sLon = &quot;&quot;;\r\n\r\n  \/\/ Latitude\r\n  sLat = lat.latitudeDegree;\r\n  \/\/ Longitude\r\n  sLon = lon.lonitudeDegree;\r\n\r\n  \/\/ Date\r\n  sDate = date.year;\r\n  sDate = sDate + &quot;\/&quot;;\r\n  sDate = sDate + date.month;\r\n  sDate = sDate + &quot;\/&quot;;\r\n  sDate = sDate + date.date;\r\n\r\n  \/\/ UTC\r\n  sUTC = utc.hour;\r\n  sUTC = sUTC + &quot;:&quot;;\r\n  sUTC = sUTC + utc.hour;\r\n  sUTC = sUTC + &quot;:&quot;;\r\n  sUTC = sUTC + utc.minute;\r\n\r\n}\r\n<\/pre>\n<p><strong>setup.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Setup\r\nvoid setup()\r\n{\r\n \r\n  \/\/ Delay\r\n  delay( 100 );\r\n\r\n  \/\/ EEPROM Size\r\n  EEPROM.begin(EEPROM_SIZE);\r\n  \r\n  \/\/ EEPROM Unique ID\r\n  isUID();\r\n\r\n  \/\/ Delay\r\n  delay(100);\r\n\r\n  \/\/ SHARP Display start &amp; clear the display\r\n  display.begin();\r\n  display.clearDisplay();\r\n\r\n  \/\/ Delay\r\n  delay(100);\r\n\r\n  \/\/ isSetupGNSS\r\n  isSetupGNSS();\r\n\r\n  \/\/ Delay\r\n  delay( 100 );\r\n\r\n  \/\/ Display - UID\r\n  \/\/ Don Luc Electronics\r\n  \/\/ Version\r\n  \/\/ EEPROM\r\n  isDisplayUID();\r\n    \r\n  \/\/ Delay 5 Second\r\n  delay( 5000 );\r\n\r\n}\r\n<\/pre>\n<p>&#8212;&#8212;<\/p>\n<p><strong>People can contact us:<\/strong> https:\/\/www.donluc.com\/?page_id=1927<\/p>\n<p><strong>Consultant, R&#038;D, Electronics, IoT, Teacher and Instructor<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc&#8230;)<\/li>\n<li>IoT<\/li>\n<li>Wireless (Radio Frequency, Bluetooth, WiFi, Etc&#8230;)<\/li>\n<li>Robotics<\/li>\n<li>Automation<\/li>\n<li>Camera and Video Capture Receiver Stationary, Wheel\/Tank , Underwater and UAV Vehicle<\/li>\n<li>Unmanned Vehicles Terrestrial,  Marine and UAV<\/li>\n<li>Machine Learning<\/li>\n<li>Artificial Intelligence (AI)<\/li>\n<li>RTOS<\/li>\n<li>Sensors, eHealth Sensors, Biosensor, and Biometric<\/li>\n<li>Research &#038; Development (R &#038; D)<\/li>\n<li>Consulting<\/li>\n<\/ul>\n<p><strong>Follow Us<\/strong><\/p>\n<p><strong>Luc Paquin \u2013 Curriculum Vitae &#8211; 2024<\/strong><br \/>\nhttps:\/\/www.donluc.com\/luc\/<\/p>\n<p><strong>Web:<\/strong> https:\/\/www.donluc.com\/<br \/>\n<strong>Facebook:<\/strong> https:\/\/www.facebook.com\/neosteam.labs.9\/<br \/>\n<strong>YouTube:<\/strong> https:\/\/www.youtube.com\/@thesass2063<br \/>\n<strong>Twitter:<\/strong> https:\/\/twitter.com\/labs_steam<br \/>\n<strong>Pinterest:<\/strong> https:\/\/www.pinterest.com\/NeoSteamLabs\/<br \/>\n<strong>Instagram:<\/strong> https:\/\/www.instagram.com\/neosteamlabs\/<br \/>\n<strong>DFRobot:<\/strong> https:\/\/learn.dfrobot.com\/user-10186.html<br \/>\n<strong>Elecrow:<\/strong> https:\/\/www.elecrow.com\/share\/sharepj\/center\/no\/760816d385ebb1edc0732fd873bfbf13<br \/>\n<strong>TikTok:<\/strong> https:\/\/www.tiktok.com\/@luc.paquin8<br \/>\n<strong>Hackster:<\/strong> https:\/\/www.hackster.io\/luc-paquin<br \/>\n<strong>LinkedIn:<\/strong> https:\/\/www.linkedin.com\/in\/jlucpaquin\/<\/p>\n<p><strong>Don Luc<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8212;&#8212; #DonLucElectronics #DonLuc #GNSS #IoT #Project #DFRobot #Fritzing #Programming #Electronics #Microcontrollers #Consultant &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; Gravity: GNSS GPS BeiDou Receiver Module GNSS stands for Global Navigation Satellite System. The main GNSS systems include GPS, GLONASS, QZSS, and BeiDou. These satellite systems transmit signals to the earth, allowing the receiver to determine its own position &#8230; <a title=\"Project #15: Environment &#8211; GNSS GPS &#8211; Mk34\" class=\"read-more\" href=\"https:\/\/www.donluc.com\/?p=4564\" aria-label=\"Read more about Project #15: Environment &#8211; GNSS GPS &#8211; Mk34\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[106,47,50,49,317,38,80,59,115,5,287,58,82,10],"tags":[86,6,92,102,4,320,87,19,107,83,85,399,89,24,9,84,27,33,34,108],"class_list":["post-4564","post","type-post","status-publish","format-standard","hentry","category-environment","category-adafruit","category-arduino","category-consultant","category-dfrobot","category-digitalelectronics","category-esp32","category-fritzing","category-e-mentor","category-microcontrollers","category-program","category-arduino-programming","category-program-esp32","category-projects","tag-adafruit","tag-arduino","tag-battery","tag-components","tag-consultant","tag-dfrobot","tag-display","tag-electronics","tag-environment","tag-esp32","tag-fritzing","tag-gnss-gps","tag-gps-receiver","tag-microcontroller","tag-programming","tag-programming-esp32","tag-projects-2","tag-technology","tag-video-blog","tag-vlog"],"_links":{"self":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4564"}],"version-history":[{"count":2,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4564\/revisions"}],"predecessor-version":[{"id":4719,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4564\/revisions\/4719"}],"wp:attachment":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}