commit
cbdf181a10
14
README.md
14
README.md
@ -7,7 +7,8 @@
|
|||||||
<img src="img/Paxcounter-ttgo.jpg">
|
<img src="img/Paxcounter-ttgo.jpg">
|
||||||
<img src="img/Paxcounter-lolin.gif">
|
<img src="img/Paxcounter-lolin.gif">
|
||||||
<img src="img/Paxcounter-Screen.png">
|
<img src="img/Paxcounter-Screen.png">
|
||||||
<img src="img/paxcounter-curves.jpg">
|
<img src="img/TTGO-case.jpg">
|
||||||
|
<img src="img/TTGO-curves.jpg">
|
||||||
|
|
||||||
# Use case
|
# Use case
|
||||||
|
|
||||||
@ -55,9 +56,14 @@ Depending on board hardware following features are supported:
|
|||||||
Target platform must be selected in [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/platformio.ini).<br>
|
Target platform must be selected in [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/platformio.ini).<br>
|
||||||
Hardware dependent settings (pinout etc.) are stored in board files in /hal directory. If you want to use a ESP32 board which is not yet supported, use hal file generic.h and tailor pin mappings to your needs. Pull requests for new boards welcome.<br>
|
Hardware dependent settings (pinout etc.) are stored in board files in /hal directory. If you want to use a ESP32 board which is not yet supported, use hal file generic.h and tailor pin mappings to your needs. Pull requests for new boards welcome.<br>
|
||||||
|
|
||||||
<b>3D printable cases</b> can be found (and, if wanted so, ordered) on Thingiverse, see
|
Some <b>3D printable cases</b> can be found (and, if wanted so, ordered) on Thingiverse, see
|
||||||
<A HREF="https://www.thingiverse.com/thing:2670713">Heltec</A>, <A HREF="https://www.thingiverse.com/thing:2811127">TTGOv2</A>, <A HREF="https://www.thingiverse.com/thing:3005574">TTGOv2.1</A>, <A HREF="https://www.thingiverse.com/thing:3041339">T-BEAM</A>,
|
<A HREF="https://www.thingiverse.com/thing:2670713">Heltec</A>,
|
||||||
<A HREF="https://www.thingiverse.com/thing:3203177">T-BEAM parts</A> for example.<br>
|
<A HREF="https://www.thingiverse.com/thing:2811127">TTGOv2</A>,
|
||||||
|
<A HREF="https://www.thingiverse.com/thing:3005574">TTGOv2.1</A>,
|
||||||
|
<A HREF="https://www.thingiverse.com/thing:3385109">TTGO</A>,
|
||||||
|
<A HREF="https://www.thingiverse.com/thing:3041339">T-BEAM</A>,
|
||||||
|
<A HREF="https://www.thingiverse.com/thing:3203177">T-BEAM parts</A>,
|
||||||
|
for example.<br>
|
||||||
|
|
||||||
<b>Power consumption</b> was metered at around 450 - 1000mW, depending on board and user settings in paxcounter.conf.
|
<b>Power consumption</b> was metered at around 450 - 1000mW, depending on board and user settings in paxcounter.conf.
|
||||||
By default bluetooth sniffing is disabled (line *#define BLECOUNTER* in paxcounter.conf is commented out). Enabling bluetooth costs 30% more power + 30% flash storage for the software stack. Proof of concept showed that for passenger flow metering wifi sniffing shows better results than bluetooth sniffing. If you enable bluetooth be aware that this goes on expense of wifi sniffing results, because then wifi and bt stack must share the 2,4 GHz RF ressources of ESP32. If you need to sniff wifi and bt in parallel and need best possible results, use two boards - one for wifi only and one for bt only - and add counted results.
|
By default bluetooth sniffing is disabled (line *#define BLECOUNTER* in paxcounter.conf is commented out). Enabling bluetooth costs 30% more power + 30% flash storage for the software stack. Proof of concept showed that for passenger flow metering wifi sniffing shows better results than bluetooth sniffing. If you enable bluetooth be aware that this goes on expense of wifi sniffing results, because then wifi and bt stack must share the 2,4 GHz RF ressources of ESP32. If you need to sniff wifi and bt in parallel and need best possible results, use two boards - one for wifi only and one for bt only - and add counted results.
|
||||||
|
BIN
img/TTGO T-Beam.jpg
Normal file
BIN
img/TTGO T-Beam.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
BIN
img/TTGO-case.jpg
Normal file
BIN
img/TTGO-case.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
BIN
img/TTGO-curves.jpg
Normal file
BIN
img/TTGO-curves.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
@ -4,6 +4,10 @@
|
|||||||
// The mother of all embedded development...
|
// The mother of all embedded development...
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
// Time functions
|
||||||
|
#include <Time.h>
|
||||||
|
#include <Timezone.h>
|
||||||
|
|
||||||
// std::set for unified array functions
|
// std::set for unified array functions
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <array>
|
#include <array>
|
||||||
@ -102,6 +106,7 @@ extern std::array<uint64_t, 0xff>::iterator it;
|
|||||||
extern std::array<uint64_t, 0xff> beacons;
|
extern std::array<uint64_t, 0xff> beacons;
|
||||||
|
|
||||||
extern TaskHandle_t irqHandlerTask, wifiSwitchTask;
|
extern TaskHandle_t irqHandlerTask, wifiSwitchTask;
|
||||||
|
extern Timezone myTZ; // make Timezone myTZ globally available
|
||||||
|
|
||||||
// application includes
|
// application includes
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#define _GPSREAD_H
|
#define _GPSREAD_H
|
||||||
|
|
||||||
#include <TinyGPS++.h> // library for parsing NMEA data
|
#include <TinyGPS++.h> // library for parsing NMEA data
|
||||||
#include <Time.h>
|
|
||||||
|
|
||||||
#ifdef GPS_I2C // Needed for reading from I2C Bus
|
#ifdef GPS_I2C // Needed for reading from I2C Bus
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "rcommand.h"
|
#include "rcommand.h"
|
||||||
#include <TimeLib.h>
|
|
||||||
|
|
||||||
// LMIC-Arduino LoRaWAN Stack
|
// LMIC-Arduino LoRaWAN Stack
|
||||||
#include <lmic.h>
|
#include <lmic.h>
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
#define _RTCTIME_H
|
#define _RTCTIME_H
|
||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include <Time.h>
|
|
||||||
#include <Timezone.h>
|
|
||||||
#include <Wire.h> // must be included here so that Arduino library object file references work
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
#include <RtcDS3231.h>
|
#include <RtcDS3231.h>
|
||||||
|
|
||||||
@ -20,7 +18,6 @@ typedef enum {
|
|||||||
} clock_state_t;
|
} clock_state_t;
|
||||||
|
|
||||||
extern RtcDS3231<TwoWire> Rtc; // make RTC instance globally available
|
extern RtcDS3231<TwoWire> Rtc; // make RTC instance globally available
|
||||||
extern Timezone myTZ; // make Timezone myTZ globally available
|
|
||||||
|
|
||||||
int rtc_init(void);
|
int rtc_init(void);
|
||||||
int set_rtctime(uint32_t UTCTime);
|
int set_rtctime(uint32_t UTCTime);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
; ---> SELECT TARGET PLATFORM HERE! <---
|
; ---> SELECT TARGET PLATFORM HERE! <---
|
||||||
[platformio]
|
[platformio]
|
||||||
env_default = generic
|
;env_default = generic
|
||||||
;env_default = ebox
|
;env_default = ebox
|
||||||
;env_default = eboxtube
|
;env_default = eboxtube
|
||||||
;env_default = heltec
|
;env_default = heltec
|
||||||
@ -24,7 +24,7 @@ env_default = generic
|
|||||||
;env_default = lolin32lora
|
;env_default = lolin32lora
|
||||||
;env_default = lolin32lite
|
;env_default = lolin32lite
|
||||||
;env_default = octopus32
|
;env_default = octopus32
|
||||||
;env_default = ebox, eboxtube, heltec, ttgobeam, lopy4, lopy, ttgov21old, ttgov21new
|
env_default = ebox, eboxtube, heltec, ttgobeam, lopy4, lopy, ttgov21old, ttgov21new, ttgofox
|
||||||
;
|
;
|
||||||
description = Paxcounter is a proof-of-concept ESP32 device for metering passenger flows in realtime. It counts how many mobile devices are around.
|
description = Paxcounter is a proof-of-concept ESP32 device for metering passenger flows in realtime. It counts how many mobile devices are around.
|
||||||
|
|
||||||
|
@ -463,4 +463,4 @@ void user_request_network_time_callback(void *pVoidUserUTCTime,
|
|||||||
ESP_LOGI(TAG,
|
ESP_LOGI(TAG,
|
||||||
"LORA Network has set system time to %02d/%02d/%d %02d:%02d:%02d",
|
"LORA Network has set system time to %02d/%02d/%d %02d:%02d:%02d",
|
||||||
month(t), day(t), year(t), hour(t), minute(t), second(t));
|
month(t), day(t), year(t), hour(t), minute(t), second(t));
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,11 @@ std::set<uint16_t, std::less<uint16_t>, Mallocator<uint16_t>> macs;
|
|||||||
// initialize payload encoder
|
// initialize payload encoder
|
||||||
PayloadConvert payload(PAYLOAD_BUFFER_SIZE);
|
PayloadConvert payload(PAYLOAD_BUFFER_SIZE);
|
||||||
|
|
||||||
|
// set Time Zone, fetch user setting from paxcounter.conf
|
||||||
|
TimeChangeRule myDST = DAYLIGHT_TIME;
|
||||||
|
TimeChangeRule mySTD = STANDARD_TIME;
|
||||||
|
Timezone myTZ(myDST, mySTD);
|
||||||
|
|
||||||
// local Tag for logging
|
// local Tag for logging
|
||||||
static const char TAG[] = "main";
|
static const char TAG[] = "main";
|
||||||
|
|
||||||
|
@ -7,11 +7,6 @@ static const char TAG[] = "main";
|
|||||||
|
|
||||||
RtcDS3231<TwoWire> Rtc(Wire); // RTC hardware i2c interface
|
RtcDS3231<TwoWire> Rtc(Wire); // RTC hardware i2c interface
|
||||||
|
|
||||||
// set Time Zone, fetch user setting from paxcounter.conf
|
|
||||||
TimeChangeRule myDST = DAYLIGHT_TIME;
|
|
||||||
TimeChangeRule mySTD = STANDARD_TIME;
|
|
||||||
Timezone myTZ(myDST, mySTD);
|
|
||||||
|
|
||||||
// initialize RTC
|
// initialize RTC
|
||||||
int rtc_init(void) {
|
int rtc_init(void) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user