Example #1
0
 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()
Example #2
0
  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()
Example #3
0
    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)
Example #4
0
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
Example #5
0
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)
Example #6
0
    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)
Example #7
0
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
Example #8
0
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
Example #9
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
Example #10
0
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
Example #11
0
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)
Example #13
0
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
Example #16
0
# 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!')
Example #17
0
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
Example #18
0
"""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()