commit
						27c8b13fff
					
				| @ -9,6 +9,7 @@ Tutorial (in german language): https://www.heise.de/select/make/2019/1/155109923 | ||||
| <img src="img/Paxcounter-Screen.png"> | ||||
| <img src="img/TTGO-case.jpg"> | ||||
| <img src="img/TTGO-curves.jpg"> | ||||
| <img src="img/Paxcounter-LEDmatrix.jpg"> | ||||
| 
 | ||||
| # Use case | ||||
| 
 | ||||
| @ -54,7 +55,7 @@ Depending on board hardware following features are supported: | ||||
| - Real Time Clock (Maxim DS3231 I2C) | ||||
| - IF482 (serial) and DCF77 (gpio) time telegram generator | ||||
| - Switch external power / battery | ||||
| - 64x16 pixel LED Matrix display (similar to [this model](https://www.instructables.com/id/64x16-RED-LED-Marquee/)) | ||||
| - 64x16 pixel LED Matrix display (similar to [this model](https://www.instructables.com/id/64x16-RED-LED-Marquee/), can be ordered on [Aliexpress](https://www.aliexpress.com/item/P3-75-dot-matrix-led-module-3-75mm-high-clear-top1-for-text-display-304-60mm/32616683948.html)) | ||||
| 
 | ||||
| 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> | ||||
| @ -93,7 +94,7 @@ If your device has a **real time clock** it can be updated bei either LoRaWAN ne | ||||
| 
 | ||||
| # Building | ||||
| 
 | ||||
| Use <A HREF="https://platformio.org/">PlatformIO</A> with your preferred IDE for development and building this code. Make sure you have latest PlatformIO version, **at least v4.0.0a15**. | ||||
| Use <A HREF="https://platformio.org/">PlatformIO</A> with your preferred IDE for development and building this code. Make sure you have latest PlatformIO version. | ||||
| 
 | ||||
| # Uploading | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										41
									
								
								build.py
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								build.py
									
									
									
									
									
								
							| @ -8,16 +8,22 @@ import requests | ||||
| from os.path import basename | ||||
| from platformio import util | ||||
| 
 | ||||
| try: | ||||
|     import configparser | ||||
| except ImportError: | ||||
|     import ConfigParser as configparser | ||||
| 
 | ||||
| Import("env") | ||||
| 
 | ||||
| # get platformio environment variables | ||||
| project_config = util.load_project_config() | ||||
| config = configparser.ConfigParser() | ||||
| config.read("platformio.ini") | ||||
| 
 | ||||
| # get platformio source path | ||||
| srcdir = env.get("PROJECTSRC_DIR").replace("\\", "/") | ||||
| srcdir = env.get("PROJECTSRC_DIR") | ||||
| 
 | ||||
| # check if lmic config file is present in source directory | ||||
| lmicconfig = project_config.get("common", "lmicconfigfile") | ||||
| lmicconfig = config.get("common", "lmicconfigfile") | ||||
| lmicconfigfile = os.path.join (srcdir, lmicconfig) | ||||
| if os.path.isfile(lmicconfigfile) and os.access(lmicconfigfile, os.R_OK): | ||||
|     print "Parsing LMIC configuration from " + lmicconfigfile | ||||
| @ -25,14 +31,14 @@ else: | ||||
|     sys.exit("Missing file " + lmicconfigfile + ", please create it! Aborting.") | ||||
| 
 | ||||
| # check if lora key file is present in source directory | ||||
| lorakeyfile = os.path.join (srcdir, project_config.get("common", "lorakeyfile")) | ||||
| lorakeyfile = os.path.join (srcdir, config.get("common", "lorakeyfile")) | ||||
| if os.path.isfile(lorakeyfile) and os.access(lorakeyfile, os.R_OK): | ||||
|     print "Parsing LORAWAN keys from " + lorakeyfile | ||||
| else: | ||||
|     sys.exit("Missing file " + lorakeyfile + ", please create it! Aborting.") | ||||
| 
 | ||||
| # check if ota key file is present in source directory | ||||
| otakeyfile = os.path.join (srcdir, project_config.get("common", "otakeyfile")) | ||||
| otakeyfile = os.path.join (srcdir, config.get("common", "otakeyfile")) | ||||
| if os.path.isfile(otakeyfile) and os.access(otakeyfile, os.R_OK): | ||||
|     print "Parsing OTA keys from " + otakeyfile | ||||
| else: | ||||
| @ -51,7 +57,7 @@ repository = mykeys["BINTRAY_REPO"] | ||||
| apitoken = mykeys["BINTRAY_API_TOKEN"] | ||||
| 
 | ||||
| # get bintray upload parameters from platformio environment | ||||
| version = project_config.get("common", "release_version") | ||||
| version = config.get("common", "release_version") | ||||
| package = str(env.get("PIOENV")) | ||||
| 
 | ||||
| # put bintray user credentials to platformio environment | ||||
| @ -89,17 +95,20 @@ def publish_bintray(source, target, env): | ||||
|         "X-Bintray-Override": "1" | ||||
|     } | ||||
| 
 | ||||
|     r = requests.put( | ||||
|         url, | ||||
|         data=open(firmware_path, "rb"), | ||||
|         headers=headers, | ||||
|         auth=(user, apitoken)) | ||||
|     r = None | ||||
|      | ||||
|     try: | ||||
|         r = requests.put(url, | ||||
|                          data=open(firmware_path, "rb"), | ||||
|                          headers=headers, | ||||
|                          auth=(user,apitoken)) | ||||
|         r.raise_for_status() | ||||
|     except requests.exceptions.RequestException as e: | ||||
|         sys.stderr.write("Failed to submit package: %s\n" % | ||||
|                          ("%s\n%s" % (r.status_code, r.text) if r else str(e))) | ||||
|         env.Exit(1) | ||||
| 
 | ||||
|     if r.status_code != 201: | ||||
|         print("Failed to submit package: {0}\n{1}".format( | ||||
|             r.status_code, r.text)) | ||||
|     else: | ||||
|         print("The firmware has been successfuly published at Bintray.com!") | ||||
|     print("The firmware has been successfuly published at Bintray.com!") | ||||
| 
 | ||||
| # put build file name and upload command to platformio environment | ||||
| env.Replace( | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								img/Paxcounter-LEDmatrix.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/Paxcounter-LEDmatrix.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 4.2 MiB | 
| @ -6,33 +6,33 @@ | ||||
| 
 | ||||
| ; ---> SELECT TARGET PLATFORM HERE! <--- | ||||
| [platformio] | ||||
| env_default = generic | ||||
| ;env_default = ebox | ||||
| ;env_default = eboxtube | ||||
| ;env_default = ecopower | ||||
| ;env_default = heltec | ||||
| ;env_default = heltecv2 | ||||
| ;env_default = ttgov1 | ||||
| ;env_default = ttgov2 | ||||
| ;env_default = ttgov21old | ||||
| ;env_default = ttgov21new | ||||
| ;env_default = ttgobeam | ||||
| ;env_default = ttgofox | ||||
| ;env_default = lopy | ||||
| ;env_default = lopy4 | ||||
| ;env_default = fipy | ||||
| ;env_default = lolin32litelora | ||||
| ;env_default = lolin32lora | ||||
| ;env_default = lolin32lite | ||||
| ;env_default = wemos32oled | ||||
| ;env_default = octopus32 | ||||
| ;env_default = ecopower, eboxtube, heltec, ttgobeam, lopy4, lopy, ttgov21old, ttgov21new, ttgofox | ||||
| default_envs = generic | ||||
| ;default_envs = ebox | ||||
| ;default_envs = eboxtube | ||||
| ;default_envs = ecopower | ||||
| ;default_envs = heltec | ||||
| ;default_envs = heltecv2 | ||||
| ;default_envs = ttgov1 | ||||
| ;default_envs = ttgov2 | ||||
| ;default_envs = ttgov21old | ||||
| ;default_envs = ttgov21new | ||||
| ;default_envs = ttgobeam | ||||
| ;default_envs = ttgofox | ||||
| ;default_envs = lopy | ||||
| ;default_envs = lopy4 | ||||
| ;default_envs = fipy | ||||
| ;default_envs = lolin32litelora | ||||
| ;default_envs = lolin32lora | ||||
| ;default_envs = lolin32lite | ||||
| ;default_envs = wemos32oled | ||||
| ;default_envs = octopus32 | ||||
| ;default_envs = ecopower, 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. | ||||
| 
 | ||||
| [common] | ||||
| ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" | ||||
| release_version = 1.7.61 | ||||
| release_version = 1.7.62 | ||||
| ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! | ||||
| ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose | ||||
| debug_level = 3 | ||||
| @ -51,7 +51,7 @@ lib_deps_lora = | ||||
|     ;MCCI LoRaWAN LMIC library@2.3.2 | ||||
|     https://github.com/mcci-catena/arduino-lmic.git | ||||
| lib_deps_display = | ||||
|     U8g2@>=2.25.7 | ||||
|     U8g2@>=2.26.13 | ||||
| lib_deps_matrix_display = | ||||
|     https://github.com/Seeed-Studio/Ultrathin_LED_Matrix.git | ||||
| lib_deps_rgbled = | ||||
| @ -63,8 +63,8 @@ lib_deps_sensors = | ||||
|     Adafruit BME280 Library@1.0.8 | ||||
| lib_deps_basic = | ||||
|     ArduinoJson@^5.13.1 | ||||
|     Timezone@^1.2.2 | ||||
|     RTC@^2.3.3 | ||||
|     76@^1.2.2 ;Timezone by Jack Christensen | ||||
|     274@^2.3.3 ;RTC by Michael Miller | ||||
|     SimpleButton | ||||
| lib_deps_all = | ||||
|     ${common.lib_deps_basic} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user