-
Notifications
You must be signed in to change notification settings - Fork 657
Add GAT562 Mesh EVB Pro Repeater and Room Server #2042
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| [GAT562_Mesh_EVB_Pro] | ||
| extends = nrf52_base | ||
| board = rak4631 | ||
| board_check = true | ||
| build_flags = ${nrf52_base.build_flags} | ||
| ${sensor_base.build_flags} | ||
| -I variants/gat562_mesh_evb_pro | ||
| -D NRF52_POWER_MANAGEMENT | ||
| -D LORA_FREQ=475 | ||
| -D LORA_BW=125 | ||
| -D LORA_SF=10 | ||
| -D LORA_CR=6 | ||
| -D PIN_BOARD_SCL=14 | ||
| -D PIN_BOARD_SDA=13 | ||
| -D RADIO_CLASS=CustomSX1262 | ||
| -D WRAPPER_CLASS=CustomSX1262Wrapper | ||
| -D LORA_TX_POWER=22 | ||
| -D SX126X_CURRENT_LIMIT=140 | ||
| -D SX126X_RX_BOOSTED_GAIN=1 | ||
| build_src_filter = ${nrf52_base.build_src_filter} | ||
| +<../variants/gat562_mesh_evb_pro> | ||
| +<helpers/ui/MomentaryButton.cpp> | ||
| +<helpers/sensors> | ||
| lib_deps = | ||
| ${nrf52_base.lib_deps} | ||
| ${sensor_base.lib_deps} | ||
| sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27 | ||
|
|
||
| [env:GAT562_Mesh_EVB_Pro_repeater] | ||
| extends = GAT562_Mesh_EVB_Pro | ||
| build_flags = | ||
| ${GAT562_Mesh_EVB_Pro.build_flags} | ||
| -D ADVERT_NAME='"GAT562 EVB Pro"' | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. usually we have |
||
| -D ADVERT_LAT=0.0 | ||
| -D ADVERT_LON=0.0 | ||
| -D ADMIN_PASSWORD='"password"' | ||
| -D MAX_NEIGHBOURS=50 | ||
| -D MESH_PACKET_LOGGING=1 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. debug flags should be disabled by default |
||
| -D MESH_DEBUG=1 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. debug flags should be disabled by default |
||
| build_src_filter = ${GAT562_Mesh_EVB_Pro.build_src_filter} | ||
| +<../examples/simple_repeater> | ||
|
|
||
|
|
||
| [env:GAT562_Mesh_EVB_Pro_room_server] | ||
| extends = GAT562_Mesh_EVB_Pro | ||
| build_flags = | ||
| ${GAT562_Mesh_EVB_Pro.build_flags} | ||
| -D ADVERT_NAME='"GAT562 EVB Pro Room"' | ||
| -D ADVERT_LAT=0.0 | ||
| -D ADVERT_LON=0.0 | ||
| -D ADMIN_PASSWORD='"password"' | ||
| -D ROOM_PASSWORD='"hello"' | ||
| -D MESH_PACKET_LOGGING=1 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. debug flags should be disabled by default |
||
| -D MESH_DEBUG=1 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. debug flags should be disabled by default |
||
| build_src_filter = ${GAT562_Mesh_EVB_Pro.build_src_filter} | ||
| +<../examples/simple_room_server> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| #include <Arduino.h> | ||
| #include <Wire.h> | ||
|
|
||
| #include "GAT562EVBProBoard.h" | ||
|
|
||
|
|
||
| #ifdef NRF52_POWER_MANAGEMENT | ||
| // Static configuration for power management | ||
| // Values set in variant.h defines | ||
| const PowerMgtConfig power_config = { | ||
| .lpcomp_ain_channel = PWRMGT_LPCOMP_AIN, | ||
| .lpcomp_refsel = PWRMGT_LPCOMP_REFSEL, | ||
| .voltage_bootlock = PWRMGT_VOLTAGE_BOOTLOCK | ||
| }; | ||
|
|
||
|
|
||
| void GAT562EVBProBoard::initiateShutdown(uint8_t reason) { | ||
| // Disable LoRa module power before shutdown | ||
| digitalWrite(SX126X_POWER_EN, LOW); | ||
|
|
||
| if (reason == SHUTDOWN_REASON_LOW_VOLTAGE || | ||
| reason == SHUTDOWN_REASON_BOOT_PROTECT) { | ||
| configureVoltageWake(power_config.lpcomp_ain_channel, power_config.lpcomp_refsel); | ||
| } | ||
|
|
||
| enterSystemOff(reason); | ||
| } | ||
| #endif // NRF52_POWER_MANAGEMENT | ||
|
|
||
|
|
||
| void GAT562EVBProBoard::begin() { | ||
| NRF52BoardDCDC::begin(); | ||
| pinMode(PIN_VBAT_READ, INPUT); | ||
|
|
||
| // Set all button pins to INPUT_PULLUP | ||
| pinMode(PIN_BUTTON1, INPUT_PULLUP); | ||
|
|
||
| #if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) | ||
| Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); | ||
| #endif | ||
|
|
||
| Wire.begin(); | ||
|
|
||
| pinMode(SX126X_POWER_EN, OUTPUT); | ||
| #ifdef NRF52_POWER_MANAGEMENT | ||
| // Boot voltage protection check (may not return if voltage too low) | ||
| // We need to call this after we configure SX126X_POWER_EN as output but before we pull high | ||
| checkBootVoltage(&power_config); | ||
| #endif | ||
| digitalWrite(SX126X_POWER_EN, HIGH); | ||
| delay(10); // give sx1268 some time to power up | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| #pragma once | ||
|
|
||
| #include <MeshCore.h> | ||
| #include <Arduino.h> | ||
| #include <helpers/NRF52Board.h> | ||
|
|
||
|
|
||
| class GAT562EVBProBoard : public NRF52BoardDCDC { | ||
| protected: | ||
| #ifdef NRF52_POWER_MANAGEMENT | ||
| void initiateShutdown(uint8_t reason) override; | ||
| #endif | ||
|
|
||
| public: | ||
| GAT562EVBProBoard() : NRF52Board("GAT562_OTA") {} | ||
| void begin(); | ||
|
|
||
| #define BATTERY_SAMPLES 8 | ||
|
|
||
| uint16_t getBattMilliVolts() override { | ||
| analogReadResolution(12); | ||
|
|
||
| uint32_t raw = 0; | ||
| for (int i = 0; i < BATTERY_SAMPLES; i++) { | ||
| raw += analogRead(PIN_VBAT_READ); | ||
| } | ||
| raw = raw / BATTERY_SAMPLES; | ||
|
|
||
| return (ADC_MULTIPLIER * raw) / 4096; | ||
| } | ||
|
|
||
| const char* getManufacturerName() const override { | ||
| return "GAT562 EVB Pro"; | ||
| } | ||
|
|
||
| #if defined(P_LORA_TX_LED) | ||
| void onBeforeTransmit() override { | ||
| digitalWrite(P_LORA_TX_LED, HIGH); // turn TX LED on | ||
| } | ||
|
|
||
| void onAfterTransmit() override { | ||
| digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED off | ||
| } | ||
| #endif | ||
|
|
||
| void powerOff() override { | ||
| uint32_t button_pin = PIN_BUTTON1; | ||
| nrf_gpio_cfg_input(button_pin, NRF_GPIO_PIN_PULLUP); | ||
| nrf_gpio_cfg_sense_set(button_pin, NRF_GPIO_PIN_SENSE_LOW); | ||
| sd_power_system_off(); | ||
| } | ||
|
|
||
| }; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| [GAT562_Mesh_EVB_Pro] | ||
| extends = nrf52_base | ||
| board = rak4631 | ||
| board_check = true | ||
| build_flags = ${nrf52_base.build_flags} | ||
| ${sensor_base.build_flags} | ||
| -I variants/gat562_mesh_evb_pro | ||
| -D NRF52_POWER_MANAGEMENT | ||
| -D PIN_BOARD_SCL=14 | ||
| -D PIN_BOARD_SDA=13 | ||
| -D USB_MANUFACTURER='"GAT562"' | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this build flag used anywhere? |
||
| -D USB_PRODUCT='"GAT562 Mesh EVB Pro"' | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this build flag used anywhere? |
||
| -D RADIO_CLASS=CustomSX1262 | ||
| -D WRAPPER_CLASS=CustomSX1262Wrapper | ||
| -D LORA_TX_POWER=22 | ||
| -D SX126X_CURRENT_LIMIT=140 | ||
| -D SX126X_RX_BOOSTED_GAIN=1 | ||
| build_src_filter = ${nrf52_base.build_src_filter} | ||
| +<../variants/gat562_mesh_evb_pro> | ||
| +<helpers/ui/MomentaryButton.cpp> | ||
| +<helpers/sensors> | ||
| lib_deps = | ||
| ${nrf52_base.lib_deps} | ||
| ${sensor_base.lib_deps} | ||
| sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27 | ||
|
|
||
| [env:GAT562_Mesh_EVB_Pro_repeater] | ||
| extends = GAT562_Mesh_EVB_Pro | ||
| build_flags = | ||
| ${GAT562_Mesh_EVB_Pro.build_flags} | ||
| -D ADVERT_NAME='"GAT562 EVB Pro Repeater"' | ||
| -D ADVERT_LAT=0.0 | ||
| -D ADVERT_LON=0.0 | ||
| -D ADMIN_PASSWORD='"password"' | ||
| -D MAX_NEIGHBOURS=50 | ||
| ; -D MESH_PACKET_LOGGING=1 | ||
| ; -D MESH_DEBUG=1 | ||
| build_src_filter = ${GAT562_Mesh_EVB_Pro.build_src_filter} | ||
| +<../examples/simple_repeater> | ||
|
|
||
|
|
||
| [env:GAT562_Mesh_EVB_Pro_room_server] | ||
| extends = GAT562_Mesh_EVB_Pro | ||
| build_flags = | ||
| ${GAT562_Mesh_EVB_Pro.build_flags} | ||
| -D ADVERT_NAME='"GAT562 EVB Pro Room Server"' | ||
| -D ADVERT_LAT=0.0 | ||
| -D ADVERT_LON=0.0 | ||
| -D ADMIN_PASSWORD='"password"' | ||
| -D ROOM_PASSWORD='"hello"' | ||
| ; -D MESH_PACKET_LOGGING=1 | ||
| ; -D MESH_DEBUG=1 | ||
| build_src_filter = ${GAT562_Mesh_EVB_Pro.build_src_filter} | ||
| +<../examples/simple_room_server> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| #include <Arduino.h> | ||
| #include "target.h" | ||
| #include <helpers/ArduinoHelpers.h> | ||
|
|
||
| GAT562EVBProBoard board; | ||
|
|
||
| #ifndef PIN_USER_BTN | ||
| #define PIN_USER_BTN (-1) | ||
| #endif | ||
|
|
||
|
|
||
| #ifdef DISPLAY_CLASS | ||
| DISPLAY_CLASS display; | ||
| MomentaryButton user_btn(PIN_USER_BTN, 1000, true, false, false); | ||
|
|
||
| MomentaryButton back_btn(PIN_BACK_BTN, 1000, true, false, true); | ||
| #endif | ||
|
|
||
|
|
||
| RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); | ||
|
|
||
| WRAPPER_CLASS radio_driver(radio, board); | ||
|
|
||
| VolatileRTCClock fallback_clock; | ||
| AutoDiscoverRTCClock rtc_clock(fallback_clock); | ||
|
|
||
| #if ENV_INCLUDE_GPS | ||
| #include <helpers/sensors/MicroNMEALocationProvider.h> | ||
| MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); | ||
| EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); | ||
| #else | ||
| EnvironmentSensorManager sensors; | ||
| #endif | ||
|
|
||
| bool radio_init() { | ||
| rtc_clock.begin(Wire); | ||
| return radio.std_init(&SPI); | ||
| } | ||
|
|
||
| uint32_t radio_get_rng_seed() { | ||
| return radio.random(0x7FFFFFFF); | ||
| } | ||
|
|
||
| void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr) { | ||
| radio.setFrequency(freq); | ||
| radio.setSpreadingFactor(sf); | ||
| radio.setBandwidth(bw); | ||
| radio.setCodingRate(cr); | ||
| } | ||
|
|
||
| void radio_set_tx_power(int8_t dbm) { | ||
| radio.setOutputPower(dbm); | ||
| } | ||
|
|
||
| mesh::LocalIdentity radio_new_identity() { | ||
| RadioNoiseListener rng(radio); | ||
| return mesh::LocalIdentity(&rng); // create new random identity | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| #pragma once | ||
|
|
||
| #define RADIOLIB_STATIC_ONLY 1 | ||
| #include <RadioLib.h> | ||
| #include <helpers/radiolib/RadioLibWrappers.h> | ||
| #include <GAT562EVBProBoard.h> | ||
| #include <helpers/radiolib/CustomSX1262Wrapper.h> | ||
| #include <helpers/AutoDiscoverRTCClock.h> | ||
| #include <helpers/sensors/EnvironmentSensorManager.h> | ||
|
|
||
| #ifdef DISPLAY_CLASS | ||
| #include <helpers/ui/SSD1306Display.h> | ||
| extern DISPLAY_CLASS display; | ||
| #include <helpers/ui/MomentaryButton.h> | ||
| extern MomentaryButton user_btn; | ||
|
|
||
| extern MomentaryButton back_btn; | ||
| #endif | ||
|
|
||
| extern GAT562EVBProBoard board; | ||
| extern WRAPPER_CLASS radio_driver; | ||
| extern AutoDiscoverRTCClock rtc_clock; | ||
| extern EnvironmentSensorManager sensors; | ||
|
|
||
| bool radio_init(); | ||
| uint32_t radio_get_rng_seed(); | ||
| void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr); | ||
| void radio_set_tx_power(int8_t dbm); | ||
| mesh::LocalIdentity radio_new_identity(); |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| /* | ||
| Copyright (c) 2014-2015 Arduino LLC. All right reserved. | ||
| Copyright (c) 2016 Sandeep Mistry All right reserved. | ||
| Copyright (c) 2018, Adafruit Industries (adafruit.com) | ||
|
|
||
| This library is free software; you can redistribute it and/or | ||
| modify it under the terms of the GNU Lesser General Public | ||
| License as published by the Free Software Foundation; either | ||
| version 2.1 of the License, or (at your option) any later version. | ||
|
|
||
| This library is distributed in the hope that it will be useful, | ||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| See the GNU Lesser General Public License for more details. | ||
|
|
||
| You should have received a copy of the GNU Lesser General Public | ||
| License along with this library; if not, write to the Free Software | ||
| Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| */ | ||
|
|
||
| #include "variant.h" | ||
| #include "wiring_constants.h" | ||
| #include "wiring_digital.h" | ||
| #include "nrf.h" | ||
|
|
||
| const uint32_t g_ADigitalPinMap[] = | ||
| { | ||
| // P0 | ||
| 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , | ||
| 8 , 9 , 10, 11, 12, 13, 14, 15, | ||
| 16, 17, 18, 19, 20, 21, 22, 23, | ||
| 24, 25, 26, 27, 28, 29, 30, 31, | ||
|
|
||
| // P1 | ||
| 32, 33, 34, 35, 36, 37, 38, 39, | ||
| 40, 41, 42, 43, 44, 45, 46, 47 | ||
| }; | ||
|
|
||
|
|
||
| void initVariant() | ||
| { | ||
| // LED1 & LED2 | ||
| pinMode(PIN_LED1, OUTPUT); | ||
| ledOff(PIN_LED1); | ||
|
|
||
| // pinMode(PIN_LED2, OUTPUT); | ||
| // ledOff(PIN_LED2);; | ||
| } | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please remove
LORA_FREQ,LORA_BW,LORA_SFandLORA_CRbuild flags as these are defined in the project rootplatformio.ini.