{"id":21388102,"url":"https://github.com/grisp/grisp","last_synced_at":"2025-10-07T22:05:54.001Z","repository":{"id":21042348,"uuid":"91676366","full_name":"grisp/grisp","owner":"grisp","description":"🐟 GRiSP Erlang Runtime Library","archived":false,"fork":false,"pushed_at":"2025-05-08T17:23:54.000Z","size":2225,"stargazers_count":251,"open_issues_count":15,"forks_count":41,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-15T05:07:05.925Z","etag":null,"topics":["embedded","erlang","grisp","iot"],"latest_commit_sha":null,"homepage":"https://www.grisp.org","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grisp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-05-18T09:42:56.000Z","updated_at":"2025-05-08T17:23:58.000Z","dependencies_parsed_at":"2024-01-18T11:57:49.306Z","dependency_job_id":"b92f7857-0b5b-4a15-bcf2-e715e02821a5","html_url":"https://github.com/grisp/grisp","commit_stats":{"total_commits":442,"total_committers":22,"mean_commits":20.09090909090909,"dds":"0.49547511312217196","last_synced_commit":"b77b25560b5c525e9751b1beb3c9321377e2281a"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grisp","download_url":"https://codeload.github.com/grisp/grisp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"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":["embedded","erlang","grisp","iot"],"created_at":"2024-11-22T12:15:58.390Z","updated_at":"2025-10-07T22:05:48.951Z","avatar_url":"https://github.com/grisp.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n  \u003ca href=\"#readme\"\u003e\n    \u003cimg src=\"assets/GRiSP_Logotype_negative.svg#gh-dark-mode-only\" alt=\"GRiSP Logo\"\u003e\n    \u003cimg src=\"assets/GRiSP_Logotype_positive.svg#gh-light-mode-only\" alt=\"GRiSP Logo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/grisp/grisp/actions/workflows/continous_integration.yaml?query=branch%3Amaster\"\u003e\n    \u003cimg alt=\"continous integration\" src=\"https://img.shields.io/github/actions/workflow/status/grisp/grisp/continous_integration.yaml?label=build\u0026style=flat-square\u0026branch=master\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://hex.pm/packages/grisp\"\u003e\n    \u003cimg alt=\"hex.pm version\" src=\"https://img.shields.io/hexpm/v/grisp.svg?style=flat-square\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg alt=\"hex.pm license\" src=\"https://img.shields.io/hexpm/l/grisp.svg?style=flat-square\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/grisp/grisp/blob/master/.github/workflows/continous_integration.yaml#L14\"\u003e\n    \u003cimg alt=\"erlang versions\" src=\"https://img.shields.io/badge/erlang-23-blue.svg?style=flat-square\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.grisp.org\"\u003eWebsite\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/grisp/grisp/wiki\"\u003eWiki\u003c/a\u003e\n  ·\n  \u003ca href=\"https://erlangforums.com/c/erlang-platforms/grisp-forum/67\"\u003e\n    Forums\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GRiSP 2 board on wood\" src=\"assets/code.png\"/ style=\"width: 80%;\" align=\"center\"\u003e\n\u003c/p\u003e\n\nCreate amazing Internet of Things designs without soldering or dropping down to\nC. The GRiSP project makes building internet-connected hardware devices easier\nwith Erlang!\n\n* Real bare-metal Erlang virtual machine (no operating system!)\n* Hard real-time event handling, using open source code\n* Digilent Pmod™ compatible connectors for sensors and actuators\n\nThis repository contains the Erlang runtime and support code for the GRiSP\nhardware platform.\n\n# Getting Started\n\nThe easiest way to get started is to use the [Rebar 3][rebar3_plugin] or\n[Mix][mix_plugin] plug-ins for GRiSP.\n\n## Erlang\n\nInstall the [GRiSP Rebar 3 plug-in][rebar3_plugin] globally by adding `{plugins, [rebar3_grisp]}.` to `~/.config/rebar3/rebar.config`.\n\nCreate a new project:\n\n```sh\n# Create a new GRiSP application (use the real mount path of your SD card)\nrebar3 new grispapp name=demo dest=/path/to/SD-card\ncd demo\n\n# Deploy the application to your SD-card\nrebar3 grisp deploy\n```\n\n# Hardware\n\nGRiSP hardware supports many different connection standards:\n\n* GPIO\n* SPI\n* UART\n* I²C\n* 1-Wire\n\nPeripherals can be connected to either [PMOD] ports or I/O\npins directly.\n\n## GRiSP 2 (`grisp2`)\n\n\u003cimg alt=\"GRiSP 2 hardware\" src=\"assets/GRiSP2v1.2@0.25x.jpg\" style=\"width: 50%\" align=\"right\"/\u003e\n\nGRiSP 2 ships with the following features:\n\n* 1 × 100 Mbit/s Ethernet port\n* 1 × Wi-Fi 802.11b/g/n WLAN\n* 1 × GPIO PMOD Type 1A (12-pin)\n* 2 × GPIO pins (14-pin \u0026 6-pin)\n* 1 × SPI1 PMOD Type 2 (6-pin)\n* 1 × SPI2 PMOD Type 2A (12-pin)\n* 1 × UART PMOD Type 3A (12-pin)\n* 1 × I²C PMOD Type 6 (6-pin)\n* 1 × I²C Bus (8-pin)\n* 1 × 1-Wire Bus (3-pin)\n* 1 × USB Bus (5-pin)\n* 5 × mode DIP switches\n* 1 × JTAG connector\n\n## GRiSP 1 (`grisp_base`)\n\n\u003cimg alt=\"GRiSP 1 hardware\" src=\"assets/GRiSP_basev1.2@0.25x.jpg\" style=\"width: 40%\" align=\"right\"/\u003e\n\nGRiSP 1 ships with the following features:\n\n* 1 × Wi-Fi 802.11b/g/n WLAN\n* 2 × GPIO PMOD Type 1 (6-pin)\n* 1 × UART PMOD Type 3 (6-pin)\n* 1 × SPI1 PMOD Type 2A (12-pin)\n* 1 × SPI2 PMOD Type 2 (6-pin)\n* 1 × I²C Bus (8-pin)\n* 1 × 1-Wire Bus (3-pin)\n* 5 × mode DIP switches\n* 1 × JTAG connector\n\n# Testing\n\nThe project has a [hardware emulation layer in software][grisp_emulation] that\nallows you to use the runtime locally on a normal computer. To start a local\nshell for the runtime use:\n\n```\n$ rebar3 as test shell\n```\n\n# Glossary\n\n\u003cdl\u003e\n  \u003cdt\u003e1-Wire\u003c/dt\u003e\u003cdd\u003e\n    Long-distance serial communication bus.\n  \u003c/dd\u003e\n  \u003cdt\u003eGPIO\u003c/dt\u003e\u003cdd\u003e\n    General Purpose Input/Output. Digital signal pin interface used to\n    interface with single pins.\n  \u003c/dd\u003e\n  \u003cdt\u003eI²C\u003c/dt\u003e\u003cdd\u003e\n    Inter-Intergrated Circuit. Short-distance synchronous serial computer bus.\n  \u003c/dd\u003e\n  \u003cdt\u003eJTAG\u003c/dt\u003e\u003cdd\u003e\n    On-chip instrumentation and debugging interface.\n  \u003c/dd\u003e\n  \u003cdt\u003ePMOD\u003c/dt\u003e\u003cdd\u003e\n    A peripheral device that implements the [Digilent Pmod™ connection\n    form factor and interface][PMOD].\n  \u003c/dd\u003e\n  \u003cdt\u003eSlot\u003c/dt\u003e\u003cdd\u003e\n    A physical slot where a component can be connected. E.g. `SPI1` where an\n    SPI PMOD can be connected.\n  \u003c/dd\u003e\n  \u003cdt\u003eSPI\u003c/dt\u003e\u003cdd\u003e\n    Serial Peripheral Interface. Synchronous serial communication interface.\n  \u003c/dd\u003e\n  \u003cdt\u003eUART\u003c/dt\u003e\u003cdd\u003e\n    Universal Asynchronous Receiver-Transmitter. Asynchronous serial\n    communication interface.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\n[PMOD]: https://digilent.com/reference/pmod/start\n[rebar3_plugin]: https://github.com/grisp/rebar3_grisp\n[mix_plugin]: https://github.com/grisp/mix_grisp\n[grisp_emulation]: https://github.com/grisp/grisp_emulation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrisp%2Fgrisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp/lists"}