mirror of
https://github.com/meshtastic/firmware.git
synced 2025-10-05 22:42:08 +00:00
Compare commits
5 Commits
37e6769b12
...
0c41f90ef5
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0c41f90ef5 | ||
![]() |
7c3eddebc2 | ||
![]() |
78b4eff568 | ||
![]() |
3c1f92ce84 | ||
![]() |
5de6bc1851 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1,4 +1,5 @@
|
|||||||
* text=auto eol=lf
|
* text=auto eol=lf
|
||||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||||
|
*.{ps1,[pP][sS]} text eol=crlf
|
||||||
*.{sh,[sS][hH]} text eol=lf
|
*.{sh,[sS][hH]} text eol=lf
|
||||||
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -7,5 +7,8 @@
|
|||||||
"cmake.configureOnOpen": false,
|
"cmake.configureOnOpen": false,
|
||||||
"[cpp]": {
|
"[cpp]": {
|
||||||
"editor.defaultFormatter": "trunk.io"
|
"editor.defaultFormatter": "trunk.io"
|
||||||
|
},
|
||||||
|
"[powershell]": {
|
||||||
|
"editor.defaultFormatter": "ms-vscode.powershell"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ ECHO.
|
|||||||
ECHO Usage: %SCRIPT_NAME% -f filename [-p PORT] [-P python] (--web)
|
ECHO Usage: %SCRIPT_NAME% -f filename [-p PORT] [-P python] (--web)
|
||||||
ECHO.
|
ECHO.
|
||||||
ECHO Options:
|
ECHO Options:
|
||||||
ECHO -f filename The .bin file to flash. Custom to your device type and region. (required)
|
ECHO -f filename The firmware .bin file to flash. Custom to your device type and region. (required)
|
||||||
ECHO The file must be located in this current directory.
|
ECHO The file must be located in this current directory.
|
||||||
ECHO -p PORT Set the environment variable for ESPTOOL_PORT.
|
ECHO -p PORT Set the environment variable for ESPTOOL_PORT.
|
||||||
ECHO If not set, ESPTOOL iterates all ports (Dangerous).
|
ECHO If not set, ESPTOOL iterates all ports (Dangerous).
|
||||||
@ -30,7 +30,7 @@ ECHO If not supplied the script will try to find esptool in
|
|||||||
ECHO --web Enable WebUI. (default: false)
|
ECHO --web Enable WebUI. (default: false)
|
||||||
ECHO.
|
ECHO.
|
||||||
ECHO Example: %SCRIPT_NAME% -f firmware-t-deck-tft-2.6.0.0b106d4.bin -p COM11
|
ECHO Example: %SCRIPT_NAME% -f firmware-t-deck-tft-2.6.0.0b106d4.bin -p COM11
|
||||||
ECHO Example: %SCRIPT_NAME% -f littlefs-unphone-2.6.0.0b106d4.bin -p COM11 --web
|
ECHO Example: %SCRIPT_NAME% -f firmware-unphone-2.6.0.0b106d4.bin -p COM11 --web
|
||||||
GOTO eof
|
GOTO eof
|
||||||
|
|
||||||
:version
|
:version
|
||||||
@ -60,16 +60,20 @@ IF "__!FILENAME!__"=="____" (
|
|||||||
CALL :LOG_MESSAGE DEBUG "Missing -f filename input."
|
CALL :LOG_MESSAGE DEBUG "Missing -f filename input."
|
||||||
GOTO help
|
GOTO help
|
||||||
) ELSE (
|
) ELSE (
|
||||||
|
CALL :LOG_MESSAGE DEBUG "Filename: !FILENAME!"
|
||||||
IF NOT "__!FILENAME: =!__"=="__!FILENAME!__" (
|
IF NOT "__!FILENAME: =!__"=="__!FILENAME!__" (
|
||||||
CALL :LOG_MESSAGE ERROR "Filename containing spaces are not supported."
|
CALL :LOG_MESSAGE ERROR "Filename containing spaces are not supported."
|
||||||
GOTO help
|
GOTO help
|
||||||
)
|
)
|
||||||
|
IF "__!FILENAME:firmware-=!__"=="__!FILENAME!__" (
|
||||||
|
CALL :LOG_MESSAGE ERROR "Filename must be a firmware-* file."
|
||||||
|
GOTO help
|
||||||
|
)
|
||||||
@REM Remove ".\" or "./" file prefix if present.
|
@REM Remove ".\" or "./" file prefix if present.
|
||||||
SET "FILENAME=!FILENAME:.\=!"
|
SET "FILENAME=!FILENAME:.\=!"
|
||||||
SET "FILENAME=!FILENAME:./=!"
|
SET "FILENAME=!FILENAME:./=!"
|
||||||
)
|
)
|
||||||
|
|
||||||
CALL :LOG_MESSAGE DEBUG "Filename: !FILENAME!"
|
|
||||||
CALL :LOG_MESSAGE DEBUG "Checking if !FILENAME! exists..."
|
CALL :LOG_MESSAGE DEBUG "Checking if !FILENAME! exists..."
|
||||||
IF NOT EXIST !FILENAME! (
|
IF NOT EXIST !FILENAME! (
|
||||||
CALL :LOG_MESSAGE ERROR "File does not exist: !FILENAME!. Terminating."
|
CALL :LOG_MESSAGE ERROR "File does not exist: !FILENAME!. Terminating."
|
||||||
|
@ -29,7 +29,7 @@ Flash image file to device, but first erasing and writing system information.
|
|||||||
-h Display this help and exit.
|
-h Display this help and exit.
|
||||||
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerous).
|
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerous).
|
||||||
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
|
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
|
||||||
-f FILENAME The .bin file to flash. Custom to your device type and region.
|
-f FILENAME The firmware .bin file to flash. Custom to your device type and region.
|
||||||
--web Enable WebUI. (Default: false)
|
--web Enable WebUI. (Default: false)
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@ -73,6 +73,11 @@ done
|
|||||||
shift
|
shift
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if [[ $FILENAME != firmware-* ]]; then
|
||||||
|
echo "Filename must be a firmware-* file."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Check if FILENAME contains "-tft-" and set target partitionScheme accordingly.
|
# Check if FILENAME contains "-tft-" and set target partitionScheme accordingly.
|
||||||
if [[ ${FILENAME//-tft-/} != "$FILENAME" ]]; then
|
if [[ ${FILENAME//-tft-/} != "$FILENAME" ]]; then
|
||||||
TFT_BUILD=true
|
TFT_BUILD=true
|
||||||
|
@ -25,10 +25,10 @@ param()
|
|||||||
function New-EmptyFile() {
|
function New-EmptyFile() {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param (
|
param (
|
||||||
[Parameter(Position=0,Mandatory=$true)]
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
# Specifies the file name.
|
# Specifies the file name.
|
||||||
[string]$FileName,
|
[string]$FileName,
|
||||||
[Parameter(Position=1)]
|
[Parameter(Position = 1)]
|
||||||
# Specifies the target path. (Get-Location).Path is the default.
|
# Specifies the target path. (Get-Location).Path is the default.
|
||||||
[string]$Directory = (Get-Location).Path
|
[string]$Directory = (Get-Location).Path
|
||||||
)
|
)
|
||||||
@ -42,10 +42,10 @@ function New-EmptyFile() {
|
|||||||
function Remove-EmptyFile() {
|
function Remove-EmptyFile() {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param (
|
param (
|
||||||
[Parameter(Position=0,Mandatory=$true)]
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
# Specifies the file name.
|
# Specifies the file name.
|
||||||
[string]$FileName,
|
[string]$FileName,
|
||||||
[Parameter(Position=1)]
|
[Parameter(Position = 1)]
|
||||||
# Specifies the target path. (Get-Location).Path is the default.
|
# Specifies the target path. (Get-Location).Path is the default.
|
||||||
[string]$Directory = (Get-Location).Path
|
[string]$Directory = (Get-Location).Path
|
||||||
)
|
)
|
||||||
@ -60,14 +60,14 @@ function Remove-EmptyFile() {
|
|||||||
$TestCases = New-Object -TypeName PSObject -Property @{
|
$TestCases = New-Object -TypeName PSObject -Property @{
|
||||||
# Use this PSObject to define testcases according to this syntax:
|
# Use this PSObject to define testcases according to this syntax:
|
||||||
# "testname" = @("firmware-testname","bleota","littlefs-testname","args")
|
# "testname" = @("firmware-testname","bleota","littlefs-testname","args")
|
||||||
"t-deck" = @("firmware-t-deck-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-t-deck-2.6.0.0b106d4.bin","")
|
"t-deck" = @("firmware-t-deck-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-t-deck-2.6.0.0b106d4.bin", "")
|
||||||
"t-deck_web" = @("firmware-t-deck-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefswebui-t-deck-2.6.0.0b106d4.bin","--web")
|
"t-deck_web" = @("firmware-t-deck-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefswebui-t-deck-2.6.0.0b106d4.bin", "--web")
|
||||||
"t-deck-tft" = @("firmware-t-deck-tft-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-t-deck-tft-2.6.0.0b106d4.bin","")
|
"t-deck-tft" = @("firmware-t-deck-tft-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-t-deck-tft-2.6.0.0b106d4.bin", "")
|
||||||
"heltec-ht62-esp32c3" = @("firmware-heltec-ht62-esp32c3-sx1262-2.6.0.0b106d4.bin", "bleota-c3.bin", "littlefs-heltec-ht62-esp32c3-sx1262-2.6.0.0b106d4.bin","")
|
"heltec-ht62-esp32c3" = @("firmware-heltec-ht62-esp32c3-sx1262-2.6.0.0b106d4.bin", "bleota-c3.bin", "littlefs-heltec-ht62-esp32c3-sx1262-2.6.0.0b106d4.bin", "")
|
||||||
"tlora-c6" = @("firmware-tlora-c6-2.6.0.0b106d4.bin", "bleota.bin", "littlefs-tlora-c6-2.6.0.0b106d4.bin","")
|
"tlora-c6" = @("firmware-tlora-c6-2.6.0.0b106d4.bin", "bleota.bin", "littlefs-tlora-c6-2.6.0.0b106d4.bin", "")
|
||||||
"heltec-v3_web" = @("firmware-heltec-v3-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefswebui-heltec-v3-2.6.0.0b106d4.bin","--web")
|
"heltec-v3_web" = @("firmware-heltec-v3-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefswebui-heltec-v3-2.6.0.0b106d4.bin", "--web")
|
||||||
"seeed-sensecap-indicator-tft" = @("firmware-seeed-sensecap-indicator-tft-2.6.0.0b106d4.bin", "bleota.bin", "littlefs-seeed-sensecap-indicator-tft-2.6.0.0b106d4.bin","")
|
"seeed-sensecap-indicator-tft" = @("firmware-seeed-sensecap-indicator-tft-2.6.0.0b106d4.bin", "bleota.bin", "littlefs-seeed-sensecap-indicator-tft-2.6.0.0b106d4.bin", "")
|
||||||
"picomputer-s3-tft" = @("firmware-picomputer-s3-tft-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-picomputer-s3-tft-2.6.0.0b106d4.bin","")
|
"picomputer-s3-tft" = @("firmware-picomputer-s3-tft-2.6.0.0b106d4.bin", "bleota-s3.bin", "littlefs-picomputer-s3-tft-2.6.0.0b106d4.bin", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($TestCase in $TestCases.PSObject.Properties) {
|
foreach ($TestCase in $TestCases.PSObject.Properties) {
|
||||||
@ -88,9 +88,10 @@ foreach ($TestCase in $TestCases.PSObject.Properties) {
|
|||||||
|
|
||||||
foreach ($Line in $Test) {
|
foreach ($Line in $Test) {
|
||||||
if ($Line -match "Set OTA_OFFSET to" -or `
|
if ($Line -match "Set OTA_OFFSET to" -or `
|
||||||
$Line -match "Set SPIFFS_OFFSET to") {
|
$Line -match "Set SPIFFS_OFFSET to") {
|
||||||
Write-Host -Object "$($Line -replace "^.*?Set","Set")" -ForegroundColor Blue
|
Write-Host -Object "$($Line -replace "^.*?Set","Set")" -ForegroundColor Blue
|
||||||
} elseif ($VerbosePreference -eq "Continue") {
|
}
|
||||||
|
elseif ($VerbosePreference -eq "Continue") {
|
||||||
Write-Host -Object $Line
|
Write-Host -Object $Line
|
||||||
}
|
}
|
||||||
if ($Line -match "ERROR") {
|
if ($Line -match "ERROR") {
|
||||||
@ -100,7 +101,7 @@ foreach ($TestCase in $TestCases.PSObject.Properties) {
|
|||||||
}
|
}
|
||||||
if ($null -ne $Errors) {
|
if ($null -ne $Errors) {
|
||||||
Write-Host -Object "$Counter ERROR(s) detected!" -ForegroundColor Red
|
Write-Host -Object "$Counter ERROR(s) detected!" -ForegroundColor Red
|
||||||
if (-not ($VerbosePreference -eq "Continue")) {Write-Host -Object $Errors}
|
if (-not ($VerbosePreference -eq "Continue")) { Write-Host -Object $Errors }
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($File in $Files) {
|
foreach ($File in $Files) {
|
||||||
|
@ -94,7 +94,7 @@ lib_deps =
|
|||||||
|
|
||||||
[device-ui_base]
|
[device-ui_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/meshtastic/device-ui.git#d7b18e98704f988fcda9e5fa7404e677b3d11f8c
|
https://github.com/meshtastic/device-ui.git#74e739ed4532ca10393df9fc89ae5a22f0bab2b1
|
||||||
|
|
||||||
; Common libs for environmental measurements in telemetry module
|
; Common libs for environmental measurements in telemetry module
|
||||||
; (not included in native / portduino)
|
; (not included in native / portduino)
|
||||||
|
@ -186,6 +186,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
#define FT6336U_ADDR 0x48
|
#define FT6336U_ADDR 0x48
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// RAK12035VB Soil Monitor (using RAK12023 up to 3 RAK12035 monitors can be connected)
|
||||||
|
// - the default i2c address for this sensor is 0x20, and users are instructed to
|
||||||
|
// set 0x21 and 0x22 for the second and third sensor if present.
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
#define RAK120351_ADDR 0x20
|
||||||
|
#define RAK120352_ADDR 0x21
|
||||||
|
#define RAK120353_ADDR 0x22
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// BIAS-T Generator
|
// BIAS-T Generator
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
@ -69,6 +69,7 @@ class ScanI2C
|
|||||||
DFROBOT_RAIN,
|
DFROBOT_RAIN,
|
||||||
DPS310,
|
DPS310,
|
||||||
LTR390UV,
|
LTR390UV,
|
||||||
|
RAK12035,
|
||||||
} DeviceType;
|
} DeviceType;
|
||||||
|
|
||||||
// typedef uint8_t DeviceAddress;
|
// typedef uint8_t DeviceAddress;
|
||||||
|
@ -417,9 +417,21 @@ void ScanI2CTwoWire::scanPort(I2CPort port, uint8_t *address, uint8_t asize)
|
|||||||
logFoundDevice("BMA423", (uint8_t)addr.address);
|
logFoundDevice("BMA423", (uint8_t)addr.address);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TCA9535_ADDR:
|
||||||
|
case RAK120352_ADDR:
|
||||||
|
case RAK120353_ADDR:
|
||||||
|
registerValue = getRegisterValue(ScanI2CTwoWire::RegisterLocation(addr, 0x02), 1);
|
||||||
|
if (registerValue == addr.address) { // RAK12035 returns its I2C address at 0x02 (eg 0x20)
|
||||||
|
type = RAK12035;
|
||||||
|
logFoundDevice("RAK12035", (uint8_t)addr.address);
|
||||||
|
} else {
|
||||||
|
type = TCA9535;
|
||||||
|
logFoundDevice("TCA9535", (uint8_t)addr.address);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
SCAN_SIMPLE_CASE(LSM6DS3_ADDR, LSM6DS3, "LSM6DS3", (uint8_t)addr.address);
|
SCAN_SIMPLE_CASE(LSM6DS3_ADDR, LSM6DS3, "LSM6DS3", (uint8_t)addr.address);
|
||||||
SCAN_SIMPLE_CASE(TCA9535_ADDR, TCA9535, "TCA9535", (uint8_t)addr.address);
|
|
||||||
SCAN_SIMPLE_CASE(TCA9555_ADDR, TCA9555, "TCA9555", (uint8_t)addr.address);
|
SCAN_SIMPLE_CASE(TCA9555_ADDR, TCA9555, "TCA9555", (uint8_t)addr.address);
|
||||||
SCAN_SIMPLE_CASE(VEML7700_ADDR, VEML7700, "VEML7700", (uint8_t)addr.address);
|
SCAN_SIMPLE_CASE(VEML7700_ADDR, VEML7700, "VEML7700", (uint8_t)addr.address);
|
||||||
SCAN_SIMPLE_CASE(TSL25911_ADDR, TSL2591, "TSL2591", (uint8_t)addr.address);
|
SCAN_SIMPLE_CASE(TSL25911_ADDR, TSL2591, "TSL2591", (uint8_t)addr.address);
|
||||||
|
@ -643,6 +643,7 @@ void setup()
|
|||||||
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::DFROBOT_RAIN, meshtastic_TelemetrySensorType_DFROBOT_RAIN);
|
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::DFROBOT_RAIN, meshtastic_TelemetrySensorType_DFROBOT_RAIN);
|
||||||
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::LTR390UV, meshtastic_TelemetrySensorType_LTR390UV);
|
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::LTR390UV, meshtastic_TelemetrySensorType_LTR390UV);
|
||||||
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::DPS310, meshtastic_TelemetrySensorType_DPS310);
|
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::DPS310, meshtastic_TelemetrySensorType_DPS310);
|
||||||
|
scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::RAK12035, meshtastic_TelemetrySensorType_RAK12035);
|
||||||
|
|
||||||
i2cScanner.reset();
|
i2cScanner.reset();
|
||||||
#endif
|
#endif
|
||||||
@ -1225,8 +1226,12 @@ extern meshtastic_DeviceMetadata getDeviceMetadata()
|
|||||||
#if MESHTASTIC_EXCLUDE_AUDIO
|
#if MESHTASTIC_EXCLUDE_AUDIO
|
||||||
deviceMetadata.excluded_modules |= meshtastic_ExcludedModules_AUDIO_CONFIG;
|
deviceMetadata.excluded_modules |= meshtastic_ExcludedModules_AUDIO_CONFIG;
|
||||||
#endif
|
#endif
|
||||||
#if !HAS_SCREEN || NO_EXT_GPIO
|
// Option to explicitly include canned messages for edge cases, e.g. niche graphics
|
||||||
deviceMetadata.excluded_modules |= meshtastic_ExcludedModules_CANNEDMSG_CONFIG | meshtastic_ExcludedModules_EXTNOTIF_CONFIG;
|
#if (!HAS_SCREEN && NO_EXT_GPIO) && !MESHTASTIC_INCLUDE_CANNEDMSG
|
||||||
|
deviceMetadata.excluded_modules |= meshtastic_ExcludedModules_CANNEDMSG_CONFIG;
|
||||||
|
#endif
|
||||||
|
#if NO_EXT_GPIO
|
||||||
|
deviceMetadata.excluded_modules |= meshtastic_ExcludedModules_EXTNOTIF_CONFIG;
|
||||||
#endif
|
#endif
|
||||||
// Only edge case here is if we apply this a device with built in Accelerometer and want to detect interrupts
|
// Only edge case here is if we apply this a device with built in Accelerometer and want to detect interrupts
|
||||||
// We'll have to macro guard against those targets potentially
|
// We'll have to macro guard against those targets potentially
|
||||||
|
@ -41,6 +41,9 @@
|
|||||||
#include "Sensor/SHTC3Sensor.h"
|
#include "Sensor/SHTC3Sensor.h"
|
||||||
#include "Sensor/TSL2591Sensor.h"
|
#include "Sensor/TSL2591Sensor.h"
|
||||||
#include "Sensor/VEML7700Sensor.h"
|
#include "Sensor/VEML7700Sensor.h"
|
||||||
|
#ifdef RAK4630
|
||||||
|
#include "Sensor/RAK12035Sensor.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
BMP085Sensor bmp085Sensor;
|
BMP085Sensor bmp085Sensor;
|
||||||
BMP280Sensor bmp280Sensor;
|
BMP280Sensor bmp280Sensor;
|
||||||
@ -63,6 +66,9 @@ DFRobotGravitySensor dfRobotGravitySensor;
|
|||||||
NAU7802Sensor nau7802Sensor;
|
NAU7802Sensor nau7802Sensor;
|
||||||
BMP3XXSensor bmp3xxSensor;
|
BMP3XXSensor bmp3xxSensor;
|
||||||
CGRadSensSensor cgRadSens;
|
CGRadSensSensor cgRadSens;
|
||||||
|
#ifdef RAK4630
|
||||||
|
RAK12035Sensor rak12035Sensor;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef T1000X_SENSOR_EN
|
#ifdef T1000X_SENSOR_EN
|
||||||
#include "Sensor/T1000xSensor.h"
|
#include "Sensor/T1000xSensor.h"
|
||||||
@ -72,6 +78,7 @@ T1000xSensor t1000xSensor;
|
|||||||
#include "Sensor/IndicatorSensor.h"
|
#include "Sensor/IndicatorSensor.h"
|
||||||
IndicatorSensor indicatorSensor;
|
IndicatorSensor indicatorSensor;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FAILED_STATE_SENSOR_READ_MULTIPLIER 10
|
#define FAILED_STATE_SENSOR_READ_MULTIPLIER 10
|
||||||
#define DISPLAY_RECEIVEID_MEASUREMENTS_ON_SCREEN true
|
#define DISPLAY_RECEIVEID_MEASUREMENTS_ON_SCREEN true
|
||||||
|
|
||||||
@ -171,6 +178,11 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
|
|
||||||
result = rak9154Sensor.runOnce();
|
result = rak9154Sensor.runOnce();
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RAK4630
|
||||||
|
if (rak12035Sensor.hasSensor()) {
|
||||||
|
result = rak12035Sensor.runOnce();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
// it's possible to have this module enabled, only for displaying values on the screen.
|
// it's possible to have this module enabled, only for displaying values on the screen.
|
||||||
@ -498,6 +510,12 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
valid = valid && rak9154Sensor.getMetrics(m);
|
valid = valid && rak9154Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RAK4630
|
||||||
|
if (rak12035Sensor.hasSensor()) {
|
||||||
|
valid = valid && rak12035Sensor.getMetrics(m);
|
||||||
|
hasSensor = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return valid && hasSensor;
|
return valid && hasSensor;
|
||||||
}
|
}
|
||||||
@ -552,6 +570,9 @@ bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|||||||
|
|
||||||
LOG_INFO("Send: radiation=%fµR/h", m.variant.environment_metrics.radiation);
|
LOG_INFO("Send: radiation=%fµR/h", m.variant.environment_metrics.radiation);
|
||||||
|
|
||||||
|
LOG_INFO("Send: soil_temperature=%f, soil_moisture=%u", m.variant.environment_metrics.soil_temperature,
|
||||||
|
m.variant.environment_metrics.soil_moisture);
|
||||||
|
|
||||||
sensor_read_error_count = 0;
|
sensor_read_error_count = 0;
|
||||||
|
|
||||||
meshtastic_MeshPacket *p = allocDataProtobuf(m);
|
meshtastic_MeshPacket *p = allocDataProtobuf(m);
|
||||||
@ -710,8 +731,15 @@ AdminMessageHandleResult EnvironmentTelemetryModule::handleAdminMessageForModule
|
|||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#ifdef RAK4630
|
||||||
|
if (rak12035Sensor.hasSensor()) {
|
||||||
|
result = rak12035Sensor.handleAdminMessage(mp, request, response);
|
||||||
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
118
src/modules/Telemetry/Sensor/RAK12035Sensor.cpp
Normal file
118
src/modules/Telemetry/Sensor/RAK12035Sensor.cpp
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#include "configuration.h"
|
||||||
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && defined(RAK4630)
|
||||||
|
|
||||||
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||||
|
#include "RAK12035Sensor.h"
|
||||||
|
|
||||||
|
RAK12035Sensor::RAK12035Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_RAK12035, "RAK12035") {}
|
||||||
|
|
||||||
|
int32_t RAK12035Sensor::runOnce()
|
||||||
|
{
|
||||||
|
LOG_INFO("Init sensor: %s", sensorName);
|
||||||
|
if (!hasSensor()) {
|
||||||
|
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
|
||||||
|
}
|
||||||
|
|
||||||
|
sensor.set_sensor_addr(RAK120351_ADDR);
|
||||||
|
|
||||||
|
sensor.begin(nodeTelemetrySensorsMap[sensorType].first);
|
||||||
|
// Get sensor firmware version
|
||||||
|
uint8_t data = 0;
|
||||||
|
sensor.get_sensor_version(&data);
|
||||||
|
LOG_INFO("Sensor Firmware version: %i", data);
|
||||||
|
|
||||||
|
if (data != 0) {
|
||||||
|
LOG_DEBUG("RAK12035Sensor Init Succeed");
|
||||||
|
status = true;
|
||||||
|
} else {
|
||||||
|
LOG_ERROR("RAK12035Sensor Init Failed");
|
||||||
|
status = false;
|
||||||
|
}
|
||||||
|
sensor.sensor_sleep();
|
||||||
|
return initI2CSensor();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RAK12035Sensor::setup()
|
||||||
|
{
|
||||||
|
// Set the calibration values
|
||||||
|
// Reading the saved calibration values from the sensor.
|
||||||
|
uint16_t zero_val = 0;
|
||||||
|
uint16_t hundred_val = 0;
|
||||||
|
uint16_t default_zero_val = 550;
|
||||||
|
uint16_t default_hundred_val = 420;
|
||||||
|
sensor.sensor_on();
|
||||||
|
delay(200);
|
||||||
|
sensor.get_dry_cal(&zero_val);
|
||||||
|
sensor.get_wet_cal(&hundred_val);
|
||||||
|
delay(200);
|
||||||
|
if (zero_val == 0 || zero_val <= hundred_val) {
|
||||||
|
LOG_ERROR("Dry calibration value is %d", zero_val);
|
||||||
|
LOG_ERROR("Wet calibration value is %d", hundred_val);
|
||||||
|
LOG_ERROR("This does not make sense. Youc can recalibrate this sensor using the calibration sketch included here: "
|
||||||
|
"https://github.com/RAKWireless/RAK12035_SoilMoisture.");
|
||||||
|
LOG_ERROR("For now, setting default calibration value for Dry Calibration: %d", default_zero_val);
|
||||||
|
sensor.set_dry_cal(default_zero_val);
|
||||||
|
sensor.get_dry_cal(&zero_val);
|
||||||
|
LOG_ERROR("Dry calibration reset complete. New value is %d", zero_val);
|
||||||
|
}
|
||||||
|
if (hundred_val == 0 || hundred_val >= zero_val) {
|
||||||
|
LOG_ERROR("Dry calibration value is %d", zero_val);
|
||||||
|
LOG_ERROR("Wet calibration value is %d", hundred_val);
|
||||||
|
LOG_ERROR("This does not make sense. Youc can recalibrate this sensor using the calibration sketch included here: "
|
||||||
|
"https://github.com/RAKWireless/RAK12035_SoilMoisture.");
|
||||||
|
LOG_ERROR("For now, setting default calibration value for Wet Calibration: %d", default_hundred_val);
|
||||||
|
sensor.set_wet_cal(default_hundred_val);
|
||||||
|
sensor.get_wet_cal(&hundred_val);
|
||||||
|
LOG_ERROR("Wet calibration reset complete. New value is %d", hundred_val);
|
||||||
|
}
|
||||||
|
sensor.sensor_sleep();
|
||||||
|
delay(200);
|
||||||
|
LOG_INFO("Dry calibration value is %d", zero_val);
|
||||||
|
LOG_INFO("Wet calibration value is %d", hundred_val);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RAK12035Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
|
{
|
||||||
|
measurement->variant.environment_metrics.has_soil_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_soil_moisture = true;
|
||||||
|
|
||||||
|
uint8_t moisture = 0;
|
||||||
|
uint16_t temp = 0;
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
|
sensor.sensor_on();
|
||||||
|
delay(200);
|
||||||
|
success = sensor.get_sensor_moisture(&moisture);
|
||||||
|
delay(200);
|
||||||
|
success = sensor.get_sensor_temperature(&temp);
|
||||||
|
delay(200);
|
||||||
|
sensor.sensor_sleep();
|
||||||
|
|
||||||
|
if (success == false) {
|
||||||
|
LOG_ERROR("Failed to read sensor data");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO("Successful read from sensor Temperature: %.2f, Moisture: %ld%", (double)(temp / 10), moisture);
|
||||||
|
measurement->variant.environment_metrics.soil_temperature = (float)(temp / 10);
|
||||||
|
measurement->variant.environment_metrics.soil_moisture = moisture;
|
||||||
|
|
||||||
|
LOG_INFO("Check if the original temperature and moisture (relative_humidity) are being used.. if not just use them for the "
|
||||||
|
"soil monitoring.");
|
||||||
|
|
||||||
|
if (!measurement->variant.environment_metrics.has_temperature) {
|
||||||
|
LOG_INFO("Overwrite the temp metrics (not being set right now and this will allow the soil temp value to be used in the "
|
||||||
|
"client interface).");
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.temperature = (float)(temp / 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!measurement->variant.environment_metrics.has_relative_humidity) {
|
||||||
|
LOG_INFO("Overwrite the moisture metrics (not being used for air humidity and this will allow the soil humidity to "
|
||||||
|
"appear in the client interfaces without adjustments).");
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
measurement->variant.environment_metrics.relative_humidity = (float)moisture;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
29
src/modules/Telemetry/Sensor/RAK12035Sensor.h
Normal file
29
src/modules/Telemetry/Sensor/RAK12035Sensor.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "configuration.h"
|
||||||
|
|
||||||
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && defined(RAK4630)
|
||||||
|
#ifndef _MT_RAK12035VBSENSOR_H
|
||||||
|
#define _MT_RAK12035VBSENSOR_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||||
|
#include "RAK12035_SoilMoisture.h"
|
||||||
|
#include "TelemetrySensor.h"
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
class RAK12035Sensor : public TelemetrySensor
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
RAK12035 sensor;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void setup() override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RAK12035Sensor();
|
||||||
|
virtual int32_t runOnce() override;
|
||||||
|
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -20,6 +20,7 @@ lib_deps =
|
|||||||
https://github.com/RAKWireless/RAK13800-W5100S.git#1.0.2
|
https://github.com/RAKWireless/RAK13800-W5100S.git#1.0.2
|
||||||
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
||||||
https://github.com/RAKWireless/RAK12034-BMX160.git#dcead07ffa267d3c906e9ca4a1330ab989e957e2
|
https://github.com/RAKWireless/RAK12034-BMX160.git#dcead07ffa267d3c906e9ca4a1330ab989e957e2
|
||||||
|
beegee-tokyo/RAK12035_SoilMoisture@^1.0.3
|
||||||
|
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
||||||
@ -52,4 +53,4 @@ lib_deps =
|
|||||||
upload_protocol = stlink
|
upload_protocol = stlink
|
||||||
; eventually use platformio/tool-pyocd@^2.3600.0 instad
|
; eventually use platformio/tool-pyocd@^2.3600.0 instad
|
||||||
;upload_protocol = custom
|
;upload_protocol = custom
|
||||||
;upload_command = pyocd flash -t nrf52840 $UPLOADERFLAGS $SOURCE
|
;upload_command = pyocd flash -t nrf52840 $UPLOADERFLAGS $SOURCE
|
||||||
|
@ -90,6 +90,8 @@ static const uint8_t A7 = PIN_A7;
|
|||||||
// Other pins
|
// Other pins
|
||||||
#define PIN_AREF (2)
|
#define PIN_AREF (2)
|
||||||
#define PIN_NFC1 (9)
|
#define PIN_NFC1 (9)
|
||||||
|
#define WB_IO5 PIN_NFC1
|
||||||
|
#define WB_IO4 (4)
|
||||||
#define PIN_NFC2 (10)
|
#define PIN_NFC2 (10)
|
||||||
|
|
||||||
static const uint8_t AREF = PIN_AREF;
|
static const uint8_t AREF = PIN_AREF;
|
||||||
@ -217,6 +219,7 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
// enables 3.3V periphery like GPS or IO Module
|
// enables 3.3V periphery like GPS or IO Module
|
||||||
// Do not toggle this for GPS power savings
|
// Do not toggle this for GPS power savings
|
||||||
#define PIN_3V3_EN (34)
|
#define PIN_3V3_EN (34)
|
||||||
|
#define WB_IO2 PIN_3V3_EN
|
||||||
|
|
||||||
// RAK1910 GPS module
|
// RAK1910 GPS module
|
||||||
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
||||||
@ -270,4 +273,4 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
* Arduino objects - C++ only
|
* Arduino objects - C++ only
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,6 +17,7 @@ lib_deps =
|
|||||||
melopero/Melopero RV3028@^1.1.0
|
melopero/Melopero RV3028@^1.1.0
|
||||||
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
||||||
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
||||||
|
beegee-tokyo/RAK12035_SoilMoisture@^1.0.3
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
;upload_protocol = jlink
|
;upload_protocol = jlink
|
||||||
|
@ -90,6 +90,8 @@ static const uint8_t A7 = PIN_A7;
|
|||||||
// Other pins
|
// Other pins
|
||||||
#define PIN_AREF (2)
|
#define PIN_AREF (2)
|
||||||
#define PIN_NFC1 (9)
|
#define PIN_NFC1 (9)
|
||||||
|
#define WB_IO5 PIN_NFC1
|
||||||
|
#define WB_IO4 (4)
|
||||||
#define PIN_NFC2 (10)
|
#define PIN_NFC2 (10)
|
||||||
|
|
||||||
static const uint8_t AREF = PIN_AREF;
|
static const uint8_t AREF = PIN_AREF;
|
||||||
@ -188,6 +190,7 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
|
|
||||||
// enables 3.3V periphery like GPS or IO Module
|
// enables 3.3V periphery like GPS or IO Module
|
||||||
#define PIN_3V3_EN (34)
|
#define PIN_3V3_EN (34)
|
||||||
|
#define WB_IO2 PIN_3V3_EN
|
||||||
|
|
||||||
// RAK1910 GPS module
|
// RAK1910 GPS module
|
||||||
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
||||||
@ -231,4 +234,4 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
* Arduino objects - C++ only
|
* Arduino objects - C++ only
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,6 +19,7 @@ lib_deps =
|
|||||||
melopero/Melopero RV3028@^1.1.0
|
melopero/Melopero RV3028@^1.1.0
|
||||||
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
||||||
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
||||||
|
beegee-tokyo/RAK12035_SoilMoisture@^1.0.3
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
;upload_protocol = jlink
|
;upload_protocol = jlink
|
||||||
|
@ -69,7 +69,9 @@ static const uint8_t A7 = PIN_A7;
|
|||||||
|
|
||||||
// Other pins
|
// Other pins
|
||||||
#define PIN_AREF (2)
|
#define PIN_AREF (2)
|
||||||
// #define PIN_NFC1 (9)
|
#define PIN_NFC1 (9)
|
||||||
|
#define WB_IO5 PIN_NFC1
|
||||||
|
#define WB_IO4 (4)
|
||||||
// #define PIN_NFC2 (10)
|
// #define PIN_NFC2 (10)
|
||||||
|
|
||||||
static const uint8_t AREF = PIN_AREF;
|
static const uint8_t AREF = PIN_AREF;
|
||||||
@ -160,6 +162,7 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
|
|
||||||
// enables 3.3V periphery like GPS or IO Module
|
// enables 3.3V periphery like GPS or IO Module
|
||||||
#define PIN_3V3_EN (34)
|
#define PIN_3V3_EN (34)
|
||||||
|
#define WB_IO2 PIN_3V3_EN
|
||||||
|
|
||||||
// NO GPS
|
// NO GPS
|
||||||
#undef GPS_RX_PIN
|
#undef GPS_RX_PIN
|
||||||
@ -202,4 +205,4 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
* Arduino objects - C++ only
|
* Arduino objects - C++ only
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -90,6 +90,8 @@ static const uint8_t A7 = PIN_A7;
|
|||||||
// Other pins
|
// Other pins
|
||||||
#define PIN_AREF (2)
|
#define PIN_AREF (2)
|
||||||
#define PIN_NFC1 (9)
|
#define PIN_NFC1 (9)
|
||||||
|
#define WB_IO5 PIN_NFC1
|
||||||
|
#define WB_IO4 (4)
|
||||||
#define PIN_NFC2 (10)
|
#define PIN_NFC2 (10)
|
||||||
|
|
||||||
static const uint8_t AREF = PIN_AREF;
|
static const uint8_t AREF = PIN_AREF;
|
||||||
@ -217,6 +219,7 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
// enables 3.3V periphery like GPS or IO Module
|
// enables 3.3V periphery like GPS or IO Module
|
||||||
// Do not toggle this for GPS power savings
|
// Do not toggle this for GPS power savings
|
||||||
#define PIN_3V3_EN (34)
|
#define PIN_3V3_EN (34)
|
||||||
|
#define WB_IO2 PIN_3V3_EN
|
||||||
|
|
||||||
// RAK1910 GPS module
|
// RAK1910 GPS module
|
||||||
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
||||||
@ -270,4 +273,4 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
* Arduino objects - C++ only
|
* Arduino objects - C++ only
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,6 +23,7 @@ lib_deps =
|
|||||||
bodmer/TFT_eSPI
|
bodmer/TFT_eSPI
|
||||||
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
||||||
beegee-tokyo/RAK14014-FT6336U @ 1.0.1
|
beegee-tokyo/RAK14014-FT6336U @ 1.0.1
|
||||||
|
beegee-tokyo/RAK12035_SoilMoisture@^1.0.3
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
;upload_protocol = jlink
|
;upload_protocol = jlink
|
||||||
|
@ -90,6 +90,8 @@ static const uint8_t A7 = PIN_A7;
|
|||||||
// Other pins
|
// Other pins
|
||||||
#define PIN_AREF (2)
|
#define PIN_AREF (2)
|
||||||
#define PIN_NFC1 (9)
|
#define PIN_NFC1 (9)
|
||||||
|
#define WB_IO5 PIN_NFC1
|
||||||
|
#define WB_IO4 (4)
|
||||||
#define PIN_NFC2 (10)
|
#define PIN_NFC2 (10)
|
||||||
|
|
||||||
static const uint8_t AREF = PIN_AREF;
|
static const uint8_t AREF = PIN_AREF;
|
||||||
@ -311,4 +313,4 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
* Arduino objects - C++ only
|
* Arduino objects - C++ only
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,6 +39,7 @@ build_flags =
|
|||||||
-D INPUTDRIVER_ENCODER_BTN=0
|
-D INPUTDRIVER_ENCODER_BTN=0
|
||||||
-D INPUTDRIVER_BUTTON_TYPE=0
|
-D INPUTDRIVER_BUTTON_TYPE=0
|
||||||
-D MAX_NUM_NODES=250
|
-D MAX_NUM_NODES=250
|
||||||
|
-D HAS_SDCARD
|
||||||
-D HAS_SCREEN=0
|
-D HAS_SCREEN=0
|
||||||
-D HAS_TFT=1
|
-D HAS_TFT=1
|
||||||
-D USE_I2S_BUZZER
|
-D USE_I2S_BUZZER
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#define GPS_TX_PIN 43
|
#define GPS_TX_PIN 43
|
||||||
|
|
||||||
// Have SPI interface SD card slot
|
// Have SPI interface SD card slot
|
||||||
#define HAS_SDCARD 1
|
// #define HAS_SDCARD // --> needs to be in platform.ini for device-ui
|
||||||
#define SPI_MOSI (41)
|
#define SPI_MOSI (41)
|
||||||
#define SPI_SCK (40)
|
#define SPI_SCK (40)
|
||||||
#define SPI_MISO (38)
|
#define SPI_MISO (38)
|
||||||
|
@ -46,6 +46,7 @@ build_flags =
|
|||||||
-D MAX_THREADS=40
|
-D MAX_THREADS=40
|
||||||
-D HAS_SCREEN=0
|
-D HAS_SCREEN=0
|
||||||
-D HAS_TFT=1
|
-D HAS_TFT=1
|
||||||
|
-D HAS_SDCARD
|
||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
-D RAM_SIZE=3072
|
-D RAM_SIZE=3072
|
||||||
-D LV_LVGL_H_INCLUDE_SIMPLE
|
-D LV_LVGL_H_INCLUDE_SIMPLE
|
||||||
|
@ -48,7 +48,6 @@
|
|||||||
#undef GPS_RX_PIN
|
#undef GPS_RX_PIN
|
||||||
#undef GPS_TX_PIN
|
#undef GPS_TX_PIN
|
||||||
|
|
||||||
#define HAS_SDCARD 1
|
|
||||||
#define SD_SPI_FREQUENCY 25000000
|
#define SD_SPI_FREQUENCY 25000000
|
||||||
#define SDCARD_CS 43
|
#define SDCARD_CS 43
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[VERSION]
|
[VERSION]
|
||||||
major = 2
|
major = 2
|
||||||
minor = 6
|
minor = 6
|
||||||
build = 0
|
build = 1
|
||||||
|
Loading…
Reference in New Issue
Block a user