Screen shot of Mongoose Wizard.

How To Build An STM32 Web Dashboard Using The Mongoose Wizard

Today from the team at Cesanta Software — the people who gave us the open-source Mongoose Web Server Library and Mongoose OS — we have an article covering how to build an STM32 web dashboard.

The article runs through setting up a development environment; creating the dashboard layout; implementing the dashboard, devices settings, and firmware update pages; building and testing the firmware; attaching UI controls to the hardware; and conclusion.

The web dashboard is all well and good, but in our opinion the killer feature remains the Over-The-Air (OTA) update facility which allows for authenticated wireless firmware updates via the web dashboard. The rest is just gravy. In the video you get to see how to use your development tools to create a firmware file suitable for OTA update.

Continue reading “How To Build An STM32 Web Dashboard Using The Mongoose Wizard”

GK STM32 MCU-Based Handheld Game System

These days even a lowly microcontroller can easily trade blows with – or surpass – desktop systems of yesteryear, so it is little wonder that DIY handheld gaming systems based around an MCU are more capable than ever. A case in point is the GK handheld gaming system by [John Cronin], which uses an MCU from relatively new and very capable STM32H7S7 series, specifically the 225-pin STM32H7S7L8 in TFBGA package with a single Cortex-M7 clocked at 600 MHz and a 2D NeoChrom GPU.

Coupled with this MCU are 128 MB of XSPI (hexa-SPI) SDRAM, a 640×480 color touch screen, gyrometer, WiFi network support and the custom gkOS in the firmware for loading games off an internal SD card. A USB-C port is provided to both access said SD card’s contents and for recharging the internal Li-ion battery.

As can be seen in the demonstration video, it runs a wide variety of games, ranging from DOOM (of course), Quake, as well as Command and Conquer: Red Alert and emulators for many consoles, with the Mednafen project used to emulate Game Boy, Super Nintendo and other systems at 20+ FPS. Although there aren’t a lot of details on how optimized the current firmware is, it seems to be pretty capable already.

Continue reading “GK STM32 MCU-Based Handheld Game System”

One of the photo-detector spheres of ARCA (Credit: KM3NeT)

Most Energetic Cosmic Neutrino Ever Observed By KM3NeT Deep Sea Telescope

On February 13th of 2023, ARCA of the kilometre cubic neutrino telescope (KM3NeT) detected a neutrino with an estimated energy of about 220 PeV. This event, called KM3-230213A, is the most energetic neutrino ever observed. Although extremely abundant in the universe, neutrinos only weakly interact with matter and thus capturing such an event requires very large detectors. Details on this event were published in Nature.

Much like other types of telescopes, KM3NeT uses neutrinos to infer information about remote objects and events in the Universe, ranging from our Sun to other solar systems and galaxies. Due to the weak interaction of neutrinos they cannot be observed like photons, but only indirectly via e.g. photomultipliers that detect the blue-ish light of Cherenkov radiation when the neutrino interacts with a dense medium, such as the deep sea water in the case of ARCA (Astroparticle Research with Cosmics in the Abyss). This particular detector is located at a depth of 3,450 meters off the coast of Sicily with 700 meter tall detection units (DUs) placed 100 meters apart which consist out of many individual spheres filled with detectors and supporting equipment.

With just one of these high-power neutrinos detected it’s hard to say exactly where or what it originated from, but with each additional capture we’ll get a clearer picture. For a fairly new neutrino telescope project it’s also a promising start especially since the project as a whole is still under construction, with additional detectors being installed off the coasts of France and Greece.

Running Game Boy Games On STM32 MCUs Is Peanuts

Using a STM32F429 Discovery board [Jan Zwiener] put together a Game Boy-compatible system called STM32Boy. It is based around the Peanut-GB Game Boy emulator core, which is a pretty nifty and fast single-header GB emulator library in C99. Considering that the average 32-bit MCU these days is significantly faster than the ~4 MHz  8-bit Sharp SM83 (Intel 8080/Zilog Z80 hybrid) in the original Game Boy it’s probably no surprise that the STM32F429 (up to 180 MHz) can emulate this 8-bit SoC just fine.

Since Peanut-GB is a library, the developer using it is expected to provide their own routines to read and write RAM and ROM and to handle errors. Optional are the line drawing, audio read/write and serial Tx/Rx functions, with the library providing reset and a host of other utility functions. Audio functionality is provided externally, such as using the provided MiniGB APU. Although fast, it comes with a range of caveats that limit compatibility and accuracy.

For STM32Boy, [Jan] uses the LCD screen that’s on the STM32 development board to render the screen on, along with a Game Boy skin. The LCD’s touch feature is then used for the controls, as can be elucidated from the main source file. Of note is that the target GB ROM is directly compiled into the firmware image rather than provided via an external SD card. This involves using the xxd tool to create a hex version of the ROM image that can be included. Not a bad way to get a PoC up and running, but we imagine that if you want to create a more usable GB-like system it should at least be able to play more than one game without having to reflash the MCU.

Xiaomi M365 Battery Fault? Just Remove A Capacitor

Electric scooters have long been a hacker’s friend, Xiaomi ones in particular – starting with M365, the Xiaomi scooter family has expanded a fair bit. They do have a weak spot, like many other devices – the battery, something you expect to wear out.

Let’s say, one day the scooter’s diagnostics app shows one section of the battery going way below 3 volts. Was it a sudden failure of one of the cells that brought the whole stage down? Or perhaps, water damage after a hastily assembled scooter? Now, what if you measure the stages with a multimeter and it turns out they are perfectly fine?

Turns out, it might just be a single capacitor’s fault. In a YouTube video, [darieee] tells us all about debugging a Xiaomi M365 battery with such a fault – a BQ76930 controller being responsible for measuring battery voltages. The BMS (Battery Management System) board has capacitors in parallel with the cells, and it appears that some of these capacitors can go faulty.

Are you experiencing this particular fault? It’s easy to check – measure the battery stages and see if the information checks out with the readings in your scooter monitoring app of choice. Could this be a mechanical failure mode for this poor MLCC? Or maybe, a bad batch of capacitors? One thing is clear, this case is worth learning from, adding this kind of failure to your collection of fun LiIon pack tidbits. This pack seems pretty hacker-friendly – other packs lock up when anything is amiss, like the Ryobi batteries do, overdue for someone to really spill their secrets!

Continue reading “Xiaomi M365 Battery Fault? Just Remove A Capacitor”

Doing 1080p Video, Sort Of, On The STM32 Microcontroller

When you think 1080p video, you probably don’t think STM32 microcontroller. And yet! [Gabriel Cséfalvay] has pulled off just that through the creative use of on-chip peripherals. Sort of.

The build is based around the STM32L4P5—far from the hottest chip in the world. Depending on the exact part you pick, it offers 512 KB or 1 Mbyte of flash memory, 320 KB of SRAM, and runs at 120 MHz. Not bad, but not stellar.

Still, [Gabriel] was able to push 1080p at a sort of half resolution. Basically, the chip is generating a 1080p widescreen RGB VGA signal. However, to get around the limited RAM of the chip, [Gabriel] had to implement a hack—basically, every pixel is RAM rendered as 2×2 pixels to make up the full-sized display. At this stage, true 1080p looks achievable, but it’ll be a further challenge to properly fit it into memory.

Output hardware is minimal. One pin puts out the HSYNC signal, another handles VSYNC. The same pixel data is clocked out over R, G, and B signals, making all the pixels either white or black. Clocking out the data is handled by a nifty combination of the onboard DMA functionality and the OCTOSPI hardware. This enables the chip to hit the necessary data rate to generate such a high-resolution display.

There’s more work to be done, but it’s neat to see [Gabriel] get even this far with such limited hardware. We’ve seen others theorize similar feats on chips like the RP2040 in the Pi Pico, too. Video after the break.

Continue reading “Doing 1080p Video, Sort Of, On The STM32 Microcontroller”

screenshot of the code defining a hid descriptor by using essentially macros for common descriptor types

Coupling STM32 And Linux? Consider HID Over I2C

If you’re pairing a tiny Linux computer to a few peripherals — perhaps you’re building a reasonably custom Pi-powered device — it’s rightfully tempting to use something like an STM32 for all your low-level tasks, from power management to reading keyboard events.

Now, in case you were wondering how to tie the two together, consider HID over I2C, it’s a standardized protocol with wide software and peripheral support, easily implementable and low-power. What’s more, [benedekkupper] gives you an example STM32 project with a detailed explanation on how you too can benefit from the protocol.

There are several cool things about this project. For a start, its code is generic enough that it will port across the entire STM32 lineup nicely. Just change the pin definitions as needed, compile it, flash it onto your devboard and experiment away. Need to change the descriptors? The hid-rdf library used lets you define a custom descriptor super easily, none of that building a descriptor from scratch stuff, and it even does compile-time verification of the descriptor!

The project has been tested with a Raspberry Pi 400, and [benedekkupper] links a tutorial on quickly adding your I2C-HID device on an Linux platform; all you need is DeviceTree support. Wondering what’s possible with HID? We’ve seen hackers play with HID aplenty here, and hacking on the HID standard isn’t just for building keyboards. It can let you automate your smartphone, reuse a laptop touchpad or even a sizeable Wacom input surface, liberate extra buttons on gamepads, or build your own touchscreen display.