MicroPython driver for DS1307 RTC
MicroPython driver for DS1307 RTC
π The latest documentation is available at MicroPython DS1307 ReadTheDocs π
Python3 must be installed on your system. Check the current Python version with the following command
python --version python3 --versionDepending on which command Python 3.x.y (with x.y as some numbers) is returned, use that command to proceed.
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txtConnect the MicroPython device to a network (if possible)
import network station = network.WLAN(network.STA_IF) station.active(True) station.connect('SSID', 'PASSWORD') station.isconnected()Install the latest package version of this lib on the MicroPython device
import mip mip.install("github:brainelectronics/micropython-ds1307")For MicroPython versions below 1.19.1 use the upip package instead of mip
import upip upip.install('micropython-ds1307')Install a specific, fixed package version of this lib on the MicroPython device
import mip # install a verions of a specific branch mip.install("github:brainelectronics/micropython-ds1307", version="feature/initial-implementation") # install a tag version mip.install("github:brainelectronics/micropython-ds1307", version="0.1.0")For MicroPython versions below 1.19.1 use the upip package instead of mip
import upip upip.install('micropython-ds1307')Install a specific release candidate version uploaded to Test Python Package Index on every PR on the MicroPython device. If no specific version is set, the latest stable version will be used.
import mip mip.install("github:brainelectronics/micropython-ds1307", version="0.1.0-rc1.dev1")For MicroPython versions below 1.19.1 use the upip package instead of mip
import upip # overwrite index_urls to only take artifacts from test.pypi.org upip.index_urls = ['https://test.pypi.org/pypi'] upip.install('micropython-ds1307')See also brainelectronics Test PyPi Server in Docker for a test PyPi server running on Docker.
Copy the module to the MicroPython board and import them as shown below using Remote MicroPython shell
Open the remote shell with the following command. Additionally use -b 115200 in case no CP210x is used but a CH34x.
rshell --port /dev/tty.SLAB_USBtoUART --editor nanoPerform the following command inside the rshell to copy all files and folders to the device
mkdir /pyboard/lib mkdir /pyboard/lib/ds1307 cp ds1307/* /pyboard/lib/ds1307 cp examples/main.py /pyboard cp examples/boot.py /pyboardfrom ds1307 import DS1307 from machine import I2C, Pin from time import gmtime, time # DS1307 on 0x68 I2C_ADDR = 0x68 # DEC 104, HEX 0x68 # define custom I2C interface, default is 'I2C(0)' # check the docs of your device for further details and pin infos # this are the pins for the Raspberry Pi Pico adapter board i2c = I2C(0, scl=Pin(13), sda=Pin(12), freq=800000) ds1307 = DS1307(addr=I2C_ADDR, i2c=i2c) # get the current RTC time print("Current RTC time: {}".format(ds1307.datetime)) # set the RTC time to the current system time now = gmtime(time()) ds1307.datetime = now print("Current RTC time: {}".format(ds1307.datetime)) # Print the date and time in ISO8601 format: 2023-04-18T21:14:22 print("Today is {:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}".format( ds1307.year, ds1307.month, ds1307.day, ds1307.hour, ds1307.minute, ds1307.second))Run the unittests locally with the following command after installing this package in a virtual environment
# run all tests nose2 --config tests/unittest.cfg # run only one specific tests nose2 tests.test_ds1307.TestDS1307.test_addrGenerate the coverage files with
python create_report_dirs.py coverage htmlThe coverage report is placed at reports/coverage/html/index.html
Based on Mike Causer's MicroPython TinyRTC I2C module and the PyPa sample project