def __init_bme280_i2c(): global BME280_OBJ if BME280_OBJ is None: i2c = I2C(scl=Pin(get_pin_on_platform_by_key('i2c_scl')), sda=Pin(get_pin_on_platform_by_key('i2c_sda')), freq=10000) BME280_OBJ = BME280(i2c=i2c) return BME280_OBJ
def __init(): global __OLED if __OLED is None: from machine import Pin, I2C from ssd1306 import SSD1306_I2C from LogicalPins import get_pin_on_platform_by_key i2c = I2C(-1, Pin(get_pin_on_platform_by_key('i2c_scl')), Pin(get_pin_on_platform_by_key('i2c_sda'))) __OLED = SSD1306_I2C(128, 64, i2c) return __OLED
def __RGB_init(): global __RGB_OBJS if __RGB_OBJS[0] is None or __RGB_OBJS[1] is None or __RGB_OBJS[2] is None: from machine import Pin, PWM from LogicalPins import get_pin_on_platform_by_key red = Pin(get_pin_on_platform_by_key('pwm_1')) green = Pin(get_pin_on_platform_by_key('pwm_2')) blue = Pin(get_pin_on_platform_by_key('pwm_3')) __RGB_OBJS = (PWM(red, freq=480), PWM(green, freq=480), PWM(blue, freq=480)) return __RGB_OBJS
def __RGB_init(): global __RLED, __GLED, __BLED if __RLED is None or __GLED is None or __BLED is None: from machine import Pin, PWM from LogicalPins import get_pin_on_platform_by_key d7_gpio13_red = Pin(get_pin_on_platform_by_key('pwm_1')) d4_gpio2_green = Pin(get_pin_on_platform_by_key('pwm_2')) d3_gpio0_blue = Pin(get_pin_on_platform_by_key('pwm_3')) __RLED = PWM(d7_gpio13_red, freq=80) __GLED = PWM(d4_gpio2_green, freq=80) __BLED = PWM(d3_gpio0_blue, freq=80)
def __init_HCSR04(): global __TRIGGER_OBJ, __ECHO_OBJ if __TRIGGER_OBJ is None or __ECHO_OBJ is None: from LogicalPins import get_pin_on_platform_by_key trigger_pin = get_pin_on_platform_by_key('simple_0') echo_pin = get_pin_on_platform_by_key('pwm_5') # Init trigger pin (out) __TRIGGER_OBJ = Pin(trigger_pin, mode=Pin.OUT, pull=None) __TRIGGER_OBJ.value(0) # Init echo pin (in) __ECHO_OBJ = Pin(echo_pin, mode=Pin.IN, pull=None) return __TRIGGER_OBJ, __ECHO_OBJ
def __l298n_init(): global __L298N_OBJS if len(__L298N_OBJS) == 0: from machine import Pin, PWM from LogicalPins import get_pin_on_platform_by_key __L298N_OBJS.append( PWM(Pin(get_pin_on_platform_by_key('pwm_6')), freq=1024)) __L298N_OBJS.append(Pin(get_pin_on_platform_by_key('pwm_5'), Pin.OUT)) __L298N_OBJS.append(Pin(get_pin_on_platform_by_key('pwm_7'), Pin.OUT)) __L298N_OBJS[0].duty(0) # Set default speed (PWM) __L298N_OBJS[1].value(0) # Set default direction for dc motor1 __L298N_OBJS[2].value(1) # Set default direction for dc motor1 return __L298N_OBJS
def __init_tempt6000(): """ Setup ADC read 0(0V)-1024(1V) MAX 1V input read_u16 0 - 65535 range """ global __ADC if __ADC is None: from machine import ADC, Pin from LogicalPins import get_pin_on_platform_by_key if 'esp8266' in platform: __ADC = ADC(get_pin_on_platform_by_key('adc_1')) else: __ADC = ADC(Pin(get_pin_on_platform_by_key('adc_1'))) return __ADC
def __SWITCH_init(): global __SWITCH_OBJ if __SWITCH_OBJ is None: from machine import Pin from LogicalPins import get_pin_on_platform_by_key __SWITCH_OBJ = Pin(get_pin_on_platform_by_key('simple_0'), Pin.OUT) return __SWITCH_OBJ
def __init_PIR_sensor(): global __PIR_OBJ if __PIR_OBJ is None: from machine import Pin from LogicalPins import get_pin_on_platform_by_key __PIR_OBJ = Pin(get_pin_on_platform_by_key('simple_2'), Pin.IN, Pin.PULL_UP) return __PIR_OBJ
def __init_DHT22(): global __DHT_OBJ if __DHT_OBJ is None: from dht import DHT22 from machine import Pin from LogicalPins import get_pin_on_platform_by_key __DHT_OBJ = DHT22(Pin(get_pin_on_platform_by_key('simple_1'))) return __DHT_OBJ
def __dimmer_init(): global __DIMMER_OBJ if __DIMMER_OBJ is None: from machine import Pin, PWM from LogicalPins import get_pin_on_platform_by_key dimmer_pin = Pin(get_pin_on_platform_by_key('pwm_5')) __DIMMER_OBJ = PWM(dimmer_pin, freq=480) return __DIMMER_OBJ
def __init_ADC(): """ Setup ADC """ global __ADC if __ADC is None: from machine import ADC, Pin from LogicalPins import get_pin_on_platform_by_key if 'esp8266' in platform: __ADC = ADC(get_pin_on_platform_by_key('adc_2')) else: __ADC = ADC(Pin(get_pin_on_platform_by_key('adc_2'))) # set 11dB input attenuation (voltage range roughly 0.0v - 3.6v) __ADC.atten(ADC.ATTN_11DB) # set 9 bit return values (returned range 0-511) __ADC.width(ADC.WIDTH_9BIT) return __ADC
def touch(triglvl=300): """ triglvl - trigger level, value < triglvl decide touched """ from machine import TouchPad, Pin from LogicalPins import get_pin_on_platform_by_key t = TouchPad(Pin(get_pin_on_platform_by_key('touch_0'))) value = t.read() # Returns a smaller number when touched return {'isTouched': True if value < triglvl else False, 'value': value}
def getpin(key='builtin'): from sys import modules from LogicalPins import get_pin_on_platform_by_key return { key: get_pin_on_platform_by_key(key), 'pinmap': ', '.join((mdl.replace('LP_', '').split('.')[0] for mdl in modules.keys() if mdl.startswith('LP_'))) }
def __SERVO_init(): global __SERVO if __SERVO is None: try: pin = Pin(get_pin_on_platform_by_key('pwm_0')) __SERVO = PWM(pin, freq=50) del pin except Exception as e: return str(e) return __SERVO
def __SERVO2_init(): global __SERVO2 if __SERVO2 is None: try: pin = Pin( get_pin_on_platform_by_key('pwm_2')) # Alternative wiring __SERVO2 = PWM(pin, freq=50) del pin except Exception as e: return str(e) return __SERVO2
def __init_NEOPIXEL(n=8): """ Init NeoPixel module n - number of led fragments """ global __NEOPIXEL_OBJ if __NEOPIXEL_OBJ is None: from neopixel import NeoPixel from machine import Pin from LogicalPins import get_pin_on_platform_by_key neopixel_pin = Pin(get_pin_on_platform_by_key('pwm_3')) # Get Neopixel pin from LED PIN pool __NEOPIXEL_OBJ = NeoPixel(neopixel_pin, n) # initialize for max 8 segments return __NEOPIXEL_OBJ
def __get_resistance(): """ Returns the resistance of the sensor in kOhms // -1 if not value got in pin 10.0 - 'RLOAD' The load resistance on the board """ global __ADC if __ADC is None: from machine import ADC from LogicalPins import get_pin_on_platform_by_key __ADC = ADC(get_pin_on_platform_by_key('adc_0')) value = __ADC.read() if value == 0: return -1 return (1023. / value - 1.) * 10.0
def init_eventPIN(): """ EVENT INTERRUPT CONFIGURATION """ global CFG_EVIRQCBF if cfgget('extirq') and cfgget('extirqcbf').lower() != 'n/a': CFG_EVIRQCBF = cfgget('extirqcbf') pin = get_pin_on_platform_by_key('pwm_4') console_write("[IRQ] EVENTIRQ ENABLED PIN: {} CBF: {}".format(pin, CFG_EVIRQCBF)) # Init event irq with callback function wrapper from machine import Pin pin_obj = Pin(pin, Pin.IN, Pin.PULL_UP) pin_obj.irq(trigger=Pin.IRQ_RISING, handler=secureEventInterruptHandler) else: console_write("[IRQ] EVENTIRQ: isenable: {} callback: {}".format(cfgget('extirq'), CFG_EVIRQCBF))
def __init_NEOPIXEL(n=24): """ Init NeoPixel module n - number of led fragments n - must be set from code! (no persistent object handling in LMs) """ global __NEOPIXEL_OBJ if __NEOPIXEL_OBJ is None: from neopixel import NeoPixel from machine import Pin from LogicalPins import get_pin_on_platform_by_key neopixel_pin = Pin(get_pin_on_platform_by_key( 'pwm_3')) # Get Neopixel pin from LED PIN pool __NEOPIXEL_OBJ = NeoPixel(neopixel_pin, n) # initialize for max 8 segments del neopixel_pin return __NEOPIXEL_OBJ
- cache handling - read / write to file - secure type handling - default parameter injection (update) Designed by Marcell Ban aka BxNxM """ ################################################################# # IMPORTS # ################################################################# from time import sleep from json import load, dump from machine import Pin from LogicalPins import get_pin_on_platform_by_key PLED = Pin(get_pin_on_platform_by_key('builtin'), Pin.OUT) # SET IT LATER FROM CONFIG __DEBUG_PRINT = True __CONFIG_CACHE = {} # - MicrOS config __CONFIG_PATH = "node_config.json" ################################################################# # MODULE CONFIG ################################################################# def default_config(): """ micrOS "code" config.
return str(value) if isinstance(value_in_cfg, int): del value_in_cfg return int(value) if isinstance(value_in_cfg, float): del value_in_cfg return float(value) except Exception as e: console_write("Input value type error! {}".format(e)) return None ################################################################# # MODULE AUTO INIT # ################################################################# if "ConfigHandler" in __name__: # [!!!] Validate / update / create user config __inject_default_conf() if not cfgget('dbg'): console_write("[micrOS] debug print was turned off") # [!!!] Init selected pinmap ('builtin' is the default key, 'cstmpmap' user LP data) if cfgget('cstmpmap') != 'n/a': get_pin_on_platform_by_key('builtin', cfgget('cstmpmap')) # DEACTIVATE plead and dbg based on config settings (inject user conf) if cfgget('pled') and get_pin_on_platform_by_key('builtin') is not None: __PLED = Pin(get_pin_on_platform_by_key('builtin'), Pin.OUT) __DEBUG_PRINT = cfgget('dbg') if __name__ == "__main__": __inject_default_conf()
def __SWITCH2_init(): if __SWITCH_OBJ[1] is None: from machine import Pin from LogicalPins import get_pin_on_platform_by_key __SWITCH_OBJ[1] = Pin(get_pin_on_platform_by_key('pwm_1'), Pin.OUT) return __SWITCH_OBJ[1]