Posted by MilnerRoute 1 day ago
But Adafruit points out a problem, which is that the cloud service is the only available option for students using school-issued Chromebooks. I can confirm that a school-issued Chromebook is likely to be set up to lock out access to any programming tools. We wouldn't want children to learn coding after all, right?
I think relying on a corporation to preserve our freedom to code is a bit too optimistic.
To "force" someone to develop on a Chromebook is like giving someone a bicycle to become a race car driver.
That said, I usually flashed my arduinos and used bare metal C. Ironically I think it makes many things easier to learn and understand, provided you have a programming device.
Having spent several years teaching kids to code everything from games to lightbulbs on Chromebooks, I can confirm that there are certainly difficulties - but they're tradeoffs. I could spend my time coming up with a way to work through the platform restrictions, or I could spend my time maintaining a motley crew of devices and configurations. Having done it both ways, they both have different pain points.
More recently, kids can have a ton of fun programming STM32, making DACs, audio gear, robots, etc.
School-issued devices are generally intended to be similar to devices a corporation would provision for non-technical workers.
So my advice would be: Don't bother trying to provision a chrome-book to connect to some school network. Use a school-issued chromebook for school stuff (if that's what they issue...), use a normal PC for extracurricular learning.
For the record: my kids are in elementary school, and are issued lenovo laptops running windows. They are locked down to the point where they might as well be chromebooks; kids have unprivileged accounts and are allowed to run very few programs. This is as it should be; those computers are for a very specific purpose, and are not general purpose toys.
Indeed, when I was in school, the WiFi networks were very poorly secured, so it was easy for annoying kids to get their own computers onto school networks if other students were using school-issued laptops around them. Annoying!
If a kid wants to learn how to program, they're going to have to bring their own separate computer and it will be treated about the same as bringing their smartphone to class, i.e. not allowed except during very specific times, there would be concerns about liability of damage or theft from other students, and they probably wouldn't allow it on the school networks.
I see the problem with Chromebooks and cloud stuff more generally as being that it's difficult to see the productive use-case of programming outside just shuffling a bunch of data around. If your program's not actually doing something useful, it seems like it'd be difficult to imagine a career in it. -But if a kid can get a relay to trigger via button and then maybe via web interface and then maybe automate it, I think that opens the world of hacking up to them. You know, for $10, they can have a fully-solar (w/battery) thermometer or whatever they want -- the thermometer can feed a thermostat to energize a relay coil to start a heater or whatever.
-But I might be outlier, because in school we had robotics class a lot of kids were pumped for, but I was confused because we never did anything useful with them; it was more like an art class, except at least in art class we baked ashtrays for our parents. -But what am I supposed to do with a 5-watt robot that follows yellow tape?
It used to be that high school students were required to have a graphing calculator. These had to be purchased by the student (iow by their parents) and without factoring in 20+ years of inflation costed more than some Chromebooks available today. I suspect there were (and still are) financial assistance programs as i've known students living below the poverty line and they were able to meet that requirement.
Support costs, mainly.
A small school that does its own IT is more likely to be flexible.
Do you really own it ? Can you install linux or BSD _instead_ of ChromeOS ?
[1]https://docs.mrchromebox.tech/docs/supported-devices.html
To answer your questions, it depends. On some Chromebook models you can wipe ChromeOS and install Linux.
> young coders are asked to assist these characters achieving simple goals by coding simple instructions. As challenges become more difficult, more complex algorithms are required to solve them and new concepts are introduced.
If you mean computer science then yes you are correct.
Lol, I use a Chromebook for development at work
They're not. They're locked down as hard as they can be.
In strongly regulated industries, it is not unusual that you are indeed strongly locked out of this, and you need to create special requests to get access to the specific functionalities (as an exception) that you need for developing software on-device.
No, I just wanted to show that your claim
> It's doubtful that your employer locks you out of literally everything that would allow you to develop software on-device. See my other comments in this thread.
simply does not hold in practice.
--
Addendum: Additionally, from my school experience, rather the attempts to circumvent "abitrary" restrictions on the computers which were set up by the school made you a good coder. :-)
I would encourage you to expand your lived experience here. Circumventing "arbitrary" restrictions today will burn a hardware fuse, brick it for actual school allowed purposes and cost your parents $170 to resolve. The age of innocently hacking on school property is long gone.
Of course.
But nevertheless, I have a feeling that the central difference is not in "recent or not", but in the fact that older generations were simply much more rebellious in not wanting to accept the restrictions set on the school computers and willingness to do everything imaginable to circumvent them.
Perhaps Chromebooks are incompatible with open-source too?
Why aren't we teaching kids vibe coding? I've been told that is the future after all, and junior devs will never be needed ever again. All they need a webpage interface to an LLM to provide data and customer demographics for AI companies.
We in the industry might see AI progressing to where cube vibe coding is just as real as using spreadsheets rather than paper ledger books, but it is years out, and teaching kids on v0.1 tools would just be frustrating for teachers while likely teaching kids all the wrong things.
I do keep meaning to try this though - https://platformio.org/
Once ESP8266 and ESP32 came along (with a detour thanks to Raspberry Pi coming along in the 2010s), there was really no need nor desire to use Arduino anymore and like you I forget about them.
Maybe they have a place in education, and maybe in industrial applications, but outside of that, I wouldn't even consider Arduino anymore.
PlatformIO by the way is excellent, and I've used it for all ESP8266/ESP32 development in VSCode for some time now, though increasingly I just use ESPHome, as my desire to program microcontrollers at a low level wanes and my desire to simply achieve the task quickly grows.
If I want to run custom logic, I have to bundle a custom component into the esphome thing. Not bad I guess but I still don't like the lack of control
I think most people should graduate into PlatformIO or vendor tools if they’ve used Arduino to learn basics.
I think it’s great that the Arduino ecosystem became so large and capable, but it had the side effect of leading many beginners into thinking that Arduino was synonymous with microcontroller.
I even took a contract once updating a company’s internal tooling because their first contractor tried to do it all with Arduino. The same scenario happens with Raspberry Pi in the world of Linux embedded systems development.
Personally, I am not convinced we should (continue) conflating the IDE with the build+flash tools; the former should be associated with the programming language and developer preferences, and the latter with the MCU being programmed.
PIO + esp-IDF is the only way I write ESP firmware.
I also think they have some testing features built in, though i never delved too deep.
Note that the Arduino IDE has a setting to edit files using any random program instead.
Can’t recommend it enough. Faster startup. Repeatable builds. The abilty to save your image and then flash on many devices. Build time parameters. Also allows access to some functionality that is not possible using arduino build process due to how arduino compiles and processes sketches.
The process of getting a binary onto the board is just dragging a file, and on linux at least you can script it with picotool
They are great for basic hobbyist projects, but they just can't compare to something like an STM32 for more complicated applications.
They are a pleasure to work with and I think that they are great MCUs, but every time I try to use them for nontrivial applications I end up being disappointed.
> nontrivial applications
Out of curiosity, where do you find that you’re hitting the limits of what it can handle?
Only having two UARTs can be limiting - and PIO is a no-go if you want offloaded parity checking and flow control. The PIO doesn't have an easy external clock input. No CAN or Ethernet makes usage in larger systems tricky. There's no USB Type-C comms support. Its ADC is anemic (only 4 channels, with 36 io pins?). There are no analog comparators. It doesn't have capacitive touch sensing. There's no EEPROM.
None of them are direct dealbreakers and you can work around most of them using external hardware - but why would you want to do so if you could also grab a MCU which has it fully integrated already?
is 2.5ns (https://github.com/gusmanb/logicanalyzer) to 3.3ns (https://github.com/schlae/pico-dram-tester) resolution not enough for you?
On a STM32 you can just set up the timer and forget about it until you get a "hey, we saw a pulse at cycle 1234" interrupt. The two are not the same.
My argument wasn't "this is completely impossible", but "this is needlessly complicated".
What Pico/RP2040 projects do instead is use a PIO state machine clocked from the system clock to deterministically timestamp edges (often DMA’d out). It avoids ISR latency and gives cycle-accurate edge timing relative to the MCU clock. It’s not a built-in capture peripheral, but it achieves the same practical result.
If you want a drop-in hardware capture block with filtering and prescalers, STM32 is the better choice. RP2040 trades fixed peripherals for a programmable timing fabric.
There are similar chips at a quarter of the price.
Obviously for hobbyist stuff, $1 doesn't really matter.
When I’ve compared to other dual-core SoCs with programmable IO, like NXP with FlexIO (~€11) or ESP32 chips with RMT (~€1) they are much more expensive than the RP2350.. is there a selection of programmable IO chips I’m missing?
Sure, they are great if you want to implement some obscure-yet-simple protocol, but in practice everyone is using the same handful of protocols everywhere.
Considering its limitations, betting on the PIO for crucial functionality is a huge risk for a company. If Raspberry Pi doesn't provide a well-tested library implementing the protocol I want (and I don't think they do this yet), I wouldn't want to bet on it.
I think they are an absolutely amazing concept in theory, but in practice it is mostly a disappointment for anything other than high-speed data output.
Now the old SAM3 chip in the Arudino Due is a different beast. Atmel restarted production and priced it at $9/ea. For 9k. Ouch. You can get knockoff Dues on Aliexpress for $10.
Edit: I'm only looking at single core MCUs here. The MCX-A and H5 lineups are single-core Cortex M33 MCUs. The SAM3 is a single core Cortex M3. The RP units are dual core M33. If the RP peripherals meet your needs I agree that's a great value (I'm seeing pricing of $1+ here).
Edit2: For dual core NXP is showing the i.MX RT700 at around $7.
It's reasonably common in the home automation space. A fair few low volume (but still commercial nevertheless) products are built around ESP32 chips now because they started with ESPHome or NodeMCU. The biggest energy provider in the UK (Octopus) even have a smart meter interface built on the ESP32.
Arduino took over for 3 reasons: a thoughtful and relatively low cost (at the time) development board that included easy one-click flashing, a dead-simple cross-platform packaging of the avr-gcc toolchain, and a simple HAL that enabled libraries to flourish.
Only the first item, and a bit of the second), is really outdated at this point (with clones and ESP32 taking over the predominant hardware) but the framework is still extremely prominent and active even if many don’t realize it. ESPHome for example still will generally use the Arduino HAL/Framework enabling a wide library ecosystem, even though it’s using platformio under the hood for the toolchain.
Even folks who “don’t use Arduino any more” and use platformio instead are often still leveraging the HAL for library support, myself included. Advanced users might be using raw esp-idf but the esp-idf HAL has had a number of breaking API changes over the years that make library support more annoying unless you truly need advanced features or more performance.
I'm asking because used Arduino ide to program STM32L011 and it would run for months or even years.
Even easier if you setup debugging using another pico, debug probe or even a Pi (not sure if this works on the 5)
I think you're missing the point of what made arduino so popular. It's not the HW itself, it's that you can plug in whatever display, sensor or motor driver out there, and there's ready made templates in the IDE that gets you running immediately, without you having to know anything about how the HW or SW works under the hood.
The lack of dual cores or "fun IO coprocessor" whatever fun is in that context, was never an issue for the arduino.
There's a virtually unlimited number microcontrollers and boards out there for tinkering or production, that are more powerful and have more features, but they all have a higher technical barrier to entry than the standard Arduino out of the box.
I don't wanna have to read datasheets and erratas just to learn how to use a second core, deal with shared memory between cores, or how to configure the GPIO of the "fun IO coprocessor" just to get a LED blinking to work. That's not what fun is to a lot of people. Fun is getting the motor spinning until my coffee finishes brewing and that's where the Arduino ecosystem USP was versus other more powerful platforms.
I recently started programming Arduino for profit and you need to do exactly that, because the libraries range from somewhat buggy to completely broken. They so often just write into random other registers and if it works it is only do to the chip already working without any configuration and the library not breaking things too badly.
> szundi
> If you go mainstream with your requirements, you don’t step on these though
Absolutely not. I am talking about things like the example in the README, which actually doesn't do anything, because they forgot the shift to make it write into the right field. Or they added "support" in 2012 for the only chip which is still sold, but forgot to update the register addresses, so now you have code for a newer chip, which uses the register addresses of the old chip. This does not work with either chip. And this is all with the libraries "officially" "provided" by Arduino.
Are they more in number and easier to use than the Arduino libraries?
>If anything, with the drag-n-drop flashing it is even easier to work with than an Arduino.
Why do you think the Arduino is more difficult than "drag-n-drop flashing" by comparison? Do you think one click is more difficult?
Look at how Ben Eater built and set up the SIDKPico to serve as a SID audio chip in his 8 bit breadboard computer here: https://www.youtube.com/watch?v=nooPmXxO6K0
It's not either/or, beyond what's in the native SDK RP2 boards also benefit from the Arduino ecosystem via the excellent and well maintained https://github.com/earlephilhower/arduino-pico
I haven't done a direct comparison, but considering that the hobbyist ecosystem (which is the main source of those libs) is shifting over, it is just a matter of time.
> Why do you think the Arduino is more difficult than "drag-n-drop flashing" by comparison?
Because you need to install an IDE and mess around with things like serial drivers - and it gets a lot more complicated if you ever have to flash a bootloader. It's not hard, but it's definitely not as trivial as the RP2xxx's drag-n-drop.
This was evident to me when their original post "yada yada yada'd" over the details to make things in the agreement sound sinister.
Thanks you! Sad that HN gets ideologically captured in the same mob behavior instead of thinking logically and practically.
Don't know what Adafruit has a problem with, but the above is my problem.
The logic to me is "how can they do that?". You don't need a cloud service to program a microcontroller and they can't force that upon you even if they'd want to since the arduino board is not an iPhone.
License future important libraries only for use via their cloud toolchain?
Stop contributing support to non-cloud toolchain and/or intentionally break it?
Slip more restrictive licensing into new easy to use features (like a vision service) that taint combined products?
Never underestimate a company's ability to pay lawyers to restrict freedom.
They could potentially have their software load a unexpectedly re-flash existing units with a locked bootloader too, it would just be harder to keep the key secret (because the tool flashing the new bootloader on the first time would need to know it)
Me too.
Due to the Qualcomm issue, or something else? I'm working for a small company, so we will likely just ignore it.
I did a bit of searching and found some sketchy documentation that just leaves me with more questions. It sounds like Arduino’s new web editor programs boards wirelessly somehow? Does it assume the board has WiFi? What is this new, networked system? What Internet protocols does it use? How do you pair it with the web editor?
I have a old Arduino UNO R3, would be a really disappointing if I could no longer play around with it by just downloading the IDE and connecting the cables.
It doesn't need to do anything with "the cloud".
https://store.arduino.cc/products/uno-q
"- All-in-one toolbox: Arduino UNO Q combines the powerful Qualcomm® Dragonwing™ QRB2210 microprocessor (MPU) with a real-time STM32U585 microcontroller (MCU) – no matter what you’re building, it’s your new go-to tool! - AI in a blink: unlock AI-powered vision and sound solutions that react to their environment."
You can just not buy their product.
A surprising amount of embedded SoCs target the Arduino IDE either as the main IDE, or one of the main ones. And for those the setup is still pretty easy for non technical users - "Download IDE, paste this into the boardmanager, compile the sketch, upload". That's the main reason I'm still using the Arduino IDE for stuff I publish and expect less technical people to use.
The problem with the IDE is that it doesn't offer a gradual path to more advanced usage. You're pretty much stuck with a single file main project. You can split off functionality into libraries, but the way library resolving works is way worse compared to "proper" build systems. There are projects to provide makefiles for Arduino projects, but it's a bit of a pain to set up - I use that for CI on some of my stuff, but it clearly is on the other end of difficulty scale.
And of course the editor is horrible - but thanks to file watching and automatic reloads that isn't much of an issue nowadasy.
> The problem with the IDE is that it doesn't offer a gradual path to more advanced usage. You're pretty much stuck with a single file main project. You can split off functionality into libraries, but the way library resolving works is way worse compared to "proper" build systems. There are projects to provide makefiles for Arduino projects, but it's a bit of a pain to set up - I use that for CI on some of my stuff, but it clearly is on the other end of difficulty scale.
It actually isn't all that hard. I recently did exactly that and it took like a week, most of which was spent on understanding what the Arduino IDE does with strace. Initially I assumed the Arduino IDE does way more stuff then it actually does. The makefile projects are too complicated, because they try to abstract over the installation and project. Instead I used Autotools which is way easier and simpler. It also breaks less, because these makefile projects tend to hardcode paths.
To save others the work: All you need to do is populate CPPFLAGS, CFLAGS, LDFLAGS, ... with the information from platform.txt and boards.txt . Then tell your build system to use the cross-compiler toolchain from your OS. Take care to only use the exact uploader program version that the Arduino IDE also uses, I have been burned by using the latest version, which bricked my board (i.e. you can't upload anything to fix it and need to use a second board to reflash the bootloader). This information is in the package_index.json file. Granted this is annoying to work with using fulltext search, you would have a much saner experience actually using the JSON format, but it still works and I am lazy.
> You're pretty much stuck with a single file main project.
You can have multiple files just fine, this is actually the reason why the Arduino IDE defaults to having this project directory. The Arduino IDE just assumes all files below that are things to compile. You need to remember to not name the other files with *.ino, but *.cpp, *.c and *.h, otherwise you end up with multiple main functions. An *.ino file is just a *.cpp file that gets preprocessed with a main function template.
> And of course the editor is horrible
You can tell the Arduino IDE to use another editor, which is what I did when I used it.
This seems like an ideal component for the OSS community to handle and rally around. Then anyone can use the IDE of their choice, the compile-flash manager handles the rest.
Prototyping platforms have tiny markets, but lead to downstream sales. Many a company were brought down by more developer-friendly platforms ignoring the "tiny" userbase of people who want to do unconventional things.
Most IC vendors provide free samples and support because of this. That's a market size of close to zero -- electronic engineers -- but leads to a market size of "massive." I can get an application engineer to visit my office for free to help me develop if I want.
Arguably, iPhone and Android won by supporting the tiny market of developers, who went on to build an ecosystem of applications, some long-tail, and some unexpected successes.
And arguably, x86 won for the same reason.
Atmel had shipped 500 million AVR flash microcontrollers, due in large part to the ecosystem created by Arduino.
Balmer said "Developers! developers! developers!" Visual Studio was not a major revenue driver for Microsoft; what was developed in it was.
How do you know the 500 million sales is due to the Arduino ecosystem?
I used to work in embedded for 10+ years and in the 4 companies I worked at so far, none of the products ever featured AVR microcontrollers. The microcontroller of choice for production was always based on the feature/cost ratio for each application, never on the "is it part of the Arduino ecosystem?" question.
Tinkering with Arduino at home, and building products for mass production, have widely different considerations.
Qualcomm doesn't even make small/cheap MCUs so they aren't going to win over that market by buying Arduino. Their first board post-acquisition is a mashup of a Linux SBC with an MCU devkit, and while the Linux SOC is from QCOM, the MCU is from ST Micro.
It sounds like Adafruit are just trying to sow some outrage here.
> Chief microcontroller rival Adafruit
Implying that Adafruit makes their own competing microcontrollers, which sure would have been news to me.
Edit: sees sibling posted at the same time. Well that would explain it.
This is different now that Arduino is Qualcomm-owned and ships Qualcomm silicon, of course.
Their real competitor is sparkfun, but I never heard them say anything to put them down.
As other pointed out, companies like Google demonstrate, how open source can be used in a rather aggressive commercial strategy. However, I think the good news is that that the open hardware stuff is not rocket science and maintenance hell at this point (without the new Qualcomm bits). I guess it is now for others to step up and make the ecosystem resilient. That is IMHO the power of open source in case it works.
Now contemplate open Android and Google Play Services.
Or even that they forbid to use different clients for YouTube
Ineffectively, thank God
The setup instructions included something to do with CircuitPython. I had not heard of it before then: https://github.com/sunfounder/universal-maker-sensor-kit/blo...
They are PCB brands. The microcontrollers are made by the usual manufacturers like ST, Renesas, Infineon...
But of course Arduino historically also didn't make the Atmel or Pico chips, so I can sort of see what they were going for.