{"id":20791925,"url":"https://github.com/tudssl/botoks","last_synced_at":"2025-05-05T21:26:27.017Z","repository":{"id":46179430,"uuid":"234945663","full_name":"TUDSSL/Botoks","owner":"TUDSSL","description":"Batteryless timekeeping software and hardware ","archived":false,"fork":false,"pushed_at":"2021-11-09T07:48:01.000Z","size":10209,"stargazers_count":9,"open_issues_count":0,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2023-12-12T19:00:49.425Z","etag":null,"topics":["battery-less","embedded-systems","energy-harvesting","timekeeping"],"latest_commit_sha":null,"homepage":"https://tudssl.github.io/Botoks","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TUDSSL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-19T18:29:34.000Z","updated_at":"2023-03-19T07:34:35.000Z","dependencies_parsed_at":"2022-09-08T11:30:29.406Z","dependency_job_id":null,"html_url":"https://github.com/TUDSSL/Botoks","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUDSSL%2FBotoks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUDSSL%2FBotoks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUDSSL%2FBotoks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUDSSL%2FBotoks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TUDSSL","download_url":"https://codeload.github.com/TUDSSL/Botoks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225059499,"owners_count":17414700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["battery-less","embedded-systems","energy-harvesting","timekeeping"],"created_at":"2024-11-17T15:47:48.067Z","updated_at":"2024-11-17T15:47:48.545Z","avatar_url":"https://github.com/TUDSSL.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Botoks\n\nBotoks is a batteryless timekeeping sensor that operates intermittently\nharvesting ambient energy.  Botoks's hardware and software components enable IoT\napplications that require precise and intermittency-safe timekeeping.  Both\nhardware design and software stack are open-source.\n\nThe *cascaded hierarchical remanence timekeeper* (CHRT) embedded on Botoks is a\nnovel remanence timekeeper architecture.  In principle, capacitive remanence\ntimekeepers are simple RC circuits whose energy level is converted into time.\nTo know more about them and the CHRT, refer to our paper (to be made public) and\n[the docs][docs].\n\nThe sensor is based on an MSP430 ultra-low-power, FRAM-enabled microcontroller\n(MSP430FR5994), and currently the software stack only supports this MCU.\n\n\u003c!--=========================================================================--\u003e\n\n## Project Layout\n\n```\napps/               ## Applications' source code\nbin/                ## Compiled applications\nconfig/             ## Various configuration files\ndocs/               ## Source documentation\nexternal/           ## MSP430 base drivers\nlibs/               ## Core Botoks's libraries\nplatforms/          ## GPIO pin mappings\nscripts/            ## Botoks's calibration scripts\n```\n\n\u003c!--=========================================================================--\u003e\n\n## Usage\n\nBotoks's code can be built installing the MSP430-GCC toolchain, or using a\npreconfigured Docker container.  Opting for the Docker container has the\nadvantage of not having to install the toolchain, but requires you to mount the\ndirectory of the project into the container.\n\nExecutables can be uploaded and debugged using UniFlash or Code Composer Studio\n(CCS).  The former method is easier to script, whilst the latter gives you\naccess to a graphical IDE.\n\nThe following versions of CMake, MSP430-GCC and UniFlash were tested, but other\nversions might work as well.\n\n\u003c!-- For artifact: --\u003e\n\u003c!-- CMake 3.15.5 --\u003e\n\u003c!-- MSP430-GCC 6.1.1.0 --\u003e\n\u003c!-- MSP430-GCC Support Files 1.208 --\u003e\n\u003c!-- MSPDebug 0.25 --\u003e\n\n| Software   | Version |                      |\n|:-----------|:--------|:---------------------|\n| CMake      | 3.13    | [download][cmake]    |\n| MSP430-GCC | 8.3.0   | [download][mspgcc]   |\n| UniFlash   | 5.2.0   | [download][uniflash] |\n\n### Building with the Docker container\n\nYou can use the `build_with_docker.sh` script to build all applications inside a\nDocker container.  Install `docker` on your machine and start/enable the\n`docker` daemon.  Moreover, make sure that you can `docker` commands **without**\nroot privileges (check [here][docker-no-root]).  The script uses [this Docker\nimage][docker-image] to build applications inside a Docker container\npre-configured with CMake and the MSP430-GCC toolchain.\n\nYou can pass `-t \u003ctarget\u003e` to the script to specify a target for `make`.  For\ninstance, to build all projects and install the generated executables in the\n`bin/` folder of this repository, run\n\n```bash\n$ ./build_with_docker.sh -t install\n```\n\n### Building without the Docker container\n\nFirst of all, install CMake and the MSP430-GCC toolchain.  CMake can be\ninstalled using your OS's package manager, though the latest version might not\nbe available.  In that case, download the binaries using the link above.  As for\nthe GCC toolchain, you can use the provided `install_toolchain.sh` script to\ndownload and install toolchain and support files.\n\nTo install, do\n\n```bash\n$ MSP430_GCC_OS=linux64   # can be 'linux32' or 'macos' instead\n$ INSTALL_PREFIX=~/ti     # where to install the toolchain\n$ ./install_toolchain.sh\n```\n\nThis will download toolchain and other support files from TI's website, and\ninstall them at `$INSTALL_PREFIX/msp430-gcc`.  Then, assign the environment\nvariable `MSP430_TOOLCHAIN_PATH` the absolute path to the root directory of the\ntoolchain, e.g.\n\n```bash\n$ export MSP430_TOOLCHAIN_PATH=~/ti/msp430-gcc\n```\n\nFinally, to build all projects, do\n\n```bash\n$ git clone https://github.com/TUDSSL/Botoks.git\n$ cd Botoks\n$ mkdir build \u0026\u0026 cd build\n$ cmake ..\n$ make\n```\n\nThen run `make install` to build all projects and install the generated\nexecutables in the `bin/` folder of this repository.  To build applications\nindividually, run `make \u003capp-name\u003e`.\n\n### Running applications\n\nFirst, connect Botoks to a debugger capable of debugging the MSP430 line of\nproducts.  Then power Botox using the auxiliary power connector on the PCB.  The\nvoltage provided needs to be between 3.4 and 5V.\n\nTo upload an application install [UniFlash][uniflash].  As of now, all scripts\nassume UniFlash is installed at `/opt/ti/uniflash`.  From the project's\ndirectory root, run:\n\n```bash\n$ ./flash.sh bin/\u003capp-name\u003e.out\n```\n\nThe serial output can now be monitored using your favorite serial monitor (e.g.,\n`picocom`) with a baudrate of 19200.\n\n```bash\n$ picocom /dev/ttyACM1 -b 19200 --imap lfcrlf\n```\n\n### Calibration\n\nFor the calibration procedure please refer to [the docs][docs].  Running the\ncalibration procedure requires a licensed version of [MATLAB][matlab] and the\nserial terminal `picocom`.\n\n\u003c!--=========================================================================--\u003e\n\n## Documentation\n\nThe Docker container comes with all the dependencies to build the documentation.\nSimply run\n\n```bash\n$ ./build_with_docker.sh -t docs\n```\n\nand find the HTML documentation in `build/docs/html`.\n\n\u003c!--=========================================================================--\u003e\n\n## Hardware\n\nThe hardware is designed in [KiCad][kicad], however, PDF schematics and gerbers\nare available in the [hardware][hardware] folder.\n\n\u003c!--=========================================================================--\u003e\n\n[paper]: dl.link\n[docs]: #documentation\n[cmake]: https://cmake.org/download/\n[mspgcc]: http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/latest/index_FDS.html\n[uniflash]: http://www.ti.com/tool/UNIFLASH\n[docker-no-root]: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user\n[docker-image]: https://hub.docker.com/r/cdelledonne/msp430-gcc\n[matlab]: https://www.mathworks.com/products/matlab.html\n[kicad]: http://www.kicad.org/\n[hardware]: ./hardware\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftudssl%2Fbotoks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftudssl%2Fbotoks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftudssl%2Fbotoks/lists"}