Open Electronics

Subscribe to Open Electronics потік Open Electronics
Open source hardware, projects and electronics
Оновлене: 1 година 7 хв тому

UNO Media Carrier: cameras, displays and audio for the UNO Q

Срд, 10/07/2026 - 16:00

The UNO Media Carrier is a carrier board that brings two MIPI-CSI camera inputs, one MIPI-DSI display output and three 3.5 mm audio jacks to compatible host boards. The connection runs through the high-speed JMEDIA and JMISC connectors, so the board stays in the UNO form factor. That way the multimedia capabilities of the UNO Q and VENTUNO Q are extended without touching the host board’s headers directly.

The strong point lies in the standard connectors. Two 22-pin MIPI-CSI ports accept IMX219 cameras, for example the Camera Module 2, and open the way to computer vision applications with dual cameras. A 22-pin MIPI-DSI port, meanwhile, supports Waveshare displays, so you add an interactive visual output without any special soldering.

Arduino UNO Q board connected to a Waveshare touch display through the Media Carrier boardArduino UNO Q connected to a Waveshare MIPI DSI touch display through the Media Carrier board

On the audio side the carrier offers three separate 3.5 mm jacks: a combined microphone input and headphone output, a line out for amplifiers or powered speakers, and an ear out for connecting earphones directly. In addition, the JMEDIA and JMISC connectors have a passthrough design, so all the host board signals remain accessible for stacking additional modules or carriers.

The exposed signals: I2C, PSSI and two-voltage GPIO

Besides the multimedia connectors, the board exposes several interfaces useful to anyone who wants to integrate sensors and peripherals. There is I2C (CCI and MCU I2C4), an 8-bit PSSI parallel camera interface, the SoC GPIOs at 1.8 V and the MCU GPIOs at 3.3 V. This dual voltage reflects the architecture of the UNO Q, which pairs an STM32U585 microcontroller with an application processor.

For those who want to get started right away, the 8-megapixel camera module with a Sony IMX219 sensor is the right component to pair with the two MIPI-CSI inputs. The module with the IMX219 sensor for Raspberry Pi 5 covers exactly that kind of application, from surveillance to embedded computer vision.

Power, dimensions and operating temperature

The VIN (DC_IN) supply accepts 7 to 24 V DC through the 4-pin J13 header. The VCOIN input, on the other hand, is 3.0 V DC for the host board’s RTC, with a maximum of 3.6 V, and goes through the 4-pin J10 header. The dimensions are 68.58 x 53.34 mm, so the form factor stays UNO, and the temperature range goes from -10 to 60 degrees. The board also has room for 4 RGB LEDs.

  • Two 22-pin MIPI-CSI connectors for IMX219 cameras
  • One 22-pin MIPI-DSI connector for Waveshare displays
  • Three 3.5 mm audio jacks: mic/headphones, line out, ear out
  • JMEDIA and JMISC connectors, 60-pin female, in passthrough
  • I2C (CCI and MCU I2C4) and 8-bit PSSI
  • SoC GPIOs at 1.8 V and MCU GPIOs at 3.3 V

The list price is 19.25 dollars, or 19.89 euros including VAT, on the Arduino store. For those who want to start from scratch with the host board, the complete kit with accessories for the UNO Q 4GB covers the starting point. The complete kit with accessories for the UNO Q 4GB combines the STM32U585 microcontroller with the application processor, that is, the same combination that the Media Carrier sets out to extend.

On the software side Arduino provides a User Manual and a Kiosk Mode tutorial, which explains how to connect and configure the UNO Q and Media Carrier with a Waveshare touch display. Those who want to dig deeper will find everything on the Arduino maker site, where the manual and tutorial are collected.

Source: https://docs.arduino.cc/hardware/uno-media-carrier/

Related products

The post UNO Media Carrier: cameras, displays and audio for the UNO Q appeared first on Open Electronics.

A 1995 GPS Time Server Gets a Raspberry Pi 5 Heart Transplant

Срд, 10/07/2026 - 13:00

A TrueTime XL-AK GPS time server from 1995 is back at work, but with a new heart. The project replaces the original electronics with a Raspberry Pi 5 and a GNSS HAT, and the result is a stratum 1 NTP server for the local network. The enclosure, the 16×2 LCD display and the bicolour LED are still the ones from thirty years ago.

The board was purchased in June and received on 22 June. Sixteen days later, a similar GPS time server caused a 12-hour cellular service outage in Australia. An episode that shows how widespread these instruments were, and how much they still matter, even when they stop working.

The Raspberry Pi 5 and the GNSS module

The Raspberry Pi 5 runs Pi OS Lite and communicates with the u-blox NEO-M9N GNSS module through the GNSS HAT. The HAT software creates a bridge to transfer the NMEA sentences, which carry date and time, to gpsd and chrony. It also provides a PPS signal for precise timing.

You can also use a Raspberry Pi 5 with 1GB of RAM, at a cost of 44 dollars. The version used in the project has 4GB, but the difference is not in the memory: it is in clock stability and thermal management, which here matter more than anything else.

Configuring chrony and PPS

Chrony is configured to use the PPS refclock as the preferred source and the SHM refclock, which comes from gpsd, as a reference. The configuration includes an offset of 0.0 and a delay of 0.05 for the SHM. The PPS refclock is set with poll 3 and filter 16.

For maximum precision, the system was pushed on the clock parameters. Here are the main values of the chrony configuration:

  • maxclockerror set to 0.5
  • maxupdateskew 100.0 and makestep 1000 3
  • maxchange 0.1 1 -1 to limit sudden corrections

Thermal stability is another key point. The Raspberry Pi is configured with force_turbo, which draws about 1W more continuously, and with a fan running at a constant duty cycle. The fan is set to 50% duty cycle to reduce noise, while 75% offers slightly better performance. Thermal insulation was also added.

The original LCD display and bicolour LED are driven by the Raspberry Pi to show the server status. The LED, for example, indicates the GPS status. The NTP server then provides time synchronisation services to clients on the local network through chrony.

The project was built with VCF Midwest in mind, an event dedicated to retrocomputing. The video documenting the restoration shows the whole process, from the original board to the working NTP server. Anyone who wants to redo the work will also find the GNSS HAT software and the fan control utility, included in the Time Pi repository.

Source: https://www.youtube.com/watch?v=1T9xQy-dsQo

The post A 1995 GPS Time Server Gets a Raspberry Pi 5 Heart Transplant appeared first on Open Electronics.

XIAO Plus: More Pins Without Changing the Footprint

Срд, 10/07/2026 - 11:00

Seeed Studio has introduced two new XIAO Plus development boards, the XIAO SAMD21 Plus and the XIAO RP2040 Plus, which address the main trade-off of the XIAO boards: the limited number of pins. The new versions offer up to 30 GPIO pins, compared to the 14 on the originals, while keeping the same 21 × 17.8 mm footprint. In addition, they integrate a PMIC for Li-ion battery management, making them suitable for advanced embedded projects and battery-powered devices.

Additional pins via SMD castellated pads

The XIAO Plus boards keep the dimensions and the 2.54 mm pin header layout of the other XIAO boards. The additional connections are exposed through SMD castellated pads with a 1.27 mm pitch on the back. This design allows the board to be soldered directly onto a custom PCB, like a true System-on-Module. So, anyone designing a compact device can use the full computing power without taking up extra space.

The XIAO SAMD21 Plus has 30 GPIO pins, including 27 digital pins, 11 analog inputs, two I2C interfaces, UART, SPI, I2S and a DAC. The XIAO RP2040 Plus has 29 GPIO pins, with 26 digital pins, four analog inputs, two I2C interfaces, UART, SPI and up to 26 PWM outputs. Both double the capabilities of the previous versions, which stopped at 14 pins, without increasing the board size.

PMIC and Li-ion battery management

Both boards include a PMIC that allows a Li-ion battery to be connected directly for integrated charging and protection against current backflow. The XIAO RP2040 Plus adds a battery monitoring circuit that can be enabled via software through GPIO24, to measure the voltage through the ADC on GPIO29. This feature is designed for those developing portable devices who want to know the state of charge in real time.

The XIAO SAMD21 Plus, on the other hand, adds a programmable WS2812 RGB LED and dedicated Reset and Boot buttons. These elements make debugging and programming easier without having to solder additional pins. Support for multiple development environments, including Arduino, MicroPython, CircuitPython, TinyGo, Rust and Zephyr, makes the boards flexible for different levels of experience.

Prices and compatibility with existing projects

The new boards cost $5.90 for the XIAO SAMD21 Plus and $4.90 for the XIAO RP2040 Plus, respectively. Despite the increase in pins, the footprint remains identical to the other XIAO boards, so existing projects can be upgraded without mechanical changes. For those starting from scratch, the maker’s website offers guides and ideas on how to get the most out of these boards.

These boards are particularly useful for those who want to move from breadboard prototyping to small-batch production. The SMD castellated pads allow the board to be soldered as a module onto a custom PCB, reducing development time. Furthermore, the presence of the PMIC eliminates the need for external charging modules, simplifying the overall design.

For those looking for a board with more pins and integrated battery management, the XIAO Plus boards represent a compact and economical solution. The maker’s website collects examples and documentation to get started right away.

Source: https://www.seeedstudio.com/Seeed-Studio-XIAO-RP2040-Plus-p-6932.html

The post XIAO Plus: More Pins Without Changing the Footprint appeared first on Open Electronics.

Square Wave Generator from 2 Hz to 33.5 MHz with AVR16EB28

Втр, 10/06/2026 - 16:00

A portable square wave generator covering from 2 Hz to about 33.5 MHz, with adjustment steps of 2 Hz. The heart of the project is an AVR16EB28 microcontroller, which handles both signal generation and the user interface. Power is supplied by a LiPo battery, while an OLED display, rotary encoder, and push-button keypad provide full control. The project is by David Johnson-Davies, known for his experiments with AVR microcontrollers.

The frequency is set with precision, and the reading appears on the OLED display. The rotary encoder allows rapid variations, while the keypad is used to enter exact values. The whole thing fits in a compact enclosure, suitable for the workbench or the field. The 2 Hz resolution across the entire range is remarkable, and makes the device useful for testing audio circuits, filters, and timing.

Circuit and control with AVR16EB28

The schematic is simple: the AVR16EB28 microcontroller generates the square wave directly from a pin, with the frequency calculated in software. Control is via an OLED display, rotary encoder, and push-button keypad. The LiPo battery powers the whole system, with a regulator for a stable voltage. The project is designed to be replicated with easily available components.

Digital signal generator based on AVR16EB28The digital signal generator, based on an AVR16EB28, produces a square wave from 2 Hz to about 33.5 MHz in precise 2 Hz steps. (photo: David Johnson-Davies)

The firmware handles the 2 Hz steps and updates the display in real time. In addition, the rotary encoder allows scrolling through frequencies smoothly, while the keypad allows direct entry of a value. The code is available on the maker’s website, and includes libraries for the display and encoder. The result is a stable and repeatable device.

Construction, power, and practical use

Construction requires a PCB, which can be made with a milling machine or through an external service. Assembly is within reach of those with SMD soldering experience, since the microcontroller is in a surface-mount package. The LiPo battery connects on the back, and the front panel hosts the display, encoder, and keypad. The whole thing is compact and easily portable.

For power, a 3.7 V LiPo battery is sufficient, with a voltage regulator for the 3.3 V of the microcontroller. Consumption is low, thanks to the OLED display and efficient sleep management. Practical use is immediate: turn it on, select the frequency, and connect the output to the circuit under test. The precision of the 2 Hz steps makes it suitable even for fine adjustments.

Front panel of the digital signal generatorThe front panel of the digital signal generator, with OLED display, rotary encoder, and push-button keypad. (photo: David Johnson-Davies)

David Johnson-Davies’s website hosts the source code and construction details. Those who want to go deeper can consult the complete documentation, including schematics and assembly photos. The project demonstrates how a modern AVR microcontroller can generate high-frequency signals with precision, without complex external components. An elegant solution for those seeking a reliable square wave generator.

In summary, this square wave generator offers a wide range and fine resolution, all in a portable format. The choice of an AVR16EB28 ensures programming simplicity and low cost. The OLED display and manual controls make it intuitive to use, even for those unfamiliar with professional instruments. A project worth replicating.

Source: http://www.technoblogy.com/show?5QE2

The post Square Wave Generator from 2 Hz to 33.5 MHz with AVR16EB28 appeared first on Open Electronics.

A Miniature 4G Module: Compact LTE Cellular Connectivity

Втр, 10/06/2026 - 13:00

Add cellular connectivity on LTE bands, both for phone calls and for broadband Internet access.

Partly because cellular networks supporting the latest data communication standards are so widespread and readily available, and partly because of the difficulty and poor economic convenience of bringing in wired telephone lines, more and more users are turning to radio-mobile telephone connections, especially when they need to work in areas that high-speed lines have not reached yet; in such cases various solutions are used, depending on the goal to be achieved. If the connection is needed to run a more or less automatic control system, you need a cellular module, whereas if you have to interface a computer, microprocessor or microcontroller to the Internet, it is essential to adopt a cellular module with a suitable data access technology.

In the latter case, given that the current focus is very much on 4G and 5G and that UMTS/HSDPA (better known as 3G) is being gradually abandoned, you need a module/modem that is at least LTE, while for phone calls (typical of remote control systems, which work with simple phone calls or SMS) 2G (GSM) or GPRS (2.5G) is still available. The project described in these pages is precisely a device that implements cellular connectivity with LTE data support, based on a recent GSM module from SIMCom, capable of supporting both ordinary phone calls and the SMS (Short Message Service) messaging service and data communication protocols from 2G up to the latest 4G.

Circuit diagram of the compact LTE board based on the SIMCom A7682E moduleThe schematic of the miniature 4G module: the SIMCom A7682E sits at the centre, surrounded by passive parts, six NPN transistors, a TVS protection array and a microSIM socket.
Circuit diagram

To make it clear what we are dealing with, let us take a look at the diagram of the device, published in these pages, which shows that everything is based on the SIMCom A7682E module, which is in practice the only active element on the board; around it are some passive components, six NPN bipolar transistors, plus a TVS (Transient Voltage Suppressor) overvoltage protection array and a socket for a microSIM SIM card.

So let us start with the description of the circuit, for which we have provided only a Quadriband cellular module, namely the SIMCom A7682E, which is able to cover up to 4G and is therefore up to date with the new wireless communication technologies on radio-mobile telephone networks, at least with those currently most used, if we consider that 5G does not yet have a significant spread. Its printed circuit board has two miniature connectors, one for the connections to the outside needed for use and integration into other equipment (we can consider it a header…) and the other for firmware updating (labelled UPG). The main connector, a 20-pin one in two rows with 2×2 mm pitch, also carries the positive and negative supply, as well as the power-on control line (PWR), all the signals and communication lines to and from the SIMCom module, but also the grounds of the analog and digital sections of the module (contacts 18 and 20).

Power-on and reset control

So let us describe how the circuit works, starting from the power supply control section, which operates by acting from the outside on the ON/OFF line (pin 1); this line is used to switch the GSM/LTE module on and off while keeping it constantly powered from the Vcc and GND contacts of the pin-strip; in fact our GSM1 module is always under voltage, supplied by the Vcc line (pins 17 and 19 of the 20-pole connector) to pins 34 and 35 (labelled Vbat, because the module was designed for use in battery-powered devices) and is switched on or off by the logic level applied to pin 39 (PWR), which internally is connected to a pull-up resistor and is active at logic zero, so to switch on the GSM1 module you have to bring the ON/OFF line (contact 1 of the pin-strip) to a high logic level and drive transistor T2 into saturation, which pulls the PWR line of GSM1 low.

Reset control works in a similar way: the SIMCom module provides a reset input (RST, located at pin 83, active at logic zero and fitted with an internal pull-up resistor); the reset is obtained by bringing pin 16 (RST) of the 20-pole connector to logic 1, whereupon transistor T3 goes into saturation and pulls the RST line of GSM1 low; at the same time, VDD_EXT of the same module is brought to logic 1.

The UART lines and level shifting

Let us go on with the UART control lines, namely RTS, CTS, DTR, DCD, which go to the outside through contacts 2, 4, 10 and 6 of the connector respectively; the same applies to VRTC (contact 5) and ADC0 (7). Note that by means of jumpers JP1, JP2, JP3 and JP4 it is possible to connect or disconnect the CTS, RTS, DTR and DCD control signals on board; normally these jumpers are open and if they need to be closed, this is meant to be done by soldering the pads of the ones you want.

About the UART, note the particular configuration of the TXD and RXD lines, each of which is interfaced through an NPN transistor configured in common base, so as not to sit directly on the corresponding contacts of the pin-strip; in particular, RXD (which is an input), fitted with a pull-up resistor, is connected to the collector of T5, whose emitter is connected to the RXD pole (contact 14) of the pin-strip, and therefore when the latter is in the open state or is at a high level (voltage equal to VDDEXT of the GSM1 module) T5 is off and the module’s RXD is at a high level. TXD instead (which is an output of GSM1) drives the emitter of T4, whose collector is fitted with pull-up resistor R13, in parallel with capacitor C11 which filters out noise) and is therefore at a high level (the same potential as VDDEXT) when the SIMCom module pad is at logic 1 and at zero when it is at a low level. The external connection of TXD is located at pin 12 of the 20-pole connector. Transistors T4 and T5 ultimately serve as repeaters of the logic states and as level adapters between the module’s VDDEXT voltage (which is 1.8V, like the logic levels the TXD and RXD signals work with) and the TTL standard, whose levels are 0/5V.

The RI signal and audio

The RI signal (ring indicator for an incoming phone call) comes out of contact 8 of the connector, which leads to the collector of transistor T6, an NPN used as a static switch to repeat the module’s RI to the outside; therefore when contact 7 of GSM1 goes to a high level, pin 12 of the strip takes on the low logic level and vice versa (the high level is obtained only if pin 8 is brought to the supply positive through a resistor of suitable value). The open-collector output makes it possible to provide the incoming call signal to devices and systems with a different supply from that of our circuit, perhaps 12V, or to drive actuators.

The audio, which uses two contacts for the microphone (it is a differential input) and as many for the loudspeaker, passes through contacts 15, 13, 11, 9, which correspond respectively to MIC1P and MIC1N (microphone positive and negative) and SPK1N and SPK1P (loudspeaker negative and positive respectively).

Antenna and field LED

The antenna needed for the GSM1 module to work is connected through a gold connector on the cellular board, leading to contact 32 (RF ANT); the connector is an MMCX type. Let us go on with transistor T1, which here is used to drive the cellular module’s “field” LED locally: its base is biased by the logic level present on pin 41 (NETLIGHT) of GSM1. From the collector of the transistor runs the line that leads to contact 3 (LED) of the 20-pole connector, through which the host microcontroller (or in general the system using our module) learns about the conditions of the cellular network (presence, signal strength, availability) as well as the connection state of the module (no network signal, network present, etc.).

SIM management

Let us conclude the analysis of the circuit diagram by dealing with the SIM management lines, which interface to the contacts of the dedicated bus on the GSM1 module through the SIM_CLK (clock), SIM_RST (reset) and SIM_DATA (data channel) lines; the SIM_VDD line is used to switch the SIM on and off (power it and remove power from it) and is managed by the GSM1 module.

TVS protection and power supply

Note the presence of the array of four Zeners (D1) made up of TVS elements, that is, special diodes used to protect the SIM card from any voltage spikes caused by interference, which can travel from the power supply line all the way to the lines of the communication bus between the SIM and the cellular module. In fact, in the schematic we included it for future developments, even though it was not fitted on the prototype because the documentation provided by SIMCom does not consider it necessary for the A7682E module used here. We provided for it anyway, at the printed circuit board level, because in theory the board can support other pin-to-pin compatible SIMCom modules that might require it, or in any case if you should run into interference problems in your application.

Further protection of the communication between the SIM and the cellular module is provided by capacitors C5-C9, C6, C7, C8 connected respectively to the SIM_VDD, SIM_RST, SIM_CLK and SIM_DATA lines toward ground, whose purpose is to filter those lines from impulsive interference that could affect communication between the card (chip-card) and the GSM1 module.

The Vcc supply of the circuit is expected to be around 4 V, because the module is designed to be powered by a single-cell lithium battery (which at full charge sits at around 4.2 V…) and therefore with a DC voltage between 3.6 and 4.2 volts; it is nevertheless possible to power it from a “fixed” source, that is, from a mains power supply or a line coming from another device, as long as you stay within the range given above.

We finish the description of the schematic with the connector labelled UPG (CN1), which is a miniature 6-pole male single-in-line type with a very tight 1 mm pitch: besides carrying the 5 volt supply and ground, it conveys the DP, DM and Vbus lines of the integrated USB 2.0 connection and the Boot line to be used for programming the SIMCom A7682E cellular module. The connector is visible at the top right in the photograph of the prototype shown in Fig. 1.

Underside of the cellular module board showing the SIM card slot and the UPG connectorFig. 1 Underside of the board, highlighting the SIM slot and the UPG connector.
The complete cellular module assembled on its printed circuit boardThe cellular module fully assembled.
Practical construction
Assembly drawing showing the placement and orientation of the components on the boardThe assembly drawing for placing the components.

Well, now that the schematic has been explained in detail we have to move on to the practical side: the board requires a double-sided printed circuit board, whose copper-side traces can be downloaded from the Download Sources and Gerber Files section on the presentation page for this issue. For making the PCBs you can use the inexpensive PCBPRODUCTION service. Once you receive the PCB you can fit the necessary components onto it, following, for the polarised ones, the orientation shown by the assembly drawing you see in these pages.

SMD preparation and soldering

The build requires some care, since the circuit is surface-mount and also requires a minimum of equipment consisting of at least a very fine-tipped soldering iron, solder wire (or solder paste) with a maximum diameter of 0.5 mm, medium-density flux paste, a magnifying lens and tweezers for placing the components. Soldering the SIMCom module requires the use of a hot-air station and, preferably, a heating plate able to bring the underside of the printed circuit board to a temperature of at least 100 °C. Alternatively, you can use an oven specifically for soldering or reworking SMD components. In this case, the procedure calls for first applying a low-density flux to the pads of the SIMCom module, followed by a uniform layer of solder paste. The module must then be positioned precisely in the centre of the pads, strictly respecting the orientation indicated in the prototype images and in the assembly drawing. Without moving the module, the printed circuit board goes into the oven drawer.

Once the machine has started, you follow the appropriate soldering cycle, determined by the type of paste used: lead-free (compliant with RoHS regulations) or leaded (containing lead). It is important to note that these ovens generally come with factory-preset soldering profiles, but in some cases custom profiles can be configured according to specific needs. Once the A7682E module is in place, which is the first component to solder so as to avoid having to heat the others in the “little oven” and therefore subject them to thermal stress, you can proceed with the remaining components. If you wish, it would be possible to solder all the components in one go (except for the connectors, to be soldered at the end, as well as the microSIM socket, to be soldered by hand) and in that case take the printed circuit board, spread solder paste on the pads intended for the SMD components and then put everything in the little oven, making sure that no element has moved.

Manual components and antenna

If you choose to solder the discrete components by hand, get yourself a pencil soldering iron (or a soldering station) with a fine tip and a power rating of no more than 30 watts. Apply some flux to the pads and start tinning the resistors and capacitors. Then move on to the LED and the transistors, making sure you respect the correct orientation of the terminals for the transistors, since their arrangement is unambiguous. As for the tantalum electrolytic capacitors and the LED, follow the orientation indicated in the assembly drawing shown in these pages. Pay particular attention while soldering the LED: try to minimise the exposure time to heat so that the small transparent resin window through which the light passes does not deform. Finally, insert into their respective holes the 20-pole connectors for interconnecting the board and the one for implementing firmware update and programming (UPG or CN1, as you prefer to call it).

For connecting the GSM antenna there is a special gold-plated MMCX connector, in THT format, to be soldered by hand into the dedicated pads.

Cellular antenna with a connector matching the MMCX socket on the moduleFig. 2 The antenna fitted with a connector suitable for the MMCX on the module.

The cellular antenna to be used with the circuit proposed here must be compatible with all the bands supported by the SIMCom A7682E module, therefore 850/900/1800/1900 MHz; a good example is the product 8170-ANTGSMSTL-MMCX, which is a cellular whip antenna with a magnetic base and 3 metres of cable. RG174 cable, female MMCX connector. 12 cm long, this antenna is Quadriband, compatible with GSM networks with mobile radio network frequencies at 850/900/1800/1900 MHz (824~894 MHz / 1710~1990 MHz – 880~960 MHz / 1710~1990 MHz – 1920~2170 MHz).

Staying on the build, note that jumpers JP1, JP2, JP3 and JP4 on the printed circuit board are not ordinary 2.54 mm pitch pin-strip jumpers, but are made using pads on the underside of the printed circuit board, to be joined with a drop of solder when you want one or more of them closed (ON state); in normal conditions, therefore, they are open (OFF) and if you need to connect the CTS, RTS, DTR and DCD control signals you must join the respective pads by melting solder over them until those of each jumper are united.

For use, remember that the circuit works with a power supply capable of delivering 4 volts and a current of at least 800 mA, which is the peak draw at maximum transmission power.

Close-up of the board showing the solder-pad jumpers JP1 to JP4 on the undersideThe solder-pad jumpers on the underside of the board.
Let’s do a quick test

To test the operation of the cellular module we can connect it to a Personal Computer via USB, inserting a TTL/USB converter for the purpose, then issuing basic AT commands from a terminal emulator, for example those for dialling a phone number and managing a phone call (ATDT followed by the number to call and a final ;). The task becomes simpler using the base for GSM modules presented in issue no. 236 of Elettronica In (Fig. 3) and available already assembled with the code FT1427.

The cellular module plugged into the FT1427 base boardFig. 3 The cellular module on board the FT1427 base.
The FT1427 base

This base board features a 20-pin female connector compatible with the 4G module, and it packs several useful functions: power-on control, module reset and a CH340 TTL/USB converter. The latter is followed by a MOSFET logic-level translator, which adapts the TTL UART interface to the voltage levels (0/3.3V) required by the cellular module. The FT1427 board also brings the audio and microphone signals out to two jack sockets, so phone calls can be made. Finally, it integrates a switching DC/DC converter (based on the LC3406 IC) running at a high frequency (1.5 MHz, which keeps the size of the required reactive components down) that delivers 3.6V to power the SIMCom module.

Drivers and PC connection

This board is easily recognised and managed by a Personal Computer running a recent operating system (for example Windows 8, 10 or 11), but there are no problems with older Windows versions either: just download the drivers for the CH340 IC from the Internet. It is one of the most popular TTL/USB converters, and it is also used by some Arduino boards, so much so that the drivers can be downloaded, among other places, from the chip manufacturer’s website ( https://wch-ic.com/products/CH340.html ).

To manage the modem built into the GSM/4G module from Windows you can use any terminal emulator (for example Hyperterminal, MobaxTerm, Telnet…) by setting the virtual COM port assigned by the operating system once the drivers are correctly installed, and then issuing the appropriate AT commands; remember that to see the virtual COM port you have to go into Windows Device Manager and open the COM/LPT ports. The drivers also let Windows access the Internet by going into network connections and creating a connection based on a USB modem, which in this case will correspond to the adapter board.

Well, with this we think we have explained everything you will need to use the cellular module; all that is left is to wish you happy working!

Related products

The post A Miniature 4G Module: Compact LTE Cellular Connectivity appeared first on Open Electronics.

FREE-WILi 2: An Open-Hardware Multitool for Embedded Hacking

Втр, 10/06/2026 - 11:00

FREE-WILi 2 is a portable open-hardware multitool that packs an entire embedded hacking lab into a single device. Inside, you’ll find two RP2350B MCUs, an ESP32-C5, a Lattice iCE40UP5K FPGA, and a Raspberry Pi CM0 running Linux. Designed for hardware hackers, penetration testers, and embedded systems developers, it lets you perform wireless testing, hardware debugging, real-time control, and electronic development all in one tool.

The board integrates a range of radios and interfaces that would normally require a desk full of modules. The ESP32-C5 provides dual-band Wi-Fi 6, Bluetooth LE, and 802.15.4. The STM32WLE5JC module handles the SX126x LoRa radio, while the CC1101 covers sub-GHz communication. The ST25R3916B takes care of NFC and RFID, so you can read, clone, or emulate tags. Additionally, the iCE40UP5K FPGA has all its pins exposed and 8 MB of dedicated SRAM for custom logic experiments.

Two RP2350s and a Raspberry Pi CM0 for computing power

At the heart of the system are two Raspberry Pi RP2350B chips. One handles the main controls, while the other is dedicated to managing the 3.5-inch touchscreen display with 480×320 resolution. For heavier tasks, there’s the Raspberry Pi CM0 module with a Broadcom BCM2710A1 SoC, a quad-core Cortex-A53 CPU at 1.0 GHz, 512 MB of LPDDR2 RAM, and 8 or 16 GB of eMMC storage. This module runs a full 64-bit Linux, so you can launch even substantial Python scripts directly on the device.

Connectivity is complete: there are 3 USB host ports, 2 of which run at 12 Mbps connected to the display RP2350 and one at 480 Mbps connected to the CM0. For the lab, you’ll find 13 GPIOs with SPI, I2C, and UART, plus software-selectable I/O voltage. There are also 4 analog inputs from 0 to 5 V with op-amp buffering, PGA, and window comparator, and 2 analog outputs from 0 to approximately 4.84 V at 25 kHz. CAN FD supports up to 8 Mbit/s with a CAN SIC transceiver.

Internal view of the FREE-WILi 2 device showing its electronic components and interfaces.Hardware overview of FREE-WILi 2 showing the main electronic components, interfaces, and features.
Programmable power supply and voltage glitching

One of the most interesting features for hardware hackers is the programmable 5.5 V / 1.5 A power supply with MOSFET crowbar. This enables voltage glitching, a technique used to test device robustness. The battery is 3000 mAh with USB-aware charging, and sleep current is just 60 µA. The whole thing fits in a 152.4 x 78.9 x 22.3 mm enclosure weighing 290 grams, with 14 gamer buttons for interaction.

The stock firmware exposes a USB CLI, an on-device GUI, and the OneWili API for control from Python, Rust, or C/C++. The device also supports executing code generated by LLMs directly on it, a feature that makes it particularly suited for experimenting with AI applied to hardware. For those who want to dive into code examples and libraries, the project’s code repository is the right starting point.

FREE-WILi graphical interface showing I2C registers and panel controls.FREE-WILi GUI showing I2C device registers and graphical panel controls.

The FREE-WILi 2 GUI is not just a control panel: it shows the registers of I2C devices and offers graphical controls to interact with connected components. You can also configure the connection to the Claude API to use AI models directly from the device. This makes it a versatile tool for both debugging and rapid prototyping of ideas.

For those working in the embedded world, having all this in a portable device changes the workflow. No more carrying a full test bench: with FREE-WILi 2 you can test radios, read NFC tags, debug over I2C, and even attempt voltage glitching, all from a single instrument. The presence of two separate RP2350s ensures the interface never slows down the main processes.

The board is open-hardware, so you can study the designs and adapt them to your needs. The pre-order price for the Founder Edition is $400, with shipping expected in Q4 2026. If you work with embedded systems, this is an investment that pays off in flexibility and compactness.

Source: https://github.com/freewili/onewili

The post FREE-WILi 2: An Open-Hardware Multitool for Embedded Hacking appeared first on Open Electronics.

Retro-Arcade Clock on RGB LED Matrix with ESP32-S3

Пн, 10/05/2026 - 16:00

A retro-arcade clock on a 128×64 RGB LED matrix driven by an ESP32-S3 brings 1980s video game icons to the workbench. Keralots’ project combines fourteen animated clock styles, weather without an API key, and PC performance monitoring in a single desktop device. Configuration happens from the browser, without recompiling the firmware.

The hardware foundation is two Waveshare P2.5 64×64 HUB75E panels, scan 1/32, chained into a single 128×64 pixel canvas. The FM6126A driver requires initialization that the firmware handles automatically at startup. The control board is an ESP32-S3-WROOM-1 (N16R8) devkit, with 8MB of PSRAM and 16MB of flash: enough space for the firmware, GIFs, and custom animations.

Styles, Cycle All, and custom animations

The clock styles cover arcade classics: Mario, Space Invaders, Pac-Man, Snake, Tetris, Asteroids, Dino Runner, and Matrix Rain, plus Weather variants and others. Cycle All mode alternates styles in sequence, with a configurable duration from 5 to 3600 seconds per style. Ambient screensavers and user-uploaded GIFs can also replace the clock, with hourly scheduling.

Storage for animations on the board is 128KiB, within the 4MB of available flash. An empty tested device holds about 23 animation frames. The input limit for GIFs is 8MiB, while the converted .pca file has a maximum of 1.5MiB and up to 360 frames. The command-line tool tools/gif2pca.py, which requires pillow, converts GIFs into the proprietary format.

Power supply and measured consumption

Power comes from a dedicated 10A 5V supply, with a 2200µF, 25V capacitor on the bus. Estimated consumption in use is about 10W, with measurements under 30W in normal conditions. The power connection goes through a USB-C power breakout and an XT60 panel feed, keeping wiring tidy and safe.

PC monitor mode receives metrics over local UDP on port 4210 from a companion app for Windows or Linux. The app sends up to 20 CPU, GPU, RAM, and network metrics, with a default update interval of 3 seconds. When the PC is offline, the clock automatically returns to displaying the time.

The optional weather feature uses Open-Meteo, which requires no account or API key, with updates every 10 minutes. The built-in web interface configures clock style, per-element colors, brightness with scheduled night dimming, timezone with automatic DST, and OTA updates. All code, firmware, and conversion tools are collected in Keralots’ repository.

For those who want to rebuild the project, the documentation includes the wiring diagram for the HUB75E panels and instructions for flashing the firmware. Keralots’ repository is the starting point for downloading the code and utilities. Keralots’ repository contains the full firmware and the companion app.

The component list for the build is as follows:

  • ESP32-S3-WROOM-1 (N16R8) devkit
  • Waveshare ESP32-S3-Zero
  • 2x Waveshare P2.5 64×64 HUB75E panels
  • FM6126A driver
  • 2200µF, 25V capacitor
  • USB-C power breakout
  • XT60 panel feed

Choosing an ESP32-S3 with generous PSRAM and flash keeps the project smooth even with complex animations. The combination of P2.5 panels with a 2.5mm pitch offers good pixel density for a desk clock. The result is a device that changes appearance with a click, from minimalist clock to arcade system monitor.

Source: https://github.com/Keralots/AnimatedPixelClock

The post Retro-Arcade Clock on RGB LED Matrix with ESP32-S3 appeared first on Open Electronics.

Cheap LED diffuser with a 3D printed grid

Пн, 10/05/2026 - 13:00

Davisan1001’s project solves a classic problem for anyone working with LED matrices: getting an even, uniform glowing surface, without halos and without seeing the individual pixels. The solution is a 3D printed enclosure for a 64×64 RGB LED matrix, with a mounting point for a Raspberry Pi. The front uses simple materials: a 3D printed grid, baking paper and a sheet of clear plastic.

The grid is the heart of the system. Each cell of the grid lines up with one LED of the matrix and blocks the light that would otherwise spill onto the neighbouring LEDs. This way every light point stays separate from the others and the diffusion happens in a controlled way. The baking paper, placed above the grid, acts as the diffuser: it is thin, easy to handle, flat and even in colour.

3D printing the grid

The grid does not require complex 3D modelling. Davisan1001 exploits the slicer settings: a flat square is printed with a grid infill and zero solid top and bottom layers. The slicer generates the cell structure by itself. The result is a precise grid, with thickness and cell size controlled by the print parameters.

The choice of diffusion materials is not random. Plain white paper blocks too much light, while waxed paper gives poor output and a poor off-axis view. Baking paper, on the other hand, is opaque enough to diffuse the light without blocking it. A sheet of clear plastic completes the assembly, protecting the paper and giving rigidity to the surface.

Materials and assembly

Rebuilding the project takes only a few components. Besides the 64×64 RGB LED matrix and the Raspberry Pi, you need the 3D printed grid, baking paper and a sheet of clear plastic. The printed enclosure includes the mounting point for the Raspberry Pi, so the electronics stay integrated and tidy.

  • 64×64 RGB LED matrix
  • Raspberry Pi
  • 3D printed grid
  • Baking paper
  • Sheet of clear plastic

The assembly is within anyone’s reach: place the grid over the matrix, then the baking paper and finally the plastic sheet. Everything closes up inside the enclosure. For those who want to dig deeper, the page of Davisan1001’s project collects the files to print and the useful instructions to replicate the diffuser.

The result is an LED panel with a smooth surface and well-defined square pixels. The solution is inexpensive and uses materials that almost everyone has at home. What is more, the technique of the slicer-generated grid can be reused for other LED matrix sizes or for similar projects.

Source: https://www.thingiverse.com/thing:6687509

The post Cheap LED diffuser with a 3D printed grid appeared first on Open Electronics.

FREE-WILi 2: The Pocket Electronics Lab with AI

Пн, 10/05/2026 - 11:00

FREE-WILi 2 is an open-source electronic multitool that fits in your pocket and replaces an entire workbench. It combines a complete electronics lab, a software-defined radio bench, and a video game console. It supports wireless, GPIO, analog, RFID, CAN, retro-gaming, Linux onboard, and AI agents that write firmware. The project is documented on the maker’s website, where you can find schematics, firmware, and instructions.

The board features an unusual and powerful hardware setup. A primary RP2350 handles I/O and scripting, while a second RP2350 drives the display, buttons, audio, and DVI output. The ICE40UP5K FPGA covers functions that the PIO cannot handle, such as SPI-slave emulation or multicore RISC-V I/O. It also manages 8 MB of SRAM that can be dynamically swapped with the main CPU.

Processors, FPGA, and shared memory

The Raspberry Pi CM0 adds full Python scripting and onboard compilers. The ESP32-C5 provides wireless access to Wi-Fi 2.4/5 GHz, Bluetooth LE, and IEEE 802.15.4. Each RP2350 has 8 MB of serial SRAM and 16 MB of flash. The ICE40UP5K FPGA has another 8 MB of SRAM. Computing power is thus distributed across multiple architectures, each with a specific role.

An ultra-low-power microcontroller supervises 17 power domains. Its job is to optimize the battery life of the 3000 mAh cell. The capacitive touch display measures 3.5 inches with a 480×320 resolution. Analog outputs reach about 4.84 V at 25 kHz. The programmable power supply provides from 1 to 5.5 V at 1.5 A, so you can power external sensors and modules directly from the board.

Firmware, scripting, and the OneWili API

The default firmware includes several onboard scripting engines. You will find rThon, WiliBlocks, ZoomIO, and a WASM engine called WiliWasm. The OneWili API unifies access from Python, Rust, C/C++, and rThon, both from a host PC and directly on the board. This API is generated by the firmware itself, so it always stays aligned with the device’s actual functions.

AI agents are supported natively and can write and debug firmware code. The project also integrates Claude Code and LM Studio. For those who want to get started, the board supports CAN FD at 8 Mbit with a SIC transceiver. The ST25R3916B RFID module and the BMI323 and BMM350 sensors complete the package. All of this is enclosed in a device that also works as a retro-gaming console.

  • Primary RP2350 for I/O and scripting
  • Second RP2350 for display, audio, and DVI output
  • ICE40UP5K FPGA for advanced functions
  • Raspberry Pi CM0 for full Python
  • ESP32-C5 for Wi-Fi 5 GHz, BT LE, and 802.15.4
  • STM32WLE5JC for long-range communications
  • ST25R3916B for RFID
  • BMI323 and BMM350 for motion and magnetic field

A similar project can be partially built with simpler components, but FREE-WILi 2 compacts everything into a single tool. For those who want to approach the world of wireless microcontrollers, a board like the ESP32-C6-Zero kit is a good starting point to learn. Instead, a Raspberry Pi 5 offers more power for software development, but it does not have the same hardware integration as this multitool.

FREE-WILi 2 represents a step forward for makers who want a complete and portable tool. The combination of FPGA, dual RP2350, and Raspberry Pi CM0 offers rare flexibility. Native support for AI agents opens new scenarios: the board can write its own firmware based on your needs. Anyone working on electronics, radio, or gaming projects will find a powerful ally in this device.

Source: https://freewili.com/

Related products

The post FREE-WILi 2: The Pocket Electronics Lab with AI appeared first on Open Electronics.

YuzukiNeko: A Compact RISC-V Board for Multimedia

Ндл, 10/04/2026 - 16:00

YuzukiNeko is a Linux development board built around the Allwinner F101 RISC-V SoC, in a form factor reminiscent of the Raspberry Pi Pico. Its dimensions are roughly 51 x 21 mm, but don’t be fooled: inside there’s a XuanTie C907 processor running at 1.008 GHz with 32 KB of L1 cache for instructions and 16 KB for data. The board carries 16 MiB of SiP PSRAM and 16 MiB of external NOR Flash with XIP (execute-in-place) support. Additionally, the Allwinner F101S3 SoC integrates a graphics engine capable of driving RGB888, single-link LVDS, and 4-lane MIPI DSI displays.

The project comes from YuzukiHD, which has released everything as open source under the CC0 license. Those who want to dig deeper can check the YuzukiHD repository for code, schematics, and configurations. The board includes an FEL button for firmware download mode and a USB-C connector for data, power, and programming. There is also a microSD slot and a 2×20-pin GPIO header, with multiplexed pins configurable through the pinctrl software.

Multimedia and display with Allwinner F101

The strong point of this RISC-V board is the video section. The processor handles displays through RGB888, single-link LVDS, and 4-lane MIPI DSI interfaces. Video outputs reach notable resolutions: RGB888 goes up to 1280 x 720@60 fps, single-link LVDS reaches 1366 x 768@60 fps, and 4-lane MIPI DSI reaches 1280 x 800@60 fps. Furthermore, JPEG decoding supports resolutions up to 16384 x 16384 pixels, while PNG decoding reaches 2048 x 2048 pixels.

For compression, the JPEG/MJPEG encoder reaches 720p@30 fps with a maximum resolution of 8192 x 8192. The de-interlacer reaches 720p@60 fps. These figures make YuzukiNeko suitable for display, audio, and general I/O projects. The PSRAM is 8 MB or 16 MB at 252 MHz, and the NOR flash is 128 Mbit, that is 16 MiB. The whole system is enclosed in a QFN68 package measuring 7 mm x 7 mm.

Electrical schematics of the YuzukiNeko boardElectrical schematics of YuzukiNeko

The electrical schematics show the component layout and the connections between the SoC, flash, and connectors. The board is designed for embedded systems where computing power and video output are needed in a small space. XIP support allows code to be executed directly from NOR Flash, reducing boot times and the need to copy firmware into RAM.

GPIO, pinmux, and Buildroot software

The GPIO pins are multiplexed through pinmux: each pin can be configured for only one alternate function at a time, using the pinctrl software. This approach offers flexibility but requires care in circuit design. The board exposes 2×20-pin headers, compatible with breadboards and rapid prototyping. In addition, there is a USB-C connector for data and power, and a microSD slot for storage.

The software is based on Linux and Buildroot. Buildroot simplifies creating a minimal embedded system, with toolchain and kernel configured for the SoC. The YuzukiHD repository contains the configurations to compile the system and boot the board. For those who want to get started, the main steps are:

  • Connect the board to the PC via USB-C.
  • Hold down the FEL button to enter download mode.
  • Load the firmware compiled with Buildroot.
  • Insert a microSD with the root filesystem.
  • Configure the GPIO pins with pinctrl for your peripherals.

YuzukiHD’s RISC-V board positions itself as a compact solution for those who want Linux and graphics in a minimal format. The comparison with the Raspberry Pi Pico is inevitable given the size, but the capabilities are superior. The presence of PSRAM and NOR Flash with XIP, together with the video outputs, makes it interesting for information displays, media players, and computer vision projects.

Source: https://github.com/YuzukiHD/YuzukiNeko

The post YuzukiNeko: A Compact RISC-V Board for Multimedia appeared first on Open Electronics.

Arduino Zephyr core 1.0.0: the move away from MbedOS is complete

Ндл, 10/04/2026 - 13:00

The Arduino core for Zephyr RTOS has reached version 1.0.0. This release marks the completion of the transition away from the old MbedOS-based core. The new core provides a modern and flexible foundation for current and future Arduino boards. It also lets you use Zephyr RTOS features and APIs directly from the Arduino IDE, Arduino CLI and Arduino App Lab tools.

The project is built on a two-component architecture. The core generates a standalone elf file that is loaded dynamically by a precompiled Zephyr firmware called the loader. The loader handles the interaction between sketches and the underlying Zephyr system. After the initial bootloader installation, the loader automates the sketch loading process. Version 0.90.0 made the Zephyr loader installation procedure fully automatic.

The loader and its operating modes

The loader’s behaviour is set through the IDE’s Mode menu. In Standard mode, the loader loads the sketch automatically. In Debug mode, on the other hand, it requires you to type ‘sketch’ in the Zephyr shell. This flexibility makes debugging much easier. The loader design is generic: board-specific changes are made in the DTS overlay or fixup files.

The core is validated with version v0.16.8 of the Zephyr SDK. Development uses the standard tools of the Zephyr ecosystem, such as west and sync-zephyr-artifacts. The core also relies on components such as llext, the dynamic extension mechanism, and zephyr-sketch-tool for compiling sketches. Everything rests on ArduinoCore-API to maintain compatibility with the Arduino ecosystem.

What you need to get started

To try the Zephyr core you need a supported board and an up-to-date development environment. Here are the main steps:

  • Install Arduino IDE 2.x.x or Arduino CLI
  • Add board support through the Board Manager
  • Install the Zephyr core from version 1.0.0
  • Configure the loader mode from the IDE’s Mode menu

Version 1.0.0 of the Zephyr core is a milestone release. The move from MbedOS to Zephyr is complete. The new core offers a more solid foundation for the future of Arduino boards. Among the new features, support for the project’s code repository includes all the loader and core sources. In addition, the new Arduino UNO Q board is among the first devices to benefit from this architecture.

Arduino VENTUNO Q board shown with the Zephyr core 1.0.0Arduino’s Zephyr core, designed to replace the MbedOS version, has reached release 1.0.0 and now supports the VENTUNO Q.

The Zephyr core represents a paradigm shift for Arduino. It is not just an update: it is an infrastructure built to last. The separation between loader and sketch makes the system safer and easier to update. What’s more, using Zephyr RTOS opens the door to advanced features such as support for numerous protocols and optimised power management. For anyone developing IoT applications, this is a solid foundation to build on.

The transition from MbedOS to Zephyr was not only technical, but also strategic. Zephyr is an open source RTOS with an active community and a regular release cycle. This guarantees long-term support for Arduino boards. In addition, version 1.0.0 of the core is validated with the Zephyr SDK v0.16.8, ensuring stability and compatibility. The future of Arduino boards goes through here.

Source: https://github.com/arduino/ArduinoCore-zephyr

Related products

The post Arduino Zephyr core 1.0.0: the move away from MbedOS is complete appeared first on Open Electronics.

HANTEK 2000 series: The all-in-one handheld instruments

Ндл, 10/04/2026 - 11:00

Let’s discover and try out the benchtop tools that every good electronics technician should have.

 

Nowadays, experimenters and technicians alike use and appreciate portable and handheld measuring instruments. Over the years, these instruments have multiplied and diversified, reaching even the professional user: this is the case of the Hantek 2000 series handheld instruments, which we have tested and described in this article, whose characteristics and interfaces place them fully in the category of semi-professional instruments. More precisely, we focused on two models (both available on the website www.open-electronics.org).

The basic model (HANTEK2C42, part number 6072-MHO2C42) combines a two-track digital oscilloscope with a maximum frequency of 40 MHz with a digital multimeter with automatic readout, while the oscilloscope of the top model (HANTEK2D72, Open Electronics part number 6072-MHO2D72GEN) reaches a frequency of 70 MHz.

The digital multimeter function of both is identical, but the higher-performance model additionally features a waveform generator with the maximum frequency depending on the type of signal generated: sine 25 MHz, square 10 MHz, other types 5 MHz and 1 MHz, maximum amplitude 2.5 Vmax (corresponding to 5.0 Vpp).

From this initial information, it is easy to see that just by putting one of these instruments and a power supply in a case, you have a good portable laboratory bench for analysis or repair on site.

Of course, as we shall see, our HANTEKs will also play their part in a stable laboratory, as their size allows them to be positioned close to the circuit, within easy reach, avoiding the constant twisting of the neck required to display what we need on the bench-top instruments.

In order to prove the truth of this statement, we decided to test these instruments from the comfort of our home PCs, not in the laboratory, by simulating an off-site operation.

Fig. 1 shows all the tools and accessories that we put in a small hard case, all supplied by Open Electronics to carry out this test.

 

Fig. 1

 

The instruments and accessories used for testing HANTEK handhelds:

 

We specify that all tests have been carried out on both models (except, of course, those relating to the waveform generator) but, for obvious reasons, the measurements will be reported only once, having however verified by comparison the total of the results. Finally, for convenience, we will describe the two instruments as if they were one.

Inside the sturdy cardboard packaging, we find a beautiful rigid transport bag, complete with a handle, as well as a quick guide in Italian, of which we will report in this article the images necessary for understanding the operation of the instrument; for everything else we refer to the complete manual in Italian (in the package you will find instructions for downloading the relative pdf).

When you open the zip, you can see that the bag is well organized, in fact, the base has a space in which the instrument, the 230 Vac – 5 V – 2 A mains power supply and the USB cable type C are housed, so not the cable of common smartphones, but that of some new generation models; on the lid of the bag there is a net that contains all the supplied cables: a BNC probe for an oscilloscope with switchable 10x-1x attenuation, with typical accessories, a pair of test leads for the multimeter, a BNC to R/N cable (two in the case of the 2D72 model). Refer to Fig. 2.

For those who wish to equip themselves with a second probe, in order to use both traces with 10x attenuation, we recommend the model 6072-PROBE100, available at www.open-electronics.org.

 

Fig. 2

 

Some details

The HANTEK handheld has a 2.8″ 64,000 colour LCD screen in TFT technology; its resolution is 320 horizontal pixels x 240 vertical pixels with adjustable contrast.

The apparatus is heavier than a normal digital multimeter, partly because of its metal case, covered by a strong rubber, whose purpose is to isolate the circuitry as much as possible from external disturbances.

The two batteries, 18650 type 3.7 V and 2,600 mAh, are already installed inside, and are correctly charged to about 50% of full charge; remember that this type of battery should never be left fully charged or fully discharged for long periods of time, otherwise they can be irreversibly damaged. The instrument has a removable bracket on the back that allows it to be kept in an upright position, and covers the two screws of the battery door. On the right side, there is a rubber cap that allows access to the USB port type C for charging batteries and for connection to the PC; although the cap shows the symbol of an SD CARD, in reality, the slot does not have any housing and in any case is not declared anywhere. In the upper part, there are 3 BNC: the first two for the oscilloscope channels (CH1 and CH2), the third for the output of the waveform generator (Gen out), which of course is operational only on models equipped with this function (2Dxx series).

 

Front panel

Fig. 3 describes the front panel, which is organized in three sections, from top to bottom: the display, the control buttons, and the digital multimeter input jacks.

 

Fig. 3

 

The control keys are as follows:

–  Scope: Oscilloscope mode;

–  DMM: Multimeter mode;

–  AWG: Waveform generator mode (only active on 2Dxx versions);

–  Menu: utility menu;

–  Trig: Trigger setting menu;

–  Enter: In Scope, saves the oscilloscope user-defined settings; in AWG it is used to confirm the character just entered via the digital keyboard;

–  Auto: automatically adjusts the horizontal and vertical scales of the oscilloscope and automatically sets the attack, type, position, slope, level and trigger mode, etc., to ensure a stable waveform display;

–  Channel: menu for setting the two channels (vertical);

–  Time: Horizontal setting menu;

–  F1/F2/F3/F4: in each menu mode, operate the selection of the corresponding menu items on the screen.

–  Zoom and direction keys: perform different actions depending on the menu selected;

– in the Trigger menu, the Left and Down arrows move the trigger level down, while the Right and Up arrows move it up;

– in the Channel menu, the Up and Down arrows change the zero-level position of the track, while the Left and Right arrows change the Volts/DIV of the channel;

– In the Time menu, the Up and Down arrows change the Time/DIV, while the Left and Right arrows change the position relative to the horizontal trigger;

– In Multimeter mode the arrows change the measurement function;

– In Generator mode, after selecting a parameter, the Left and Down arrows will reduce the parameter value, the Right and Up arrows will increase the parameter value; the four arrows are also used for selecting keys on the digital keyboard;

 

We then have buttons marked with icons:

= Pressed and held down, it allows you to access the shortcut menu and to select the desired function by means of the specific key (F1÷F4); after having selected the function, press the Shortcut key once to confirm or cancel the selection (the functions of this menu are described in the specific paragraph);

= RUN/STOP, in Scope mode, stops or executes waveform acquisition; in DMM mode, retains measured data or updates it; in Generator mode, turns waveform output on or off;

= POWER ON/OFF; is the on/off button.

 

On the front panel, we also have the digital multimeter input sockets (DMM Input Connector), from left to right: A (ammeter input 4 A and 10 A capacity, unprotected), mA (ammeter input 40 mA and 200 mA capacity protected by fuse), COM (common input, black ferrule), V/Ω/C/ (voltmeter input, ohmmeter, capacimeter, diode measurement, and short circuit).

Table 1 shows the general characteristics of this family of instruments, while Table 2 shows the main technical characteristics of the oscilloscope section, the arbitrary waveform generator and the multimeter.

 

Tab 1

 

 

Tab 2

 

 

Preliminary operations

After checking that the instrument’s equipment corresponds, the first step is to recharge the instrument’s internal batteries, using the power supply and the cable provided; the POWER button will light up solid red (if it flashes it means that the batteries are not installed or are defective) and will only switch off when the batteries are fully charged.

Now you can turn on the instrument and perform the preliminary operations: firmware update, auto-calibration and Utility menu setting.

 

Software installation and firmware update

Since the instrument can be interfaced with the PC, the management software must be downloaded from the download section of the Hantek site; once the folder has been unzipped, it will contain both the setup and a subfolder with the updated drivers. Connect the handheld to the USB port of the PC, go to the Windows Device Manager and update the driver with the one just downloaded.

The next step is to install the DFU (Device Firmware Update) software and driver. At this point the instrument’s firmware can be checked for updates. The procedure is automatic, so within a couple of minutes, the instrument will be updated to the latest version of the firmware (ARM) and FPGA.

 

Auto-calibration

The oscilloscope has an auto-calibration feature that helps to optimise the signal path for maximum measurement accuracy. It can be performed at any time, but the manufacturer recommends performing it if the ambient temperature changes by at least 5 °C. For more accurate calibration, wait 20 minutes after the oscilloscope has been switched on for it to reach its steady-state temperature.

In addition, the auto-calibration must be performed without any input signal, otherwise, the instrument may be damaged.

 

Utility menu

After auto-calibration, press the Menu key, access the Utilities and make the necessary settings by pressing the keys indicated (those not listed are not needed at this stage):

-F1         : leave English selected (the only alternative at the moment is Chinese);

-F2         : Activate or deactivate key sounds;

-F3         : Set the intensity of the display backlight;

-F4         : Go to page 2 of the Utility Menu;

-F1         : Set the backlight duration;

-F4         : Go to page 3 of the Utility Menu;

-F2         : enable or disable the panel for measurements of the signals shown on the display (for the initial phases it is definitely preferable to leave this panel enabled);

-F3         : View information about the hardware and software versions of the instrument for possible upgrade;

-F4         : Go to page 4 of the Utility Menu;

-F1         (shutdown): Set the automatic shutdown time;

-F2         (calibration): carry out self-calibration (to be done every 12 months or whenever the ambient temperature changes by more than 5°C);

-F3         (default): reset to factory settings (in case you have any doubts about the manoeuvres carried out);

-F4         : Go to page 4 of the Utility Menu;

-F1         (boot logo): enable or disable the display of the logo when the handheld is switched on.

 

At this point we begin to see how to use the instrument, pressing Scope to start with the most important function: the oscilloscope.

 

Setting up the oscilloscope

To obtain a correct image display of the signal detected by the probe, three sets of parameters must be set:

-Vertical: V/DIV for signal amplitude;

–  Horizontal: Sec/DIV for signal width;

-Trigger: synchronisation for signal stability.

 

We would like to point out that our oscilloscope is equipped with an Auto function (activated by the key of the same name) that searches and finds (where possible) the best combination of Volt/DIV, Sec/DIV and Trigger to display in a stable manner the signals applied to one or both of the CH1/CH2 inputs.

But in some cases, you cannot get the expected result, so it is important to learn how to adjust the oscilloscope manually.

To make the adjustment manually, you must move through the function menu, setting the channel operating parameters first; then press the Channel button to enter the channel menu.

-F1         allows you to select the channel to be adjusted;

-F2         is used to enable/disable the selected channel;

-F3         is used to set the probe coupling:

  • DC sets DC coupling, useful for reading DC voltage values or the offset of alternating or variable signals;
  • AC sets the coupling to alternating, which shows only alternating signals;
  • GND shorts the probe to the ground and shows no signal (typically used to calibrate the vertical position of the track);

-F4         allows you to go to the second page of the menu, where:

– F1        allows you to set the attenuation of the probe used, it must have the same value as the switch position on the probe;

– F2      is used to activate bandwidth limiting, in order to eliminate high-frequency noise that may affect the displayed signal;

– F3     reverses the signal in phase.

 

The next step is to set the time base by pressing the Time button:

-F1         is used to set the mode (for normal measurements set Mode YT);

-F2         is used to set the length of image recording.

 

Once this is done, the trigger settings are made by pressing the Trig key to enter the corresponding menu:

-F1         allows you to select the channel to be synchronised;

-F2         allows you to select the slope to be considered for synchronisation:

  • Rising;
  • Falling: downhill;
  • Double: both uphill and downhill.

-F3         sets the synchronisation mode:

– Auto: triggers the signal even in the absence of normal conditions;

– Normal: triggers the signal in the presence of a valid trigger condition;

– Single: locks the display as soon as it acquires a valid waveform.

-F4         allows you to switch to the second page of the menu, where:

-F1         forces the trigger in difficult conditions, completing the acquisition even in the absence of a valid trigger signal.

These are the general settings; now we will see how to set some parameters according to the type of signal we are going to detect, whether we know the maximum values or they are unknown.

 

Probe compensation

The first time a new probe is used on an oscilloscope, the compensation operation must be performed. The procedure consists in applying a known square wave, typically with a frequency of 1 kHz and an amplitude of 2 Vpp, to the probe connected to CH1, then using a small screwdriver, possibly plastic, turn the compensator screw on the probe itself, until a perfect square wave is seen, without overshoots, bevels or inclined edges (see Fig. 4).

 

Fig. 4

 

For the 2Dxx versions, everything is simplified by the fact that you can use the built-in waveform generator, but the 2Cxx versions don’t have one, so we thought we’d use a low-cost kit instrument that will come in handy for both probe compensation and oscilloscope verification. Now we are ready to view and measure our signals with the oscilloscope.

Once the FT1464K kit has been assembled, we have arrived at the point where we have a valid waveform generator (sine, triangle and square), with adjustable frequency from 50 Hz to 6 kHz (in two ranges: 50 Hz÷600 Hz and 600 Hz÷6 kHz) and amplitude 2 Vpp AC (sine), 11 Vpp AC (sine) and 11 Vpp AC (sine). (sinusoid), 11 Vpp AC. (square), 3.5 Vpp AC. (triangular).

The generator in the kit and the 2Cxx handheld computer will be mutually useful, as the oscilloscope will allow the various trimmers in the generator to be calibrated once the probe is calibrated, but also during the calibration phase.

Let’s proceed in order: we know the amplitude of the generator signal (11 Vpp ac) and we know that we need a 1 kHz frequency, so let’s see how to pre-set the two instruments. We start with the FT1464K generator in which:

-trimmers VR3 and VR4 must be positioned at about half stroke;

-the potentiometer must be turned all the way to the left;

-the flow switch is set to FR-H to set the range >600 Hz.

 

Once this is done, plug the probe BNC into the CH1 socket of the oscilloscope; set the attenuation switch to 10X and connect the probe tip to the square wave output and the alligator clip to the generator ground.

We now go to the oscilloscope, where we set CH1 to AC coupling, then press F4 and F1 in sequence to set the attenuation to 10X.

Since we expect a signal with an amplitude of about 11 Vpp, to see it as wide as possible it is best to set the V/DIV to 2 V~ using the Right and Left arrows.

The period relative to the frequency of 1 kHz is its inverse, i.e., 1/1000 Hz=1 ms, so a single square wave lasts 1 ms; the horizontal grid is composed of 12 divisions, let’s consider 10 for convenience; each of them must be worth 1/10=100 us; we must therefore set the Time/DIV to 100 µs. Then press Time and the Right and Left arrows to set the horizontal cursor T to 0.000 ns; then            Time and the Up and Down arrows to set the Time/DIV to 100.00 us.

At this point, we can power the generator with 12 Vdc using any power supply; if everything has been set up according to our instructions, the display will show a very large square wave and the box in the top right-hand corner (if it is not visible, re-read the section on the Utility Menu and enable it) will show the yellow values close to these:

-MAX   5.5 V;

-MIN     5.5 V;

-FRE      600.0 Hz.

 

These values may vary due to the fact that our generator is not a professional instrument, if they vary a lot there will be a circuit problem in the generator or some wrong setting in the instruments or in the probe.

Start by turning the potentiometer very slowly to the right until you obtain a value as close as possible to 1000 Hz, the multiturn trimmer VR2 will be used to obtain the most precise value possible.

Referring to Fig. 4 above, if necessary, adjust the probe compensation until a perfect signal is obtained.

 

Fig.5

 

Calibration of the waveform generator

Once the probe has been adjusted, we can calibrate the generator, starting with the duty cycle of the square wave; except for future requirements, the value to be set is generally 50%; if necessary, turn the VR3 trimmer until the HIGH period of the signal occupies the same number of divisions (squares) as the LOW period, specifically, each of the two periods must occupy exactly 5 divisions. In fact, each division is worth 100 us, a 1 kHz cycle lasts 1 ms, therefore 10 divisions, the duty cycle at 50% means exactly 5 divisions for each of the two periods LOW and HIGH.

At this point we can move on to the calibration of the sinusoidal signal:

  • Volts/DIV must be           set to 500 mV;
  • Time/DIV must be           set to 200.0 us;
  • Connect the probe to the sine wave signal output.

 

Now turn the VR4 trimmer until a sine wave is obtained in which the two half-waves are as equal as possible to each other.

The last check is made by connecting the probe to the output of the triangular wave, if everything is in order you will see two cycles that will completely fill the display both vertically and horizontally.

Both tools are now ready to be used for their respective functionalities.

 

Using the handheld computer software

We have already mentioned the installation of the software in the preliminary operations. The software obviously requires the use of a PC, which obviously affects the question of portability, but on the other hand, greatly simplifies operations, as well as provides the instrument with additional features, such as a series of additional measurements, not available on the handheld, and the possibility of automatic firmware updates; in addition, the PC can easily be a small tablet (or a netbook), which would not affect the overall size and weight of the instrument.

For our purposes, we will only use it to easily take pictures of the various sizes, while for its in-depth use we always refer you to the excellent and comprehensive user manual in Italian.

 

Using the oscilloscope

To test our oscilloscope, we use the other small accessory tool supplied by Open Electronics, the Velleman Oscilloscope Tutor. This is a PCB without a case, already assembled and tested, which, by simply using a normal mains power supply, with a 9-12 Vac output, makes it very easy to carry out eight experiments with any oscilloscope. Let’s take a look at two of them as examples, which we think are suitable for a good evaluation of our instrument.

–  Measure an AC voltage: connect the probe (10x attenuator – CH1) to the test point (tp1) and the alligator clip to tp2. Set the Vertical stage (Channel) to AC and 10 V/DIV, the Horizontal stage to 10 ms/DIV, and the Trigger to Rising and Auto.

The display grid is set at 10 Vpp/DIV and therefore the signal, in this case, is about 34.8 Vpp, which represents the sum of the VMAX and VMIN visible on the instrument; if you want to know the actual (or effective) value of the signal, you must activate the RMS measurement in the software.

Then in the software we use the Measure – Edit options menu option and activate the Peak to Peak, Frequency, and RMS boxes. The result is in Fig. 6. The frequency, as expected, is 50 Hz, the VRMS is 12.3 V, while the Vpp is 34.8 V.

–  Comparison of two out-of-phase waveforms: connect the probe (attenuator 1x – CH1) to tp9, the alligator clip to tp4 and the red clip of the BNC-alligator cable (CH2) to tp10 (the black one can remain free). Set the Vertical stage (Channel) to AC and 5 V/DIV for both CH1 and CH2 (must be enabled), the Horizontal stage to 20 ms/DIV, the Trigger to Rising and Auto. Also in the software, if the green signal does not appear, enable CH2 (Vertical section on the right). With Measure – Edit options activate the VRMS and Frequency measurements for both channels. Finally, using the side arrows 1 and 2 on the left, adjust the height position of the two tracks, so that they are both clearly visible on the screen. The result is visible in Fig. 7.

 

Fig. 6

Fig. 7

 

Using the built-in waveform generator (2Dxx series)

The connection between the two instruments is made by connecting the probe (in 10X mode) to CH1 and the BNC crocodile probe to the BNC Gen Out, with the two black crocodile clips connected together and the probe hooked up to the red crocodile clip (Fig. 8). We will see, again, three different signals.

 

Fig. 8

 

–  Generation of a 5 MHz 2 V square wave signal: click on the AWG key, set type = Square, Freq = 5 MHz and Amp = 2 V; for the latter two settings, you can press the relevant function key (F2 or F3) twice to enter keyboard mode, and enter the desired values with ease.

Press the RUN/STOP button so that the OUTPUT symbol on the display turns green. Click on Scope to switch to oscilloscope mode and set CH1 to 2 V/DIV, AC coupling, Time/DIV to 100.0 ns. Via software, we can activate the VRMS, Vpp, and Frequency measurements to confirm the correctness of the settings made on the Generator (Fig. 9).

 

Fig. 9

The signal we see in the image, being at very high resolution, shows a typical characteristic of square wave generation, the irregularities of the LOW and HIGH zones of the signal, it should be considered that the effect is found, at high frequencies, even in instruments of much higher cost.

However, those who are familiar with digital logic know that this is not a problem at all, since the range of reading of the logical states provides that a signal is considered HIGH when its level is greater than or equal to 2/3 of the value of the power supply, it is instead considered LOW when its level is less than or equal to 1/3 of the value of the power supply; it is easy to understand how small variations in amplitude, both on the HIGH and LOW levels, do not create any problem for the operation of a digital circuit. At low frequencies this effect is practically invisible.

–  Generating a 25 MHz 2.5 V sinusoidal signal: click on the AWG button, set type = Sine, Freq = 25 MHz and Amp = 2.5 V. Press the RUN/STOP button so that the OUTPUT symbol on the display turns green.

Click on Scope to switch to oscilloscope mode and set CH1 to 2 V/DIV, DC coupling, Time/DIV to 20.0 ns. We activate via software the VRMS, Vpp and Frequency measurements (Fig. 10). You can see with this test that the oscilloscope has no difficulty in showing a high-frequency signal on the display, and as we all know, depending on the model, these instruments read signals up to 40 or even 70 MHz without any problems!

 

Fig. 10

 

–  Generation of a
1 MHz 1 V triangular signal
:
click on the AWG button, set type = Ramp, Freq = 1 MHz and Amp = 1 V.

Press the RUN/STOP button so that the OUTPUT symbol on the display turns green. Click on Scope to switch to oscilloscope mode and set CH1 to 500 mV/DIV, AC coupling, Time/DIV to 500.0 ns. Again, activate VRMS, Vpp and Frequency measurements (Fig. 11).

 

Fig. 11

 

Using the digital multimeter

The digital multimeter is a universally known instrument, if only because it is always the first tool purchased to equip a laboratory. In our case, in addition to the usual voltage, current and resistance measurements, this instrument offers the possibility of checking the integrity of the junctions of semiconductor components (diodes, transistors, jFETs, etc.), measuring the capacitance of capacitors and searching for short circuits, signaled by the sound of a buzzer.

To activate it, press the DMM button, then set the type of reading to be taken and connect the two test leads accordingly, remembering that the black lead always goes into the COM (common, GND, ground) socket, while the red lead goes into one of the three red sockets.

A special feature, not found in the vast majority of multimeters in circulation, is that depending on the measurement set, the display clearly shows where the two test leads should be inserted, which is useful not only for beginners but also for experts who, in a moment of distraction and haste could make a mistake and certainly obtain undesirable results.

Another useful feature is the lack of measurement scales. Once the measurement has been taken, our multimeter displays it at the highest possible resolution, automatically choosing the scale from those indicated in the technical characteristics table.

–  Measurement of a direct voltage: once again we use our bench power supply, we set a voltage of 20.8 V and read it on the display; to set the multimeter, simply press F1 (DC V) and insert the black test lead into the COM socket and the red one into the V/Ω/C socket, then connect the ends of the test leads to the two crocodile clips on the power supply cable, respecting the colors. Instantly, the display of the multimeter will show the measured value (in our case 20.72 Vdc); the slight difference between the two values is partly due to the tolerance of the two instruments and partly to the fact that the multimeter has two decimals to show the actual value, while the display of the power supply used for the test has only one decimal (Fig. 12).

 

Fig. 12

 

–  Measurement of a direct current: in this case, we will supply a low-voltage LED and measure its absorption.

Let’s set up the instruments: the power supply has to be set to 3 V, while on the multimeter you have to press F4 – F2 (DC mA) and then move the red tip to the mA socket (indicated by the display). Connect the black alligator clip to the black test lead, the red test lead to the anode of the LED (the longest pin) and the red test lead to the cathode of the LED (the shortest pin).

Again, the measurement will be instantaneous, the LED will light up and the display will show the power consumption: in our case 2.33 mA, which is too low to be shown on the power supply’s display, which has a resolution of 10 mA (Fig. 13).

 

Fig. 13

 

Conclusions

Well, we will stop here with the description of the Hantek multifunction oscilloscopes and our impressions of their use on the bench. We believe that what we have outlined in these pages is sufficient to allow you to evaluate the potential of HANTEK handheld instruments in the main measurements that a technician might have to make, both on the bench and in the field.

 

From openstore

Oscilloscope 2CH – 70 MHz+Multimeter

Oscilloscope 2CH – 70 MHz+Waveform Generator+Multimeter

Tutor Oscilloscope

Waveform generator

 

 

 

 

The post HANTEK 2000 series: The all-in-one handheld instruments appeared first on Open Electronics.

Qorvo Brings RF Expertise to European Microwave Week 2026

Сбт, 10/03/2026 - 18:00

With European Microwave Week 2026 approaching, here is an overview of Qorvo’s plans for the show and its participation in the technical program.

Qorvo, a leading global supplier of connectivity and power solutions, will present RF technologies and system-level expertise for radar, satellite communications, defense and space applications at European Microwave Week (EuMW) 2026, which will be held at ExceL London from 4 to 9 October.

At stand B30A, where Qorvo exhibits together with authorized distributor RFMW, Qorvo experts will bring a system-level perspective on current RF programs and design challenges. Visitors to the stand will be able to explore RF architecture and signal chain trade-offs, power and thermal considerations and the integration issues that affect system performance, as well as approaches for increasing bandwidth and output power while maintaining RF performance.

During the week, Qorvo will also contribute to a series of technical sessions and forums, including:

  • Sunday 4 October – SS-01, EuMC: Ryan Jennings, Director of Si, SATCOM and Systems Engineering at Qorvo, and Dean White, Senior Director of Aerospace and Defense at Qorvo, will co-chair the workshop “Challenges and Payoffs in Next-Generation SATCOM: Multi-Band, Multi-Orbit, Multi-Constellation Ground Terminals”. The workshop will explore the technical and architectural challenges of delivering affordable, energy-efficient ground terminals for multi-band and multi-orbit satellite networks.
  • Monday 5 October – IEEE MTT-S Inter-Society Technical Panel: Greg Clark, Senior Director of Defense and Aerospace Products, will take part in the panel “Building a Sustainable and Resilient RF Semiconductor Industry”, which examines the challenges of building sustainability across materials, devices and applications, including RFIC and MMIC design, for telecommunications, sensors and emerging applications.
  • Wednesday 7 October – Defense Forum: Dean White will present “Future European Defense Systems – RF Technology for Smaller, More Capable Platforms”. The forum will examine microwave technologies for radar, electronic warfare, secure communications and drone detection.
  • Thursday 8 October – Space Forum: Ryan Jennings will present “Advances in RF Architecture for Next-Generation Ground Terminals: Multi-band, Multi-orbit, Multi-constellation”. This forum will examine RF, microwave, millimeter-wave and terahertz technologies for future space systems and ground terminals.

Visitors can meet Qorvo throughout the exhibition at stand B30A or arrange a meeting with a Qorvo expert through the Qorvo EuMW 2026 event page.

The post Qorvo Brings RF Expertise to European Microwave Week 2026 appeared first on Open Electronics.

Foamcutter

Сбт, 10/03/2026 - 16:00

We manufacture a machine able to obtain any kind of shape starting from expanded materials, by cutting with hot wire.

Since hobbyist versions of these machines have been made, machines for shaping solid objects have spread widely, trespassing industrial terrain and landing in schools and the homes of ordinary people: we speak mainly of 3D printers that work by additive printing, but also of other printers for solid objects that in a sense are 3D, while operating with the subtractive technique (CNC mills) or cutting; an example is the Foam Cutter proposed in these pages, which is basically a two-axis printer but able to cut, from slabs of foam and foams of various kinds (sponges, slabs of polystyrene foam and expanded or compact polystyrene, as well as EPP), even 12 cm thick, any kind of figure, even very complex.

In fact, while operating in only two dimensions, this machine allows you to create three-dimensional objects. Cutting is done by hot wire, that is, through a thin metal filament of NiCr alloy (nickel-chromium) that is crossed by a current regulated in order to stabilize the temperature reached and obtain an extremely precise cut and thin passages from the external to the eventual internal. The wire is moved vertically by a mechanism that slides on the uprights of the horizontal carriage, moved by a motor located at the base.

But let’s get to the heart of the project, analyzing first the electrical and electronic part, which basically follows that of a 3D printer but with a few less parts and a revised hardware.

THE CONTROL UNIT

The electronics of the printer is composed of an Arduino Mega board with applied a RAMPS shield, which is the basis of many 3D printers with Arduino architecture and contains all the drivers for stepper motors (in our case it supports 5, but having two stepper-motors we mount only two, namely those of the X and Y axes) and for the heaters of two extruders, as well as manage the limit switches needed to stop the motors when their relative drives arrive at the end of the stroke (Fig. 1).

Fig. 1

The Arduino Mega governs the printing machine through the RAMPS shield and through the USB Device port it is equipped with, it interfaces with the Personal Computer from which it receives the files to be printed and all the settings requested from time to time.

On the electromechanical level, we have two NEMA17 stepper motors, one to slide the carriage horizontally and the other to raise the guide that supports the hot wire on the carriage; in both cases the coupling is a toothed belt.

Then there are the limit switches for these two movements.

The filament is powered through the D10 output of the RAMPS shield, which is connected to a power MOSFET normally used (in the 3D printers the shield is intended for) to power the resistance of extruder no. 1 in PWM; for this reason, as will be clear later, to raise or lower the temperature of the filament we will act on the control of the print client (for example Repetier Host) which acts on the fan speed.

The RAMPS shield is now a standard on which different documentation exists on many websites; we limit ourselves to saying that it contains a certain number of Pololu stepper-motor drivers configurable by jumper in order to set and select multiple microstepping modes and MOSFETs for controlling the extruders.

It also has inputs for reading the NTC thermistors which can be used to read the temperatures of the extruders (not used here) and of the limit switches; everything is interfaced through the headers to the analog and digital I / O of the Arduino Mega.

As you can see in the photo of the shield, between the sockets of each driver module there are three jumpers that are used to define the division factor for the microstepping mode; in our machine the caps must be mounted on all three, in order to set the division factor to 16 (Fig. 2).

For the power supply of the machine (12Vdc) is used the 5 A input of the RAMPS shield.

Fig. 2

To this electronics, if desired, you can add a control panel that allows the use in stand-alone mode; it is basically a unit similar to that provided for the stand-alone use of the 3Drag printer, but programmed with a specific firmware that allows you to display on the LCD screen only the parameters and menu items relevant to the Foam Cutter.

Let’s go back to the D10 output and the fact that the filament power is regulated by the client as if it were the speed of the extruder fan: this, for those who know 3D printers may seem strange; the trick is that the firmware of our machine cutter-polystyrene has been modified with respect to that from which it derives (that of 3D printers) especially in the part that concerns the extruders and the hot plate.

In particular, the extruder 2 is not managed and for the 1 the relative output D10 does not consider the feedback operated with the thermistor (here absent) but behaves like the one of the fan; therefore, the firmware interfaces with the printing client and associates the command to set the extruder fan speed to the PWM signal produced by D10.

That’s why with the fan command we actually vary the current, the power and therefore the filament temperature.

CUTTER MECHANICS

As for the mechanics, it is composed of a base resting on two plexiglass shoulders and formed by two aluminum profiles, two uprights always in aluminum profile, a horizontal carriage (X axis, Fig. 3) formed by a sheet of plexiglass with a stepper-motor applied (for the horizontal axis) and two uprights composed of aluminum profiles that support the mechanism of elevation of the hot wire, composed of two mini-carriages (Y axis) and driven by a toothed belt from a second stepper-motor located in the plexiglass base of the carriage. This belt runs in the hollows of the profiles that act as uprights of the trolley, so as not to be accessible from the outside (Fig. 4).

Fig. 3

Fig. 4

The hot wire fastening system is the same as that used for vertical movement, i.e. up or down, and consists of two small trolleys that slide, by means of wheels, in the slots of the uprights of the horizontal axis trolley. Each of these half trolleys supports and stretches the nickel-chromium filament by means of a helical spring with terminal eyelets that works under traction and has one of the eyelets fixed on the trolley by means of a screw and the other fixed to one end of the hot wire (Fig. 5).

Fig. 5

To stop the foam slab during processing, a series of “pins” have been fitted to the uprights of the machine so that they can slide up and down when the slab is positioned; in practice, to assemble the slab, after making sure that it is as wide as the inside of the machine shoulders minus the thickness of the moulded support points, the latter are applied to the edges of the slab itself by sticking them in and then sliding them down into the slots of the uprights until the lower part of the slab touches the profiles of the base.

INSTALLATION AND USE

Now let’s see how to use the cutter: first of all we need to create the pattern of the object to cut and to do that we need to download from https://inkscape.org the latest version (at the moment 0.92.4) of Inkscape software. Then you have to install the FoamCutterPlugin plugin (downloadable from https://github.com/open-electronics/foamcutter) by copying the files contained in the .zipper file in the InkScape extensions folder (typically C:Program Files (x86)Inkscapeshareextensions).

Then open Inkscape and define the size of the document (Fig. 6), then draw or write in the area of the document what you want to get from the machine; in the example we propose we’ll print the Elettronica In logo, then write the text and place it in the lower left corner (Fig. 7).

Fig. 6

Fig. 7

Whether they are writings or drawings, in order to print them, in Inkscape they must be converted into paths using the appropriate command From object to path (for texts) or Vectorize bitmap (for images) accessible from the Path menu (Fig. 8).

Fig. 8

Subsequently, from the Extensions menu, the command FoamCutter is given (available because you have already installed the relative plugin for Inkscape) and this opens the procedure that allows you to obtain the G-code to be opened, when operating the machine, in the print client, starting from the created path. In the dialog box accessed (Fig. 9) it is possible to select where the G-code is to be created, the dimensions of the foam plate, the execution speed (a value of 300 mm / min is good for a polystyrene of approx. 1 cm), the power to be applied to the wire in percentage (25 is fine for a polystyrene of about 1 cm) and if the curves need to be rounded. In general, temperature and speed must be configured according to the thickness of the material to be cut. In any case, set the document properties according to the size of the polystyrene plate, foam or other material to be processed, in millimeters and apply the appropriate settings. For the example proposed, you must set the parameters as shown in Fig. 9, at least as regards the Setup tab.

Fig. 9

Leave the default settings in Usage for the moment and then click Apply; so confirm the plugin settings and exit the Inkscape extension, saving the created file and going to the print client for the next step. Inkscape will create the G-code related to the writing that we will print.

At this point, open Repetier Host and import the G-code you are interested in. First you need to configure the machine: from the Settings menu, select the virtual COM port to which the FoamCutter is connected and a communication speed of 115,200 baud (Fig. 10). Then:

• select the maximum cutting dimensions of the machine (480x500mm);

Fig. 10

• enable the visualization of the route (for this purpose click on the eye-shaped icon (Fig. 11);

Fig. 11

• after connecting and powering up the FoamCutter, from the Manual Control menu you can move the axes and bring them to Home (Fig. 12); Home for this machine corresponds to the X carriage towards the min endstop and the Y carriage at the top towards the min endstop); this configuration allows you to avoid breaking the wire and work the slab from above;

Fig. 12

• with the Load button you can import the G-code created (Fig. 13); the writing will be positioned near the home, then the object will be cut starting from the top, then reversed vertically.

Fig. 13

Now position the plate and bring the wire near the upper corner of this, then start the cut, waiting for the writing to be cut and at the end of the work remove the plate, taking care not to damage the nickel-chromium filament.

Here, your first realization will then be finished. Of course, this was a useful example to explain the procedure by which the graphic idea is passed to the creation of the G-code file, which will then be printed using the popular Repetier Host print client. Recall that the temperature of the hot wire can be varied with the client’s Fan slider, raising it if you want a higher cutting speed or if the filament is straining, or lowering it if not and if you see that the cut trace gets too wide.

FROM OPEN STORE

3D Printer Full Graphic Smart Controller with 3Drag adapter

The post Foamcutter appeared first on Open Electronics.

ESP32-C6-Zero: a low-power IoT gateway

Сбт, 10/03/2026 - 13:00

This project turns the ESP32-C6-Zero board into an IoT gateway. The device collects data from wireless sensors and forwards it onto the local network. In practice, it acts as a bridge between Bluetooth LE devices and the home Wi-Fi. All of this with low power consumption and a minimal footprint.

The board at the centre of the project is the heart of the system. The ESP32-C6-Zero development kit integrates an ESP32-C6 microcontroller with Wi-Fi 6 and Bluetooth LE radios. Having both radios is the key strength: the gateway can listen to BLE sensors and, at the same time, talk to the Wi-Fi router. Connectivity is therefore dual, and no additional hardware is needed.

The MicroPython firmware

The gateway software is written in MicroPython. The language simplifies managing network connections and reading radio packets. The code handles three main operations: initialising the two radios, listening for incoming messages from the sensors, and forwarding the data to the local server. All of it in a continuous, readable loop.

The source code is available in a public repository. The code repository contains the example sketches and the instructions for the first boot. Anyone who wants to replicate the project will also find the network configuration and the parameters to change in order to adapt the gateway to their own home network. What is more, the modular structure of the firmware lets you add new types of sensors without rewriting the whole program.

Handling the received packets is another carefully thought-out point. The gateway filters valid messages and discards corrupted or duplicate ones. For every valid data item, it creates a JSON payload and sends it over Wi-Fi. This approach makes the system robust even in environments with many active radio devices.

Power supply and consumption

The gateway’s power supply is flexible. The ESP32-C6-Zero board can be powered through the USB Type-C connector, which is useful during development and testing. For bench use, on the other hand, you can connect a LiPo battery to the power pins. This dual option makes the project suitable both for a fixed setup and for a portable device.

Consumption is kept low thanks to the power-saving features of the ESP32-C6 chip. The firmware can put the radio into sleep mode when there is no data to transmit. This way, the gateway can stay active for a long time even with a small-capacity battery. The project does not state precise battery-life figures, but the choice of components clearly aims at efficiency.

For anyone who wants to get started, the path is simple: all you need is an ESP32-C6-Zero development board and a USB cable. The kit includes integrated sensors and peripherals that help with the first tests. What is more, the presence of a USB Type-C connector makes programming convenient and fast.

The project lends itself to many practical uses. For example, it can become a network thermometer that collects data from several wireless probes. Or a door opener controlled from a smartphone via Bluetooth. The interesting thing is that the same hardware and software base adapts to different scenarios with just a few changes.

  • Gateway for Bluetooth LE sensors
  • Bridge between BLE network and Wi-Fi 6
  • MicroPython firmware
  • Powered via USB Type-C or LiPo battery
  • Source code in the repository

The code repository is the starting point for anyone who wants to dig deeper. There you will find the firmware files and the configuration notes. The project demonstrates how a single board can handle two different radio protocols and become a useful node in a home automation network.

Source: https://github.com/RaemondBW/esp32-ant

The post ESP32-C6-Zero: a low-power IoT gateway appeared first on Open Electronics.

Quaddle: A Mini Quadruped Robot for Physical AI

Сбт, 10/03/2026 - 11:00

Quaddle is a mini desk-sized quadruped robot designed for physical AI experimentation. The project, by Dr. Rongzhong Li and funded on Kickstarter, uses the open-source OpenCat framework. It is available in three models: Builder, Buddy, and Scout. Its distinctive feature is the use of only 4 servos instead of the usual 8–12, which reduces cost and complexity without sacrificing movement.

The heart of the robot is an ESP32-S3FN8 motion core that manages the servos, LED PWM, buzzer, and gyroscope for balance and touch response. The servos with position feedback enable Puppet Mode: you guide the legs by hand and record movements without writing code. The Scout model includes an optional ESP32-S3R8 AI core for voice recognition and Smart Home control.

The three Quaddle robot modelsThe three models: Builder, Buddy, and Scout
Performance and battery life

Quaddle reaches a top speed of 1.8 BodyLength/s at a trot and 3 BodyLength/s in a glide. Rotation in place reaches 90°/s. Dimensions vary: 11×7×7 cm for Builder and Buddy, 11×7×11 cm for Scout. Weight ranges from 170 grams for the Builder to 198 grams for the Scout.

Power comes from a replaceable BL10C 1800 mAh battery. Battery life ranges from 1.5 hours on the Builder model to 1 hour on the Scout, which has more sensors and an optional AI core. The project has already shipped over 30,000 robots to more than 60 countries, and two previous campaigns raised over 1 million dollars.

Sensors, extensions, and programming

An extension hat adds a touchpad, RGB LEDs, microphones, Grove connectors, a PIR sensor, and a UART port for Raspberry Pi. The Scout model features a sense core with infrared sensors, light sensors, gesture recognition, and optional AI vision. Everything is managed by the open-source OpenCat firmware, which you can explore in the code repository of Dr. Rongzhong Li.

Programming is versatile: OpenCat is based on Arduino, but the robot also supports Python, MicroPython, C++, ROS, ESPHome, and Xiaozhi AI. This makes it suitable for schools, hobbyists, and researchers. In addition, more than 20 academic papers cite the platform.

  • ESP32-S3FN8 motion core for servos, LED, buzzer, and gyroscope
  • Optional ESP32-S3R8 AI core on Scout for voice recognition
  • Hat with touchpad, RGB LEDs, microphones, Grove, PIR, and UART for Raspberry Pi
  • Sense core on Scout with infrared, light, gestures, and AI vision
  • Puppet Mode to record movements without code

The Kickstarter campaign has a funding goal of $50,000. The Builder model is priced at $99 (list price $149), the Buddy at $139, and the Scout at $199. Shipping costs $15 to most of the world and $18 to the European Union. Rewards are scheduled for delivery in December 2026.

Internal view of the Quaddle robotInternals

For those who want to get started, the Builder model is the most affordable and lightweight. If you are looking for AI features and advanced sensors, the Scout offers the complete package. All models share the same motion core and OpenCat firmware, so the programming foundation remains identical.

Source: https://github.com/PetoiCamp/OpenCat-Quadruped-Robot

The post Quaddle: A Mini Quadruped Robot for Physical AI appeared first on Open Electronics.

3D-Printed Tactile Zoo: Young Makers Show Off Their Mistakes

Птн, 10/02/2026 - 16:00

A group of children aged 7 to 13 is building a tactile zoo with 3D-printed robotic animals. The creatures, more than 20 in total, are equipped with LEDs, motors, buttons, and gears. At Maker Faire Bay Area, the group will also display their printing errors and failed prototypes. The goal is to show the iteration process that leads from an idea to a working object.

The project turns 3D printing into an educational and interactive activity. Mistakes are not hidden but become an integral part of the exhibition. Visitors can thus understand that making errors is a normal step in the work, not a failure. The maker’s website details how the children faced technical difficulties and what solutions they found.

From choosing the animal to the first print

Each young maker chooses an animal, real, mythological, or completely invented. Then they decide what behavior the creature should have. Some design the animals from scratch, others start from existing 3D models and modify them, cutting or redesigning sections to make room for the electronics. Once the body is ready, they add a function such as an LED, a servo, a motor, a button, or a set of gears.

The group includes eight creatures, among them Em. To make Plate the Armadillo roll into a ball, 11 prints were needed. Each failed attempt taught something new: a joint too tight, a motor off-axis, a wall too thin. The children learned to observe the error and correct it in the next print.

An exhibition you can touch and open

The zoo is not a simple showcase. Visitors can press buttons, flip switches, and open the animals to see the wires, gears, and electronics inside. This choice makes the electronics transparent and understandable even to those who have never opened a device. Next to the finished animals, broken prints, melted parts, and earlier versions are displayed, so visitors can ask what went wrong and how it was fixed.

For those who want to recreate the project, the electronic part can be built with simple, modular components. For example, a servo motor with metal gears can move an animal’s legs, while a shield for controlling RC servos allows managing multiple movements with an Arduino board. For light effects, a WS2812 LED matrix offers endless color possibilities. Finally, a compact board like the Arduino Nano Matter can handle logic and connectivity in a small space.

Mistakes on display: the educational value of failure

The choice to display printing errors is the heart of the project. In a world that shows only perfect results, these children reveal the behind-the-scenes. The broken prints tell the real difficulties of 3D printing: material shrinkage, parts detaching from the bed, motors that don’t find space. Visitors to Maker Faire will be able to talk with the young makers and discover how each problem was tackled.

This approach also changes the way the children work. They learn that a failed prototype is not wasted time, but a step forward. Each error provides valuable information for the next version. The iteration process thus becomes a mental habit, useful not only in 3D printing but in every design activity.

Source: https://view.protectedpdf.com/portal/AMR/LogIn

Related products

The post 3D-Printed Tactile Zoo: Young Makers Show Off Their Mistakes appeared first on Open Electronics.

GSM remote control: emulating the TDG series (part 2)

Птн, 10/02/2026 - 13:00

Let’s emulate the TDG series remote controls using the GSM Shield. Second and final instalment.

We left off last month after presenting the design of the 2IN/2OUT remote control that emulates the behaviour of our TDG133 with revised hardware based on the GSM Shield described in issue 231 and on an Arduino Mega 2560 board. What makes this system special is its versatility and flexibility: compared with the original TDG133 – which has two optoisolated inputs at voltage level and the same number of relay outputs – it can handle up to 8 inputs (not optoisolated but still digital) and 8 outputs (assignable to modular relay boards) simply by customising its firmware and taking advantage of the large number of I/Os the Arduino Mega 2560 offers.

After explaining the hardware (shown in Fig. 1 without the shield that provides the interconnections and in Fig. 2 with that shield fitted…) and describing the architecture of the firmware and the sketch that govern its operation, we pick up where we left off, that is from the explanation of the factory default parameters.

GSM Shield plugged onto an Arduino Mega 2560 boardFig. 1 The GSM Shield fitted to an Arduino Mega 2560.
GSM Shield with the remote control shield stacked on top, mounted on an Arduino Mega 2560Fig. 2 The GSM Shield with the remote control shield fitted, all mounted on an Arduino Mega 2560.
Factory parameters

When the EEPROM is programmed with the dedicated sketch, or when the factory parameters are restored with the dedicated command string, the data needed for these two operations is taken both from compiler directives of the “#define” type and from the microcontroller’s Flash, where it is stored permanently.

This data is at the top of the file “GSM_TDG133.ino”, and in sequence it is:

  • a block with the “#define” directives concerning the base addresses of the data held in EEPROM, identified by the comment “EEPROM FACTORY PARAMETERS ADDRESS”;
  • a block with the “#define” directives concerning the parameters with their default values; the block is identified by the comment “EEPROM DEFAULT FACTORY PARAMETERS”; this section holds the following:
  • generic flags;
  • enabling of notifications by SMS and voice calls;
  • inhibition time;
  • observation time;
  • maximum number of SMS in the event of an alarm;
  • timeout for sending the SMS with the status of inputs and outputs;
  • timeout for the gate-opening function.
  • a block with the “const char” directives for defining in Flash the string parameters such as the SMS to be sent in the event of an alarm.

Let’s look in detail:

  • the block of our GSM library containing the PIN, PUK etc. codes, identified by the comment “GSM Library PIN, PUK etc”; the user must enter the PIN code and PUK code of their own SIM, while all the other codes are not used in this application, but they must not be removed because they are part of our GSM module management library;
  • the block with the strings used in the remote control, identified by the comment “SYSTEM PASSWORD; SMS TEXT FOR ALARM, START-UP etc”; here we find the system password (five numeric characters, default 12345″), the strings for input 1 alarm, the strings for input 2 alarm, the string for the SMS sent at sketch start-up; the string for the mains failure SMS; the string for the mains restored SMS.

Further on in the code we find all the command strings used in the sketch, and they are all stored in the microcontroller’s Flash. None of these strings must be modified by the user, otherwise the configuration commands will stop working. If new commands are added, the code to handle them must be added too.

Configuring the GSM library parameters

A few words on configuring some parameters of our GSM library and the related board: first of all, remember to set the jumpers on the GSM board so as to route correctly the TX and RX lines of the UART used for communication between the ATMEGA 2560 and the GSM module. The sketch uses software UART 1, with the option of spying on the serial communication between the GSM module and the Arduino Mega 2560 board. So jumpers JP1 to JP7 on the GSM board must be placed in position 1-2 as explained in the articles dedicated to the GSM board. In any case, the file “Io_GSM.h” has a table at the top showing how the jumpers must be configured.

That said, here are the settings to apply for the library to work correctly (the parameters to configure are all in the file “Io_GSM.h”):

  • select the GSM module you intend to use from those supported (for this application we used the SIMCOM SIM800C) and comment out all the other directives for the GSM engines;
  • select the Arduino board to pair it with, in this case the Arduino Mega 2560;
  • select the hardware revision of the GSM board; select revision R.1.3, currently in production;
  • select software mode for the UART 1 serial communication; if you wish, you can also select UART 1 in hardware, but remember to configure the jumpers correctly;
  • comment out the directive that enables the earphone audio jack, “EARPHONES_JACK “;
  • finally, the state machines to enable for our remote control:
  • generic AT commands → “ENABLE_ANSWER_GENERIC_AT_CMD_STATE”
  • security AT commands → “ENABLE_ANSWER_SECURITY_AT_CMD_STATE”
  • phonebook AT commands → “ENABLE_ANSWER_PHONEBOOK_AT_CMD_STATE”
  • SMS send and receive AT commands → “ENABLE_ANSWER_SMS_AT_CMD_STATE”
  • voice call AT commands → “ENABLE_ANSWER_PHONIC_CALL_AT_CMD_STATE”;
  • the debug code is disabled, so comment out the “DEBUG_MODE” directive.
Supported command strings

The sketch supports countless command strings inherited from the current TDG133. Almost all the command strings have been imported into this sketch, and new ones have been added specifically for this application. The strings can be sent by SMS or from the Serial Monitor.

For the main ones we will give a short description and an example of use. For convenience, all the command strings covered will be sent to the remote control through the Arduino IDE Serial Monitor. If the strings are sent by SMS, you should expect a possible reply from the remote control, again by SMS. When commands are sent by SMS, text strings will in any case be printed on the Serial Monitor to indicate whether or not the command was executed.

The system password

Let’s start with the command for setting the system password, which is the following:

PWDxxxxx;pwd

Passwords are numeric only and consist of five numbers. Alphanumeric characters are not allowed. The command code is “PWD” followed by “xxxxx”, which identifies the new password you want to set, for example “33225”. At the end you must enter the system password currently in use, preceded by the “;” character. So the command becomes:

PWD3325;12345

Once the command has been executed, what you see on the Serial Monitor in response is:

# Command received by user -> PWD33225;12345 # Command “PWD” processed successfully

This indicates that the command was received and executed correctly. The new system password is now “33225”.

Saving and deleting phonebook numbers

Let’s move on to the command for storing a phone number in the phonebook at the desired location:

NUMx+39nnnnnnnnnnn;text;pwd

The command code is “NUM” and it stores the phone number “nnnnnnnnnnn” in the memory location indicated by “x” (1 ≤ x ≤ 255). The “text” string is used to associate a text with the phone number entered. The text can be at most fourteen characters long, and it is mandatory. Finally comes the system password. A possible use of the command could be the following:

NUM2+393474131177;”Rossi”;33225

In this case, in location 2 of the SIM phonebook, the phone number “3474131177” with international prefix “+39” will be saved, paired with Mr “Rossi”. What you see on the Serial Monitor as the sketch’s response is:

# Command received by user -> NUM2+393474131177;ROSSI;33225 # Command “NUM” processed successfully

Now let’s look at the command for removing a phone number from the phonebook:

NUMx;pwd

The command code is the same as before, that is “NUM” followed by the phonebook memory location you want to delete. Obviously the password must be entered. So the syntax becomes:

NUM2;33225

Reading the phonebook

Now let’s look at the command for requesting the list of the first eight numbers in the phonebook:

NUM?;pwd

In this case the command code is “NUM?” followed, as always, by the password. Running the following command:

NUM?;33225

You get the following response:

# Command received by user -> NUM?;33225

# Command “NUM?” processed successfully

# The phone number read at the location: 1 is -> “+393491544888”

# The text associated to the phone number is: “ADMIN”

# The phone number read at the location: 2 is -> “+393474131177”

# The text associated to the phone number is: “ROSSI”

# The phone number read at the location: 3 is -> “+393474331076”

# The text associated to the phone number is: “BIANCHI”

# The phone number read at the location: 4 is empty

# The phone number read at the location: 5 is empty

# The phone number read at the location: 6 is empty

# The phone number read at the location: 7 is empty

# The phone number read at the location: 8 is empty

As you can see, the command string that was sent returned the status of the first eight memory locations of the phonebook, showing that the first three cells are occupied. The remaining five are free.

If you want to read all the memory locations in the phonebook, you can use the following command string:

ANUM?;pwd

Running the command produces the following response:

# Command received by user -> ANUM?;33225

# Command “ANUM?” processed successfully

# The phone number read at the location: 1 is -> “+393491544888”

# The text associated to the phone number is: “ADMIN”

# The phone number read at the location: 2 is -> “+393474131177”

# The text associated to the phone number is: “ROSSI”

# The phone number read at the location: 3 is -> “+393474331076”

# The text associated to the phone number is: “BIANCHI”

# The phone number read at the location: 4 is empty

# The phone number read at the location: 5 is empty

…….

…….

# The phone number read at the location: 249 is empty

# The phone number read at the location: 250 is empty

The command string that was sent returned the status of all the memory locations in the phonebook; finally, a command was implemented to search for a phone number in the phonebook when the associated text is known. For example, if you want to check that Mr. Rossi’s phone number is in the phonebook and is one of the first eight memory locations, you can run the following command string:

FNUM?;text;pwd

The command code becomes “FNUM?” followed by the text you want to search for in the phonebook, “text”, and of course the password. So the command could be the following:

FNUM?;Rossi;33225

The following response is obtained:

# Command received by user -> FNUM?;ROSSI;33225

# Command “FNUM?” processed successfully

# Found the phone number into the phonebook. The location is: 2

Note that Mr. Rossi’s phone number is in the phonebook and occupies the second memory location. If instead we search for Mr. Brambilla, who was added later, we will find that he occupies location ten in the phonebook and is therefore enabled only for the gate-opening functions.

# Command received by user -> FNUM?;BRAMBILLA;33225

# Command “FNUM?” processed successfully

# Found the phone number into the phonebook. The location is: 10

This concludes the command strings for configuring and checking the phone numbers to be saved in the phonebook.

Deleting SMS messages from memory

We have implemented two command strings that are useful for deleting a single SMS from the SIM memory or deleting all the SMS messages present in the SIM memory. Usually up to 30 memory locations are available for incoming SMS messages.

These functions are useful if old SMS messages are stored on the SIM that you intend to reuse with the remote control system. The syntax of the two commands is respectively:

DSMSx;pwd

DASMS;pwd

The command code for deleting a single SMS is “DSMS” followed by the memory location “x”. As always, the system password follows. To delete all SMS messages, the command code is “DASMS” followed by the password.

SMS notifications and voice calls for inputs

Let’s now move on to the commands for configuring the functions of the remote control system, starting with the commands for enabling/disabling the sending of alarm SMS messages or voice calls to the first eight numbers in the phonebook. So when an event occurs on the digital inputs we will be able to decide who will receive the alarm SMS messages and the related voice calls. Let’s start with the command string for configuring SMS sending, which can take the following two forms depending on whether you enable or disable SMS sending:

SMSxxxxxxxx:ON;pwd

SMSxxxxxxxx:OFF;pwd

The command code is “SMS” followed by the locations among the first eight available that you want to enable, “xxxxxxxx”. Then comes the string “ON” to enable or “OFF” to disable. Of course the command needs the password to be executed. By default the eight memory locations are enabled.

So, supposing you want to enable locations 1, 3, 5 and 7, you will have to send the following command string:

SMS1357:ON;33225

While to disable locations 2, 4, 6 and 8 you will send:

SMS2468:OFF;33225

What has been said also applies to voice calls, with the only difference being that the command code is “VOC”:

VOCxxxxxxxx:ON;pwd

VOCxxxxxxxx:OFF;pwd

For each of the following commands you will receive the usual response from the system:

# Command received by user -> SMS1357:ON;33225

# Command “SMS” processed successfully

# Command received by user -> SMS2468:OFF;33225

# Command “SMS” processed successfully

# Command received by user -> VOC1357:ON;33225

# Command “VOC” processed successfully

# Command received by user -> VOC2468:OFF;33225

# Command “VOC” processed successfully

Input activation level

Let’s now talk about the command for configuring how the digital alarm inputs are handled. The inputs can be considered active when a “HIGH” voltage level or a “LOW” voltage level is read, or on a “TOGGLE” change. So the three possible configuration strings will be the following:

LIVx:A;pwd

LIVx:B;pwd

LIVx:V;pwd

The command code in this case is “LIV” followed by the input you want to configure, “x”, and by the relevant steady state, “A” (HIGH), “B” (LOW) and “V” (TOGGLE). As usual the password follows at the end. So, supposing you want to set input 1 as active high, you can proceed like this:

LIV1:A;33225

If you want, you can find out how the inputs are configured; to do this it is enough to send the command string:

LIV?

The command code is “LIV?”, no password is required. The response from the system will be:

# Command received by user -> LIV?

# Alarm activation level for input 1: HIGH

# Alarm activation level for input 2: HIGH

# Command “LIV?” processed successfully

Both inputs are configured to be active with a high logic level.

Inhibition and observation time

Again for the digital inputs, it is possible to configure an “inhibition” time that tells the system to ignore changes on the input for a preset period of time after that input has been activated. This helps to avoid spurious activations and therefore unwanted alarm SMS messages. The time can be set from a minimum of 0 minutes to a maximum of 59 minutes. The default value is 5 minutes. The command string to use is:

INIx:mm;pwd

The command code is “INI” followed by the input you want to configure, “x”, and by the inhibition time “mm”. To find out how the inhibition times of the inputs are configured, you can send the command string:

INI?

The command code is “INI?” and it returns the following:

# Command received by user -> INI?

# Alarm inhibition time for input 1: 10

# Alarm inhibition time for input 2: 5

# Command “INI?” processed successfully

There is a further command for configuring the inhibition times of the digital inputs which lets us ignore that configuration if necessary. In other words, when the input returns to rest it is possible to disregard the input masking time set by the previous command string just described. So to ignore the inhibition times you can use the following:

TIZ1x;pwd

TIZ2x;pwd

The command code is “TIZ1” or “TIZ2” followed by the parameter “x” which identifies whether or not to ignore the inhibition time. If the parameter is assigned the value “1” the system will ignore the inhibition time; conversely, if “0” is assigned, the system will be forced to take the inhibition time into account.

The last configuration parameter for the inputs is the so-called observation time, which can be seen as a kind of debouncing. In other words, the state of the input is considered valid for sending a possible alarm SMS if it remains stable for a preset time. The times that can be set range from 1 second to 59 seconds. The default value for this parameter is 1 second. The command string to use is:

OSSx:ss;pwd

Prototype of the GSM remote control system with the board hosting the GSM module shown separatelyThe prototype with the board hosting the GSM module shown separately.

The command code is “OSS” followed by the input you want to configure “x” plus the observation time expressed in seconds “ss”. The password goes at the end, as usual. If you want to know how the observation times are configured, you can use the following command string:

OSS?

which returns:

# Command received by user -> OSS? # Alarm observation time for input 1: 10 # Alarm observation time for input 2: 1 # Command “OSS?” processed successfully

Alarm message text

Let’s now move on to the commands for configuring the text you want to send when an alarm condition occurs on the digital inputs. The command strings to use are:

TIN1A:xxxx;pwd TIN1B:xxxx;pwd TIN2A:xxxx;pwd TIN2B:xxxx;pwd

The command codes let us configure the text string to send in the event of an alarm. So we have:

  • Input 1 active high (“1A”)
  • Input 1 active low (“1B”)
  • Input 2 active high (“2A”)
  • Input 2 active low (“2B”)

The text string “xxxx” can be up to 100 characters long and the punctuation marks “,” and “;” cannot be used. A possible example of how to use this command string could be:

TIN1A:Bilge flood alarm!!;33225

So we have configured the alarm string for input 1 when it is active high. The string associated with the alarm state is “Bilge flood alarm!!” Let’s now look at the command for setting the number of SMS messages the system must send while the input alarm condition persists. The command string is as follows:

ALNy:xx;pwd

The command code is “ALN” where “y” indicates the input being configured. The parameter “xx” indicates the number of SMS messages to send while the alarm condition persists. The allowed values range from 0 to 99. The value 0 means no SMS, while 99 means infinite SMS. All other values between 0 and 99 indicate the maximum number of SMS messages the system will send while the alarm persists. The command string ends with the system password. An example configuration could be:

ALN1:5;33225

The command string set this way indicates that while the alarm on input 1 persists, at most five SMS messages will be sent to the selected phone numbers. To find out how many SMS messages the system will send if the alarm persists, you can use the string:

ALN?

In this case the command code is simply “ALN?” with no password. Executing the command returns the following:

# Command received by user -> ALN? # Max num. of SMS to send if alarm occur (99 infinite; 0 nothing). Input 1: 5 # Max num. of SMS to send if alarm occur (99 infinite; 0 nothing). Input 2: 10 # Command “ALN?” processed successfully

Digital output management

Let’s now look at the command for managing the digital outputs. The possible command strings are as follows:

OUTx:ON;pwd OUTx:OFF;pwd OUTx:ss;pwd

The command code is “OUT” where “x” indicates the digital output. To bring the output to a logic high level, add the string “ON” to the command; otherwise, to bring it to a logic low level, use the string “OFF”. If instead you want to invert the output state for a period of time, put a time in seconds “ss” in place of the “ON” and “OFF” strings. The minimum accepted value is 1 second, while the maximum is 59 seconds. Let’s take the following example:

OUT1:ON;33225

The command string sent turns on digital output 1. If instead we send the string:

OUT1:30;33225

In this way we have inverted the output state, bringing it to a logic low level for a period of 30 seconds, after which the state returns high.

If you want to request the status of the outputs, you must send the following command string:

STA?

Executing the command returns the following:

# Command received by user -> STA? # Relay status for output 1: ON # Relay status for output 1: OFF # Command “STA?” processed successfully

Periodic report SMS

Let’s move on to the description of the command that configures when to send the report SMS, that is, how often to send the status of the digital Inputs/Outputs (the SMS is sent only to the first number in the phone book). The three command strings are as follows:

AUTOC:ON;pwd AUTOC:OFF;pwd AUTOC:hh:mm:ss;pwd

The command code is “AUTOC” followed by the service activation string, that is, “ON” active; “OFF” not active. Besides activation, you can decide how often to send the report SMS using the third command string with the parameter “hh:mm:ss”. This parameter does not identify the time at which you want to send the SMS, but the time interval between one send and the next. Obviously the system password follows at the end. For example, if we set “10:30:30” it means that the report message is sent when 10 hours, 30 minutes and 30 seconds have elapsed, or if you prefer every 37830 seconds. So a hypothetical command string could be:

AUTOC:10:30:30;33225 AUTOC:ON;33225

If you want to know how the report SMS service is configured, you can use the following command string:

AUTOC?

Which, when executed, returns the following:

# Command received by user -> AUTOC? # SMS report status: ON # If enabled, the SMS report format is: TEXT # If enabled, the SMS report of the Inputs/Outputs is sent every: 10:30:30 # Command “AUTOC?” processed successfully

Note that there is another configuration parameter for the report SMS, and it concerns how the states of the inputs and outputs must be represented when the SMS to be sent is composed. In other words, we can choose whether to use a binary or a text representation. The command string that lets us configure what we have just described is the following:

FORS:x;pwd

The command code is “FORS” where the parameter “x” indicates the format: “1” text format; “0” binary format. The system password goes at the end.

Output state recovery and startup SMS

That said, we can move on to the next command, which configures the ability to store the state of the outputs in the event of a power failure, so that the last state can be restored when power returns. The command string that handles this is as follows:

RIPx;pwd

The command code is “RIP” and the parameter “x” indicates whether you want to enable the function “1” or disable it “0”. To find out how this parameter is configured, we can use the following string:

RIP?

Which, when executed, returns the following:

# Command received by user -> RIP? # Recovery relay status: ON # Command “RIP?” processed successfully

Let’s move on to the command for enabling the sending of the start-up SMS (it is sent to the first number in the phone book). The command string is:

AVVx;pwd

The command code is “AVV” where “x” indicates whether the function is enabled “1” or disabled “0”. Given the previous command, you can associate any text string you like with it; the default one is “SYSTEM STARTUP”. So the command string for configuring the text to use for the start-up SMS is as follows:

TSU:xxxxxxxxxxxx;pwd

The command code is “TSU” and “xxxxxxxxxxxx” is the text to save in EEPROM. Maximum 100 characters. As usual, the characters “,” and “;” are forbidden. The system password is required at the end of the command. So a possible command string could be:

TSU:Telecontrol StartUp! Have a nice day;pwd

Gate opener function and ECHO

Let’s move on to the configuration command for digital output 1 alone, used for the gate opener function. This is applicable to the 200 phone numbers stored starting from the ninth memory location in the phone book (in fact, even the first eight numbers in the phone book can take advantage of this function). The command string for configuring this function is as follows:

TAC:ss;pwd

The command code is “TAC” followed by the time “ss” for which output 1 is energised; the settable time ranges from a minimum of “00” to a maximum of “59” seconds. So whenever a voice call is received from a phone number present in the list, digital output 1 is energised and remains in that state until the set time expires. If you set the value “00”, it means that with each call the output behaves in a bistable way, that is, I call and energise the output, I call again and de-energise the output. This command string also requires the system password at the end.

Let’s move on to the “ECHO” function, that is, the ability to select which phone number, stored in the phone book, you want to send the received SMS messages to when they are not part of the supported command strings. The command string is as follows:

ECHO:x;pwd

The command code is “ECHO” followed by the phonebook memory location “x”, which identifies the phone number the SMS is to be sent to. If “x” is zero, the function is disabled.

System information commands

The next command is used to ask the system for the GSM signal quality. The string to use is:

QUAL?

which returns:

# Command received by user -> QUAL? # GSM Quality signal (RSSI): 20 # GSM Channel bit error (BER): 0 # Command “QUAL?” processed successfully

If instead you want to know which operator you are connected to, you can use the string:

OPER?

which returns:

# Command received by user -> OPER? # The SIM operator is: “TELECOM ITALIA MOBILE” # Command “OPER?” processed successfully

And if you want to know which revision of the sketch is loaded on the Arduino Mega 2560, you must use the following:

REV?

which returns:

# Command received by user -> REV? # The TDG133 Rev: 1.0 # Manufacturer: SIMCOM_Ltd # TA Model: SIMCOM_SIM800C # TA Revision:1418B04SIM800C32_BT # TA (IMEI): 866104027073389 # Command “REV?” processed successfully

Besides returning the sketch revision, this function also gives us information about the GSM engine used, namely brand, model, FW revision and IMEI.

Power failure and power restoration SMS

Let’s now talk about the command used to set the sending of the power failure SMS. The command is implemented, so it can be configured, but since the system currently has no backup battery to maintain the power needed to send the SMS, it is meaningless. However, it is not ruled out that it will be fully supported in the future. So the command string to send is the following:

PWRFx;pwd

The command code is “PWRF” and “x” indicates whether the function should be enabled or disabled, in other words “1” enables it and “0” disables it. Obviously there is also a command to set the sending of the power restoration SMS. The command string in this case is:

PWRRx;pwd

The command code is “PWRR” and “x” indicates whether the function should be enabled or disabled, in other words “1” enables it and “0” disables it. Obviously, for both command strings just discussed there is the possibility of configuring the SMS you want to send in both cases. The command string to configure the power failure SMS is:

TPWPF:xxxxxxxxxxxx;pwd

The command code is “TPWPF” and “xxxxxxxxxxxx” is the string to use to compose the SMS. As usual, a maximum of 100 characters excluding the “,” and “;”. Remember the system password at the end of the command string. Instead, the command string to configure the power restoration SMS is:

TPWPB:xxxxxxxxxxxx;pwd

The command code is “TPWPB” and “xxxxxxxxxxxx” is the string to use to compose the SMS. As usual, a maximum of 100 characters excluding the “,” and “;”.

Restoring factory parameters

Finally, let’s look at the last command, which is the one for restoring the factory conditions. That is, it brings all system configurations back to their initial state, including the texts of the SMS to be sent. In addition to this, it DELETES all phone numbers from the phonebook. The command string to use is:

RES;pwd

The command code is “RES” followed by the password. The response is the following list of events (which we have truncated for obvious reasons):

# Command received by user -> RES;33225 # Command “RES” processed successfully # Erased Phonebook memory entry: 1 # Erased Phonebook memory entry: 2 ……. ……. # Erased Phonebook memory entry: 250

Let it be clear that once the command has finished executing, the system password is also brought back to its factory value, namely “12345”.

Multiple commands and silent response

Let’s make a few more small considerations:

  • It is possible to send several commands at the same time, taking care to put a comma between one command and the next. For example:

qual?,oper?,rev?

The response is:

# Command received by user -> QUAL?,OPER?,REV? # GSM Quality signal (RSSI): 20 # GSM Channel bit error (BER): 0 # Command “QUAL?” processed successfully # The SIM operator is: “TELECOM ITALIA MOBILE” # Command “OPER?” processed successfully # The TDG133 Rev: 1.0 # Manufacturer: SIMCOM_Ltd # TA Model: SIMCOM_SIM800C # TA Revision:1418B04SIM800C32_BT # TA (IMEI): 866104027073389 # Command “REV?” processed successfully

  • If the commands are sent from a mobile phone via SMS, you can tell the system not to send any response to the sender. To do this, you must put the command string “RISP” at the beginning of the message, followed by a comma. In this way the system will not send any response SMS to the requests made.
Managing the GSM shield LEDs

On the GSM Shield there are LEDs that are used by the current sketch to give visual information about the state of the application. Below is a brief description of them:

  • LED 12 Red [I/O 13 – Pin 14]; also called Trigger 3, it behaves as follows:
  • – fast blinking during GSM module initialization; period 250ms (25% ON/75% OFF);
  • – slow blinking in steady state, GSM initialization complete; period 2s (25% ON/75% OFF);
  • – if a string command is executed, the LED stays on steadily for the whole duration of the command and goes back to blinking slowly once the command has been executed.
  • LED 04 Red [I/O 37 – Pin 62]; when lit it indicates that output 1 is active, while it is off when the output is idle;
  • LED 05 Red [I/O 36 – Pin 61]; when lit it indicates that output 2 is active, while it is off when the output is idle;
  • LED 06 Yellow [I/O 35 – Pin 64]; it lights up when digital input 1, depending on the configuration made, triggers the alarm condition, otherwise it is off;
  • LED 07 Yellow [I/O 34 – Pin 63]; it lights up when digital input 2, depending on the configuration made, triggers the alarm condition, otherwise it is off;
  • LED 06 and LED 07 are also used to indicate the waiting state for the first phone number to be saved in the phonebook (Easy Setup); in that case they blink alternately with a period of 500ms (50% ON/50% OFF);
  • LED 08 Green [I/O 33 – Pin 66]: signals an outgoing SMS or voice call:
  • – when the SMS is sent it lights up, otherwise it is off;
  • – during a voice call the LED blinks, otherwise it is off.
  • LED 09 Green [I/O 32 – Pin 65]: indicates the reception of an incoming SMS or voice call:
  • – when an SMS is received the LED lights up, otherwise it is off;
  • – during a voice call the LED blinks, otherwise it is off.
Conclusions

This ends the description of the GSM remote control based on Arduino and GSM Shield; for the purposes of the project the firmware uses part of the available I/Os, so anyone wishing to expand its functionality can take advantage of all 8 digital inputs and the same number of outputs by modifying the sketch.

Related products

The post GSM remote control: emulating the TDG series (part 2) appeared first on Open Electronics.

21-Gram Femtosatellite with ESP32-C3: Flight Data for Makers

Птн, 10/02/2026 - 11:00

An experimental satellite that weighs as much as a ping pong ball. The Maker Science project demonstrates how to build a working, recoverable femtosatellite weighing just 21 grams, using easily available commercial electronic components. The whole thing is based on an ESP32-C3 Super Mini board, a BME680 sensor, and a BMI323 sensor.

The prototype falls into the femtosatellite category, meaning satellites that weigh less than 100 grams. At 21 grams, this example sits at the light end of the category. It can be carried by a drone or a small rocket, and after landing it is recovered to analyze the recorded data.

The onboard circuit: ESP32-C3, BME680, and BMI323

The heart of the satellite is the ESP32-C3 microcontroller. This Super Mini board handles data collection and saves it to onboard memory. Thanks to its low power consumption and small size, it fits perfectly into such a light payload.

The BME680 sensor measures temperature, humidity, and other environmental conditions. Alongside it, the BMI323 detects motion and orientation. During flight, the ESP32-C3 collects readings from both sensors and records them.

The data is then analyzed on the ground. After recovery, the satellite is connected to a dashboard that allows downloading and viewing all measurements. This way, you can study environmental conditions and movements during the short mission.

Software and programming with Arduino IDE

Programming is done through the Arduino IDE, the most common development environment among makers. The code needed to read the sensors and save data is available in the project repository. Anyone who wants to replicate the satellite can start from there.

The Maker Science repository contains everything needed for the firmware. The project repository collects the Arduino sketches to upload to the board. Nothing else is needed to get started: connect the ESP32-C3 to a PC, upload the sketch, and test the system.

For those starting from scratch, the ESP32-C3 Super Mini board is a solid choice. It has built-in wireless connectivity and a compact form factor, ideal for this type of application. Online documentation helps set up the development environment in minutes.

The project also demonstrates the importance of calibration. Before a real flight, it is worth checking that the sensors respond correctly. A ground test with known movements helps validate the BMI323 readings.

Numbers and limits of a 21-gram satellite

The numbers speak for themselves: 21 grams total weight, below the 100-gram threshold that defines femtosatellites. This lightness opens up interesting scenarios for anyone wanting to experiment with amateur launches.

Of course, such a small satellite has limits. It cannot host large solar panels or capacious batteries. The mission is short, and the data is limited to what the sensors can capture during flight.

Here are the key components of the project:

  • ESP32-C3 Super Mini: microcontroller with Wi-Fi and Bluetooth LE
  • BME680: sensor for temperature, humidity, pressure, and air quality
  • BMI323: inertial sensor for acceleration and orientation

With these three components and a bit of code, anyone can build an experimental satellite. The Maker Science project shows that the entry threshold for amateur space experimentation is lower than you might think.

Source: https://github.com/makerscienceofficial/Yeti_SAT1

The post 21-Gram Femtosatellite with ESP32-C3: Flight Data for Makers appeared first on Open Electronics.

13.3-inch ePaper frame with AI-generated art

Чтв, 10/01/2026 - 16:00

The Seeed Studio reTerminal E1004 becomes a frame for AI-generated artwork. Every day the device wakes up, downloads the weather forecast, and creates a unique image with OpenAI. The 13.3-inch ePaper display shows it for the entire day without consuming power. The project combines artificial intelligence, ultra-low power consumption, and daily automation.

The heart of the system is the ESP32-S3, which drives the six-color E Ink Spectra 6 display. The resolution is 1200 × 1600 pixels with 4 bits per pixel. The generated image weighs about 937 kB and is saved on a microSD card. The panel stays on all day, but power consumption is minimal thanks to ePaper technology.

Front view of the reTerminal E1004 ePaper displayFront view of the reTerminal E1004
How the daily cycle works

The deep sleep timer activates at 01:00 by default. The device wakes up and the PCF8563 RTC synchronizes the system clock. Once connected to Wi-Fi, NTP corrects the RTC drift. The ePaper controller is initialized and the battery level is checked. If the charge is too low, an error screen appears.

Next, the microSD card is mounted and the weather forecast for 12:00 is downloaded from OpenWeather. A prompt is assembled with theme, date, weather, and battery level. OpenAI gpt-image-1 generates the image, which is saved on the SD card. The operation takes about 40 seconds.

  • Deep sleep timer at 01:00
  • RTC synchronization with NTP
  • Battery check and ePaper initialization
  • Weather download from OpenWeather
  • Image generation with OpenAI
  • Floyd-Steinberg dithering and display

The image is resized and converted to RGB565. Floyd-Steinberg dithering adapts it to the panel’s six colors. Finally, the display shows it and the device returns to deep sleep. The cycle repeats every day at the same time, without manual intervention.

Hardware and main components

The reTerminal E1004 integrates display, ESP32-S3, and sensors in a single module. The main board manages the ePaper panel and communication with the sensors. The PCF8563 provides the real-time clock, while the SHT40 measures temperature and humidity. The battery operates between 3.7 and 4.2 V, with serial communication at 115200 baud.

For those who want to experiment with smaller ePaper displays, an ESP32 module with a TFT touch display can be a starting point. The original project uses the reTerminal, but the generation and display logic can also adapt to other boards. The GitHub repository by maet3608 documents every step in detail.

Main board of the reTerminal E1004 displayMain board for the reTerminal E1004 display

The project demonstrates how to combine generative AI with ultra-low-power displays. Every morning you get a different artwork, tied to the weather and the date. The frame does not require continuous power and the battery lasts a long time. It is a perfect example of daily automation with open source hardware.

The software side uses PlatformIO with the espressif32 framework. The OpenAI and OpenWeather APIs are integrated directly into the firmware. The result is a standalone device that runs for months without maintenance. Moreover, six-color dithering makes every image suitable for the ePaper panel.

Source: https://github.com/maet3608/reTerminal-E1004-ai-image

The post 13.3-inch ePaper frame with AI-generated art appeared first on Open Electronics.

Сторінки