More comments and informations
This commit is contained in:
		@@ -33,14 +33,13 @@ __version__ = 0.2
 | 
				
			|||||||
##########
 | 
					##########
 | 
				
			||||||
# config #
 | 
					# config #
 | 
				
			||||||
##########
 | 
					##########
 | 
				
			||||||
print_data = True
 | 
					print_data = True        # Print data on USB UART / REPL output ?
 | 
				
			||||||
send_json_data = True
 | 
					send_json_data = True    # Send data as JSON on second UART ?
 | 
				
			||||||
backup_data = True
 | 
					backup_data = True       # Write data as CSV files on onboard SPI Flash ?
 | 
				
			||||||
data_to_neopixel = True
 | 
					data_to_neopixel = True  # Display atmospheric data as color on onboard neopixel ?
 | 
				
			||||||
gps_enable = True
 | 
					gps_enable = True        # Use GPS module ?
 | 
				
			||||||
update_interval = const(10)   # in seconds
 | 
					update_interval = const(10)   # Interval between data acquisition (in seconds)
 | 
				
			||||||
send_json_data = True
 | 
					datetime_format = "{:04}/{:02}/{:02}_{:02}:{:02}:{:02}"     # Date/time format
 | 
				
			||||||
datetime_format = "{:04}/{:02}/{:02}_{:02}:{:02}:{:02}"
 | 
					 | 
				
			||||||
neopixel_max_value =const(70) #max value instead of brightness to spare some mem
 | 
					neopixel_max_value =const(70) #max value instead of brightness to spare some mem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#######################
 | 
					#######################
 | 
				
			||||||
@@ -118,7 +117,7 @@ class Data:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @property
 | 
					    @property
 | 
				
			||||||
    def json(self):
 | 
					    def json(self):
 | 
				
			||||||
        """Serialized data to json-formatted string"""
 | 
					        """Serialized data to compact json-formatted string"""
 | 
				
			||||||
        output = '{'
 | 
					        output = '{'
 | 
				
			||||||
        first_source = True
 | 
					        first_source = True
 | 
				
			||||||
        for source in self.data.keys():
 | 
					        for source in self.data.keys():
 | 
				
			||||||
@@ -150,15 +149,21 @@ class Data:
 | 
				
			|||||||
         * BLUE => humidity : max= 100%, mini=0%
 | 
					         * BLUE => humidity : max= 100%, mini=0%
 | 
				
			||||||
         * GREEN => pression : mini=960hPa, maxi = 1030hPa (range 70hPa)
 | 
					         * 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)
 | 
					        red = int((self.data['BME']['temp']-10)*neopixel_max_value/25)
 | 
				
			||||||
        if red > neopixel_max_value:
 | 
					        if red > neopixel_max_value:
 | 
				
			||||||
            red = neopixel_max_value
 | 
					            red = neopixel_max_value
 | 
				
			||||||
        if red < 0:
 | 
					        if red < 0:
 | 
				
			||||||
            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)
 | 
					        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)
 | 
					        green = int((self.data['BME']['press']-960)*neopixel_max_value/70)
 | 
				
			||||||
        if green > neopixel_max_value:
 | 
					        if green > neopixel_max_value:
 | 
				
			||||||
            green = neopixel_max_value
 | 
					            green = neopixel_max_value
 | 
				
			||||||
@@ -181,6 +186,7 @@ class Data:
 | 
				
			|||||||
        except OSError as e:
 | 
					        except OSError as e:
 | 
				
			||||||
            print("Err {}: readonly".format(e))
 | 
					            print("Err {}: readonly".format(e))
 | 
				
			||||||
            backup_data = False      #to avoid trying again till next reset
 | 
					            backup_data = False      #to avoid trying again till next reset
 | 
				
			||||||
 | 
					            # Turn onboard led on to indicate read-only error
 | 
				
			||||||
            led13.value = True
 | 
					            led13.value = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#############
 | 
					#############
 | 
				
			||||||
@@ -253,15 +259,17 @@ bme280 = Adafruit_BME280_I2C(i2c, address=0x76)
 | 
				
			|||||||
# Battery voltage
 | 
					# Battery voltage
 | 
				
			||||||
vbat = AnalogIn(microcontroller.pin.PA07)
 | 
					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 = DigitalInOut(microcontroller.pin.PB02)
 | 
				
			||||||
gps_en_pin.direction = Direction.OUTPUT
 | 
					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 = DigitalInOut(microcontroller.pin.PA17)
 | 
				
			||||||
led13.direction = Direction.OUTPUT
 | 
					led13.direction = Direction.OUTPUT
 | 
				
			||||||
led13.value = False
 | 
					led13.value = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# GPS on FeatherWing board
 | 
					# Set GPS module on FeatherWing board
 | 
				
			||||||
gps_en_pin.value = not gps_enable
 | 
					gps_en_pin.value = not gps_enable  #Set enable pin high to disable GPS module
 | 
				
			||||||
if gps_enable:
 | 
					if gps_enable:
 | 
				
			||||||
    gps_uart = UART(microcontroller.pin.PA10, microcontroller.pin.PA11,
 | 
					    gps_uart = UART(microcontroller.pin.PA10, microcontroller.pin.PA11,
 | 
				
			||||||
                    baudrate=9600, timeout=3000)
 | 
					                    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('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
 | 
					    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:
 | 
					if send_json_data:
 | 
				
			||||||
    rpi_uart = UART(microcontroller.pin.PB10, microcontroller.pin.PB11,
 | 
					    rpi_uart = UART(microcontroller.pin.PB10, microcontroller.pin.PB11,
 | 
				
			||||||
                    baudrate=115200, timeout=2000)
 | 
					                    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:
 | 
					if data_to_neopixel:
 | 
				
			||||||
    pixel = neopixel.NeoPixel(microcontroller.pin.PA06, 1, brightness=1)
 | 
					    pixel = neopixel.NeoPixel(microcontroller.pin.PA06, 1, brightness=1)
 | 
				
			||||||
else:
 | 
					else:
 | 
				
			||||||
@@ -284,15 +293,18 @@ else:
 | 
				
			|||||||
    pixel[0] = (0,0,0)
 | 
					    pixel[0] = (0,0,0)
 | 
				
			||||||
    pixel = None
 | 
					    pixel = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Finally check if data directories exist
 | 
				
			||||||
check_data_dir()
 | 
					check_data_dir()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#############
 | 
					#############
 | 
				
			||||||
# Main loop #
 | 
					# Main loop #
 | 
				
			||||||
#############
 | 
					#############
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Create the Data object
 | 
				
			||||||
data = Data()
 | 
					data = Data()
 | 
				
			||||||
last_update = time.monotonic()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Init timer
 | 
				
			||||||
 | 
					last_update = time.monotonic()
 | 
				
			||||||
while True:
 | 
					while True:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if gps_enable:
 | 
					    if gps_enable:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user