<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: circuitrocks</title>
    <description>The latest articles on DEV Community by circuitrocks (@circuitrocks).</description>
    <link>https://dev.to/circuitrocks</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3945699%2Fe80afa14-a3d3-4e2c-8279-d860e1f5ac93.png</url>
      <title>DEV Community: circuitrocks</title>
      <link>https://dev.to/circuitrocks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/circuitrocks"/>
    <language>en</language>
    <item>
      <title>The Tanmatsu Handheld: An ESP32-P4 Palmtop Built for Hackers</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Wed, 01 Jul 2026 22:09:41 +0000</pubDate>
      <link>https://dev.to/circuitrocks/the-tanmatsu-handheld-an-esp32-p4-palmtop-built-for-hackers-80d</link>
      <guid>https://dev.to/circuitrocks/the-tanmatsu-handheld-an-esp32-p4-palmtop-built-for-hackers-80d</guid>
      <description>&lt;p&gt;What happens when a hacker conference badge grows up into a full palmtop computer you can actually live with? The Tanmatsu is the answer, and after a year in the wild it finally has the stable operating system and growing app library to back up its ambitious hardware.&lt;/p&gt;

&lt;p&gt;Born in the Dutch badge scene, the Tanmatsu (Japanese for "terminal") is a pocketable, open-source handheld built around Espressif's ESP32-P4 application processor. The body is a tidy sandwich of PCB and 3D-printed PETG, with a silicone QWERTY keyboard on the front face and a crisp 800x480 MIPI DSI display up top. That keyboard moulding will look familiar to badge fans, since it is shared with other maker devices. Boot it up and a synthwave splash screen drops you into a graphical launcher, complete with status icons for SD card, Wi-Fi, and battery, an app grid, and on-screen shortcut hints along the bottom.&lt;/p&gt;

&lt;h3&gt;What's under the hood?&lt;/h3&gt;

&lt;p&gt;The ESP32-P4 brings two 400MHz RISC-V cores paired with 32MB of PSRAM and 16MB of flash, and a chunky 2500mAh LiPo keeps it running with USB-C charging. Expansion is where it gets fun: a Qwiic connector, a PMOD and SAO-capable port, a Raspberry Pi-compatible CSI camera header under the rear cover, and a large add-on socket that breaks out the rest of the signals. Apps arrive through an on-device repository in classic badge.team fashion, and can be either MicroPython scripts or code compiled straight for the P4. It is a launcher rather than a multitasking desktop, so each app takes over the screen when it runs. One thoughtful touch: it remembers multiple Wi-Fi networks instead of making you re-enter credentials everywhere you go.&lt;/p&gt;

&lt;h3&gt;Try it yourself&lt;/h3&gt;

&lt;p&gt;Because the whole thing is open source, you don't have to wait for one to land on your desk. The commercial Tanmatsu is sold by its designer Renze Nicolai, while the community-built Konsool is its close cousin, and the mechanical files, electronics, and firmware are all published for you to study or fork. If you have been eyeing the ESP32-P4 for a build of your own, this is a working reference design worth pulling apart before you reach for the soldering iron.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/the-tanmatsu-handheld-an-esp32-p4-palmtop-built-for-hackers" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  esp32 #esp8266 #iot #wifi #circuitrocks
&lt;/h1&gt;

</description>
      <category>esp32p4</category>
      <category>handheld</category>
      <category>opensourcehardware</category>
      <category>riscv</category>
    </item>
    <item>
      <title>Circuit.Rocks Sponsors SparkFest 2026: GDG PUP Hackathon on July 9</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Wed, 01 Jul 2026 04:44:04 +0000</pubDate>
      <link>https://dev.to/circuitrocks/circuitrocks-sponsors-sparkfest-2026-gdg-pup-hackathon-on-july-9-21o6</link>
      <guid>https://dev.to/circuitrocks/circuitrocks-sponsors-sparkfest-2026-gdg-pup-hackathon-on-july-9-21o6</guid>
      <description>&lt;p&gt;Circuit.Rocks is officially on board as a hardware sponsor for &lt;strong&gt;SparkFest 2026&lt;/strong&gt;, the flagship hackathon and mentorship day organized by the &lt;a href="https://www.facebook.com/gdg.pupmnl" rel="noopener noreferrer"&gt;Google Developer Group on Campus PUP&lt;/a&gt;. The event takes place &lt;strong&gt;July 9, 2026 from 11 AM to 5:30 PM at PUP Main Campus, Bulwagang Bonifacio&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We joined SparkFest because the format is exactly the kind of student experience we like to back: not just a code sprint, but a full day that pairs hands-on hardware building with structured mentorship, pitching, and community-impact work.&lt;/p&gt;

&lt;h3&gt;What's happening at SparkFest 2026&lt;/h3&gt;

&lt;p&gt;The GDG PUP team is running SparkFest 2026 as five parallel tracks in one day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hackathon&lt;/strong&gt; — team-based building around the day's theme, with hardware kits available on the floor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentorship Sessions&lt;/strong&gt; — one-on-one and small-group time with industry mentors so first-year hackers aren't left decoding datasheets alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitching Day&lt;/strong&gt; — teams present their prototypes to a judging panel, sharpening the skill that turns a working demo into a fundable idea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking Activities&lt;/strong&gt; — structured intros between students, alumni, and sponsors, so nobody leaves without a follow-up contact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Impact Initiative&lt;/strong&gt; — a track focused on projects with direct social value rather than tech-for-tech's-sake.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;What Circuit.Rocks brings to the floor&lt;/h3&gt;

&lt;p&gt;Our sponsorship covers hardware provisioning for the hackathon. Sparkmates working through the day will have access to the parts they need to move from concept sketch to working prototype without waiting weeks for international shipping.&lt;/p&gt;

&lt;p&gt;The catalog we bring includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adafruit&lt;/strong&gt; boards, sensors, and Feather ecosystem parts — the ones that come with real docs and libraries that just work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DFRobot&lt;/strong&gt; Gravity sensors, HUSKYLENS AI vision, and pH/EC water-quality kits — great fit for teams building environmental or robotics ideas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arduino&lt;/strong&gt; official UNO, Mega, MKR, and Nano boards — the safe default when a team needs to iterate fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raspberry Pi&lt;/strong&gt; Pi 5, Pi Zero 2 W, and Pico W — for teams whose builds need Linux, a display, or wireless connectivity.&lt;/li&gt;
&lt;li&gt;Motors, drivers, batteries, wiring, and enclosure basics so hardware teams aren't stuck sourcing a jumper wire at 2 PM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything in the SparkFest kit line-up comes from Circuit.Rocks's authorized-brand catalog, so the parts students touch on the day are the same ones they can buy back in Manila to keep prototyping after the event ends.&lt;/p&gt;

&lt;h3&gt;Why we back events like this&lt;/h3&gt;

&lt;p&gt;Circuit.Rocks has been shipping parts to Filipino makers since 2015, and one thing we've learned is that the students who become confident engineers are the ones who touched real hardware early. A datasheet only gets a beginner so far — actually wiring up a motor driver, watching a servo twitch the wrong way, and figuring out why is where the learning locks in.&lt;/p&gt;

&lt;p&gt;Hackathons like SparkFest 2026 give that experience at scale. One day, dozens of teams, mentors on hand to unstick you before you rage-quit. That's a much steeper learning curve than a semester of theory alone. It's also a low-friction way to get into the maker community — walk in on Thursday morning knowing nothing about GPIO, walk out on Thursday night having demoed a prototype in front of judges.&lt;/p&gt;

&lt;h3&gt;How to join SparkFest 2026&lt;/h3&gt;

&lt;p&gt;Registration and event details are live at the SparkFest 2026 website: &lt;a href="https://sparkfest.gdgpup.org" rel="noopener noreferrer"&gt;sparkfest.gdgpup.org&lt;/a&gt;. The event primer with the full brief is at &lt;a href="https://tinyurl.com/mtud86em" rel="noopener noreferrer"&gt;tinyurl.com/mtud86em&lt;/a&gt;, and GDG PUP is running a DP blast at &lt;a href="https://frame.gdgpup.org/events/sparkfest" rel="noopener noreferrer"&gt;frame.gdgpup.org/events/sparkfest&lt;/a&gt; for anyone who wants to show sparkmate colors on their profile.&lt;/p&gt;

&lt;p&gt;See you at Bulwagang Bonifacio on July 9. Bring a laptop, bring a notebook, bring a teammate — the hardware we've got covered.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/circuit-rocks-sponsors-sparkfest-2026-gdg-pup-hackathon-on-july-9" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  stemeducation #stem #makereducation #learntocode #circuitrocks
&lt;/h1&gt;

</description>
      <category>sparkfest2026</category>
      <category>gdgpup</category>
      <category>hackathon</category>
      <category>philippines</category>
    </item>
    <item>
      <title>Build a 3D-Printed Fallout Laser Tag Blaster With a Pico 2 W</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Mon, 29 Jun 2026 22:09:28 +0000</pubDate>
      <link>https://dev.to/circuitrocks/build-a-3d-printed-fallout-laser-tag-blaster-with-a-pico-2-w-2d79</link>
      <guid>https://dev.to/circuitrocks/build-a-3d-printed-fallout-laser-tag-blaster-with-a-pico-2-w-2d79</guid>
      <description>&lt;p&gt;Walk into a commercial laser tag arena and you're looking at tens of thousands of dollars of proprietary gear locked behind a venue's doors. So when a maker recreates that arcade-grade experience at home with a spool of filament and a microcontroller that costs less than lunch, it's worth paying attention. It's a neat reminder that the gap between "pro equipment" and "weekend build" keeps shrinking.&lt;/p&gt;

&lt;p&gt;That's exactly what Splated pulled off with the RobCo AE7P, a fully Fallout-themed laser tag system shared on Printables. After roughly a year of trial and error, they landed on a working prototype styled like a wasteland sidearm straight out of the game. The design started from ytec3d's well-known laser pistol model, but Splated ended up modifying or replacing nearly every part to carve out enough room for the electronics inside. The result looks less like a printed prop and more like something you'd find bolted to a workbench in the wasteland, with the kind of weathered, utilitarian silhouette that fans of the series will recognize instantly.&lt;/p&gt;

&lt;h3&gt;What's going on under the shell&lt;/h3&gt;

&lt;p&gt;The brains of the blaster is a Raspberry Pi Pico 2 W, which handles the tag logic and opens the door to wireless features down the line. The firmware is open source and lives on GitHub, with the maker promising more game modes and network support in upcoming updates. The physical model is split into manageable pieces so it fits on a typical print bed, and only a handful of parts actually need supports, which keeps the print queue and cleanup reasonable. Splitting the body this way also makes it easier to swap or reprint a single component if you crack a part during assembly or want to iterate on the fit.&lt;/p&gt;

&lt;h3&gt;Build one yourself&lt;/h3&gt;

&lt;p&gt;If you want to take a swing at your own, you'll want a Raspberry Pi Pico 2 W, the IR emitter and receiver components that make hit detection work, a small battery to keep it untethered, and a 3D printer loaded with your filament of choice. Grab the STL files from Printables, pull the firmware from the project's GitHub repo, and flash it to the Pico. From there it's assembly, a test round, and whatever Fallout-flavored paint job your heart desires.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microcontroller: Raspberry Pi Pico 2 W&lt;/li&gt;
&lt;li&gt;Detection: IR emitter + receiver pair&lt;/li&gt;
&lt;li&gt;Body: multi-part 3D print, minimal supports&lt;/li&gt;
&lt;li&gt;Firmware: open source, more modes coming&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/build-a-3d-printed-fallout-laser-tag-blaster-with-a-pico-2-w" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3dprinting #3dprinted #maker #diy #circuitrocks
&lt;/h1&gt;

</description>
      <category>3dprinting</category>
      <category>raspberrypipico</category>
      <category>lasertag</category>
      <category>diy</category>
    </item>
    <item>
      <title>E3D Bastion Coated Gears: A Hardened Extruder Upgrade for Bambu Lab</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Sun, 28 Jun 2026 22:06:22 +0000</pubDate>
      <link>https://dev.to/circuitrocks/e3d-bastion-coated-gears-a-hardened-extruder-upgrade-for-bambu-lab-3o01</link>
      <guid>https://dev.to/circuitrocks/e3d-bastion-coated-gears-a-hardened-extruder-upgrade-for-bambu-lab-3o01</guid>
      <description>&lt;p&gt;If you have ever pulled an extruder apart and found the once-sharp teeth of the hobb worn glassy-smooth, you already know the quiet enemy of every busy 3D printer: abrasive filament slowly eating the one part that has to grip. E3D's new Bastion Coated Gears take direct aim at that failure, and they drop straight into the Bambu Lab machines a lot of makers already own.&lt;/p&gt;
&lt;h3&gt;What E3D actually launched&lt;/h3&gt;
&lt;p&gt;Bastion is a drop-in gear-and-hobb upgrade kit for Bambu Lab desktop printers, with stated compatibility across the X1C, X1E, P1P, and P1S. Instead of the standard hardened parts, you get precision-machined steel gears finished with a Diamond-Like Carbon (DLC) coating. The pitch is simple: more grip, less wear, and a longer service life before the extruder starts skipping and under-extruding on you.&lt;/p&gt;
&lt;h3&gt;Why the coating matters&lt;/h3&gt;
&lt;p&gt;DLC is a thin, extremely hard surface layer with a low coefficient of friction. On an extruder gear that translates into two useful things. First, abrasion resistance, so glass-filled, carbon-fiber, and other gritty composites do not sand the teeth down nearly as fast. Second, a cleaner bite on the filament, since a harder, slicker tooth holds its geometry instead of rounding off. The gears and hobb are machined from hardened steel before the coating goes on, so the toughness is built into the base part, not just the surface. For anyone running production batches or selling prints, that extended service life can mean fewer surprise extruder strip-downs in the middle of a long job.&lt;/p&gt;
&lt;h3&gt;Build it yourself&lt;/h3&gt;
&lt;p&gt;This is a weekend-friendly upgrade rather than a full teardown. To swap the gears you will want a set of metric hex keys, a small circlip or E-clip plier depending on your model, a bit of patience for the spring-loaded idler, and ideally a fresh PTFE-lined path while you are in there. Reset your extruder steps or run an extrusion-multiplier calibration afterward, because a sharper hobb can change how much filament actually gets pulled. If you mostly print abrasive materials, a coated gearset is one of the cheaper ways to stop chasing intermittent extrusion faults. Compared to replacing a whole extruder or, worse, scrapping failed prints, a single hardened upgrade pays for itself fast, and the install is reversible if you ever want to go back to stock parts.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/e3d-bastion-coated-gears-a-hardened-extruder-upgrade-for-bambu-lab" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3dprinting #3dprinted #maker #diy #circuitrocks
&lt;/h1&gt;

</description>
      <category>3dprinting</category>
      <category>bambulab</category>
      <category>e3d</category>
      <category>extruder</category>
    </item>
    <item>
      <title>FGRFMesh Brings Open Sub-GHz Mesh Networking to ESP32 &amp; STM32</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Sat, 27 Jun 2026 22:06:25 +0000</pubDate>
      <link>https://dev.to/circuitrocks/fgrfmesh-brings-open-sub-ghz-mesh-networking-to-esp32-stm32-2c61</link>
      <guid>https://dev.to/circuitrocks/fgrfmesh-brings-open-sub-ghz-mesh-networking-to-esp32-stm32-2c61</guid>
      <description>&lt;p&gt;Walk through any modern warehouse or factory floor and you'll find the airwaves packed shoulder to shoulder — handheld scanners, cameras, access points, and a hundred connected gadgets all elbowing for the same Wi-Fi channels. That congestion is quietly pushing a whole wave of makers and embedded developers toward a quieter neighborhood: the sub-GHz bands. FGRFMesh, a new open mesh platform from Factorial Robotics, is one of the clearest signs yet that hobbyist-friendly sub-GHz networking is having a moment.&lt;/p&gt;
&lt;h3&gt;What the project actually is&lt;/h3&gt;
&lt;p&gt;FGRFMesh is an open communication platform built specifically for sub-GHz embedded work. It runs in the 868 MHz band today, with 433 MHz, 915 MHz, and even LoRa and UWB on the roadmap. Instead of locking you into a proprietary radio module, it leans into openness and easy integration. It ships in two flavors: an ESP32 OLED development module for bench prototyping and debugging, and an STM32 module in the familiar XBee form factor that drops straight into existing XBee carrier boards.&lt;/p&gt;
&lt;h3&gt;The technical takeaway&lt;/h3&gt;
&lt;p&gt;The clever part is how approachable the mesh feels. You talk to nodes through XBee-style UART API packets and AT commands, so anyone who has used a commercial radio module will feel at home immediately. Routing runs on a modified AODV (Ad hoc On-Demand Distance Vector) protocol, and built-in RSSI reporting plus remote diagnostics make debugging far less painful. Early tests show roughly 20 kbps throughput across both direct device-to-device links and multi-hop routed paths — plenty for telemetry, control commands, and diagnostics.&lt;/p&gt;
&lt;h3&gt;Build it yourself&lt;/h3&gt;
&lt;p&gt;Want to experiment with sub-GHz mesh on your own bench? Reach for an ESP32 board with an onboard OLED, an 868 MHz radio (an SX1276 or RFM69-class module is a natural starting point), and a USB connection for flashing and serial debugging. If you're designing for a product, an STM32 in XBee form factor keeps you compatible with off-the-shelf carrier hardware. A logic analyzer and the XCTU testing utility round out a setup that lets you watch packets hop in real time.&lt;/p&gt;
&lt;h3&gt;What to try next&lt;/h3&gt;
&lt;p&gt;If a resilient, license-free wireless link sounds like the missing piece in your next sensor swarm or robot fleet, sub-GHz mesh is well worth a weekend of tinkering. Pricing for FGRFMesh hasn't landed yet, but the bigger lesson stands: open, AODV-style mesh on cheap sub-GHz radios is now firmly within reach for makers, not just industrial integrators.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/fgrfmesh-brings-open-sub-ghz-mesh-networking-to-esp32-stm32" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  esp32 #esp8266 #iot #wifi #circuitrocks
&lt;/h1&gt;

</description>
      <category>subghz</category>
      <category>meshnetwork</category>
      <category>esp32</category>
      <category>stm32</category>
    </item>
    <item>
      <title>E3D Bastion Coated Gears Toughen Up Your Bambu Lab Extruder</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Fri, 26 Jun 2026 22:09:28 +0000</pubDate>
      <link>https://dev.to/circuitrocks/e3d-bastion-coated-gears-toughen-up-your-bambu-lab-extruder-90m</link>
      <guid>https://dev.to/circuitrocks/e3d-bastion-coated-gears-toughen-up-your-bambu-lab-extruder-90m</guid>
      <description>&lt;p&gt;Got a Saturday afternoon and a Bambu Lab that's started skipping or clicking under abrasive filament? This is the kind of small, satisfying upgrade you can knock out before dinner. E3D just dropped its Bastion Coated Gears, a hardened steel gear-and-hobb set built to outlast the stock drive parts when you're feeding glow, carbon-fiber, or glass-filled materials through your hotend.&lt;/p&gt;
&lt;h3&gt;What E3D actually built&lt;/h3&gt;
&lt;p&gt;The set pairs precision-machined hardened steel gears with E3D's Diamond-Like Carbon (DLC) coating, a slick, ultra-hard surface treatment borrowed from the cutting-tool world. The result is a drive gear and hobb that grip filament cleanly while shrugging off the grinding wear that chews up softer brass and uncoated steel. Because the teeth stay sharp, the extruder keeps applying consistent pressure to the filament instead of slowly rounding off and slipping. They're cut to drop into the Bambu Lab X1C, X1E, P1P, and P1S extruders, so most of the popular desktop lineup is covered without any frame or firmware changes.&lt;/p&gt;
&lt;h3&gt;Parts and cost reality&lt;/h3&gt;
&lt;p&gt;This is an extruder internals swap, not a full toolhead rebuild, so the shopping list is short:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Bastion hardened gear and hobb set itself&lt;/li&gt;
&lt;li&gt;A set of hex keys and a small spring hook&lt;/li&gt;
&lt;li&gt;A clean, well-lit workspace and maybe 30 to 45 minutes&lt;/li&gt;
&lt;li&gt;Optional: a few grams of throwaway filament to re-tune flow afterward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you've already done a nozzle change on your machine, you have the skills for this. The real payoff is longevity: abrasive composites are notorious for rounding off extruder teeth within a few spools, and a DLC-hardened set buys you a lot more printing hours before grip starts to slip. For anyone running functional prints in tough engineering filaments, that means fewer failed jobs and less time chasing under-extrusion gremlins.&lt;/p&gt;
&lt;h3&gt;Spend your Sunday dialing it in&lt;/h3&gt;
&lt;p&gt;Pop the old gears out, seat the Bastion set, and reassemble carefully, watching the gear alignment. Then run an extrusion-calibration print and a quick e-steps check to confirm the new teeth are biting consistently. By the end of the weekend you'll have a printer that handles the gritty filaments your stock gears quietly hated, plus a much better feel for how your extruder actually grips and pulls. Not bad for an afternoon's work in the workshop.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/e3d-bastion-coated-gears-toughen-up-your-bambu-lab-extruder" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3dprinting #3dprinted #maker #diy #circuitrocks
&lt;/h1&gt;

</description>
      <category>3dprinting</category>
      <category>bambulab</category>
      <category>e3d</category>
      <category>extruder</category>
    </item>
    <item>
      <title>ESP32 OLED Mini Shooter Game: Full Beginner Tutorial</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Fri, 26 Jun 2026 09:21:13 +0000</pubDate>
      <link>https://dev.to/circuitrocks/esp32-oled-mini-shooter-game-full-beginner-tutorial-3784</link>
      <guid>https://dev.to/circuitrocks/esp32-oled-mini-shooter-game-full-beginner-tutorial-3784</guid>
      <description>&lt;p&gt;Want to turn a small ESP32 board into a mini arcade game you can actually play? This &lt;strong&gt;ESP32 OLED Mini Shooter Game&lt;/strong&gt; uses a 128x64 OLED display and two push buttons to create a simple shooter experience. The player moves left and right, bullets fire upward, and enemies fall from the top of the screen. It is a small project, but it already feels like a real handheld game once the display starts updating.&lt;/p&gt;

&lt;p&gt;This build is a great next step after basic OLED and button tutorials. Instead of only printing text or drawing one shape, the code manages several moving objects at the same time. It tracks the player, bullets, enemies, collisions, and game-over state.&lt;/p&gt;

&lt;p&gt;The screen is divided into a simple grid. The 128x64 OLED becomes a 16x8 playfield, where each tile is 8x8 pixels. This makes object movement easier to understand because the player, enemies, and bullets move by grid position instead of raw pixel math.&lt;/p&gt;

&lt;h3&gt;Why build it?&lt;/h3&gt;

&lt;p&gt;This project teaches interactive programming on real hardware. The ESP32 reads button input, updates game objects, checks collisions, and draws the next frame on the OLED. That is much more active than a normal sensor display project.&lt;/p&gt;

&lt;p&gt;It also teaches timing without blocking the whole game flow. The code uses &lt;code&gt;millis()&lt;/code&gt; to control when bullets and enemies update, so they can move at different speeds. This is useful because many embedded projects need timed actions without stopping everything else.&lt;/p&gt;

&lt;h3&gt;What you'll learn&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ESP32 OLED display control&lt;/strong&gt; - drawing text, squares, circles, and game objects on an SSD1306 screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom I2C pins&lt;/strong&gt; - using &lt;code&gt;Wire.begin(5, 19)&lt;/code&gt; so the OLED uses GPIO5 for SDA and GPIO19 for SCL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Button input handling&lt;/strong&gt; - reading two push buttons for left and right movement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debounce logic&lt;/strong&gt; - preventing one press from being counted many times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grid-based game design&lt;/strong&gt; - turning a 128x64 screen into a simple 16x8 game map.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Game object arrays&lt;/strong&gt; - storing multiple bullets and enemies with active/inactive states.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timer-based updates&lt;/strong&gt; - using &lt;code&gt;millis()&lt;/code&gt; to move bullets and enemies at controlled intervals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collision checking&lt;/strong&gt; - detecting when a bullet and enemy share the same grid position.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Difficulty scaling&lt;/strong&gt; - making enemies faster by slowly reducing their update interval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Game-over handling&lt;/strong&gt; - stopping the game loop and showing a final screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;What you'll need&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/esp32-dev-board-ch9102-30-pin-micro-usb/" rel="noopener noreferrer"&gt;ESP32 Dev Board (CH9102, 30-pin micro USB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/oled-0-96-128x32-i2c/" rel="noopener noreferrer"&gt;0.96 inch I2C OLED display (SSD1306, 128x64)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/button-colorful-round-tactile-switch-assortment-15-pack/" rel="noopener noreferrer"&gt;Tactile push buttons (2 pieces)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/breadboard-400-tie-point-interlocking-solderless-crystal/" rel="noopener noreferrer"&gt;400-tie-point breadboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/jumper-wires-dupont-line-10-20-30-cm-arduino-compatible/" rel="noopener noreferrer"&gt;Dupont jumper wires&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.circuit.rocks/parts/circuitrocks-usb-cable-type-c-type-b-to-type-a-male-for-arduino-uno-mega/" rel="noopener noreferrer"&gt;USB cable for programming the ESP32&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The buttons use the ESP32's internal pull-up resistors - each button connects from its GPIO pin to GND, so you do not need extra external resistors.&lt;/p&gt;

&lt;h3&gt;Wiring connections&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;OLED to ESP32:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VCC to 3.3V&lt;/li&gt;
&lt;li&gt;GND to GND&lt;/li&gt;
&lt;li&gt;SDA to GPIO 5&lt;/li&gt;
&lt;li&gt;SCL to GPIO 19&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Left button:&lt;/strong&gt; one leg to GPIO 4, the other to GND.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Right button:&lt;/strong&gt; one leg to GPIO 22, the other to GND.&lt;/p&gt;

&lt;h3&gt;Library setup&lt;/h3&gt;

&lt;p&gt;In the Arduino IDE: &lt;strong&gt;Sketch → Include Library → Manage Libraries&lt;/strong&gt;, search for &lt;strong&gt;Adafruit SSD1306&lt;/strong&gt; and install it. The IDE may also ask for &lt;strong&gt;Adafruit GFX Library&lt;/strong&gt; - install both. The built-in Wire library handles I2C and is already included.&lt;/p&gt;

&lt;p&gt;After installing the libraries, select the correct ESP32 board and port, then open the Serial Monitor at &lt;strong&gt;115200 baud&lt;/strong&gt; to check startup messages.&lt;/p&gt;

&lt;h3&gt;The sketch&lt;/h3&gt;

&lt;p&gt;Paste the full sketch below into the Arduino IDE and upload. The game starts immediately on the OLED.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#include &amp;lt;Adafruit_SSD1306.h&amp;gt;
#include &amp;lt;Wire.h&amp;gt;

Adafruit_SSD1306 display(128, 64, &amp;amp;Wire, -1);

class DebounceButton {
public:
  unsigned long buttonLastAction;
  unsigned long debounceMS;
  bool isAcceptingChanges;
  int targetPin;

  DebounceButton(int pin, unsigned long debounceMS) {
    this-&amp;gt;targetPin = pin;
    this-&amp;gt;buttonLastAction = millis();
    this-&amp;gt;debounceMS = debounceMS;
    this-&amp;gt;isAcceptingChanges = true;
    pinMode(pin, INPUT_PULLUP);
  }

  bool CheckPress() {
    bool btnValue = digitalRead(targetPin);
    if (btnValue == LOW &amp;amp;&amp;amp;
        (millis() - buttonLastAction) &amp;gt; debounceMS &amp;amp;&amp;amp;
        isAcceptingChanges) {
      buttonLastAction = millis();
      isAcceptingChanges = false;
      return true;
    }
    if (btnValue == HIGH &amp;amp;&amp;amp;
        !isAcceptingChanges &amp;amp;&amp;amp;
        (millis() - buttonLastAction) &amp;gt; debounceMS) {
      isAcceptingChanges = true;
    }
    return false;
  }
};

DebounceButton BTL(4, 200);
DebounceButton BTR(22, 200);

const int MAX_BULLETS = 5;
const int MAX_ENEMIES = 4;
const int GRID_W = 16;
const int GRID_H = 8;

unsigned long BULLET_INTERVAL = 750;
unsigned long ENEMY_INTERVAL  = 1500;

class Bullet { public: uint8_t bx, by; bool active; Bullet(){bx=0; by=0; active=false;} };
class Enemy  { public: uint8_t ex, ey; bool active; Enemy(){ex=0; ey=0; active=false;} };

Bullet playersBullets[MAX_BULLETS];
Enemy  enemies[MAX_ENEMIES];

int px = 4;
int py = 6;
unsigned long lastBulletTick = 0;
unsigned long lastEnemyTick  = 0;
bool gameOver = false;

void spawnBullet() {
  for (int i = 0; i &amp;lt; MAX_BULLETS; i++) {
    if (!playersBullets[i].active) {
      playersBullets[i].bx = px;
      playersBullets[i].by = py - 1;
      playersBullets[i].active = true;
      return;
    }
  }
}

void updateBullets() {
  for (int i = 0; i &amp;lt; MAX_BULLETS; i++) {
    if (!playersBullets[i].active) continue;
    if (playersBullets[i].by == 0) playersBullets[i].active = false;
    else playersBullets[i].by--;
  }
}

void drawBullets() {
  for (int i = 0; i &amp;lt; MAX_BULLETS; i++) {
    if (playersBullets[i].active) {
      display.fillRect(playersBullets[i].bx*8+2, playersBullets[i].by*8, 4, 6, WHITE);
    }
  }
}

void spawnEnemy() {
  for (int i = 0; i &amp;lt; MAX_ENEMIES; i++) {
    if (!enemies[i].active) {
      enemies[i].ex = random(0, GRID_W);
      enemies[i].ey = 0;
      enemies[i].active = true;
      return;
    }
  }
}

void updateEnemies() {
  for (int i = 0; i &amp;lt; MAX_ENEMIES; i++) {
    if (!enemies[i].active) continue;
    enemies[i].ey++;
    if (enemies[i].ey &amp;gt;= GRID_H) { gameOver = true; return; }
  }
}

void drawEnemies() {
  for (int i = 0; i &amp;lt; MAX_ENEMIES; i++) {
    if (enemies[i].active) {
      display.drawCircle(enemies[i].ex*8+4, enemies[i].ey*8+4, 3, WHITE);
    }
  }
}

void checkCollisions() {
  for (int i = 0; i &amp;lt; MAX_ENEMIES; i++) {
    if (!enemies[i].active) continue;
    for (int b = 0; b &amp;lt; MAX_BULLETS; b++) {
      if (!playersBullets[b].active) continue;
      if (playersBullets[b].bx == enemies[i].ex &amp;amp;&amp;amp; playersBullets[b].by == enemies[i].ey) {
        enemies[i].active = false;
        playersBullets[b].active = false;
      }
    }
  }
}

void setup() {
  Serial.begin(115200);
  Wire.begin(5, 19);
  randomSeed(analogRead(0));
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("ERR LOADING LCD SCREEN");
  }
  display.clearDisplay();
  display.display();
}

void loop() {
  if (gameOver) {
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(28, 28);
    display.println("GAME OVER");
    display.display();
    return;
  }

  unsigned long now = millis();
  bool leftButton  = BTL.CheckPress();
  bool rightButton = BTR.CheckPress();

  if (rightButton) px++;
  else if (leftButton) px--;
  if (px &amp;gt; GRID_W - 1) px = GRID_W - 1;
  if (px &amp;lt; 0) px = 0;

  if (now - lastBulletTick &amp;gt;= BULLET_INTERVAL) {
    lastBulletTick = now;
    spawnBullet();
    updateBullets();
  }

  if (now - lastEnemyTick &amp;gt;= ENEMY_INTERVAL) {
    lastEnemyTick = now;
    spawnEnemy();
    updateEnemies();
    if (ENEMY_INTERVAL &amp;gt; 300) ENEMY_INTERVAL -= 5;
  }

  checkCollisions();

  display.clearDisplay();
  display.fillRect(px*8, py*8, 8, 8, WHITE);
  drawBullets();
  drawEnemies();
  display.display();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;How it works&lt;/h3&gt;

&lt;p&gt;The game screen is treated as a grid instead of raw pixels - 16 columns by 8 rows, each cell 8x8 pixels. The player position is stored as &lt;code&gt;px&lt;/code&gt; and &lt;code&gt;py&lt;/code&gt;, then drawn as an 8x8 filled square.&lt;/p&gt;

&lt;p&gt;The buttons control only the player's horizontal movement. Pressing the right button increases &lt;code&gt;px&lt;/code&gt;; pressing the left button decreases it. The code limits the value so the player cannot move outside the screen.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;DebounceButton&lt;/code&gt; class waits a short time before accepting another change, so a mechanical button bounce does not register as multiple presses.&lt;/p&gt;

&lt;p&gt;Bullets and enemies each live in fixed-size arrays. When a slot becomes inactive, it can be reused for the next bullet or enemy. Enemies spawn at random columns on the top row and move downward. If any enemy reaches the bottom of the grid, the game changes to game-over state.&lt;/p&gt;

&lt;p&gt;Collisions are checked by comparing grid positions: if a bullet and enemy share the same x and y, both become inactive. The game gets harder over time by reducing &lt;code&gt;ENEMY_INTERVAL&lt;/code&gt;, but never below 300 ms - which keeps it playable.&lt;/p&gt;

&lt;h3&gt;Extensions&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Score counter&lt;/strong&gt; - increment on each hit, render on the OLED.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restart button&lt;/strong&gt; - one button click after game-over resets everything without the ESP32 reset button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buzzer feedback&lt;/strong&gt; - short beep for fire, different tone for hit, lower tone for game over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3D-printed case&lt;/strong&gt; - mount the ESP32, OLED, and buttons in a small enclosure for a portable mini console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full tutorial with Fritzing diagram and demo video lives on our learn site: &lt;a href="https://learn.circuit.rocks/esp32-based-game" rel="noopener noreferrer"&gt;ESP32 OLED Mini Shooter Game&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://learn.circuit.rocks/esp32-based-game" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  arduino #arduinoprojects #electronics #embedded #circuitrocks
&lt;/h1&gt;

</description>
      <category>esp32</category>
      <category>oled</category>
      <category>arduino</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>This Giant 3D-Printed Spiral Lamp Runs WLED on an ESP32-C3</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Thu, 25 Jun 2026 22:07:14 +0000</pubDate>
      <link>https://dev.to/circuitrocks/this-giant-3d-printed-spiral-lamp-runs-wled-on-an-esp32-c3-3eje</link>
      <guid>https://dev.to/circuitrocks/this-giant-3d-printed-spiral-lamp-runs-wled-on-an-esp32-c3-3eje</guid>
      <description>&lt;p&gt;Picture a quiet evening room with a tall, twisting column of light in the corner, its diffuser segments breathing slow waves of color from floor to ceiling. That is the effect maker Basti85 chased with a large 3D-printed spiral lamp, and the glow is driven entirely by an addressable LED strip and a tiny microcontroller hiding inside the base.&lt;/p&gt;
&lt;h3&gt;What got built&lt;/h3&gt;
&lt;p&gt;The project is a floor-standing spiral lamp assembled from stacked printed segments. The structural body prints in standard PLA, while the light-shaping diffuser rings print in transparent filament so the LEDs underneath bleed into a soft, continuous gradient rather than sharp dots. An addressable LED strip spirals up the inside of the column, and because every pixel is individually controllable, the whole tower can sweep through animations, react to music, or settle into a single warm tone for the evening.&lt;/p&gt;
&lt;h3&gt;How it comes together&lt;/h3&gt;
&lt;p&gt;The brains of the build is an ESP32-C3, with an ESP8266 D1 mini listed as a fallback if that is what is already on your bench. Both run WLED, the popular open-source firmware that turns an ESP board into a Wi-Fi-controlled lighting hub you can drive from a phone browser or fold into a smart-home setup. The version-two release pairs the printable files with a full WLED configuration walkthrough, so the fiddly part of mapping the strip length, setting the right LED type, and saving presets is documented instead of guesswork. Print the body, print the diffusers, thread the strip, flash the firmware, and the lamp is effectively a giant programmable pixel.&lt;/p&gt;
&lt;h3&gt;Make one yourself&lt;/h3&gt;
&lt;p&gt;The shopping list is refreshingly short: an ESP32-C3 (or ESP8266), an addressable LED strip such as WS2812B, a 5V supply sized to the pixel count, and a couple of spools of PLA. WLED handles the software side for free, and the printed parts mean the enclosure costs only filament and time. A quick tip before you order: count your LEDs first, because a tall spiral can pull several amps at full white, and an undersized supply is the most common reason a first WLED build flickers or browns out. If you have wanted a project that is equal parts 3D printing and embedded electronics, a spiral lamp is a satisfying weekend-scale build that ends with something genuinely nice to look at every night.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/this-giant-3d-printed-spiral-lamp-runs-wled-on-an-esp32-c3" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  esp32 #esp8266 #iot #wifi #circuitrocks
&lt;/h1&gt;

</description>
      <category>esp32c3</category>
      <category>wled</category>
      <category>3dprinting</category>
      <category>addressableled</category>
    </item>
    <item>
      <title>Circuit.Rocks Is Now an Official JSumo Distributor in the Philippines</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Thu, 25 Jun 2026 09:23:29 +0000</pubDate>
      <link>https://dev.to/circuitrocks/circuitrocks-is-now-an-official-jsumo-distributor-in-the-philippines-3ip9</link>
      <guid>https://dev.to/circuitrocks/circuitrocks-is-now-an-official-jsumo-distributor-in-the-philippines-3ip9</guid>
      <description>&lt;p&gt;It's official: &lt;a href="https://www.jsumo.com/dealers" rel="noopener noreferrer"&gt;&lt;strong&gt;JSumo&lt;/strong&gt;&lt;/a&gt; has added Circuit.Rocks to its global Distributors page as the recognized Philippines dealer. That listing is the culmination of our first partnership order with the JSumo team in Istanbul — and it means every JSumo robotics line we stock, from sumo and mini-sumo competition kits to the &lt;strong&gt;XMotion&lt;/strong&gt; all-in-one controller and the &lt;strong&gt;JS40F / JS60F&lt;/strong&gt; infrared sensors, is now available locally with Philippine peso pricing and same-day Manila cutoff.&lt;/p&gt;

&lt;p&gt;For Filipino robotics teams, schools, and competition coaches: this drops the lead time on JSumo gear from 2-3 weeks of international shipping (with customs surprises) down to in-country fulfillment. Replacements for tournament-week breakage no longer require an emergency international order.&lt;/p&gt;

&lt;h3&gt;What JSumo makes — and what we stock&lt;/h3&gt;

&lt;p&gt;JSumo is a Turkish robotics specialist that has been building competition-grade hardware since 2012. Their catalog is purpose-built for robotics sport: sumo, mini sumo, micro sumo, and line follower categories. Browse the full Circuit.Rocks &lt;a href="https://circuit.rocks/collections/JSUMO" rel="noopener noreferrer"&gt;JSumo collection&lt;/a&gt; for everything in stock.&lt;/p&gt;

&lt;p&gt;Highlights of what's available locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sumo and mini sumo chassis + mechanical kits&lt;/strong&gt; — competition-rated frames built for the 500 g, 1 kg, and 3 kg weight classes. Pre-cut metal plates, mounting hardware, and the correct stack of standoffs included.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JS40F and JS60F infrared distance sensors&lt;/strong&gt; — digital range sensors with background-suspension processing. Critical for sumo opponent detection without false-triggering on the dohyo lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XMotion all-in-one Arduino-compatible controller&lt;/strong&gt; — combines microcontroller, dual motor driver, voltage regulator, and sensor headers on one board. Cuts the wiring footprint of a sumo build roughly in half.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DC gear motors and silicone wheel sets&lt;/strong&gt; — competition-spec motors paired with traction-tuned silicone tyres. The wheel sets are also sold as replacement tyres for teams running multiple events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line follower chassis and infrared line sensor arrays&lt;/strong&gt; — for school-level line follower competitions, including the JSumo IR sensor brackets that bolt onto their chassis without extra adapters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Battery management circuits, LiPo batteries (1S through 6S), and JST connectors&lt;/strong&gt; — the full competition-grade power chain, including indicators and panel meters.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Why this matters for Philippine robotics teams&lt;/h3&gt;

&lt;p&gt;Robotics sport in the Philippines runs on tight deadlines. National qualifiers, school-level meets, and the larger Asia-Pacific tournaments don't wait for international parcels. Having JSumo gear stocked in Manila means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teams can rebuild a broken robot the day before a competition without scrambling.&lt;/li&gt;
&lt;li&gt;Coaches can spec a tournament-ready stack from one in-country supplier, with consistent pricing across orders.&lt;/li&gt;
&lt;li&gt;Schools running structured robotics programs can place class POs without having to consolidate shipments.&lt;/li&gt;
&lt;li&gt;Customer inquiries originating in the Philippines will now be redirected to us directly by JSumo's HQ for localized fulfillment and support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Read more&lt;/h3&gt;

&lt;p&gt;For the deeper product tour we published when we first introduced JSumo to the Circuit.Rocks lineup, see our earlier feature: &lt;a href="https://blog.circuit.rocks/new-jsumo-products-circuitrocks-student-robotics-projects" rel="noopener noreferrer"&gt;New JSumo Products at Circuit.Rocks: Student Robotics Projects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To verify the listing, visit JSumo's official Distributors page: &lt;a href="https://www.jsumo.com/dealers" rel="noopener noreferrer"&gt;jsumo.com/dealers&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/circuit-rocks-is-now-an-official-jsumo-distributor-in-the-philippines" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  robotics #robots #engineering #stem #circuitrocks
&lt;/h1&gt;

</description>
      <category>jsumo</category>
      <category>distributor</category>
      <category>philippines</category>
      <category>sumorobot</category>
    </item>
    <item>
      <title>CircuitPython 10.3.0 Alpha 3 Adds USB Audio to Your Boards</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Wed, 24 Jun 2026 22:10:47 +0000</pubDate>
      <link>https://dev.to/circuitrocks/circuitpython-1030-alpha-3-adds-usb-audio-to-your-boards-462g</link>
      <guid>https://dev.to/circuitrocks/circuitpython-1030-alpha-3-adds-usb-audio-to-your-boards-462g</guid>
      <description>&lt;p&gt;Ever wanted your microcontroller to show up on a laptop as a real USB microphone or speaker, with no extra audio hardware bolted on? That is exactly the door the newest CircuitPython alpha cracks open.&lt;/p&gt;

&lt;h3&gt;What landed in this release&lt;/h3&gt;

&lt;p&gt;CircuitPython 10.3.0-alpha.3 is a preview build on the road to the stable 10.3.0, and it leans hard into audio. The headline additions are a pair of new USB audio classes that let a board enumerate as a USB sound device, plus a resampler and a fresh I2S input stream for pulling audio straight into your code. There are also fixes for camera support, Bluetooth reliability, and a handful of filesystem quirks on web and BLE workflows. For a maker, the practical upshot is that projects which used to need a dedicated USB audio breakout can now run on the same chip already driving the rest of the build, trimming both parts count and wiring.&lt;/p&gt;

&lt;h3&gt;The technical answer, board by board&lt;/h3&gt;

&lt;p&gt;Three pieces do the heavy lifting here. &lt;code&gt;usb_audio.USBMicrophone&lt;/code&gt; and &lt;code&gt;usb_audio.USBSpeaker&lt;/code&gt; turn the board into an audio source or sink over USB, so a connected computer treats it like a plug-in mic or speaker. &lt;code&gt;audiospeed.Resampler&lt;/code&gt; handles sample-rate conversion in software. The new &lt;code&gt;audio_i2sin&lt;/code&gt; input stream behaves like any other audio source, but it is currently limited to Espressif and RP2xxx chips, meaning your ESP32 family or RP2040 and RP2350 boards.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stable ports:&lt;/strong&gt; SAMD21/SAMx5x, Espressif ESP32 line, Nordic nRF52, Raspberry Pi RP2040 and RP2350, and STM32F4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Still alpha:&lt;/strong&gt; ESP32-P4, Broadcom (Pi 4 and Zero 2 W), NXP i.MX RT10xx, SiLabs MG24, and the multiplatform Zephyr port.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New boards:&lt;/strong&gt; PCBCupid Glyph Mini 2040, PCBCupid Glyph S3, and the Waveshare ESP32-S3-Tiny.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Try it on your bench&lt;/h3&gt;

&lt;p&gt;Because this is an alpha, expect rough edges and keep it off anything mission-critical. Grab the firmware that matches your board from the downloads page on circuitpython.org, flash it, and you are ready to experiment. The browser editor at code.circuitpython.org or the Mu editor both give you a REPL with zero setup. If you have an RP2350 or an ESP32-S3 sitting in a drawer, this is a fun weekend excuse to wire up an I2S mic and watch your board appear as a USB audio device.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/circuitpython-10-3-0-alpha-3-adds-usb-audio-to-your-boards" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  esp32 #esp8266 #iot #wifi #circuitrocks
&lt;/h1&gt;

</description>
      <category>circuitpython</category>
      <category>usbaudio</category>
      <category>esp32</category>
      <category>rp2350</category>
    </item>
    <item>
      <title>Acid Drip: Build a Portable RP2040 TB-303 Acid Synth Clone</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Tue, 23 Jun 2026 22:07:46 +0000</pubDate>
      <link>https://dev.to/circuitrocks/acid-drip-build-a-portable-rp2040-tb-303-acid-synth-clone-4kc8</link>
      <guid>https://dev.to/circuitrocks/acid-drip-build-a-portable-rp2040-tb-303-acid-synth-clone-4kc8</guid>
      <description>&lt;p&gt;Want to clone one of the most iconic synths in electronic music without remortgaging your house? Here's the shopping list: an RP2040 board (a Raspberry Pi Pico works fine), a 320×240 ILI9341 TFT display, sixteen Cherry MX switches, three potentiometers, a lithium-ion cell with a charge-and-boost circuit, and a pair of custom PCBs. That's roughly the bill of materials maker Marcus Dunn pulled together to build &lt;em&gt;Acid Drip&lt;/em&gt;, a pocketable take on the legendary Roland TB-303.&lt;/p&gt;
&lt;h3&gt;What Acid Drip actually is&lt;/h3&gt;
&lt;p&gt;The original TB-303 earned cult status in house and techno for its squelchy, resonant basslines — and a price tag to match its legend. Dunn skipped the analog rabbit hole entirely. Rather than rebuilding the op-amps, transistors, and finicky filters that defined the old hardware, he recreated the &lt;em&gt;sound&lt;/em&gt; in software and wrapped it in an interface designed for fast, hands-on experimentation. The result is a clone that's far easier to play than the temperamental original, while still nailing that unmistakable acid character.&lt;/p&gt;
&lt;h3&gt;How it works under the hood&lt;/h3&gt;
&lt;p&gt;Audio synthesis runs on the RP2040 using the Mozzi library, and the chip's two cores split the load: one keeps the bass voice and drum machine generating sound while the other handles sequencing and display updates. Three pots give live control over cutoff, resonance, and decay, so you can sculpt the filter while a pattern plays. A built-in drum section adds eight instruments across sixteen rhythm presets, there's a 3.5 mm output, and a sync input locks it to external gear. Patterns and settings persist in EEPROM.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Brain:&lt;/strong&gt; dual-core RP2040 running Mozzi firmware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controls:&lt;/strong&gt; 16 Cherry MX keys (sequencer steps plus menus) and 3 pots&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power:&lt;/strong&gt; Li-ion cell with charge and boost circuit for true portability&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Worth a weekend?&lt;/h3&gt;
&lt;p&gt;Because the build leans on through-hole parts and custom PCBs, it's approachable for anyone with basic soldering chops — no surface-mount wizardry required. The keys double as sequencer steps and menu buttons, so accents, glides, note-walk modes, and a stash of hidden acid-house presets are all a tap away. If you've ever wanted a portable acid machine that's genuinely fun to play, this is a brilliant place to start.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/acid-drip-build-a-portable-rp2040-tb-303-acid-synth-clone" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  audiodiy #synth #maker #electronics #circuitrocks
&lt;/h1&gt;

</description>
      <category>rp2040</category>
      <category>raspberrypipico</category>
      <category>synthesizer</category>
      <category>diyaudio</category>
    </item>
    <item>
      <title>Circuit.Rocks Is Now an Official DFRobot Distributor in the Philippines</title>
      <dc:creator>circuitrocks</dc:creator>
      <pubDate>Tue, 23 Jun 2026 11:09:05 +0000</pubDate>
      <link>https://dev.to/circuitrocks/circuitrocks-is-now-an-official-dfrobot-distributor-in-the-philippines-58k1</link>
      <guid>https://dev.to/circuitrocks/circuitrocks-is-now-an-official-dfrobot-distributor-in-the-philippines-58k1</guid>
      <description>&lt;p&gt;&lt;a href="https://www.dfrobot.com/distributor" rel="noopener noreferrer"&gt;&lt;strong&gt;DFRobot&lt;/strong&gt;&lt;/a&gt; just listed Circuit.Rocks as one of its official Philippines distributors. That means every DFRobot product line - &lt;strong&gt;Gravity sensors&lt;/strong&gt;, &lt;strong&gt;FireBeetle&lt;/strong&gt; ESP32 boards, &lt;strong&gt;LattePanda&lt;/strong&gt; x86 single-board computers, &lt;strong&gt;Boson&lt;/strong&gt; STEM kits, &lt;strong&gt;HuskyLens&lt;/strong&gt; AI vision sensor, and the full &lt;strong&gt;Fermion&lt;/strong&gt; module ecosystem - is now stocked locally with same-day Manila shipping.&lt;/p&gt;

&lt;h3&gt;Why this matters for Filipino makers&lt;/h3&gt;

&lt;p&gt;Until now, getting DFRobot parts in the Philippines usually meant 2-4 weeks of waiting for an international order, paying customs on top of the shipping, and gambling on whether the part you needed was still in stock by the time it arrived. With Circuit.Rocks as an in-country distributor, the lead time drops to same-day cutoff at 4 PM, the prices are in pesos with no surprise import fees, and stock levels are visible live on the product pages.&lt;/p&gt;

&lt;p&gt;For students putting together thesis projects, engineering teams building prototypes, and small Philippine companies running IoT pilots, that's the difference between starting on Monday and starting two weeks from now.&lt;/p&gt;

&lt;h3&gt;What's in the DFRobot ecosystem&lt;/h3&gt;

&lt;p&gt;If you've worked with DFRobot before, you know they cover almost every modern maker workflow. Here's the short tour of what's now available locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gravity series&lt;/strong&gt; - I2C and analog plug-and-play sensors with standardized 3-pin or 4-pin connectors. The cable cuts your prototyping time in half compared with bare breakouts. Common pulls: BME280 environment, SEN0177 PM2.5 air quality, SEN0192 turbidity, BMI160 IMU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FireBeetle&lt;/strong&gt; - low-power ESP32 dev boards optimized for battery projects. The FireBeetle 2 ESP32-S3 is the current go-to for long-runtime IoT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LattePanda&lt;/strong&gt; - x86 Windows-capable single-board computers. A favorite for industrial IoT gateways, AI-edge inference, and any project that needs a real Windows toolchain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HuskyLens&lt;/strong&gt; - all-in-one AI vision sensor with on-device face / object / line / tag recognition. No model training required for common use cases. Drops into Arduino, microbit, or Raspberry Pi projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boson + Boson Pro&lt;/strong&gt; - magnetic-snap STEM blocks designed for K-12 STEM classrooms. Schools running structured robotics curricula find these much faster to teach with than loose components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fermion modules&lt;/strong&gt; - PCB-only versions of sensors and breakouts that fit into custom enclosures. Same chips as Gravity, smaller footprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;How to order&lt;/h3&gt;

&lt;p&gt;DFRobot products are listed across the same store you already know. Search "DFRobot" on &lt;a href="https://circuit.rocks" rel="noopener noreferrer"&gt;circuit.rocks&lt;/a&gt; or look in the &lt;a href="https://circuit.rocks/collections/sensors" rel="noopener noreferrer"&gt;sensors&lt;/a&gt;, &lt;a href="https://circuit.rocks/collections/esp32-esp8266-module-development-board" rel="noopener noreferrer"&gt;ESP32&lt;/a&gt;, and &lt;a href="https://circuit.rocks/collections/kits" rel="noopener noreferrer"&gt;kits&lt;/a&gt; collections. All standard Circuit.Rocks shipping rules apply: free shipping above ₱2,000, Manila same-day cutoff at 4 PM, and school / class POs welcome.&lt;/p&gt;

&lt;p&gt;For anyone running classroom programs, the &lt;strong&gt;Boson Pro STEM kits&lt;/strong&gt; can be ordered as classroom bundles. Email the contact line for bulk pricing.&lt;/p&gt;

&lt;h3&gt;Verify the listing&lt;/h3&gt;

&lt;p&gt;You can see Circuit.Rocks on the official DFRobot distributor page here: &lt;a href="https://www.dfrobot.com/distributor" rel="noopener noreferrer"&gt;dfrobot.com/distributor&lt;/a&gt;. Filter by Asia → Philippines.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://blog.circuit.rocks/circuit-rocks-is-now-an-official-dfrobot-distributor-in-the-philippines" rel="noopener noreferrer"&gt;blog.circuit.rocks&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  sensors #iot #electronics #dataacquisition #circuitrocks
&lt;/h1&gt;

</description>
      <category>dfrobot</category>
      <category>distributor</category>
      <category>philippines</category>
      <category>gravitysensors</category>
    </item>
  </channel>
</rss>
