A budget PLC-like board for controlling 24V DC equipment.

Overview

Poppy Logic Controller

Poppy Logic Controller


The Poppy Logic Controller is a budget PLC (Programmable Logic Controller). Importantly, it is only an I/O board without any PLC programming environment (so far). It isn't designed to be super robust but instead to use minimal components while still staying compatible with standard industrial 24V DC control systems.

I release the Poppy Logic Controller as open hardware in hopes that others who need a cheap solution for controlling industrial 24V DC equipment find it useful. This is not a commercially viable PLC alternative.

If you want to know more about the background of this project and details of the design, you might be interested in the blog post I wrote about it: Poppy Logic Controller

Features

  • Designed for 24V DC systems as most commonly found in modern controls applications.
  • 16 DI (digital inputs) in a Sinking Input configuration.
  • 16 DO (digital outputs) in a Sinking Output configuration.

Learn more about sinking/sourcing I/O here and here or from my blog-post about this project.

Non-Features

  • I/Os are not galvanically isolated. Honestly, the isolators would probably be more expensive than the MCU so there is not much incentive to implement isolation anyway.
  • The board currently does not have any communication interfaces apart from the Pico's USB port. If you need to interface with anything, you might need to either update the board design or connect an additional mod onto the J12 header.

Building Your Own

Rendered versions of the schematic and BOM can be found here:

Parts

Supplier for almost all parts of this project was Reichelt Elektronik (no affiliation or sponsorship here, purely personal choice). I've tried reconstructing the BOM with all the Reichelt SKUs so you can painlessly get all you need from one place if you so desire. There is a column in the BOMs linked above with all the information you need.

Additional Components

Beyond the PCB's BOM, you will need a few more components. After all, you probably want the nice feeling of mounting your controller on a DIN-rail, don't you?

  1. The enclosure, which is an APRA-NORM 449-360-65 (Reichelt APRA DB6 OBK)
  2. Optionally, a lid for the enclosure, like APRA-NORM 449-360-12 (Reichelt APRA 449-360-12). Also available in other colors.
  3. A few (2) jumpers (Reichelt JUMPER 2,54 SW)

Hardware Revisions

In the design files, you'll find the latest revision D. I suggest using that one although it is not exactly the version I have built. My (2) boards are built from revision B with one populated like revision C and one populated like revision D. You can read the changelog for details of the differences.

Programming It

This repository contains a bare-bones firmware in Rust and MicroPython to get started. Check their READMEs for more info on that:

Not using the Pico

If you need a different microcontroller, you can drop the Raspberry Pi Pico and instead solder the J12 header. You can then connect whatever controller you desire and use the I²C bus (and interrupt lines) to interact with the I/O.


If you want to build your own but you are unsure or you have questions about anything, feel free to contact me to get it sorted out!

License

  • The hardware design files (everything in Hardware/) are licensed under the CERN-OHL-W.
  • The firmware stubs (everything in Firmware-*/) are licensed under MIT.
Comments
  • Add a Modbus interface to the IEC firmware!

    Add a Modbus interface to the IEC firmware!

    This allows communication with the outside world! (And is mostly an excuse to try out rmodbus in a more practical environment)

    The IEC Firmware README has details how it works.

    opened by Rahix 1
  • fw: iec: bump shared-bus from 0.2.4 to 0.2.5 in /Firmware-IEC

    fw: iec: bump shared-bus from 0.2.4 to 0.2.5 in /Firmware-IEC

    Bumps shared-bus from 0.2.4 to 0.2.5.

    Release notes

    Sourced from shared-bus's releases.

    Version 0.2.5

    Changed

    • Upgraded to embedded-hal alpha support to version 9. Please pin your dependency on shared-bus to an exact version (using =0.#.#) when you make use of the eh-alpha feature flag (#38 by @​taks).

    Fixed

    • Fixed the new_xtensa!() macro not compiling (#40 by @​Gazedo).

    #38: Rahix/shared-bus#38 #40: Rahix/shared-bus#40

    Changelog

    Sourced from shared-bus's changelog.

    [0.2.5] - 2022-11-23

    Changed

    • Upgraded to embedded-hal alpha support to version 9. Please pin your dependency on shared-bus to an exact version (using =0.#.#) when you make use of the eh-alpha feature flag (#38).

    Fixed

    • Fixed the new_xtensa!() macro not compiling (#40).

    #38: Rahix/shared-bus#38 #40: Rahix/shared-bus#40

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump cc from 1.0.73 to 1.0.78 in /Firmware-IEC

    build(deps): bump cc from 1.0.73 to 1.0.78 in /Firmware-IEC

    Bumps cc from 1.0.73 to 1.0.78.

    Release notes

    Sourced from cc's releases.

    1.0.78

    Version 1.0.78

    Changelog

    • Now, only .asm files are passed to masm on windows targets, bringing things back in line with how cc-rs<1.0.77 handled it (#755).
    • Absolute paths in source are now mapped as relative in OUT_DIR (#684)
    • Several improvements were made to CUDA support (#712)
    • llvm-lib.exe is now used instead of lib.exe when clang-cl is used in an MSVC environment (#758)

    Thanks to everybody who contributed to this release!

    1.0.77

    Version 1.0.77

    Changelog

    • Added a new Build::asm_flag function, which allows providing flags that are only used when compiling assembly files (for example, if your C compiler rejects flags passed to the assembler when not used as an assembler). (#752)
    • Ensure that the version of DWARF debuginfo we emit is consistent with what rustc uses on the given target. (#694)

    Thanks to everybody who contributed to this release!

    1.0.76

    Version 1.0.76

    Changelog

    • When compiling with clang-cl, we now only use -- to separate flags/options from input files when not using the assembler, which doesn't support that option. This is a fix for a regression introduced in 1.0.74 (by #514) (present in 1.0.75 as well). (#747)

    This is essentially a bugfix release, so that's all!

    1.0.75

    Version 1.0.75

    Changelog

    • When Rust debuginfo is enabled, debuginfo is passed to MSVC assemblers (#742)
    • When locating an ar executable, *-ar is now preferred to *-gcc-ar (#741)
    • On MSVC 15+, the atlmfc directory is now correctly located (#699)

    Additionally, a number of smaller changes which shouldn't impact users have been made; see the commit history for complete details.

    ... (truncated)

    Commits
    • 203a57f Merge pull request #764 from thomcc/bump-1.0.78
    • 7d168c4 Prep release 1.0.78
    • 0e51f6d Default to llvm-lib when using clang-cl in msvc environment.
    • c4f414f Map source absolute paths to OUT_DIR as relative. (#684)
    • 2ce2be8 Update CUDA toolchain.
    • 792c31c Refine CUDA support.
    • e0df9ba Allow to use clang++ with CUDA compiler.
    • 4ce4117 Only pass .asm files to masm
    • daa41b9 Prep release 1.0.77
    • 4008959 Add Build::asm_flag
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump cortex-m-rt from 0.7.1 to 0.7.2 in /Firmware-IEC

    build(deps): bump cortex-m-rt from 0.7.1 to 0.7.2 in /Firmware-IEC

    Bumps cortex-m-rt from 0.7.1 to 0.7.2.

    Release notes

    Sourced from cortex-m-rt's releases.

    v0.7.2

    Fixed

    • Fixed a bug where calling asm::delay() with an argument of 0 or 1 would underflow, leading to a very long delay.
    Changelog

    Sourced from cortex-m-rt's changelog.

    [v0.7.2] - 2021-03-07

    Fixed

    • Fixed a bug where calling asm::delay() with an argument of 0 or 1 would underflow, leading to a very long delay.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump cortex-m from 0.7.5 to 0.7.7 in /Firmware-IEC

    build(deps): bump cortex-m from 0.7.5 to 0.7.7 in /Firmware-IEC

    Bumps cortex-m from 0.7.5 to 0.7.7.

    Release notes

    Sourced from cortex-m's releases.

    v0.7.7

    What's Changed

    Full Changelog: https://github.com/rust-embedded/cortex-m/compare/v0.7.6...v0.7.7

    v0.7.6 - 2022-08-12

    • Added critical-section-single-core feature which provides an implementation for the critical-section crate for single-core systems, based on disabling all interrupts. (#448)
    Changelog

    Sourced from cortex-m's changelog.

    [v0.7.7] - 2023-01-03

    • Add missing documentation for critical-section-single-core feature added in v0.7.6.

    [v0.7.6] - 2022-08-12

    • Added critical-section-single-core feature which provides an implementation for the critical-section crate for single-core systems, based on disabling all interrupts. (#448)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump cortex-m-rt from 0.7.1 to 0.7.2 in /Firmware-Rust

    build(deps): bump cortex-m-rt from 0.7.1 to 0.7.2 in /Firmware-Rust

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps cortex-m-rt from 0.7.1 to 0.7.2.

    Release notes

    Sourced from cortex-m-rt's releases.

    v0.7.2

    Fixed

    • Fixed a bug where calling asm::delay() with an argument of 0 or 1 would underflow, leading to a very long delay.
    Changelog

    Sourced from cortex-m-rt's changelog.

    [v0.7.2] - 2021-03-07

    Fixed

    • Fixed a bug where calling asm::delay() with an argument of 0 or 1 would underflow, leading to a very long delay.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump paste from 1.0.8 to 1.0.11 in /Firmware-IEC

    build(deps): bump paste from 1.0.8 to 1.0.11 in /Firmware-IEC

    Bumps paste from 1.0.8 to 1.0.11.

    Release notes

    Sourced from paste's releases.

    1.0.11

    • Documentation improvements

    1.0.10

    • Support Literal as result of paste, as in [<1_u $bit>] producing 1_u32 etc. (#92)

    1.0.9

    • Preserve invisible delimiters in the input tokenstream if it contains no pastes (#86)
    Commits
    • 44d758d Release 1.0.11
    • 170add2 Update build status badge
    • 188cecc Release 1.0.10
    • 80d037b Merge pull request #92 from dtolnay/literal
    • b3b77f2 Gate literal fromstr support on new enough compiler
    • 0ffe860 Simplify literal suffix test
    • 8c15baf Support Literal as result of paste
    • 5814fa7 Add regression test for issue 91
    • 81cdb4f Time out workflows after 45 minutes
    • fe65644 MIT copyright line
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump cortex-m from 0.7.5 to 0.7.7 in /Firmware-Rust

    build(deps): bump cortex-m from 0.7.5 to 0.7.7 in /Firmware-Rust

    Bumps cortex-m from 0.7.5 to 0.7.7.

    Release notes

    Sourced from cortex-m's releases.

    v0.7.7

    What's Changed

    Full Changelog: https://github.com/rust-embedded/cortex-m/compare/v0.7.6...v0.7.7

    v0.7.6 - 2022-08-12

    • Added critical-section-single-core feature which provides an implementation for the critical-section crate for single-core systems, based on disabling all interrupts. (#448)
    Changelog

    Sourced from cortex-m's changelog.

    [v0.7.7] - 2023-01-03

    • Add missing documentation for critical-section-single-core feature added in v0.7.6.

    [v0.7.6] - 2022-08-12

    • Added critical-section-single-core feature which provides an implementation for the critical-section crate for single-core systems, based on disabling all interrupts. (#448)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump shared-bus from 0.2.4 to 0.2.5 in /Firmware-Rust

    build(deps): bump shared-bus from 0.2.4 to 0.2.5 in /Firmware-Rust

    Bumps shared-bus from 0.2.4 to 0.2.5.

    Release notes

    Sourced from shared-bus's releases.

    Version 0.2.5

    Changed

    • Upgraded to embedded-hal alpha support to version 9. Please pin your dependency on shared-bus to an exact version (using =0.#.#) when you make use of the eh-alpha feature flag (#38 by @​taks).

    Fixed

    • Fixed the new_xtensa!() macro not compiling (#40 by @​Gazedo).

    #38: Rahix/shared-bus#38 #40: Rahix/shared-bus#40

    Changelog

    Sourced from shared-bus's changelog.

    [0.2.5] - 2022-11-23

    Changed

    • Upgraded to embedded-hal alpha support to version 9. Please pin your dependency on shared-bus to an exact version (using =0.#.#) when you make use of the eh-alpha feature flag (#38).

    Fixed

    • Fixed the new_xtensa!() macro not compiling (#40).

    #38: Rahix/shared-bus#38 #40: Rahix/shared-bus#40

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Add a firmware for programming in IEC 61131-3

    Add a firmware for programming in IEC 61131-3 "Structured Text"

    This firmware allows writing programs for the Poppy Logic Controller in IEC 61131-3 languages like ST (Structured Text). This is made possible by the matiec compiler.

    Check the README in Firmware-IEC/ for more details.

    opened by Rahix 0
  • build(deps): bump rp-pico from 0.2.0 to 0.6.0 in /Firmware-IEC

    build(deps): bump rp-pico from 0.2.0 to 0.6.0 in /Firmware-IEC

    Bumps rp-pico from 0.2.0 to 0.6.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • build(deps): bump rp-pico from 0.2.0 to 0.6.0 in /Firmware-Rust

    build(deps): bump rp-pico from 0.2.0 to 0.6.0 in /Firmware-Rust

    Bumps rp-pico from 0.2.0 to 0.6.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
Simple POC for the Micriμm STM32F107 Evaluation Board

My motivation for this project was very simple: I wanted to blink some LEDs at "some rate(tm)" using entirely rust. I also did not want to use any of the embedded-std libs that were available, because I wanted to really get a feel for bit-banging the registers (including documenting where I grabbed the info from).

Sam Voss 6 Jul 19, 2022
RustSBI support on SiFive FU740 board; FU740 is a five-core heterogeneous processor with four SiFive U74 cores, and one SiFive S7 core

RustSBI 在 HiFive Unmatched 主板的支持软件 这个项目的目的是在SiFive HiFive Unmatched主板上支持RustSBI。 RustSBI是一个引导程序环境;主板上电时,RustSBI将会先行启动,而后,它将会找到一个可引导的操作系统,引导启动这个操作系统。 在

RustSBI 15 Dec 1, 2022
A tool that, like, screams at you when you say like

Dislike Do you, like,... dislike constantly saying "like" as much as I do? Then, like,... you've come the right place! This tool is like EXACTLY what

ElKowar 27 Jun 27, 2022
Devops kafka topics like files with kls, ktail, khead and kecho

Devops kafka topics like files with kls, ktail, khead and kecho

imotai 4 Dec 31, 2021
A cog-like tool, written in Rust.

Corg A cog-like tool, written in Rust. The primary difference between Cog and Corg is how Corg executes code blocks. Being written in Rust, it cannot

null 1 Jan 19, 2022
Quinine is a Rust library that implements atomic, lock-free, but write-once versions of containers like `Box` or `Arc`

Quinine is a Rust library that implements atomic, lock-free, but write-once versions of containers like `Box` or `Arc`

Paul Khuong 4 Feb 19, 2022
simple, C-like programming language

CUP: C(ompiler) U(nder) P(rogress) A badly named, in-progress programming language just to learn how these things work. Wait, doesn't everyone write a

Mustafa Quraish 287 Dec 28, 2022
Compiler from a lisp-like language to mlog

slimlog slimlog compiles a lisp-like language to mlog Architecture slimlog is divided into three distinct parts Parser Parses the source file Compiler

The Potato Chronicler 6 May 7, 2022
A Rust crate to expressively declare bitfield-like structs

proc-bitfield A Rust crate to expressively declare bitfield-like structs, automatically ensuring their correctness at compile time and declaring acces

null 36 Dec 3, 2022
Rust macro to use a match-like syntax as a elegant alternative to nesting if-else statement

cond Rust macro to use a match-like syntax as an elegant alternative to many if-else statements. I got the idea from empty Go switch statements. I tho

CheckM4te 3 Nov 23, 2023
xdotool-like for KDE Wayland

kdotool - a xdotool clone for KDE Wayland Introduction Wayland, for security concerns, removed most of the X11 APIs that xdotool uses to simulate user

Jin Liu 25 Dec 3, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Start and stop system for applications to save your budget on hourly billing VPS.

Start and stop system (STT) Start and stop system for applications to save your budget on hourly billing VPS. Service A service consists of start/stop

The GregTech Team 3 Jan 12, 2023
rPLC - PLC programming in Rust

rPLC - PLC programming for Linux in Rust rPLC project allows to write PLC programs for Linux systems in Rust using classical PLC programming approach.

EVA ICS 8 May 27, 2023
Command line utility for controlling LIFX smart lights

lifxc is a command line utility for controlling LIFX smart lights. Currently, communication over the LIFX LAN protocol is supported.

Harrison Rigg 1 Nov 17, 2021
The missing link to modern server controlling for TrackMania Forever.

xrd (XASeCo Replacing Daemon) xrd is a next-gen server controller for TrackMania Forever and Nations ESWC that is designed to be hassle-free and easil

Autumn Leaf 6 Mar 26, 2022
Utility for controlling laptop backlight brightness on Linux.

Licht Utility for chaning laptop backlight brightness, supporting different stepping modes. Usage licht USAGE: licht [OPTIONS] <SUBCOMMAND> OPT

null 2 Jul 3, 2022
Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64.

Divoom Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64 (and from how divoom's api/doc organizes, maybe more in th

Riff 16 Dec 23, 2022
Web user interface for controlling a CATS Radio node

CATS Radio Node This project contains a web user interface for controlling a CATS Radio device, consisting of a Raspberry Pi with a RF4463 hat. Goals

Matthias P. Braendli 4 Feb 25, 2024
Simple POC for the Micriμm STM32F107 Evaluation Board

My motivation for this project was very simple: I wanted to blink some LEDs at "some rate(tm)" using entirely rust. I also did not want to use any of the embedded-std libs that were available, because I wanted to really get a feel for bit-banging the registers (including documenting where I grabbed the info from).

Sam Voss 6 Jul 19, 2022