def __init__(self): # Set up watchdog timer self.watchdog = microcontroller.watchdog self.watchdog.deinit() self.watchdog.timeout = WATCHDOG_TIMEOUT self.watchdog.mode = WATCHDOG_MODE # Set up heartbeat output (i.e red LED) self._heartbeat = digitalio.DigitalInOut(HEARTBEAT_PIN) self._heartbeat.direction = digitalio.Direction.OUTPUT self._heartbeat_duration = HEARTBEAT_DURATION # Set up I2C bus i2c = busio.I2C(board.SCL, board.SDA) # Set up SPI bus spi = busio.SPI(board.SCK, board.MOSI, board.MISO) # Set up real time clock as source for time.time() or time.localtime() calls. print("Initialising real time clock.\n\n\n\n") clock = PCF8523(i2c) rtc.set_time_source(clock) print("Initialising display.\n\n\n\n") self.display = Display(self, DISPLAY_TIMEOUT, i2c, spi) print("Initialising lights.\n\n\n\n") self.lights = Lights(LIGHTS_ON_TIME, LIGHTS_OFF_TIME, LIGHTS_ENABLE_PIN, LIGHTS_DISABLE_PIN) print("Initialising feeder.\n\n\n\n") self.feeder = Feeder(FEEDING_TIMES, PORTIONS_PER_MEAL, FEEDER_MOTOR, FEEDER_STEPS_PER_ROTATION, FEEDER_STEP_DELAY, FEEDER_STEP_STYLE, i2c) print("Initialising temperature sensors.\n\n\n\n") ow_bus = OneWireBus(OW_PIN) self.water_sensor = TemperatureSensor(ow_bus, WATER_SN, WATER_OFFSET) self.air_sensor = TemperatureSensor(ow_bus, AIR_SN, AIR_OFFSET) # Set up SD card print("Setting up logging.\n\n\n\n") cs = digitalio.DigitalInOut(SD_CS) sdcard = SDCard(spi, cs) vfs = storage.VfsFat(sdcard) storage.mount(vfs, "/sd") self._log_data = LOG_DATA self._log_interval = time_tuple_to_secs(LOG_INTERVAL) self._last_log = None print("Initialising Bluetooth.\n\n\n\n") self._ble = BLERadio() self._ble._adapter.name = BLE_NAME self._ble_uart = UARTService() self._ble_ad = ProvideServicesAdvertisement(self._ble_uart)
def push_to_local(): global chip rtc.set_time_source(chip)
# time while there is powersource (ie coin cell battery) import time import board import busio import rtc import adafruit_gps uart = busio.UART(board.TX, board.RX, baudrate=9600, timeout=3000) gps = adafruit_gps.GPS(uart, debug=False) gps.send_command(b'PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0') gps.send_command(b'PMTK220,1000') print("Set GPS as time source") rtc.set_time_source(gps) last_print = time.monotonic() while True: gps.update() # Every second print out current time from GPS, RTC and time.localtime() current = time.monotonic() if current - last_print >= 1.0: last_print = current # Time & date from GPS informations print('Fix timestamp: {:02}/{:02}/{} {:02}:{:02}:{:02}'.format( gps.timestamp_utc.tm_mon, # Grab parts of the time from the gps.timestamp_utc.tm_mday, # struct_time object that holds gps.timestamp_utc.tm_year, # the fix time. Note you might gps.timestamp_utc.tm_hour, # not get all data like year, day,
#------------------------------------------------------------------------- # Get sekrets from a secrets.py file try: from secrets import secrets totp_keys = secrets["totp_keys"] except ImportError: print("Secrets are kept in secrets.py, please add them there!") raise except KeyError: print("TOTP info not found in secrets.py.") raise # set board to use PCF8523 as its RTC pcf = adafruit_pcf8523.PCF8523(board.I2C()) rtc.set_time_source(pcf) #------------------------------------------------------------------------- # H I D S E T U P #------------------------------------------------------------------------- time.sleep(1) # Sleep for a bit to avoid a race condition on some systems keyboard = Keyboard(usb_hid.devices) keyboard_layout = KeyboardLayoutUS(keyboard) # We're in the US :) #------------------------------------------------------------------------- # D I S P L A Y S E T U P #------------------------------------------------------------------------- display = board.DISPLAY # Secret Code font by Matthew Welch # http://www.squaregear.net/fonts/
import digitalio import rtc import ds1302 # Define the clock, data and enable pins clkpin = digitalio.DigitalInOut(board.D10) datapin = digitalio.DigitalInOut(board.D11) cepin = digitalio.DigitalInOut(board.D12) # Instantiate the ds1302 class ds1302 = ds1302.DS1302(clkpin, datapin, cepin) # Now, let us set the time the_time = time.struct_time((2018, 10, 22, 10, 34, 30, 1, -1, -1)) ds1302.write_datetime(the_time) # Redefine the RTC class to link with the ds1302 class RTC(object): @property def datetime(self): return ds1302.read_datetime() # Instantiate the rtc class and set the time source r = RTC() rtc.set_time_source(r) # With this in place, you can now call the following to get the time! time.localtime()