More comments and informations

This commit is contained in:
Pierrick C 2018-08-04 12:03:11 +02:00
parent 4cc41e8e9a
commit b767ff9670

View File

@ -33,14 +33,13 @@ __version__ = 0.2
##########
# config #
##########
print_data = True
send_json_data = True
backup_data = True
data_to_neopixel = True
gps_enable = True
update_interval = const(10) # in seconds
send_json_data = True
datetime_format = "{:04}/{:02}/{:02}_{:02}:{:02}:{:02}"
print_data = True # Print data on USB UART / REPL output ?
send_json_data = True # Send data as JSON on second UART ?
backup_data = True # Write data as CSV files on onboard SPI Flash ?
data_to_neopixel = True # Display atmospheric data as color on onboard neopixel ?
gps_enable = True # Use GPS module ?
update_interval = const(10) # Interval between data acquisition (in seconds)
datetime_format = "{:04}/{:02}/{:02}_{:02}:{:02}:{:02}" # Date/time format
neopixel_max_value =const(70) #max value instead of brightness to spare some mem
#######################
@ -118,7 +117,7 @@ class Data:
@property
def json(self):
"""Serialized data to json-formatted string"""
"""Serialized data to compact json-formatted string"""
output = '{'
first_source = True
for source in self.data.keys():
@ -150,15 +149,21 @@ class Data:
* BLUE => humidity : max= 100%, mini=0%
* GREEN => pression : mini=960hPa, maxi = 1030hPa (range 70hPa)
"""
# RED componant calculation from temperature data
# 10 is the min temperature, 25 is the range
# (10+25=35°C = max temperature)
red = int((self.data['BME']['temp']-10)*neopixel_max_value/25)
if red > neopixel_max_value:
red = neopixel_max_value
if red < 0:
red = 0
# BLUE componant calculation: very simple! By definition relative
# humidity cannot be more than 100 or less than 0, physically
blue = int(self.data['BME']['hum']*neopixel_max_value/100)
# GREEN component calculation : 960 is the minimum pressure and 70 is
# the range (960+70 = 1030hPa = max pressure)
green = int((self.data['BME']['press']-960)*neopixel_max_value/70)
if green > neopixel_max_value:
green = neopixel_max_value
@ -181,6 +186,7 @@ class Data:
except OSError as e:
print("Err {}: readonly".format(e))
backup_data = False #to avoid trying again till next reset
# Turn onboard led on to indicate read-only error
led13.value = True
#############
@ -253,15 +259,17 @@ bme280 = Adafruit_BME280_I2C(i2c, address=0x76)
# Battery voltage
vbat = AnalogIn(microcontroller.pin.PA07)
#Set the pin to control the power to GPS module
gps_en_pin = DigitalInOut(microcontroller.pin.PB02)
gps_en_pin.direction = Direction.OUTPUT
#Set the pin N°13 to use the onboard LED as read-only/read-write indicator
led13 = DigitalInOut(microcontroller.pin.PA17)
led13.direction = Direction.OUTPUT
led13.value = False
# GPS on FeatherWing board
gps_en_pin.value = not gps_enable
# Set GPS module on FeatherWing board
gps_en_pin.value = not gps_enable #Set enable pin high to disable GPS module
if gps_enable:
gps_uart = UART(microcontroller.pin.PA10, microcontroller.pin.PA11,
baudrate=9600, timeout=3000)
@ -270,12 +278,13 @@ if gps_enable:
gps.send_command('PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0')
gps.send_command('PMTK220,1000') # 1000 ms refresh rate
# second UART to communicate with raspberry pi GPIO
# Second UART to communicate with raspberry pi (throught GPIO)
if send_json_data:
rpi_uart = UART(microcontroller.pin.PB10, microcontroller.pin.PB11,
baudrate=115200, timeout=2000)
# Integrated Neopixel
# Set onboard Neopixel : used as atmo data output
# brightness is fixed to 1 to spare some memory. Use neopixel_max_value instead
if data_to_neopixel:
pixel = neopixel.NeoPixel(microcontroller.pin.PA06, 1, brightness=1)
else:
@ -284,15 +293,18 @@ else:
pixel[0] = (0,0,0)
pixel = None
#Finally check if data directories exist
check_data_dir()
#############
# Main loop #
#############
#Create the Data object
data = Data()
last_update = time.monotonic()
#Init timer
last_update = time.monotonic()
while True:
if gps_enable: