{"id":16221624,"url":"https://github.com/rahix/poppy-logic-controller","last_synced_at":"2025-03-19T11:31:09.740Z","repository":{"id":54340339,"uuid":"522174836","full_name":"Rahix/Poppy-Logic-Controller","owner":"Rahix","description":"A budget PLC-like board for controlling 24V DC equipment.","archived":false,"fork":false,"pushed_at":"2024-05-18T11:56:23.000Z","size":5798,"stargazers_count":16,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-08T17:56:50.461Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://blog.rahix.de/poppy-logic-controller/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rahix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-HARDWARE","code_of_conduct":null,"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}},"created_at":"2022-08-07T09:56:42.000Z","updated_at":"2025-02-24T14:36:24.000Z","dependencies_parsed_at":"2024-05-18T12:44:24.457Z","dependency_job_id":"4d462cf7-ea4a-4a4e-b8d4-12e5942547b0","html_url":"https://github.com/Rahix/Poppy-Logic-Controller","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rahix%2FPoppy-Logic-Controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rahix%2FPoppy-Logic-Controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rahix%2FPoppy-Logic-Controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rahix%2FPoppy-Logic-Controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rahix","download_url":"https://codeload.github.com/Rahix/Poppy-Logic-Controller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243986135,"owners_count":20379271,"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":[],"created_at":"2024-10-10T12:09:11.699Z","updated_at":"2025-03-19T11:31:08.186Z","avatar_url":"https://github.com/Rahix.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003ePoppy Logic Controller\u003c/h2\u003e\n\u003cimg src=\"./Docs/img/poppy-in-action.jpg\" alt=\"Poppy Logic Controller\"/\u003e\n\n---\n\nThe _Poppy Logic Controller_ is a budget PLC (Programmable Logic Controller).\nImportantly, it is only an I/O board without any PLC programming environment\n(so far).  It isn't designed to be super robust but instead to use minimal\ncomponents while still staying compatible with standard industrial 24V DC\ncontrol systems.\n\nI release the _Poppy Logic Controller_ as open hardware in hopes that others\nwho need a cheap solution for controlling industrial 24V DC equipment find it\nuseful.  _This is not a commercially viable PLC alternative._\n\nIf you want to know more about the background of this project and details of\nthe design, you might be interested in the blog post I wrote about it: [**Poppy\nLogic Controller**][poppy-blog]\n\n### Features\n- Designed for 24V DC systems as most commonly found in modern controls\n  applications.\n- 16 DI (digital inputs) in a **Sinking Input** configuration.\n- 16 DO (digital outputs) in a **Sinking Output** configuration.\n- Firmware stubs in [Rust][fw-rust], [MicroPython][fw-mp], and [IEC 61131-3\n  _Structured Text_][fw-iec].\n\n\u003csmall\u003eLearn more about sinking/sourcing I/O [here][realpars-input] and\n[here][realpars-output] or from [my blog-post about this\nproject][poppy-blog].\u003c/small\u003e\n\n### Non-Features\n- I/Os are **not** galvanically isolated.  Honestly, the isolators would\n  probably be more expensive than the MCU so there is not much incentive to\n  implement isolation anyway.\n- The board currently does not have any communication interfaces apart from the\n  Pico's USB port.  If you need to interface with anything, you might need to\n  either update the board design or connect an additional mod onto the `J12`\n  header.\n\n### Building Your Own\nRendered versions of the schematic and BOM can be found here:\n\n- [Rendered Schematic](./Docs/PoppyIO.pdf)\n- [Rendered BOM](https://rahix.github.io/Poppy-Logic-Controller/Docs/PoppyIO_bom_D.html)\n- [Rendered Interactive BOM](https://rahix.github.io/Poppy-Logic-Controller/Docs/PoppyIO_ibom_D.html)\n\n#### Parts\nSupplier for almost all parts of this project was [Reichelt Elektronik] (no\naffiliation or sponsorship here, purely personal choice).  I've tried\nreconstructing the BOM with all the Reichelt SKUs so you can painlessly get all\nyou need from one place if you so desire.  There is a column in the BOMs linked\nabove with all the information you need.\n\n#### Additional Components\nBeyond the PCB's BOM, you will need a few more components.  After all, you\nprobably want the nice feeling of mounting your controller on a DIN-rail, don't\nyou?\n\n1. The enclosure, which is an `APRA-NORM 449-360-65` (Reichelt `APRA DB6 OBK`)\n2. Optionally, a lid for the enclosure, like `APRA-NORM 449-360-12` (Reichelt\n   `APRA 449-360-12`). Also available in other colors.\n3. A few (2) jumpers (Reichelt `JUMPER 2,54 SW`)\n\n#### Hardware Revisions\nIn the design files, you'll find the latest revision **D**.  I suggest using\nthat one although it is not exactly the version I have built.  My (2) boards\nare built from revision **B** with one populated like revision **C** and one\npopulated like revision **D**.  You can read the [changelog][poppy-changelog]\nfor details of the differences.\n\n#### Programming It\nThis repository contains a bare-bones firmware in Rust and MicroPython to get\nstarted.  Or, if you have a background in automation, you can program the Poppy\nLogic Controller in _ST_ (_Structured Text_) using the IEC 61131-3 firmware.\nCheck the READMEs for more info on that:\n\n- [Firmware-Rust][fw-rust]\n- [Firmware-MicroPython][fw-mp]\n- [Firmware-IEC][fw-iec]\n\n#### Not using the Pico\nIf you need a different microcontroller, you can drop the Raspberry Pi Pico and\ninstead solder the `J12` header.  You can then connect whatever controller you\ndesire and use the I²C bus (and interrupt lines) to interact with the I/O.\n\n---\n\nIf you want to build your own but you are unsure or you have questions about\nanything, feel free to contact me to get it sorted out!\n\n## License\n- The hardware design files (everything in `Hardware/`) are licensed under the\n  [CERN-OHL-W](LICENSE-HARDWARE).\n- The firmware stubs (everything in `Firmware-*/`) are licensed under\n  [MIT](LICENSE-SOFTWARE).\n\n[Reichelt Elektronik]: https://www.reichelt.de/\n[poppy-blog]: https://blog.rahix.de/poppy-logic-controller/\n[poppy-changelog]: ./Hardware/PoppyIO/CHANGELOG.md\n[realpars-input]: https://realpars.com/sinking-and-sourcing/\n[realpars-output]: https://realpars.com/sinking-output/\n[fw-rust]: ./Firmware-Rust/\n[fw-mp]: ./Firmware-MicroPython/\n[fw-iec]: ./Firmware-IEC/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frahix%2Fpoppy-logic-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frahix%2Fpoppy-logic-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frahix%2Fpoppy-logic-controller/lists"}