- 1 Disclaimer
- 2 First, a story
- 3 Then, a spec sheet
- 4 Raspberry Pi
- 5 BeagleBoard/BeagleBone
- 6 Arduino with AVR or ARM
- 7 XMOS xCORE boards
- 8 Asides
- 9 Conclusion and todo list
- 10 References
This page is in group Technology (plus My XMOS pages) and is a blog note where I will try to lay out the reasons why I have ended up with some single-board microcontroller (not computers) and not some others.
Standard disclaimer, this is just for fun. No money, gifts, ads etc. Also, my non-association with any of the manufacturers and vendors mentioned here.
This note is not a comparison list of single-board computers and single-board microcontrollers. You will find that in Wikipedia’s Comparison of single-board computers and Comparison of single-board microcontrollers. I have selected only a few boards, based on my own experience, needs and bias I guess. How much RAM, FLASH, peripherals, power consumption etc. are not listed. As long as I think the data sheet is adequate for me, then I can live with that. Upgrading seems simple these days.
First, a story
This evening my wife and I walked down to town to see how the people arranging an event were doing. On top of a big container a young family man (at my children’s age) was sitting, rigging up a public slide show. I knew him (he could have been any of those engineers I used to work with before I retired earlier this year from a career as a coder of embedded safety-critical systems over a period of 40 years), and I asked him how was he doing? Proudly he showed me his tiny Raspberry Pi and shouted that he was going to run the slide show on the wall of the old concrete harbour building with the Rpi. So, are you running Python on it, I asked. – No, he said, I just googled “slide show on Raspberry Pi” and ended up with an image of the operating system, a variant of Debian, on an SD card, that booted and started an application that loaded my pictures from a memory stick. After a little config’ing it worked! I am so happy, on top of this container, not to have to deal with a PC and a long, extended VGA cable, any need of a mouse and a keyboard – just to run a slide projector! Now the Rpi will just sit inside this nice cabinet I just made for the projector! Now it may even rain! (He used Raspberry Slideshow).
Then, a spec sheet
- I need platforms to do real projects on (like my now up and running aquarium controller, see below)
- I want to code, especially embedded concurrent programs. Since the love of my career was programming in occam on transputers (by now long defunct INMOS), then my recent home projects have been programed in XC on XCORE (a kind of) multi-core processors (by now very much alive XMOS). The silicon has built-in process/core scheduler
- I also would like a debugging HW built in, and I need the development system to be free
- I want a live forum to discuss matters
- I want to do and learn and it shall be start points of my technical blogging
- Therefore I am not after single-board computers with a full-fledged operating system (like Linux), but single-board boards or single-board microcontroller
- But I do wish them to have “enough” of FLASH and RAM
- I want to learn about at least one such board where I might, perhaps see if I could write a CSP-based scheduler (again)
- Therefore I am perhaps aiming for two different (families) of single-board boards. I already have the XMOS boards (below), but which board should be my add-on single-board board?
- Plus, I have Macs with OS X or macOS at home. However, I have installed Windows 10 with Boot Camp by Parallels Desktop on iMac 4K retina for one of them (here). Windows is nice, but I had hoped to leave it behind at work. I won’t have to run the IAR Embedded Workbench from IAR Systems any more
- It’s possible to prosper in this world at home now, with very little investment and void of paid licences. I am glad I retired from professional life into “hobby life” now and not twenty years ago
Dimensions (PCB): 65 mm × 30 mm (Raspberry Pi Zero).
The Rpi solved all the above mentioned guy’s needs! As much as I would love to have time and experiment with the Plan 9 operating system from Bell Labs with its beautiful Limbo language (a forerunner to Go, also with channels connecting concurrent tasks/processes/goroutines), that’s not what I plan to do.
But running plain Go on it, that is tempting! Or Python! Of course, but I could do that right here, on my Mac. As most other things like just running something.
The only reason I see at the moment to buy a Rpi with an ARM on board is just to own one of them to hold, feel and watch. “Everything” about them is nice.
The Raspberry Pi needs some full-fledged operating system, and many have been ported for it. I think that most people run Linux or Debian on them. This is great, but for me there are more “naked” alternatives.
Since I seem to have painted myself into cluster corner, here’s an interseting paper: Building a Hand-held Cluster for £120 by Kevin CHALMERS, School of Computing, Edinburgh Napier University, UK. It was a fringe presentation at CPA 2017, here.
Raspberry Pi in XMOS Amazon Alexa Voice Service development kit
Update Oct2017: The XMOS Amazon Alexa Voice Service development kit (VocalFusion 4-Mic Kit for Amazon AVS) needs a Raspberry Pi! But since I’m in here not to make sound products, and since I basically want to work with the xCORE logical multi-core processor, and do want to code in XC (the used XVF-3000 VocalFusion does not), throwing myself at this to learn something new would be a major distraction. But I assume it’s very nice indeed for AVS developers!
See it listed in XMOS series of processors part xCORE-VOICE family.
[*] Miller (at GitHub millerresearch, here) is also working on the myStorm project. This is a single-board STM32L433 (ARM) with an ICE40 (FPGA) and “with lots of connectivity (Arduino headers, Raspberry Pi header, Digilent Pmod interface headers, USB serial, microSD slot) and a useful 512KB 10ns SRAM chip”, (excerpt from a private mail with him). It’s here. And IceBot is the programming firmware for the FPGA part. Miller also says in the mail that “An FPGA is the ultimate parallel engine”.
Dimensions (PCB): 86.44 mm x 54.54 mm (Beaglebone).
This is a very nice Linux type single-board computer that a programmer typically might run Python scripts on to make automatic testing of some hardware. As much as I’d like to have time for something with one of them, its mostly Linux architecture makes it not so interesting for me at the moment. I saw people at work arriving with them from courses. But after that it was, even there, difficult to find uses for personal single-board computers.
Arduino with AVR or ARM
Dimensions (PCB): 68 mm x 53 mm (Arduino Zero).
I have worked (and troubled) with Atmel AVR ATmega (and ATXmega) so many years at work that I don’t want to do it now.
AVR Studio or the newer Atmel Studio is, for the same reason, not anything I would want to work with.
However, the Arduino IDE interests me a lot! Simply because it seems to be embraced by so many. And it runs on macOS (since it’s written in Java. But it’s based on Processing, like Wiring and Fritzing, not Eclipse like the XMOS xTIMEcomposer).
But we also worked with an ARM at work, and that intrigued me. Therefore, since the Arduino also comes as boards based on ARM Cortex-M0+, ARM Cortex-M3 (or even Intel Quark) then I’d say that the Arduino Zero is very interesting. It runs on a ATSAMD21 Cortex M0 that even has a proper debug interface, which is expected in 2017. However, that board is not even on the Wikipedia Arduino page! But it certainly is on Arduino’s Genuino Zero page here. What happened between Arduino Zero (shown at Adafruit, here) and Genuino Zero (shown at Arduino, here) I don’t know.
Adafruit Feather M0 Basic Proto with ARM
Dimensions (PCB): 51 mm x 23 mm (Adafruit Feather). Including extra space to solder on.
The Adafruit Feather M0 Basic Proto board (here) contains the same processor as the Arduino Zero ARM, the ATSAMD21 Cortex-M0+ core from Atmel. My interest for any ARM, really, is shown in the fact that I actually bought the XMOS XCORE-XA once simply because it had both XCORE and ARM cores (below). But this is a full-fledged ARM. I like what I see.
At first I will use it simply to run and learn the Arduino IDE, and upgrade the Adafruit ATWINC1500 WiFi Breakout board (here), code and params. Then I can take that WiFi board to my XCORE boards.
Adafruit METRO M0 Express with ARM for CircuitPython
This is a nice board that contains an ARM that runs a version of Python that Adafruit calls CircuitPython (here). I think they designed CircuitPython. The board is here. I am not going for this board, but since I am interested in concurrency I should probably look after that. Having a glimpse of the docs I can’t see it mentioned. However, there is the PyCSP (I have written some on it here) that I would certainly wonder if it might be used with CircuitPython. My gut feeling would be no(?)
XMOS xCORE boards
My startKIT based aquarium controller
The aquarium itself (also with user manual) is described in My aquarium notes. Plus all my blogs about the technicalities here. They basically all “start” with my aquarium project. However, since the aquarium box now (Oct2018) is more or less finished (with a radio board plugged just behind the display, described My aquarium’s data radioed through the shelf) I presently work with an xCORE-200 eXplorerKIT (that I also have made a plastic box for) that receives data from the aquarium box and will later further those over a web server.
Observe that I have developed a USB 5V power watchdog for this unit (or any other USB powered unit). See My USB watchdog (and relay output) box.
Dimensions (PCB): 94 mm x 50 mm (startKIT).
The processor on board has one tile with 8 logical cores available for the user. It costs nothing.
As you see, I already have used quite some hours to code, design the HW and test this controller. It has looked after my small aquarium exemplary for three months when I write this. While I did this I have also done these two relevant notes: My XMOS notes and XC is C plus x. I have started with a separate blog note about the aquarium, algorithms, code and all, see My aquarium notes.
XMOS has discontinued the board (and the processor). See here.
I hope to add WiFi to it later on. See below.
Dimensions (PCB): 120 mm x 60 mm (xCORE-XA).
The processor on board has one tile with 7 logical cores and one ARM core available for the user.
I bought this rather nice board from XMOS because the combined-with-ARM architecture triggered me. But then, XMOS has discontinued the board (and the processor), read about it here. The xTIMEcomposer IDE also compiles, simulates and debugs ARM cores, which is very nice.
I did use it. See My processor to analogue audio equaliser notes
It’s at https://www.xmos.ai/xcore-200/.
Dimensions (PCB): 105 mm x 80 mm (xCORE-200 eXplorerKIT). See photo below.
(The short side is extended to 147 mm with the XTAG3 board connected).
The processor on board has two tiles with 8 logical cores each available for the user. Plus lots of sensors and I/O. It needs an XTAG3 (XTAG-3) adaptor for USB debugging, so debug support isn’t really built in. But the XTAG3 is ok.
I like this board. This is my present platform for XMOS. I have blogged about it My xCORE-200 eXplorerKIT notes (WiFi).
xcore.ai Explorer Board
It’s at https://www.xmos.ai/xcore-ai/.
- “The xcore.ai Explorer Board which will be available by August 2020” (here, from this competition:)
- I have puzzled the picture (below, lowest) from the XMOS puzzle competition at LinkedIn (here). (I did not discover it before too late, the deadline was on 1May2020. But it was fun to puzzle – even if I wasn’t able to fit the pieces 100% (not sure if it’s possible, either..) (maybe there are pieces from two type of boards, one with a smaller processor than the other..?)
- The approximate size should be (disclaimer!) 100 mm * 87 mm (by comparing with the xCORE-200 explorer kit, the dotted rectangles should have the same length)
- I will not speculate about the content. As long as I get a processor, XC and xTIMEcomposer I’m fine (note 200:here)
xCORE microphone array
Thanks to a student paper! These were just too interesting not to list them up here. My own words, of course:
Boards with Apache Mynewt OS
See https://mynewt.apache.org. Lost of functionality built in, running on a long list of boards.
Observe the WASP-OS, which runs MicroPython: https://wasp-os.readthedocs.io/en/latest/index.html. At the time of writing (2Sep2021) it runs on Pine64 PineTime, The wasp-os simulator, Colmi P8 and Senbono K9 (whatever these are). But it looks like it has a a lot of functionality. May it be installed on Arduino ARM boards?
Conclusion and todo list
2Sep2021: Outdated, but interesting when looking back at it:
This chapter (as mentioned below) is referred to in My Piggyback WiFi1500 sliceCARD, My WiFi101 library port and Me relying on relaying BLE?. In other words, this is my TODO list for fall 2017 and winter to spring of 2018.
- Done. Buy the Adafruit Feather M0 Basic Proto with ARM. Use Arduino IDE
- Done. Buy the Adafruit ATWINC1500 WiFi Breakout board, and use (1) to configure and upgrade it (if needed). Use Adafruit “learn” pages
- Started 12Dec2017: Get the [lib_webserver] (search for it inMy xCORE-200 eXplorerKIT notes (WiFi) ) up and running on the xCORE-200 eXplorerKIT. This is 100% in the XMOS world. I would need this if I used the Ethernet port. And I could perhaps also use this plus parts of WiFi101 to connect the Adafruit ATWINC1500 WiFi Breakout (2999)
- 17dec2017: I have turned into a major problem. This turned out not to be so simple if I’m going to use XMOS SW. It doesn’t seem to exist for the xCORE-200 eXplorerKIT which uses RGMII (not MII) with its PHY. See XCore: “WARNING: .. There could be API incompatibilities” BUILDING AN00122_using_webserver_library
- I will still try to do this later on, as the newest XMOS web server is more general, like having a file system for HTML files with dynamic data. And I have discovered that [lib_ethernet] covers both MII and RGMII (as used by AN00122). Search for lib_ethernet at My xCORE-200 eXplorerKIT notes (WiFi)
- Starting Christmas 2017: Dropped Bluetooth Low Energy (BLE). Going for a simpler(?) packet radio solution, see My aquarium’s data radioed through the shelf. Jan2018: I will try to port the RadioHead radio library into the xTIMEcomposer. This is going to be very interesting. I guess I have to deal with the comcurrency part since I need my aquarium code to also run, the low level pin control and using the XMOS SPI library. I will use the startKIT because I need that to run first.
- Merge Atmel, Adafruit and XMOS code (drivers) to make a web server in XC with (2) on the xCORE-200 eXplorerKIT. Use XMOS xTIMEcomposer IDE. See above point 3, sub 2.
- See if that web server may be moved over to my startKIT-based aquarium controller, code space allowed. Use XMOS xTIMEcomposer IDE
- Then, if 5 is difficult or not possible, try to see if I can use Bluetooth Low Energy (BLE) from the startKIT to a new box with an xCORE-200 eXplorerKIT board. I have described this in yet another new blog note: Me relying on relaying BLE?
- Aside: In the longer run I’d want to have a look at the Netatmo architecture to see if I could export data from my aquarium to Netatmo’s servers via Netatmo connect. I have a Netatmo Weather Station. I have registered myself on the Netatmo Forum. I think it’s the Weather Station Web Application I would need to look further into
- 30Aug2018: I dropped both WiFi and BLE. However, I have now ported (or rather rewritten) the RFM69 library and it is in fact running! Have a look at My aquarium’s data radioed through the shelf. It is even running inside my startKIT-based aquarium controller box, together with the aquarium sw. After learning about what
[[combinable]]can do with number of
chanends needed. This was the background for a small lecture, see CPA 2018 fringe. I am now working on a radio client runing in an xCore- 200 eXplorerKIT
As an engineer I am concerned that I should end up with a “product”. However, as a retired engineer I will try to enjoy the road even more than I did at work. Therefore I am not after the shortest path, but the most interesting part.
Wikipedia: Arduino, BeagleBoard/BeagleBone, Go/Golang programming language, inmos, Limbo programming language, occam programming language, Plan 9 operating system from Bell Labs, Pmod Interface, Raspberry Pi, Single-board computer, Single-board microcontroller, transputer type microprocessor, xmos