Ask Slashdot: What's The Best Open Source Hardware to Tinker With?
This question comes from an anonymous Slashdot reader who just got an Arduino and started tinkering with electronics:
I'm quite amazed at the quality of the hardware, software, and the available tutorials and (mostly free) literature. A very exciting and inexpensive way to get a basic understanding of electronics and the art of microcontroller programming.
Now that I'm infected with the idea of Open Source hardware, I'm wondering if the Slashdot community could suggest a few more things to get for a beginner in electronics with experience in programming and a basic understanding of machine learning methods. I was looking at the OpenBCI project [Open Brain Computer Interface], which seems like an interesting piece of hardware, but because of the steep price tag and the lack of reviews or blog posts on the internet, I decided to look for something else.
Leave your best answers in the comments. What's the best open source hardware to tinker with?
Now that I'm infected with the idea of Open Source hardware, I'm wondering if the Slashdot community could suggest a few more things to get for a beginner in electronics with experience in programming and a basic understanding of machine learning methods. I was looking at the OpenBCI project [Open Brain Computer Interface], which seems like an interesting piece of hardware, but because of the steep price tag and the lack of reviews or blog posts on the internet, I decided to look for something else.
Leave your best answers in the comments. What's the best open source hardware to tinker with?
Tinkering with hardware, really hard to say what that means. As a Hardware engineer for about 25 years most anyone who says tinker makes me think they want to flash an LED or some such thing.
Does tinker mean
1. Run software on
2. Modify / customise
3. Build from plans
4. something else
In general build from plans is not a good idea for expensive stuff because when it does not work it can be dead or just impossible to diagnose without some serious equipment (or at least a good scope.)
I'm just curious why the hardware needs to be open source for you to tinker with it. If you aren't planning on making contributions to the hardware design (which doesn't sound like "tinkering" to me), and if you aren't going to base products on it that you are going to sell or distribute, then I don't see why it needs to be open source.
So if we're not talking about open source hardware, I have enjoyed experimenting with the STM32 Nucleo boards. They're affordable ($11), and at one time were vastly more powerful than Arduino (I don't keep up with who is producing what so maybe that has changed). I developed online using the free mbed IDE ( https://os.mbed.com/accounts/l... ) and open source libraries, and would drag / drop the downloaded image onto the USB drive and it would flash it and start running my software.
Better known as 318230.
my favorite is KiwiSDR, it is a SDR that plugs on to a Beaglebone Green and the Beaglebone has Debian on it, and i am gradually tweaking the KiwiSDR software to my personal liking, nothing too drastic, mostly user interface things https://imgur.com/a/d6dJ4
Politics is Treachery, Religion is Brainwashing
Pi for absolute beginners. Arduino can get you a long ways very quickly. Beaglebone is more advanced and powerful if you want to use Linux. That being said, there is no reason not to use demo boards from microcontroller makers such as Microchip as a starting point since the demo board hardware files are freely available to develop with and their development systems are cheap and easy to learn.
I like pencil and paper. Sometimes a pen.
Hammers, nails, screwdrivers, and such work well too.
great as far as it goes
but the video binary blob is closed source
so are other parts.
Anyone who wants to tinker with hardware should buy a copy of Horowitz and Hill’s “The Art of Electronics”, now in its third edition.
https://www.amazon.com/Art-Ele...
It’s practical, understandable and will teach you how to build good, real world analog and digital circuits. Accept no substitutes!
great as far as it goes
but the video binary blob is closed source
so are other parts.
So there is closed firmware for the wifi and potentially video chips, yes. There is an open source video driver now, that works fairly well.
So if you take the Fedora/kernel view of things, totally open source friendly. If you take the libreboot/FSF/Purism Librem, then yeah, not what you want.
STmicro boards are more powerful than UNOs, have 10x the IO of RPis and cost 1/2 as much as either (US$14 for an 80MHz L4 core with about 20 IOs, including 4 UARTS, 3 SPI, 3 I2C, and a dozen GPIO).
Their CubeMX stack is easier to start with than Silicon Labs or NXP IDEs, and exports projects for IAR, Keil and GNU ARM-AEBI makefile!
I would recommend mbed but there are too many shortcomings.
STMicro = for when you grow out of RPi/Arduino.
A bunch of GPIO, without a way to run them in realtime. Or is there a subprocessor or something I can use for super accurate timing?
Your ad here. Ask me how!
Raspberry Pi and Arduino are great platforms for learning. But if you want a properly integrated professional system with limitless potential out of the box, LattePanda wins hands-down.
Although it is about 5x the price of a Raspberry Pi, it quite easily operates as a fully-functional Win10 installation with C#, Javascript, Ruby, Visual Studio, NodeJS, Java, Processing etc - powered by USB.
Specs:
Intel Cherry Trail Z8350 Quad Core Processor
Base Frequency: 1.44GHz (1.92GHz Burst Frequency)
Operating System: Windows 10 Home Edition (Unactivated)
RAM: 4GB DDR3L
Storage Capacity: 64GB
GPU: Intel HD Graphics, 12 EUs @200-500Mhz, single-channel memory
USB 3.0 x 1, USB 2.0 x 2
Wi-Fi 802.11n 2.4G
Bluetooth 4.0
Integrated Arduino Co-processor: ATmega32u4 (Arduino Leonardo)
Video output: HDMI and MIPI-DSI
Onboard touch panel overlay connector
Supports 100Mbps Ethernet
Intel Processor GPIO x 6
ATmega Processor GPIO x 20
Gravity Interface Connectors x 6
Voltage: 5V@2A
The real secret is in how the 2 chips operate - with the ability to turn either chip off or on (wake or sleep), from the other chip. The potential of this board is basically limitless.
There is very little "pure" open source hardware. Patents and software copyrights (and proprietary software bits) make this difficult.
If you want to tinker, a good option is the BBC Microbit (http://microbit.org/). It's a simple ARM processor with inputs, Bluetooth, sensors (acceleration, compass, etc.), LED display, light sensor and robust programming environments (GUI, Python, C++, etc.)
The Bluetooth give lots of interesting options for communicating with other nearby Microbits
I don't read your sig. Why are you reading mine?
I have four or five of these... got some for lots of people. I think there might be some firmware blobs required, but it's open source enough for me. To play with, it needs to be cheap enough to break without heartbreak, and it needs a community, and pi has all that, and third party hardware packages also. It runs plain vanilla debian, and so dead easy to work with, build your projects in python. Latest generation gets you wifi & bluetooth built in, so a lot of options for control and i/o.
A bunch of GPIO, without a way to run them in realtime. Or is there a subprocessor or something I can use for super accurate timing?
Yeah, an Arduino Pro Mini/Micro. Because when you want super accurate timing, you want a coprocessor. Sadly, there's nothing like that actually onboard the Pi's SoC. Happily, an Arduino costs bugger all, and you can program it from the Pi. (Yes, how annoying that they didn't bother to implement DTR in the serial driver. Yes, you could add it in the serial driver on the GPIO pin of your choice, if you cared enough.)
The other benefit is that it makes it a lot less likely that you will fry your Pi with GPIO.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
If you need hard realtime then you don't use a miniature PC, it's as simple as that.
Using FPGA and memristors in any meaningful capacity is well within the "Has a degree in EE" territory, hardly an area where you'd use the word "tinker".
I'd say that the Lattice ICE HX FPGA is worth using to learn about verilog. And after that maybe some fpga based ham radio projects like maybe Lime
Nullius in verba
Print your board old-style at home. some Z80? Really easy to do with a laser printer and ferric chloride. http://www.z80.info/z80_mp.htm Breadboard project: http://www.vaxman.de/projects/... Also check Arduino Severino: https://www.arduino.cc/en/uplo...
I made a stepper motor controller about 30 years ago with just TTL gates. Today I'd use a PIC microcontroller, but for open source, you want to work with the bare wires. Get a 'solderless breadboard' an assortment of chips, some LEDs and a big piece of #20 wire to cut to short lengths and strip the ends on. You need a 5 volt supply, but you can salvage one from a cellphone wall-wart charger. That part is much easier than it was 30 years ago.
You can get a bunch of TTL gates on eBay, I think.
A bunch of GPIO, without a way to run them in realtime. Or is there a subprocessor or something I can use for super accurate timing?
How real time do you want?
You've got a quad core processor, and so once you set your one GPIO thread to the highest priority level, you get surprisingly good performance on a stock kernel especially if you keep the load average down.
If you switch over to the RT branch of the kernel, you'll get RT performance good enough for almost everything. Multi-core is helpful since you can tell the kernel to not schedule interrupts on the core running your realtime process.
There's probably other options to go even better.
Obviously though you'll never beat a scalar, in-order processor with direct clocking for low jitter and predictable timings.
SJW n. One who posts facts.
Just in case your pocket is not filled with $$$, there is a PDF of the 2nd edition of the book available online
http://www.csun.edu/~acm31201/Old%20Class%20Work/ECE%20340/The%20Art%20of%20Electronics%20-%20P%5B1%5D.%20Horowitz,%20W.%20Hill.pdf
I do recommend folks with money to purchase the 3rd edition, tho !
Thanks to open-source hardware, there has never been so much choice and so much opportunity to learn.
My recommendations for today's tinkerer are:
- Raspberry Pi (not fully open source but close enough) and the wiring Pi library http://wiringpi.com/
- The esp8266 boards: Super cheap Arduino compatible WIFI boards.
- Any SAMD21 ARM cortex M0 board like the Arduino Zero, Sparkfun SAMD21 breakout, or the Adafruit Feather M0.
- STM32 "blue pill" boards. Super cheap on ebay and powerfull.
In theory, you don't need hardware to be open source just to "tinker" with it. But in reality, if you want to truly learn stuff, open source hardware is great. You can take a look at the schematics, learn piece by piece from others: power supply circuits, reset, oscillators, micro-controllers, ...
For example take a look at the Sparkfun SAMD21 breakout schematics here: https://cdn.sparkfun.com/datas...
You'll see the leds, the usb, the battery power circuit, the micro-controller and headers, all nicely broken down in separate blocks that you can learn from and re-use.
After a while, you will be able to make your own boards. YES! ** That the best part of it all! **
Myself I started with a simple Arduino UNO and a couple of years later, I'm about to launch my own IoT Arduino compatible platform, fully designed and implemented in the garage of our house: http://omzlo.com/
Lattice has(had?) a $20 fpga dev board with several thousand gates and free-as-in-beer software to run vhdl/verilog projects, open CPUs, or hybrids of the two without much effort. Someone with some basic programming and logic experience could have an FPGA project running over a weekend following easy tutorials.
Getting efficient speeds and gate usage takes quite a lot of experience, but getting started and tinkering does not.
Agreed. Not to toot my own horn, but I once released a pretty groundbreaking project (one of the first Bitcoin FPGA miners) after 3 weeks of owning my first FPGA board. I did have programming and electronics experience, but not exactly professional in either. I mostly used tutorials from fpga4fun to get started.
Escher was the first MC and Giger invented the HR department.
All of that is largely irrelevant to the users of devices.
If I understand correctly you got hooked on Arduino because of it's user friendliness and available documentation. In that regard it's not Open Source you're looking for, but rather very actively used platforms with a large community support.
I say that as a big caveat since ever other person is pointing out that the Raspberry Pi isn't Open Source, but I'm inclined to believe you don't care too much about the fact that the video driver for it is a binary blob right?
The platforms should be chosen with an end goal in mind.
Microcontrollers (especially 8bit) > Arduino
Embedded PCs > Raspberry Pi / Beaglebone.
ARM > STM32 nucleo or something similar, but the communities are no where near as large as the above two.
FPGA > Anyone's guess. The communities here are quite fragmented.
Neither fits a concrete mixer in the trunk...pieces of crap!
It really depends on what you want to accomplish with it. I tend to favor the Parallax Propeller chip as it's inexpensive (~$10) and has eight cores which are great for independent/parallel processes as I see in hobby robotics, and their is an open access repository of functioning code "objects" that offer a surprising amount of advanced functionality. But at the end of the day you will have to code and compile everything in one of a few dedicated languages. On the other end of the spectrum, If I want more actual software-side power up to and including the ability to run a true OS like Linux, Rasbery PI seems to be everyone's Go-To these days, great for embedded systems and the like.
Common Sense isn't as Common as people think...
Grab an Arduino Uno. They are the most popular micro-controller board with the largest community around them. There are dozens of knock off boards, and many books to choose from. That's your best start, then branch out from there.
At this point, I think Arduino has become the most expandable, simplest, and most open HW platform for tinkering, out there. Compared to Raspberry Pi, it has more shields, it allows for better access to the hardware, there is NO need for proprietary drivers (this plagues Raspberry Pi), it has FAR more I/O pins - which is probably why there are so many more shields for it.
Arduino allows for hard-realtime control, should you need it. Among other things, this is why there are various 3D printer, laser-cutter, and CNC machine control boards made based on Arduino.
Finally, the C++ libraries for Arduino are very numerous and allow you to do all kinds of sexy tricks. For instance, simple graphics via CRT control (be it RGB or composite). Or my other favorite set of projects: MIDI controllers and hardware synths based on Arduino.
"The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
You could get an old Thinkpad T400 or X200, flash Libreboot on it, then install Trisquel. This is certified by the FSF (fsf.org) as being an open source piece of hardware. Oh, I think you'd have to change out the Wi-Fi card as well, as open source drivers don't work with the stock card. Have fun!
I'm still trying to figure that out. For one GPIO pin, I'm fine with milli-second timing (so regular Linux should be fine). For others, it's faster, but I'm still waiting to find out what precision is required. I know I have latency issues as well, but that's on me as a developer.
Does developing software for a RTOS require special SDKs/skills/patterns? Can you still do something like run WiFi/BlueTooth in a RTOS, or does it require so much rewriting that there are no drivers? (Obviously, the WiFi/BlueTooth part would not be predictable itself, because wireless and other devices.
Your ad here. Ask me how!
But please use the more modern HC/HCT/etc. CMOS versions, and not the old TTL stuff. Your family/friends/neighbors will thank you when they hear less screaming from you tearing less of your hair out.
Disclaimer, I've not done much RT work.
If you get a Linux kernel with PREEMPT_RT you'll hey deterministic bounds on latency and jitter, which is the core of real-time performance. Since its a stock kennel, you'll get all the goodies like WiFi, Bluetooth and so on (as long as you have the firmware).
In terms of special skills... Basically you'll need to write your real time code in C, C++, or some other language where you can write useful code without heap allocation. You'll also need to know a bit of Unix (posix) programming for things like seeing the priority of the process and for mutexes which inherit priorities (necessary for real time stuff).
You're right that I/O is predictable, and hence not real time. The solution is to have that happen in a different thread or process and send messages from the RT one. The RT one needs to have a strategy for discarding data or running without in case the IO thread waits for too long.
I think sockets are real-time so you can separate the real time code and the management stuff by sticking a socket between them.
SJW n. One who posts facts.
Plenty of people have mentioned the Raspberry Pi and Arduino...plenty of options in the $25 - $100 range.
This poster agrees with them, but what about those that do NOT want to build hardware, they just want to explore Linux and software....this post is for you. Read on, and note, while the starting prices of their hardware starts out low, by the time you max it out with memory, disk drives, power supplies, better Graphics cards, multiple other stuff, the price will rise. In other words, do not expect this hardware to be the cheapest, just know that it will work with an distro of Linux out of the box, period! And to be honest, they are often not much more when configured similar to what you have in the big box store...just let them know which Distro of Linux you want on it, and they will configure it for you. You spend your time learning Linux, not messing with hardware and device drivers.
ZaReason is your Answer!
ZaReason has been active in the open source community since their founding days and all of their hardware is built with open source in mind. No UEFI BS chips on any of their hardware. No need to purchase a Windows OS in order to wipe Windows and install a Linux Distro.
UEFI, Unified Extensible Firmware Interface was forced on Vendors by Microsoft a long time ago. Originally they use to say it would make your computer more secure, however when you consider that the exploits it was protecting your computer against required someone to have the keys to your home, be inside, with your Linux password in order to use those exploits, well UEFI is a waste of time and is just more Vendor Lock-In by Microsoft.
First encountered the ZaReason owners at SCaLE in Los Angeles / Pasadena, California, when it was held at the hotels near LAX, now they hold it in Pasadena. If you are into Open source and have not been to SCaLE you should check it out. The things you can learn about, often from the creator is great, especially for the price. Recommend you book a room a head and stay in the hotel where the conference is hosted...but I digress.
Most of ZaReason's hardware starts in the $400 - $600 dollar range, but will quickly go up when you start adding their current maximum memory (32GB RAM) and if you add 6TB hard drives, etc.... When Windows refused to allow their Operating System to address above 16GB of RAM memory, ZaReason was putting laptops together with that amount of RAM and it was all usable. One of their laptop models had the largest screen on the market at the time, 16.3 (Bright, anti-glare 17.3" LED backlit display @ 1920x1080 pixels) versus 15" from other manufacturers.
Want to create a TV wall on a 65" or larger TV in your house, Linux will let you do it, there is software that has to be configured / built in with the kernel that will let you control the processors independently of each other, say let your 2 cores control one screen, another core control another, two other cores control yet another screen, etc... and divide your 65" TV into a TV Wall of say 3 X 3 or 4 X 4 monitors. Let the internet stream music on one screen, news on a couple of others, weather on another, you can program on four of the others and show social media on yet other screens of your TV Wall....I plan to do this in the next couple of years...software was available back in 2010 or before.
Boy will I cut the cord....can't wait and will never look back...if only I had Google Fiber in my area!
Full disclosure, I do not work at the company, but have purchased two laptops, a desktop/ser