2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# This example lets you plug a BME680 or BME688 breakout into your Pico Explorer to make a little indoor weather station, with barometer style descriptions.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  utime  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  breakout_bme68x  import  BreakoutBME68X  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  pimoroni_i2c  import  PimoroniI2C  
						 
					
						
							
								
									
										
										
										
											2022-05-12 09:35:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  pimoroni  import  PICO_EXPLORER_I2C_PINS  
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Pico Explorer boilerplate  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  picoexplorer  as  display  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								width  =  display . get_width ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								height  =  display . get_height ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								display_buffer  =  bytearray ( width  *  height  *  2 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								display . init ( display_buffer )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-12 09:35:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								i2c  =  PimoroniI2C ( * * PICO_EXPLORER_I2C_PINS )  
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								bme  =  BreakoutBME68X ( i2c )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# lets set up some pen colours to make drawing easier  
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								tempcolour  =  display . create_pen ( 255 ,  255 ,  255 )   # this colour will get changed in a bit  
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								white  =  display . create_pen ( 255 ,  255 ,  255 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								black  =  display . create_pen ( 0 ,  0 ,  0 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								red  =  display . create_pen ( 255 ,  0 ,  0 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# converts the temperature into a barometer-type description and pen colour  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  describe_temperature ( temperature ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  tempcolour 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  temperature  <  10 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " very cold " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  255 ,  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  10  < =  temperature  <  20 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " cold " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  0 ,  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  20  < =  temperature  <  25 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " temperate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  255 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  25  < =  temperature  <  30 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " warm " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 255 ,  255 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  temperature  > =  30 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " very warm " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 255 ,  0 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  0 ,  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# comment out the function above and uncomment this one for yorkshire mode  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  describe_temperature ( temperature ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  tempcolour 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  temperature  <  10 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " frozzed " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  255 ,  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  10  < =  temperature  <  20 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " nithering " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  0 ,  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  20  < =  temperature  <  25 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " fair t '  middlin " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  255 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  25  < =  temperature  <  30 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " chuffing warm " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 255 ,  255 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  temperature  > =  30 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " crackin t '  flags " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 255 ,  0 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tempcolour  =  display . create_pen ( 0 ,  0 ,  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# converts pressure into barometer-type description  
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  describe_pressure ( pressure ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  pressure  <  970 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " storm " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  970  < =  pressure  <  990 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " rain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  990  < =  pressure  <  1010 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " change " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  1010  < =  pressure  <  1030 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " fair " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    elif  pressure  > =  1030 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " dry " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# converts humidity into good/bad description  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  describe_humidity ( humidity ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  40  <  humidity  <  60 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " good " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  " bad " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								while  True :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # read the sensors 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    temperature ,  pressure ,  humidity ,  gas_resistance ,  status ,  gas_index ,  meas_index  =  bme . read ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # pressure comes in pascals which is a reight long number, lets convert it to the more manageable hPa 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pressurehpa  =  pressure  /  100 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # draw a thermometer/barometer thingy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . set_pen ( 125 ,  125 ,  125 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . circle ( 190 ,  190 ,  40 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . rectangle ( 180 ,  45 ,  20 ,  140 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # switch to red to draw the 'mercury' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . set_pen ( red ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . circle ( 190 ,  190 ,  30 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    thermometerheight  =  int ( 120  /  30  *  temperature ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  thermometerheight  >  120 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        thermometerheight  =  120 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  thermometerheight  <  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        thermometerheight  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . rectangle ( 186 ,  50  +  120  -  thermometerheight ,  10 ,  thermometerheight ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # drawing the temperature text 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    display . set_pen ( white ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    display . text ( " temperature: " ,  10 ,  10 ,  240 ,  3 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    display . set_pen ( tempcolour ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    display . text ( ' {:.1f} ' . format ( temperature )  +  ' C ' ,  10 ,  30 ,  240 ,  5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . set_pen ( white ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( describe_temperature ( temperature ) ,  10 ,  60 ,  240 ,  3 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # and the pressure text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( " pressure: " ,  10 ,  90 ,  240 ,  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( ' {:.0f} ' . format ( pressurehpa )  +  ' hPa ' ,  10 ,  110 ,  240 ,  5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( describe_pressure ( pressurehpa ) ,  10 ,  140 ,  240 ,  3 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 18:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 17:37:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # and the humidity text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( " humidity: " ,  10 ,  170 ,  240 ,  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( ' {:.0f} ' . format ( humidity )  +  ' % ' ,  10 ,  190 ,  240 ,  5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . text ( describe_humidity ( humidity ) ,  10 ,  220 ,  240 ,  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # time to update the display 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . update ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # waits for 1 second and clears to black 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    utime . sleep ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . set_pen ( black ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display . clear ( )