Exemple #1
0
    def MQCalibration(self):
        val=0.0
        raw_calib = readadc(self.analog)
        for i in range (0, self.CALIBARAION_SAMPLE_TIMES):
            val += self.MQResistanceCalculation(readadc(self.analog))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL)

        val = val/self.CALIBARAION_SAMPLE_TIMES

        val = val/self.RO_CLEAN_AIR_FACTOR
        edit_calib_config("MQ4", val)
        edit_calib_config("MQ4_RAW", raw_calib)
        log.info("Calibrated, Ro = "+str(val))
        return val
Exemple #2
0
    def MQCalibration(self):
        val = 0.0
        raw_calib = readadc(self.analog)
        for i in range(0, self.CALIBARAION_SAMPLE_TIMES):
            val += self.MQResistanceCalculation(readadc(self.analog))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL)

        val = val / self.CALIBARAION_SAMPLE_TIMES

        val = val / self.RO_CLEAN_AIR_FACTOR
        edit_calib_config("MQ4", val)
        edit_calib_config("MQ4_RAW", raw_calib)
        log.info("Calibrated, Ro = " + str(val))
        return val
def main():
    """
    Основной блок программы
    Main program block
    :return: None
    """

    # 10k trim pot connected to adc #1
    # Потенциометр подключен на первый вход АЦП
    potentiometer_adc = 7

    last_read = 0       # Переменная отслеживает последнее считанное с потенциометра значение
    tolerance = 7       # Минимальное изменение значения. Новое значение с потенциометра будем
                        # считывать только тогда, когда разница между текущим и предудущим значением
                        # будет больше tolerance. Необходимо для устранения дребезжания

    MAX_VALUE = 1023

    #####################################################################

    # Все порты к дисплею устанавливаем на вывод:
    GPIO.setup(LCD_E , GPIO.OUT)  # E
    GPIO.setup(LCD_RS, GPIO.OUT)  # RS
    GPIO.setup(LCD_D4, GPIO.OUT)  # DB4
    GPIO.setup(LCD_D5, GPIO.OUT)  # DB5
    GPIO.setup(LCD_D6, GPIO.OUT)  # DB6
    GPIO.setup(LCD_D7, GPIO.OUT)  # DB7

    # Инциализируем дисплей
    lcd.init()

    # Устанавливаем режимы пинов интерфейса SPI
    # set up the SPI interface pins
    GPIO.setup(SPIMOSI, GPIO.OUT)
    GPIO.setup(SPIMISO, GPIO.IN)
    GPIO.setup(SPICLK, GPIO.OUT)
    GPIO.setup(SPICS, GPIO.OUT)

    potentiometer_adc = 7

    last_read = 0       # Переменная отслеживает последнее считанное с потенциометра значение
    tolerance = 7       # Минимальное изменение значения. Новое значение с потенциометра будем
                        # считывать только тогда, когда разница между текущим и предудущим значением
                        # будет больше tolerance. Необходимо для устранения дребезжания


    while True:
        user_input = input()

        if user_input == 'e':
            break

        # Считываем очередное значение с АЦП
        hum_raw_value = adc.readadc(potentiometer_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)

        hum_value = abs(hum_raw_value - 1023)

        percent = round(hum_value * 100.0 / MAX_VALUE)

        lcd.string(' Humidity = {hum}%' .format(hum = percent), LCD_LINE_1)
Exemple #4
0
 def MQRead(self):
     rs=0
     for i in range(0, self.READ_SAMPLE_TIMES):
         rs += self.MQResistanceCalculation(readadc(self.analog))
         time.sleep(self.READ_SAMPLE_INTERVAL)
     rs = rs/self.READ_SAMPLE_TIMES
     return rs
Exemple #5
0
 def MQRead(self):
     rs = 0
     for i in range(0, self.READ_SAMPLE_TIMES):
         rs += self.MQResistanceCalculation(readadc(self.analog))
         time.sleep(self.READ_SAMPLE_INTERVAL)
     rs = rs / self.READ_SAMPLE_TIMES
     return rs
Exemple #6
0
def sample():
    # Debugging
    #value = math.sin(time.time()*60*2*math.pi)
    #value2 = math.sin(time.time()*120*2*math.pi) * math.sin(time.time()*10*2*math.pi)
    #value3 = math.sin(time.time()*70*2*math.pi)
    # Slower, but timing more in-sync
    #value = (adc.readadc(6) - adc.readadc(2))
    #value2 = (adc.readadc(0) - adc.readadc(6))
    #value3 = (adc.readadc(2) - adc.readadc(6))
    adc0 = adc.readadc(0)
    adc2 = adc.readadc(2)
    adc6 = adc.readadc(6)
    value = 2 * (adc2 - adc0)
    value2 = 2 * (adc6 - adc0)
    value3 = 2 * (adc6 - adc2)
    a = (value, value2, value3)
    return a
Exemple #7
0
def sample():
    # Debugging
    #value = math.sin(time.time()*60*2*math.pi)
    #value2 = math.sin(time.time()*120*2*math.pi) * math.sin(time.time()*10*2*math.pi)
    #value3 = math.sin(time.time()*70*2*math.pi)
    # Slower, but timing more in-sync
    #value = (adc.readadc(6) - adc.readadc(2))
    #value2 = (adc.readadc(0) - adc.readadc(6))
    #value3 = (adc.readadc(2) - adc.readadc(6))
    adc0 = adc.readadc(0)
    adc2 = adc.readadc(2)
    adc6 = adc.readadc(6)
    value = 2 * (adc2 - adc0)
    value2 = 2 * (adc6 - adc0)
    value3 = 2 * (adc6 - adc2)
    a = (value, value2, value3)
    return a
Exemple #8
0
    def MQCalibration(self):
          val=0
          raw_calib = readadc(self.analog)
          for i in range(0, self.CALIBARAION_SAMPLE_TIMES): #take multiple samples
            val += self.MQResistanceCalculation(readadc(self.analog))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL)
          val = val/self.CALIBARAION_SAMPLE_TIMES;                   #calculate the average value

          val = val/self.RO_CLEAN_AIR_FACTOR;                        #divided by RO_CLEAN_AIR_FACTOR yields the Ro
                                                                #according to the chart in the datasheet
          edit_calib_config("MQ6", val)
          edit_calib_config("MQ6_RAW", raw_calib)
          log.info("Calibrated, Ro = " + str(val))
          if(self.verbose):
                print "<{}> :: Calibration is done...".format(self.device_name)
                print "<{}> :: Ro = ".format(self.device_name), self.Ro , " kohm"
          return val
Exemple #9
0
def read(name, pin, verbose=True):
    if name == "mq135" or name == "mq4" or name == "mq6":
        val = readadc(pin)
        print (name + "read is " + str(val))
        return val, val
    if name == "dust":        
        samplingTime = .280 / 1000
        deltaTime = 40 / 1000000.0
        sleepTime = 9680 / 1000000.0
        GPIO.setmode(GPIO.BCM)  # choose BCM or BOARD
        GPIO.setup(pin[1], GPIO.OUT)  # set GPIO24 as an output $pinMode(iled, OUTPUT);
        GPIO.output(pin[1],0)  # to set port/pin to High, use => 1/GPIO.HIGH/True  #digitalWrite(iled, LOW); //iled default closed
        time.sleep(0.1)
        GPIO.output(pin[1], 1)
        time.sleep(samplingTime)
        adcvalue = readadc(pin[0])
        GPIO.output(pin[1], 0)
        return adcvalue, adcvalue
        
    if name=="dht11":
        GPIO.setmode(GPIO.BCM)
        instance = dht11.DHT11(pin=pin)
        lastknown = (23, 35)
        result1, result2 = lastknown
        try:
            result = instance.read()
            if (result.is_valid):
                result1 = result.temperature
                result2 = result.humidity
                if(result2==0):
                    result1, result2 = lastknown
                if(verbose):
                    print "<{}> :: Temperature ::".format(name), result1
                    print "<{}> :: Humidity    ::".format(name), result2
            else:
                result1, result2 = lastknown
                if (verbose):
                    print "<{}> :: Temperature :: NOT VALID".format(name)
                    print "<{}> :: Humidity    :: NOT VALID".format(name)
            lastknown = result1, result2
	    return result1, result2
        except:
            print("ERROR in READ...read_temp")
Exemple #10
0
    def MQCalibration(self):
        val = 0.0
        for i in range(0, self.CALIBARAION_SAMPLE_TIMES):
            val += self.MQResistanceCalculation(readadc(self.analog))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL)

        val = val / self.CALIBARAION_SAMPLE_TIMES

        val = val / self.RO_CLEAN_AIR_FACTOR

        return val
Exemple #11
0
    def read(self):
        pp = -1
        # try:
        self.setup()
        time.sleep(0.1)
        GPIO.output(self.PIN_ILED, 1)
        time.sleep(self.samplingTime)
        #GPIO.output(self.PIN_ILED, 0)
        #time.sleep(self.samplingTime)
        adcvalue = readadc(self.analog)
        if (self.verbose):
            print "<{}> :: value read from adc = ".format(
                self.device_name), adcvalue

        #time.sleep(self.deltaTime)
        GPIO.output(self.PIN_ILED, 0)
        #time.sleep(self.sleepTime)

        #adcvalue = self.Filter(adcvalue)
        if (self.verbose):
            print "<{}> :: adc value filtered = ".format(
                self.device_name), adcvalue

        # /*
        # convert voltage (mv)
        # */
        voltage = (self.SYS_VOLTAGE / 1024.0) * adcvalue * 11
        if (self.verbose):
            print "<{}> :: filtered voltage value = ".format(
                self.device_name), voltage, " mv"

        # /*
        # voltage to density
        # */
        if (voltage >= self.NO_DUST_VOLTAGE):
            voltage -= self.NO_DUST_VOLTAGE
            density = voltage * self.COV_RATIO
        else:
            density = 0

        # /*
        # display the result
        # */
        if (self.verbose):
            print "<{}> Dust concentration: ".format(
                self.device_name), density, " ug/m3 "
        pp = density

        # except (SystemExit, KeyboardInterrupt):
        #    raise
        # except Exception, e:
        #   eprint("ERROR in READ...PI/sensors/dust.py")
        return pp, adcvalue
Exemple #12
0
 def calibrate135(self):
     avg = 0
     n = 0
     try:
         while n < 100:
             x = self.getRZero()
             n += 1
             avg = (avg * (n - 1) + x) / n
             print avg, "kohm, Adcout:", readadc(self.ADC_CHANNEL)
             time.sleep(0.5)
     except KeyboardInterrupt:  # If CTRL+C is pressed, exit cleanly:
         print 'bye'
     return avg
Exemple #13
0
 def calibrate135(self):
     avg = 0
     n = 0
     try:
         while n<100:
             x = self.getRZero()
             n += 1
             avg = (avg * (n - 1) + x) / n
             print avg, "kohm, Adcout:", readadc(self.ADC_CHANNEL)
             time.sleep(0.5)
     except KeyboardInterrupt:  # If CTRL+C is pressed, exit cleanly:
         print 'bye'
     return avg
Exemple #14
0
    def MQCalibration(self):
        val = 0
        for i in range(0,
                       self.CALIBARAION_SAMPLE_TIMES):  #take multiple samples
            val += self.MQResistanceCalculation(readadc(self.analog))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL)
        val = val / self.CALIBARAION_SAMPLE_TIMES
        #calculate the average value

        val = val / self.RO_CLEAN_AIR_FACTOR
        #divided by RO_CLEAN_AIR_FACTOR yields the Ro
        #according to the chart in the datasheet
        return val
Exemple #15
0
    def read(self):
        val = -1
        try:
            ans = 0.0
            for i in range(0, 20):
                cur = self.MQGetGasPercentage(readadc(self.analog) / self.Ro, self.GAS_meth)
                ans += cur
                time.sleep(1.0 / 100.0)
            if (self.verbose):
                print "<{}> Methane concentration: ".format(self.device_name), ans / 20.0 * 10000, " ppm"
            val = ans / 20.0 * 10000

        except:
            eprint("<MQ4> ERROR in READ...sensors/mq4.py")
            log.error('ERROR in READ...sensors/mq4.py')
        return val
Exemple #16
0
    def auto_calibrate(self):
        try:
            avg = 0
            n = 0
            #try:
            while n < 10:
                x = self.getRZero()
                n += 1
                avg = (avg * (n - 1) + x) / n

                time.sleep(0.5)
        except Exception as e:
            log.error('ERROR in CALIBRATE...sensors/mq135.py')
        raw_calib = readadc(self.analog)
        edit_calib_config("MQ135", avg)
        edit_calib_config("MQ135_RAW", raw_calib)
        log.info('Calibrated, RZERO = ' + str(avg))
        return avg
Exemple #17
0
    def read(self):
        val = -1
        try:
            ans = 0.0
            for i in range(0, 20):
                cur = self.MQGetGasPercentage(
                    readadc(self.analog) / self.Ro, self.GAS_meth)
                ans += cur
                time.sleep(1.0 / 100.0)
            if (self.verbose):
                print "<{}> Methane concentration: ".format(
                    self.device_name), ans / 20.0 * 10000, " ppm"
            val = ans / 20.0 * 10000

        except:
            eprint("<MQ4> ERROR in READ...sensors/mq4.py")
            log.error('ERROR in READ...sensors/mq4.py')
        return val
Exemple #18
0
    def auto_calibrate(self):
        try:
            avg = 0
            n = 0
            #try:
            while n < 10:
                x = self.getRZero()
                n += 1
                avg = (avg * (n - 1) + x) / n

                time.sleep(0.5)
        except Exception as e:
            log.error('ERROR in CALIBRATE...sensors/mq135.py')
        raw_calib = readadc(self.analog)
        edit_calib_config("MQ135", avg)
        edit_calib_config("MQ135_RAW", raw_calib)
        log.info('Calibrated, RZERO = '+str(avg))
        return avg
Exemple #19
0
    def read(self):
        val = -1
        try:
            # print("Calibrating..")
            Ro = self.MQCalibration()
            # print("Calibration is done...")
            # print "Ro=", Ro, "kohm"
            ans = 0.0
            # print("Methane: "),
            for i in range(0, 20):
                cur = self.MQGetGasPercentage(
                    readadc(self.analog) / Ro, self.GAS_meth)
                ans += cur
                time.sleep(1.0 / 100.0)
            if (self.verbose):
                print "<{}> Methane concentration: ".format(
                    self.device_name), ans / 20.0, " ppm"
            val = ans / 20.0

        except:
            eprint("ERROR in READ...PI/sensors/mq4.py")
            log.exception('ERROR in READ...PI/sensors/mq4.py')
        return val
# Устанавливаем режимы пинов интерфейса SPI
# set up the SPI interface pins
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)

# 10k trim pot connected to adc #7
# Сенсор подключен на седьмой вход АЦП
hydr_adc = 7

last_read = 0       # Переменная отслеживает последнее считанное с потенциометра значение
tolerance = 7       # Минимальное изменение значения. Новое значение с потенциометра будем
                    # считывать только тогда, когда разница между текущим и предудущим значением
                    # будет больше tolerance. Необходимо для устранения дребезжания

# Основной бесконечный цикл
while True:
        input()

        # Считываем очередное значение с АЦП
        # read the analog pin
        hum_raw_value = adc.readadc(hydr_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)

        print('Humidity = {hum}' .format(hum = hum_raw_value))  # выводим новое значение частоты на экран

        # Ничего не делаем 1/10-ю секунды
        # hang out and do nothing for a 1/10th of second
        time.sleep(0.1)
Exemple #21
0
 def read_raw(self):
     return readadc(self.analog)
Exemple #22
0
 def read_raw(self):
     return readadc(self.analog)
Exemple #23
0
    def getResistance(self):
        val = readadc(self.ADC_CHANNEL)
	print val
        return ((1023. / val) * 5. - 1.) * self.RLOAD
def main():
    """
    Основной блок программы
    Main program block
    :return: None
    """

    # 10k trim pot connected to adc #1
    # Потенциометр подключен на первый вход АЦП
    potentiometer_adc = 7

    last_read_percent = 0       # Переменная отслеживает последнее считанное с потенциометра значение
    tolerance = 7       # Минимальное изменение значения. Новое значение с потенциометра будем
                        # считывать только тогда, когда разница между текущим и предудущим значением
                        # будет больше tolerance. Необходимо для устранения дребезжания

    MAX_VALUE = 1023

    #####################################################################

    # Все порты к дисплею устанавливаем на вывод:
    GPIO.setup(LCD_E , GPIO.OUT)  # E
    GPIO.setup(LCD_RS, GPIO.OUT)  # RS
    GPIO.setup(LCD_D4, GPIO.OUT)  # DB4
    GPIO.setup(LCD_D5, GPIO.OUT)  # DB5
    GPIO.setup(LCD_D6, GPIO.OUT)  # DB6
    GPIO.setup(LCD_D7, GPIO.OUT)  # DB7

    # Инциализируем дисплей
    lcd.init()

    # Устанавливаем режимы пинов интерфейса SPI
    # set up the SPI interface pins
    GPIO.setup(SPIMOSI, GPIO.OUT)
    GPIO.setup(SPIMISO, GPIO.IN)
    GPIO.setup(SPICLK, GPIO.OUT)
    GPIO.setup(SPICS, GPIO.OUT)

    potentiometer_adc = 7

    last_read_percent = 0       # Переменная отслеживает последнее считанное с потенциометра значение
    tolerance = 1       # Минимальное изменение значения. Новое значение с потенциометра будем
                        # считывать только тогда, когда разница между текущим и предудущим значением
                        # будет больше tolerance. Необходимо для устранения дребезжания


    while True:
        # Будем считать, что потенциометр не изменил положение
        # we'll assume that the pot didn't move
        hum_changed = False

        # Считываем очередное значение с АЦП
        hum_raw_value = adc.readadc(potentiometer_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)

        hum_value = abs(hum_raw_value - 1023)

        percent = round(hum_value * 100.0 / MAX_VALUE)

        # Вычисляем разницу между текущим и прошлым значением
        # how much has it changed since the last read?
        pot_adjust = abs(percent - last_read_percent)

        # Если изменение больше tolerance
        if pot_adjust > tolerance:
            # Считаем, что ...
            hum_changed = True

        # Если потенциометр повернулся...
        if ( hum_changed ):
            lcd.string(' Humidity = {hum}%' .format(hum = percent), LCD_LINE_1)

            # Сохраняем последнее считанное значение до следующей итерации
            # save the potentiometer reading for the next loop
            last_read_percent = percent

        # Ничего не делаем 1/10-ю секунды
        # hang out and do nothing for a 1/10th of second
        time.sleep(0.1)
Exemple #25
0
 def getResistance(self):
     val = readadc(self.ADC_CHANNEL)
     return ((1023. / val) * 5. - 1.) * self.RLOAD
Exemple #26
0
    elif started == True:
        if ldr > 200:
            camera.stop_recording()
            started = False
            server = smtplib.SMTP('smtp.gmail.com', 587)
            server.starttls()
            server.login("*****@*****.**", "cam25project")
            mse = "Subject: {}\n\n{}".format(
                "NEW LIGHT INDUCED FOOTAGE CAPTURED",
                "New light triggered video captured")
            server.sendmail("*****@*****.**", "*****@*****.**",
                            mse)
            server.quit()


@anvil.server.callable
def display_message():
    """Callable function to display appropriate alert on button press"""
    global message
    return message


try:
    while True:
        if online2 == True:
            light_induced(adc.readadc(0))
        print "light = ", adc.readadc(0)
except KeyboardInterrupt:
    print("program terminated"
          )  # This is the output when the program is terminated