Unfortunately I don't see how this is a significant improvement otherwise for industrial uses, where the biggest barrier for custom components is certifications (FCC, UL, CE, ATEX, etc).
Unfortunately I don't see how this is a significant improvement otherwise for industrial uses, where the biggest barrier for custom components is certifications (FCC, UL, CE, ATEX, etc).
But I've also just spent the past year programming an automated mobile restaurant. We use a traditional PLC for everything safety or time-sensitive, but everything else is JavaScript.
We're planning to use even more JS on the next-gen system. Details are in my profile if you want to help, or if you want to convince me otherwise.
If industrial equipment malfunctions, people can be killed or horribly maimed. Industrial equipment needs to do exactly what it was designed to do 24/7 for years or decades in horrible (EMI, temperature, etc) environments.
I recently had a chance to wander around one of the bigger EMS factories in the Bay Area, rubbernecking at everybody else's products in various stages of assembly. It's safe to say not many naysaying HN'ers have done that recently, or they would be saying something very different.
One of the RasPi-based devices I saw being assembled was actually some kind of medical device that will presumably have to be FDA-certified. It was going into a very nice enclosure, with top-grade plastics and other materials, and they were building a (literal) ton of them. In principle I'm sure that can be done successfully, but I have to wonder if it'll really save the company that much time or money.
In what way does C vs. python or javascript have any impact on this? If anything, C has way more ability to shoot yourself in the foot than python or javascript. Hell, what about a non memory-managed language like rust?
Like somebody else says, this feels more like a cultural issue than an actual technical issue.
To the larger point of coding for these kinds of applications, keep in mind that there are entire classes of bugs that are common in traditional microcontroller languages like C which literally do not exist in Python or Javascript.
As far as I've seen as an outsider to the embedded world the main barriers to adoption of higher level languages have not been based upon concerns of reliability, but instead memory usage and timing constraints, the former of which is less and less of a real problem outside of extremely cost constrained applications.
To address the sibling comment, we don't use much TypeScript yet, but I'm open to it. I'm also looking at ReasonML because I'm cautious about half-measures when it comes to type safety.
Much of our complexity stems from race conditions between PLC and the JS server, so the next system is likely to use node.js on linux boards instead of a PLC. We currently have a supervisory safety system with all safety-rated hardware and controls, and will almost certainly continue using this approach as we replace the PLC.
https://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-k...
> Getting to the “Hello World” of microcontroller projects, the blinking LED, on Arduino costs $32 compared to the $119 for a Basic Stamp. This is perhaps a little unfair because the Basic Stamp board contains a full bread-boarding space. A similar setup for Arduino would cost about $60, still a 2x savings (and can made cheaper if you want).
[snip]
> The standard Atmel AVR ATmega8 chip used on the Arduino board can be obtained for less than $4. The Basic Stamp must be obtained from Parallax and costs $50.
It just seems insane to me to use a language with such bizarre semantics.
Heck, the ESP32 runs circles around the Amstrad that I used to play Defender of the Crown on.
I believe this is the reason 3D printers and other CNC machines still use a seperate dedicated controller such as original arduino rather than just using the GPIO on a newer arm board running a full stack.
If it's two totally independent cores with totally independent sets of devices, how do you manage the pinmux? Are there independent pinmuxes?
And finally is the M4 core capable of detecting single-faults in the cache, memory, flash registers, and instruction pipeline? Such as might be caused by cosmic rays?
These are some things I would look for if I was specifying a processor pair for use in a safety-critical system.
As far as I can see they have mostly separate memory busses, and a lot of the peripherals can only be accessed directly by either the M7 or the M4. Though there is some cross-bus access and how that works I have no idea.
They specify that all the SRAM memory and Flash uses ECC, but no mention of the registers that I could spot.
By no means a simple chip to wrap ones head around, but certainly looks interesting. Pricing of the Arduino though... not for me, at that price I'd rather take the RPi plus some extension board.
Factory automation applications written in BASIC have been a thing for decades. Javascript & Python are improvements in many ways.
Like everything else in engineering, you have to know what you're doing, what you and your tools are capable of, and what performance is needed. Not everything has a 1ms deadline and the vast majority of so-called "industrial" applications will work perfectly fine on a 1-second loop.
As far as engineering goes I would expect most engineers would feel more comfortable putting their seal on something that was over-engineered than just good enough. This is similar to why when designing a circuit it is common practice to double the power dissapation or wattage of components.
I see no reason Java or Python languages wouldn't work or any other language for that matter, as long as they were running on a stable system, I'm just not convinced that arm processors offer that stability but again I may be wrong.
MicroPython/CircuitPython is the funnest thing ever. And you can do all the serious things you need. There is nothing you can't do in MicroPython. And if you need to do stuff fast, writing C libraries is quite easy.
It's totally fair to not like it and for sure it has strengths and weaknesses, problems where its a good fit and problems where it is a bad fit - but don't dismiss it. It's simply to good for that.
My favorite example of that is the system that a contractor wrote for us using bitwise logic and dual-nested loops that worked perfectly for function but each time we needed to make a change we needed at least 3 days to re-read the code for understanding. It passed all of our system-level and integration-level testing but if you put any one of us on the spot about how it actually worked we would have been screwed.