The release of the Raspberry Pi Foundation’s Raspberry Pi Pico board with RP2040 microcontroller has made big waves these past months in the maker community. Many have demonstrated how especially the two Programmable I/O (PIO) state machine peripherals can be used to create DVI video generators and other digital peripherals.
Alongside this excitement, it raises the question of whether any of this will cause any major upheaval for those of us using STM32, SAM and other Cortex-M based MCUs. Would the RP2040 perhaps be a valid option for some of our projects? With the RP2040 being a dual Cortex-M0+ processor MCU, it seems only fair to put it toe to toe with the offerings from one of the current heavyweights in the 32-bit ARM MCU space: ST Microelectronics.
Did the Raspberry Pi Foundation pipsqueak manage to show ST’s engineers how it’s done, or should the former revisit some of their assumptions? And just how hard is it going to be to port low-level code from STM32 to RP2040? Continue reading “Raspberry Pi RP2040: Hands-On Experiences From An STM32 Perspective”
The later game consoles of the 8-bit era such as Nintendo’s NES or Sega’s Master System produced graphics that went beyond what owners of early 1980s home computers had come to expect from machines with the same processors, but they did so only with the help of powerful custom chipsets for their day that took care of the repetitive hard work of assembling frames and feeding them to the display device. Reproducing their equivalent with more modern hardware requires either some means of creating similar custom silicon, or a processor significantly more powerful such that it can do the work of those extra chips itself. But even with a modern microcontroller it’s still a significant challenge, so [Nicola Wrachien]’s uChip, a VGA console that does the whole job in software on a humble ARM Cortex M0 is a significant achievement.
If you are familiar with the home computers that used the processor to generate the display output, you’ll know that they spent most of their time working on the lines of the display and only had a few milliseconds of the frame blanking period for the device to perform any computing tasks before returning to the next frame. The 320×240 at 57 frames per second gives a line sync frequency of 30 kHz, and the computing happens while the display is sent the black space at the top and bottom of the screen. This is reckoned to be equivalent of the ATSAMD21E18 microcontroller on the uChip module the system uses running at only 10MHz rather than the 48MHz it is running at in reality, and with these resources it also runs the game logic, USB controller interfacing, reading games from the SD card, and game sound.
The result is a complete game console on a small PCB little longer on its longest side than its connectors. We may have largely seen the demise of VGA on the desktop several years after we called it, but it seems there is plenty of life in the interface yet for hardware hackers.
We’ve seen [Johan]’s AA-battery-sized Arduino/battery crossover before, but soon (we hope!) there will be a new version with more MIPS in the same unique form factor! The original Aarduino adhered to classic Arduino part choices and was designed to run as the third “cell” in a 3 cell battery holder to relay temperature readings via a HopeRF RFM69CW. But as [Johan] noticed, it turns out that ARM development tools are cheap now. In some cases very cheap and very open source. So why not update an outstanding design to something with a little more horsepower?
The Aarduino Zero uses the same big PTH battery terminals and follows the same pattern as the original design; the user sticks it in a battery holder for power and it uses an RFM69CW for wireless communication. But now the core is an STM32L052, a neat low power Cortex-M0+ with a little EEPROM onboard. [Johan] has also added a medium size serial flash to facilitate offline data logging or OTA firmware update. Plus there’s a slick new test fixture to go along with it all.
So how do you get one? Well… that’s the rub. It looks like when this was originally posted at the end of 2017 [Johan] was planning to launch a Crowd Supply campaign that hasn’t quite materialized yet. Until that launches the software sources for the Zero are available, and there are always the sources from the original Aarduino to check out.
Who wants warm drinks? Well, coffee drinkers, we guess. Other than them, who wants warm drinks? Tea drinkers, sure. How about room temperature drinks? No one, that’s who. It’s silly to buy a refrigerator to cool down a single drink, so what option are you left with? Ice cubes? They’ll dilute your drink. Ice packs and a cooler? Sure, they’ll keep your drinks cold, but they’re hardly cool are they? No, if you want a cold drink the cool way, you build a thermoelectric cooler. And if you want to build one, you’re in luck, because [John Park] has a tutorial to do just that up on AdaFruit.
The parts list includes an AdaFruit Trinket M0, a more powerful version of AdaFruit’s Trinket line. The Trinket is used to control the main part in this build, a Peltier thermoelectric cooler, as well as the temperature display and switches. The other part controlled by the microcontroller is a peristaltic pump, which is used to do the dispensing of the liquid. The code to control everything is written in Python as the Trinket M0 comes with AdaFruit’s CircuitPython by default. Also included in the tutorial are the files for the stand, should you want to 3D print it or cut it with a CNC or laser cutter.
After the break, you can watch as [John] goes over the project and builds it, or go to the AdaFruit website and follow the instructions to build your own. As [John] says, there might be better ways to chill your drinks, but this is “definitely one of the more science-y and interesting ones.” For more projects using the Peltier Effect, try this one that uses the effect in sous-vide cooking, or this one, a Peltier cooled micro-fridge!
Continue reading “Trinket Chills Your Drinks”
What does a hacker do when he or she wants something but can’t afford it? They hack one together, of course. Or, in the case of [Ramón Calvo], they thoughtfully plan and prototype. [Ramón Calvo] wanted a scientific calculator, but couldn’t afford one, so he designed and built one himself.
[Ramón] started off with Arduino but upgraded initially to Freescale’s Freedom KL25Z development board upgraded to an ARM Cortex-M0+ programmed using mbed. The display is an Electronic Assembly DOGL-128 128×64 pixel LCD. [Ramón] did a couple of iterations on the PCB, going from a large DIY one in order for the Arduino version to work, to the current, smaller version for the ARM chip with hand soldered SMD components. After that, [Ramón] looked into the algorithms needed to parse mathematical input. He settled on the shunting-yard algorithm, which converts the input into Reverse Polish Notation (RPN), which is easier for the software to work with.
[Ramón] has a ton of features working, including your standard add, subtract, multiply and divide operations, square root, nth root and exponentiation, trigonometry, log and log10, and factorial(!) There are a few things still on the to-do list, such as low power and a graphing mode, and there are a couple of bugs still in the system, but the overall system is up and running. [Ramón] has put up the schematic and KiCAD files up on his Hackaday.io project page along with the bill of materials.
We’ve had a few Hackaday prize entries in the form of calculators, such as this one with Nixie tubes and this one that emulates 70’s HP calculators.
Slowly but surely, the age of 8-bit micros being the first tool anyone picks up is coming to an end, and we’re seeing more and more ARM dev boards in nifty, breadboard-friendly packages. [Zapta] thought he would throw his hat into the ring with the ARM Pro Mini, a tiny little board based on the ARM M0 microcontroller.
The ARM chip on this board is the NXP LPC11 with 64 kB of Flash, 12 kB of RAM, and just enough pins to make the whole endeavor worthwhile. The board itself is extremely simple, with just enough SMD parts to be annoying to hand solder.
All the nifty bonuses of ARM boards are available on the ARM Pro Mini, including drag and drop firmware over the USB port, support for single stepping and debugging, and the IDE is a single install with NXP Eclipse/LPCXpresso. Mbed is also supported, so it’s possible to use this board with no software installs when using the online Mbed IDE.
[Zapta] has put everything you need to build this board up on his Github, and has even done a few simple ‘getting started’ tutorials, including a cool little example with a graphics library and a small OLED.
With the Adafruit Trinket, the Digispark, and some very clever work with the smallest microcontroller Atmel offers, it looks like the ‘in’ thing to do for embedded software developers is to bitbang the USB protocol on hardware that shouldn’t support it. There are a lot of very small ARM chips out there without USB support, so it was only a matter of time before someone was able to bitbang USB on the ARM Cortex M0+.
The board above is based on an Energy Micro EFM32ZG, a very small 24-pin QFN device with up to 32 kB of Flash and 17 GPIOs. As with all the bitbanged USB hacks, the differential data lines are attached directly to the microcontroller. A 24 MHz crystal is needed, but the team behind the project is working on using the internal RC oscillator instead.
The code is portable with minimal changes between other manufacturer’s Cortex M0+ chips, and with a little work, this could become a very, very cheap USB-programmable ARM dev board, something the community could certainly use.