006 2023-01-03
Happy New Year! If 2018 was the Year of the Linux Desktop, then like Dave I'm also declaring 2023 the Year of the Microcontroller.
Microcontroller programming
I've been programming microcontrollers for quite a few years, but it's usually in C++ with the Arduino IDE or Lua with the NodeMCU. My use-case has always been super simple projects, such as controlling some NeoPixel LEDs, managing small servos, and reading sensor data. I'm thankful for the libraries provided by those ecosystems, but the entire process always left me wanting more control of the devices.
Two years ago, I dipped my toes in Rust to create an SRAM driver, but the amount of high-level abstractions and boilerplate just to do something simple ultimately drove me towards smaller and simpler systems.
RISC-V and Forth
Around the same time, in early 2021, I re-discovered Forth and started learning RISC-V Assembly programming in order to contribute to derzforth. I fixed a few issues and discovered a few others, but life got the best of me and I found myself unable to continue working on that project (which was also incomplete and not fully functional).
Eventually towards the end of 2021 I began writing my own RISC-V Forth called FiveForths. I didn't make much progress and let it stall for an entire year until I decided to try completing FiveForths.
I'm happy to report it's almost done! So now, I'm preparing for the next projects where I'll port it to other devices and actually use it for the simple use-cases I mentioned above.
Microcontroller projects
Like Dave, I have a few unfinished (and unstarted) projects, each using one of the microcontrollers shown above. Here's the list in order from top-left to bottom-left.
- Pine64 Ox64: My newest RISC-V microcontroller, which has 3 entirely different CPUs and is not very well documented (yet). My plan for this is to get my existing Forth running on there and then use it to control the other CPUs and peripherals, and eventually use it to read sensors, control LEDs, etc.
- MAiX BiT: From Seeed Studio, it has a 64-bit RISC-V CPU and can apparently run Linux, but I want to use its AI capabilities to take and identify pictures of the sky using the included camera. I have no idea how I'll do any of that, so that might stay boxed until 2024.
- Longan Nano: My main workhorse and first RISC-V microcontroller. I'm currently testing FiveForths on there and so far it's working perfectly. I only plan on using this for FiveForths (the language) development, not for actually coding Forth projects.
- Wio Lite: This is another 32-bit RISC-V microcontroller but it also has an onboard ESP8266. I haven't touched this yet but it's the same CPU as the Longan Nano, so I plan to get FiveForths running on there and see if I can do things over WiFi.
In the right column, I have non RISC-V devices:
- RPi Pico: I've already used this in a handful of home projects, reading sensors and doing other random stuff. I also have the RP2040 Assembly Language Programming book by Stephen Smith but I think I much prefer RISC-V Assembly over ARM's thumbv8 Assembly.. so I might just stick to programming it with the Arduino IDE, at least until Dave ports his Forth to it (no pressure).
- IceZero FPGA: Of course the list wouldn't be complete without an FPGA. I actually have a few different Lattice FPGAs, but this one fits perfectly on an RPi or RPi Zero. I'd love to get my RISC-V Forth running on a RISC-V soft CPU written for that FPGA. That's one of my later goals for 2023.
- RPi dual RS485 HAT: I made a HAT, in July 2022! I didn't actually publish any information about it on Hackaday.io as I do with most of my open source projects, but I will once I've updated it and tested
v.02
. Thev.01
(pictured above) doesn't use the correct pins so it's impossible to use UART over the RS485 unless they're bit-banged.. which is pointless. I've already made most of the fixes but I haven't found the time to perform the final verifications and order a test batch. That's high on my list for 2023 and I'll make sure to publish all the details in a new Hackaday project shortly.
Moving forward
So that's my plan for 2023. To wrap-up, I have a few other unpublished projects, and some minor changes to this website and my company's website in the works.
Stay tuned for updates.
https://blog.a1w.ca/p/2023-01-03-year-of-the-microcontroller
2023-01-03 14:06:16 UTC