def __init__(self, count_for_average, sending_delta): self.count_for_average = count_for_average self.measurement_delta = sending_delta / count_for_average self.moisture_adc = machine.ADC(machine.Pin(GROUND_ADC)) self.moisture_adc.atten(machine.ADC.ATTN_11DB) self.bme_in = bme280.BME280( i2c=machine.SoftI2C(scl=machine.Pin(BME_IN_SCL), sda=machine.Pin(BME_IN_SDA), freq=3400)) self.bme_out = bme280.BME280( i2c=machine.SoftI2C(scl=machine.Pin(BME_OUT_SCL), sda=machine.Pin(BME_OUT_SDA), freq=3400)) self.init_collectors()
def __init__(self, pin_scl=machine.Pin(22), pin_sda=machine.Pin(21), height=32, external_vcc=True, i2c_devid=DEVID): self.pin_scl = pin_scl self.pin_sda = pin_sda self.external_vcc = external_vcc self.height = 32 if height == 32 else 64 self.pages = int(self.height / 8) self.columns = 128 self.i2c = machine.SoftI2C(scl=self.pin_scl, sda=self.pin_sda, freq=400000) self.devid = i2c_devid # used to reserve an extra byte in the image buffer AND as a way to # infer the interface type # I2C command buffer self.cbuffer = bytearray(2) self.cbuffer[0] = CTL_CMD self.temp = bytearray(2) self.widthh = 128 self.heightt = 64 self.pagess = self.heightt // 8 self.bufferr = bytearray(self.pagess * self.widthh) self.framebuf = framebuf.FrameBuffer(self.bufferr, self.widthh, self.heightt, framebuf.MVLSB) self.poweron() self.init_display()
def get_uPy_i2c(cls, id=-1, scl_pin_id=5, sda_pin_id=4, freq=400000): import machine # return machine.I2C(scl = machine.Pin(scl_pin_id, machine.Pin.OUT), # sda = machine.Pin(sda_pin_id), # freq = freq) # I2C(-1, ...) is deprecated, use SoftI2C(...) instead return machine.SoftI2C(scl=machine.Pin(scl_pin_id, machine.Pin.OUT), sda=machine.Pin(sda_pin_id), freq=freq)
def setup_i2c(): # # this script assumes the default connection of the I2C bus # On pycom devices that is P9 = SDA, P10 = scl # scl_pin_id = 23 sda_pin_id = 22 scl = machine.Pin(scl_pin_id) sda = machine.Pin(sda_pin_id) i2c = machine.SoftI2C(scl=scl, sda=sda, freq=10000) return i2c
def test(): scl = machine.Pin(27, machine.Pin.IN, machine.Pin.PULL_UP) sda = machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_UP) i2c = machine.SoftI2C(scl=scl, sda=sda, freq=400000) sensor = SHT3XDIS(i2c) sensor.reset() machine.sleep(20) sensor.clear() machine.sleep(20) print(sensor.status) print(sensor.values)
def __init__(self, scl_pin, sda_pin, display_width, display_height, addr=0x3c, external_vcc=False): self.display_width = display_width self.display_height = display_height self.i2c = machine.SoftI2C(Pin(scl_pin), Pin(sda_pin)) super().__init__(display_width, display_height, self.i2c, addr, external_vcc)
def measure(res = [0, 0, 0, 0, 0, '']): try: res[3] = adc_read(lvlpin) res[4] = adc_read(lvlspin) res[5] = 'Low power.' if res[3] < LVL_LOWPWR else '' i2c = machine.SoftI2C(scl=machine.Pin(I2CSCL_PIN), sda=machine.Pin(I2CSDA_PIN), freq=I2C_FREQ) bme = BME280.BME280(i2c=i2c) res = (bme.temperature, bme.humidity, bme.pressure, res[3], res[4], res[5]) print("Measuring: %s" % str(res)) except Exception as e: res[5]= res[5] + " Measuring Error." print("Measurin Error: %s" % str(e)) return res
def read_soil(): try: # connect I2C and read the moisture and temperature i2c = machine.SoftI2C(sda=machine.Pin(SDA_PIN), scl=machine.Pin(SCL_PIN), freq=400000) seesaw = stemma_soil_sensor.StemmaSoilSensor(i2c) # get sensor data moisture = seesaw.get_moisture() temperature = seesaw.get_temp() return 0, moisture, temperature except: print('soil error') restart_and_reconnect() return 1, 0
def setup(): scl = machine.Pin(const.SCL, machine.Pin.IN, machine.Pin.PULL_UP) sda = machine.Pin(const.SDA, machine.Pin.IN, machine.Pin.PULL_UP) i2c = machine.SoftI2C(scl=scl, sda=sda, freq=400000) mux = tca9548a.TCA9548A(i2c, reset=13) try: for busno in range(8): bus = mux.bus(busno) scan = bus.scan() print(busno, scan) for address in scan: if address in KNOWN_ADDRESSES: class_, moniker = KNOWN_ADDRESSES[address] sensor = class_(bus, address=address) id_ = (busno, address) # SENSORS[id_] = \ # lambda emit, sensor=sensor, id_=id_: moniker(sensor, id_, emit) SENSORS[id_] = sensor except OSError: pass
def test(): import machine import sht3xdis import const scl = machine.Pin(const.SCL, machine.Pin.IN, machine.Pin.PULL_UP) sda = machine.Pin(const.SDA, machine.Pin.IN, machine.Pin.PULL_UP) i2c = machine.SoftI2C(scl=scl, sda=sda, freq=400000) mux = TCA9548A(i2c, reset=13) sensor = sht3xdis.SHT3XDIS(mux.bus(7)) reset = True while True: try: if reset: sensor.reset() sensor.clear() reset = False print(sensor.values) print(sensor.status) machine.sleep(100) except OSError: reset = True
import machine, utime, ustruct i2c = machine.SoftI2C(scl=machine.Pin(5), sda=machine.Pin(4), freq=100000) sensor = i2c.scan()[0] if len(i2c.scan()) >= 1 else None def cmd_i2c(sensor, addr, val): try: global i2c return i2c.writeto_mem(sensor, addr, val) except: return None def noisy_readfrom_mem(device, address, length, n_tries=5): ## Tries reading a few times due to buggy i2c bus for _ in range(0, n_tries): try: return i2c.readfrom_mem(device, address, length) except: pass raise OSError('NODEV') def has_sensor(): return sensor is not None # init stuffs def init(): cmd_i2c(sensor, 0x19, b'\x00') cmd_i2c(sensor, 0x1a, b'\x00')
# 3v3 Vin # Gnd Gnd # X1 DC # X2 CS # X3 Rst # X6 CLK # X8 DATA pdc = machine.Pin('Y1', machine.Pin.OUT_PP) pcs = machine.Pin('Y2', machine.Pin.OUT_PP) prst = machine.Pin('Y3', machine.Pin.OUT_PP) if soft: spi = machine.SPI(sck=machine.Pin('Y6'), mosi=machine.Pin('Y8'), miso=machine.Pin('Y7')) else: spi = machine.SPI(2) ssd = SSD1306_SPI(WIDTH, HEIGHT, spi, pdc, prst, pcs) else: # I2C # Pyb SSD # 3v3 Vin # Gnd Gnd # Y9 CLK # Y10 DATA if soft: pscl = machine.Pin('Y9', machine.Pin.OPEN_DRAIN) psda = machine.Pin('Y10', machine.Pin.OPEN_DRAIN) i2c = machine.SoftI2C(scl=pscl, sda=psda) else: i2c = machine.I2C(2) ssd = SSD1306_I2C(WIDTH, HEIGHT, i2c)
co2 = 0 humidity = 0 temperature = 0 co2_changed = 0 melody_changed = False highest_index = len(music.melodies_text) - 1 shown = False #Pin-Belegung #Sensor scl = machine.Pin(22) sda = machine.Pin(21) i2c = machine.SoftI2C(scl, sda) #Display draw_menuline = display.draw_menuline draw_segment = display.draw_segment draw_segments = display.draw_segments #Ziffern segment_length = 15 segment_width = 2 #Geräte sensor = scd30.EasySCD30(i2c) #buzzer_pwm.freq(int(frequency)) #buzzer_pwm.duty(0)
return ("{:.2f}C".format(t), "{:.2f}hPa".format(p / 100), "{:.2f}%".format(h)) # # this script assumes the default connection of the I2C bus # On pycom devices that is P9 = SDA, P10 = scl # import machine from machine import Pin scl_pin_id = 23 sda_pin_id = 22 i2c = machine.SoftI2C(scl=machine.Pin(scl_pin_id), sda=machine.Pin(sda_pin_id), freq=10000) bme = BME280(i2c=i2c) print(bme.values) def do_connect(): import network # enable station interface and connect to WiFi access point nic = network.WLAN(network.STA_IF) nic.active(True) if not nic.isconnected(): print('connecting to network...') wlan = open("wlan.txt").read().split(",")
def radio_init(): i2c = machine.SoftI2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=400000) radio = Radio(i2c) return radio
# micropython script to get lux values from BH1750 sensor import time import machine from bh1750 import BH1750 scl = machine.Pin(5) sda = machine.Pin(4) # for esp32 use machine.I2C(-1, scl=scl, sda=sda, freq=100000) i2c = machine.SoftI2C(scl=scl, sda=sda, freq=100000) sensor = BH1750(i2c, 0x23) # secondary address is 0x5c try: while True: # get sensor light intensity (lux) and store value in variable 'lux' lux = sensor.luminance(BH1750.ONCE_HIRES_1) # print value to console. # {} is used in conjunction with format() for substitution. # .2f - format to 2 decimal places. # end='\r' - curser will go to the start of the current line instead of making a new line. print("Light intensity is {:.2f} lx".format(lux), end='\r') time.sleep(1) except KeyboardInterrupt: print('script stopped by user') finally: print('Goodbye!')
R2 = 100e3 # second divider bridge resistor ANALOG_PIN = 34 # Measure of analog voltage (ex: battery voltage following) # temperature and humidity sensors DS18B20_PIN = 13 # DS18B20 temperature sensors DHT22_PIN_1 = 15 # DHT11 temperature ans humidity air sensor DHT22_PIN_2 = 16 # DHT22 temperature and humidity air sensor (better precision and resolution) # HW390soil sensor HW390_PIN_1 = 35 # soil humidity sensor HW390_PIN_2 = 36 # soil humidity sensor HW390_U100 = 1 # tension mesuree sur la sonde quand l'umidite de la terre est de 100% HW390_U000 = 3 # tension mesuree sur la sonde quand l'umidite de la terre est de 100% # HW390_PENTE = (HW390_100 - HW390_000) / 100 # I2C initialisation SDA_PIN = 21 # I2C SDA_PIN SCL_PIN = 22 # I2C SCL_pin i2c = machine.SoftI2C(sda=machine.Pin(SDA_PIN), scl=machine.Pin(SCL_PIN), freq=400000) # Mosquitto MQTT params MQTT_BROKER = '192.168.1.108' MQTT_TOPIC_PUB = 'lib_jo_demo' MQTT_CLIENT_ID = ubinascii.hexlify(machine.unique_id()) # WIFI params WIFI_SSID = 'jmb-home' WIFI_PW = 'lu-mba01' # LED settings INTERNAL_BLUE_LED = machine.Pin(2, machine.Pin.OUT) def mqtt_connect(client_id, mqtt_broker): mqtt_client = umqttsimple2_jo.MQTTClient(client_id, mqtt_broker) mqtt_client.connect() return mqtt_client
"""Real time clock (RTC) utility.""" import machine import utime import urtc import ntptime import config _SECS_IN_HOUR = 3600 _SECS_IN_DAY = 24 * _SECS_IN_HOUR _i2c = machine.SoftI2C(sda=config.SDA_PIN, scl=config.SCL_PIN) def datetime(): """Get the current timezone date/time from RTC. The result is an 8-tuple of the format (year, month, day, weekday, hour, minute, second, millisecond) """ gmt_secs = urtc.tuple2seconds(gmt()) gmt_secs += config.HOURS_DIFF_FROM_GMT * _SECS_IN_HOUR return urtc.seconds2tuple(int(gmt_secs)) def gmt(): """Get current GMT date/time from RTC. The result is an 8-tuple of the format (year, month, day, weekday, hour, minute, second, millisecond) """ return _get_rtc().datetime()