This commit adds support for a specific LED Matrix display, which can be used to show the number of found devices on a rather large display. We (hackerspace Brixel) used this on the mini Maker Faire Gent 2019 to show the number of found devices throughout the event
127 lines
8.6 KiB
Plaintext
127 lines
8.6 KiB
Plaintext
// ----- Paxcounter user config file ------
|
|
//
|
|
// --> adapt to your needs and use case <--
|
|
//
|
|
// Note: After editing, before "build", use "clean" button in PlatformIO!
|
|
|
|
#define PRODUCTNAME "PAXCNT"
|
|
|
|
// Verbose enables serial output
|
|
#define VERBOSE 1 // set to 0 to silence the device, for mute use build option
|
|
|
|
// Payload send cycle and encoding
|
|
#define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255
|
|
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
|
|
|
// Set this to include BLE counting and vendor filter functions, or to switch off WIFI counting
|
|
#define VENDORFILTER 1 // set to 0 if you want to count things, not people
|
|
#define BLECOUNTER 0 // set it to 1 if you want to use BLE count, at expense of power & memory
|
|
#define WIFICOUNTER 1 // set it to 0 if you want to switch off WIFI count
|
|
|
|
// BLE scan parameters
|
|
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below
|
|
#define BLESCANWINDOW 80 // [milliseconds] scan window, see below, 3 .. 10240, default 80ms
|
|
#define BLESCANINTERVAL 80 // [illiseconds] scan interval, see below, 3 .. 10240, default 80ms = 100% duty cycle
|
|
|
|
/* Note: guide for setting bluetooth parameters
|
|
*
|
|
* |< Scan Window > |< Scan Window > | ... |< Scan Window > |
|
|
* |< Scan Interval >|< Scan Interval >| ... |< Scan Interval >|
|
|
* |< Scan duration >|
|
|
*
|
|
* Scan duration sets how long scanning should be going on, before starting a new scan cycle. 0 means infinite (default).
|
|
* Scan window sets how much of the interval should be occupied by scanning. Should be >= BLESCANINTERVAL.
|
|
* Scan interval is how long scanning should be done on each channel. BLE uses 3 channels for advertising.
|
|
* -> Adjust these values with power consumption in mind if power is limited.
|
|
* -> Scan interval can be changed during runtime by remote comammand.
|
|
*/
|
|
|
|
// WiFi scan parameters
|
|
#define WIFI_CHANNEL_MIN 1 // start channel number where scan begings
|
|
#define WIFI_CHANNEL_MAX 13 // total channel number to scan
|
|
#define WIFI_MY_COUNTRY "EU" // select locale for Wifi RF settings
|
|
#define WIFI_CHANNEL_SWITCH_INTERVAL 50 // [seconds/100] -> 0,5 sec.
|
|
|
|
// LoRa payload default parameters
|
|
#define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle
|
|
#define RETRANSMIT_RCMD 5 // [seconds] wait time before retransmitting rcommand results
|
|
#define PAYLOAD_BUFFER_SIZE 51 // maximum size of payload block per transmit
|
|
#define LORASFDEFAULT 9 // 7 ... 12 SF, according to LoRaWAN specs
|
|
#define MAXLORARETRY 500 // maximum count of TX retries if LoRa busy
|
|
#define SEND_QUEUE_SIZE 10 // maximum number of messages in payload send queue [1 = no queue]
|
|
|
|
// Hardware settings
|
|
#define RGBLUMINOSITY 30 // RGB LED luminosity [default = 30%]
|
|
#define DISPLAYREFRESH_MS 40 // OLED refresh cycle in ms [default = 40] -> 1000/40 = 25 frames per second
|
|
#define HOMECYCLE 30 // house keeping cycle in seconds [default = 30 secs]
|
|
|
|
// Settings for BME680 environmental sensor
|
|
#define BME_TEMP_OFFSET 5.0f // Offset sensor on chip temp <-> ambient temp [default = 5°C]
|
|
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // update every 360 minutes = 4 times a day
|
|
|
|
// OTA settings
|
|
#define USE_OTA 1 // set to 0 to disable OTA update
|
|
#define WIFI_MAX_TRY 5 // maximum number of wifi connect attempts for OTA update [default = 20]
|
|
#define OTA_MAX_TRY 5 // maximum number of attempts for OTA download and write to flash [default = 3]
|
|
#define OTA_MIN_BATT 3600 // minimum battery level for OTA [millivolt]
|
|
#define RESPONSE_TIMEOUT_MS 60000 // firmware binary server connection timeout [milliseconds]
|
|
|
|
// settings for syncing time of node with external time source
|
|
#define TIME_SYNC_INTERVAL 60 // sync time attempt each .. minutes from time source (GPS/LORA/RTC) [default = 60], 0 means off
|
|
#define TIME_SYNC_INTERVAL_RETRY 10 // retry time sync after lost sync each .. minutes [default = 10], 0 means off
|
|
#define TIME_SYNC_COMPILEDATE 0 // set to 1 to use compile date to initialize RTC after power outage [default = 0]
|
|
#define TIME_SYNC_LORAWAN 0 // set to 1 to use LORA network as time source, 0 means off [default = 0]
|
|
#define TIME_SYNC_LORASERVER 0 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0]
|
|
|
|
// settings for syncing time with timeserver applications
|
|
#define TIME_SYNC_SAMPLES 1 // number of time requests for averaging
|
|
#define TIME_SYNC_CYCLE 60 // delay between two time samples [seconds]
|
|
#define TIME_SYNC_TIMEOUT 300 // timeout waiting for timeserver answer [seconds]
|
|
|
|
// time zone, see https://github.com/JChristensen/Timezone/blob/master/examples/WorldClock/WorldClock.ino
|
|
#define DAYLIGHT_TIME {"CEST", Last, Sun, Mar, 2, 120} // Central European Summer Time
|
|
#define STANDARD_TIME {"CET ", Last, Sun, Oct, 3, 60} // Central European Standard Time
|
|
|
|
// Ports on which the device sends and listenes on LoRaWAN and SPI
|
|
#define COUNTERPORT 1 // counts
|
|
#define RCMDPORT 2 // remote commands
|
|
#define STATUSPORT 2 // remote command results
|
|
#define CONFIGPORT 3 // config query results
|
|
#define GPSPORT 4 // gps
|
|
#define BUTTONPORT 5 // button pressed signal
|
|
#define BEACONPORT 6 // beacon alarms
|
|
#define BMEPORT 7 // BME680 sensor
|
|
#define BATTPORT 8 // battery voltage
|
|
#define TIMEPORT 9 // time query
|
|
#define TIMEANSWERPORT_MIN 0xA0 // time answer, start of port range
|
|
#define TIMEANSWERPORT_MAX 0xDF // time answer, end of port range
|
|
#define SENSOR1PORT 10 // user sensor #1
|
|
#define SENSOR2PORT 11 // user sensor #2
|
|
#define SENSOR3PORT 12 // user sensor #3
|
|
|
|
// Cayenne LPP Ports, see https://community.mydevices.com/t/cayenne-lpp-2-0/7510
|
|
#define CAYENNE_LPP1 1 // dynamic sensor payload (LPP 1.0)
|
|
#define CAYENNE_LPP2 2 // packed sensor payload (LPP 2.0)
|
|
#define CAYENNE_GPS 3 // full scale GPS payload
|
|
#define CAYENNE_ACTUATOR 10 // actuator commands
|
|
#define CAYENNE_DEVICECONFIG 11 // device period configuration
|
|
#define CAYENNE_SENSORREAD 13 // sensor period configuration
|
|
#define CAYENNE_SENSORENABLE 14 // sensor enable configuration
|
|
|
|
// LMIC settings
|
|
// -> in src/lmic_config.h
|
|
|
|
// LED Matrix display settings. Pin numbers work fine for Wemos Lolin32 board (all used pins are on 1 side of the board)
|
|
// Note: LED Matrix will only show number of found devices, no other information will be shown for now
|
|
//#define HAS_MATRIX_DISPLAY 1 // Uncomment to enable LED matrix display output
|
|
#define MATRIX_DISPLAY_SCAN_US 500 // Matrix display scan rate in microseconds (1ms is about 'acceptable')
|
|
#define LED_MATRIX_LATCHPIN 13 // Connects to LAT pin on display
|
|
#define LED_MATRIX_CLOCKPIN 32 // Connects to CLK pin on display
|
|
#define LED_MATRIX_EN_74138 12 // Connects to OE pin on display
|
|
#define LED_MATRIX_LA_74138 14 // Connects to LA pin on display
|
|
#define LED_MATRIX_LB_74138 27 // Connects to LB pin on display
|
|
#define LED_MATRIX_LC_74138 25 // Connects to LC pin on display
|
|
#define LED_MATRIX_LD_74138 26 // Connects to LD pin on display
|
|
#define LED_MATRIX_DATA_R1 33 // Connects to R1 pin on display
|
|
#define LED_MATRIX_WIDTH 64 // Width in pixels (LEDs) of your display
|
|
#define LED_MATRIX_HEIGHT 16 // Height in pixels (LEDs ) of your display |