Silicon ChipRaspberry Pi Pico BackPack - March 2022 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: RIP Brendan James Akhurst, cartoonist extraordinaire
  4. Feature: The History of Transistors, part one by Ian Batty
  5. Project: Capacitor Discharge Welder, part one by Phil Prosser
  6. Project: Raspberry Pi Pico BackPack by Tim Blythman
  7. Feature: All About Batteries, part three by Dr David Maddison
  8. Serviceman's Log: The oven with a mind of its own by Dave Thompson
  9. Project: Amplifier Clipping Indicator by John Clarke
  10. Feature: Advances in Drone Technology by Bob Young
  11. Project: Dual Hybrid Power Supply, part two by Phil Prosser
  12. Feature: A Gesture Recognition Module by Jim Rowe
  13. Vintage Radio: Phenix Ultradyne L-2 by Dennis Jackson
  14. PartShop
  15. Market Centre
  16. Advertising Index
  17. Notes & Errata: Vintage Radio, February 2022; USB Cable Tester, November & December 2021
  18. Outer Back Cover

This is only a preview of the March 2022 issue of Silicon Chip.

You can view 37 of the 112 pages in the full issue, including the advertisments.

For full access, purchase the issue for $10.00 or subscribe for access to the latest issues.

Articles in this series:
  • The History of Transistors, part one (March 2022)
  • The History of Transistors, part one (March 2022)
  • The History of Transistors, Pt2 (April 2022)
  • The History of Transistors, Pt2 (April 2022)
  • The History of Transistors, Pt3 (May 2022)
  • The History of Transistors, Pt3 (May 2022)
Items relevant to "Capacitor Discharge Welder, part one":
  • Capacitor Discharge Welder Power Supply PCB [29103221] (AUD $5.00)
  • Capacitor Discharge Welder Control PCB [29103222] (AUD $5.00)
  • Capacitor Discharge Welder Energy Storage Module PCB [29103223] (AUD $3.50)
  • IRFB7434(G)PBF‎ N-channel high-current Mosfet (Source component, AUD $5.00)
  • Hard-to-get parts & PCB for the Capacitor Discharge Welder Power Supply (Component, AUD $25.00)
  • Validation spreadsheets and updated drilling diagram for the CD Spot Welder (Software, Free)
  • Capacitor Discharge Welder PCB patterns (PDF download) [29103221-3] (Free)
Articles in this series:
  • Capacitor Discharge Welder, part one (March 2022)
  • Capacitor Discharge Welder, part one (March 2022)
  • Capacitor Discharge Welder, Pt2 (April 2022)
  • Capacitor Discharge Welder, Pt2 (April 2022)
Items relevant to "Raspberry Pi Pico BackPack":
  • Pico BackPack stereo jack socket adaptor PCB [07101222] and connectors (Component, AUD $2.50)
  • Raspberry Pi Pico BackPack PCB [07101221] (AUD $5.00)
  • DS3231MZ real-time clock IC (SOIC-8) (Component, AUD $8.00)
  • DS3231 real-time clock IC (SOIC-16) (Component, AUD $7.50)
  • 3.5-inch TFT Touchscreen LCD module with SD card socket (Component, AUD $35.00)
  • Raspberry Pi Pico BackPack kit (Component, AUD $80.00)
  • Matte/Gloss Black UB3 Lid for Advanced GPS Computer (BackPack V3) or Pico BackPack (PCB, AUD $5.00)
  • Matte/Gloss Black UB3 Lid for Micromite LCD BackPack V3 or Pico BackPack using 3.5in screen (PCB, AUD $5.00)
  • Raspberry Pi Pico BackPack software (Free)
  • Raspberry Pi Pico BackPack PCB pattern (PDF download) [07101221] (Free)
Articles in this series:
  • All About Batteries - Part 1 (January 2022)
  • All About Batteries - Part 1 (January 2022)
  • All About Batteries – Part 2 (February 2022)
  • All About Batteries – Part 2 (February 2022)
  • All About Batteries, part three (March 2022)
  • All About Batteries, part three (March 2022)
Items relevant to "Amplifier Clipping Indicator":
  • 500W Amplifier Module PCB [01107021 RevD] (AUD $25.00)
  • Hard-to-get parts for the 500W Amplifier (Component, AUD $180.00-200.00)
  • Parts collection for the 500W Amplifier (Component, AUD $235.00-250.00)
  • 500W Amplifier Module PCB pattern (PDF download) [01107021] (Free)
  • Amplifier Clipping Indicator PCB [01112211] (AUD $2.50)
  • Amplifier Clipping Indicator PCB pattern (PDF download) [01112211] (Free)
Articles in this series:
  • Fan Controller & Loudspeaker Protector (February 2022)
  • Fan Controller & Loudspeaker Protector (February 2022)
  • Amplifier Clipping Indicator (March 2022)
  • Amplifier Clipping Indicator (March 2022)
  • 500W Power Amplifier, Part 1 (April 2022)
  • 500W Power Amplifier, Part 1 (April 2022)
  • 500W Power Amplifier, Part 2 (May 2022)
  • 500W Power Amplifier, Part 2 (May 2022)
  • 500W Power Amplifier, Part 3 (June 2022)
  • 500W Power Amplifier, Part 3 (June 2022)
Items relevant to "Dual Hybrid Power Supply, part two":
  • Intelligent Dual Hybrid Power Supply PCB set (AUD $25.00)
  • Intelligent Dual Hybrid Power Supply regulator PCB [18107211] (AUD $7.50)
  • Intelligent Dual Hybrid Power Supply front panel control PCB [18107212] (AUD $2.50)
  • DSP Crossover CPU PCB [01106193] (AUD $5.00)
  • DSP Crossover LCD Adaptor PCB [01106196] (AUD $2.50)
  • PIC32MZ2048EFH064-250I/PT programmed for the Intelligent Dual Hybrid Power Supply [0110619A.HEX] (Programmed Microcontroller, AUD $30.00)
  • 128x64 Blue LCD screen with KS0108-compatible controller (Component, AUD $30.00)
  • Hard-to-get parts for the Intelligent Dual Hybrid Power Supply regulator board (Component, AUD $100.00)
  • Hard-to-get parts for the Intelligent Dual Hybrid Power Supply CPU board (Component, AUD $60.00)
  • LCD panel bezel for the Dual Intelligent Hybrid Power Supply (PCB, AUD $5.00)
  • Intelligent Dual Hybrid Power Supply firmware [0110619A.HEX] (Software, Free)
  • Intelligent Dual Hybrid Power Supply PCB patterns [18107211/2] (Free)
  • DSP Active Crossover/DDS/Reflow Oven PCB patterns (PDF download) [01106191-6] (Free)
Articles in this series:
  • Dual Hybrid Power Supply – Pt1 (February 2022)
  • Dual Hybrid Power Supply – Pt1 (February 2022)
  • Dual Hybrid Power Supply, part two (March 2022)
  • Dual Hybrid Power Supply, part two (March 2022)
  • Intelligent Dual Hybrid Power Supply, part one (June 2025)
  • Intelligent Dual Hybrid Power Supply, part one (June 2025)
Items relevant to "A Gesture Recognition Module":
  • MMbasic software for the PAJ7620U2 gesture recognition module (Free)
Articles in this series:
  • El Cheapo Modules From Asia - Part 1 (October 2016)
  • El Cheapo Modules From Asia - Part 1 (October 2016)
  • El Cheapo Modules From Asia - Part 2 (December 2016)
  • El Cheapo Modules From Asia - Part 2 (December 2016)
  • El Cheapo Modules From Asia - Part 3 (January 2017)
  • El Cheapo Modules From Asia - Part 3 (January 2017)
  • El Cheapo Modules from Asia - Part 4 (February 2017)
  • El Cheapo Modules from Asia - Part 4 (February 2017)
  • El Cheapo Modules, Part 5: LCD module with I²C (March 2017)
  • El Cheapo Modules, Part 5: LCD module with I²C (March 2017)
  • El Cheapo Modules, Part 6: Direct Digital Synthesiser (April 2017)
  • El Cheapo Modules, Part 6: Direct Digital Synthesiser (April 2017)
  • El Cheapo Modules, Part 7: LED Matrix displays (June 2017)
  • El Cheapo Modules, Part 7: LED Matrix displays (June 2017)
  • El Cheapo Modules: Li-ion & LiPo Chargers (August 2017)
  • El Cheapo Modules: Li-ion & LiPo Chargers (August 2017)
  • El Cheapo modules Part 9: AD9850 DDS module (September 2017)
  • El Cheapo modules Part 9: AD9850 DDS module (September 2017)
  • El Cheapo Modules Part 10: GPS receivers (October 2017)
  • El Cheapo Modules Part 10: GPS receivers (October 2017)
  • El Cheapo Modules 11: Pressure/Temperature Sensors (December 2017)
  • El Cheapo Modules 11: Pressure/Temperature Sensors (December 2017)
  • El Cheapo Modules 12: 2.4GHz Wireless Data Modules (January 2018)
  • El Cheapo Modules 12: 2.4GHz Wireless Data Modules (January 2018)
  • El Cheapo Modules 13: sensing motion and moisture (February 2018)
  • El Cheapo Modules 13: sensing motion and moisture (February 2018)
  • El Cheapo Modules 14: Logarithmic RF Detector (March 2018)
  • El Cheapo Modules 14: Logarithmic RF Detector (March 2018)
  • El Cheapo Modules 16: 35-4400MHz frequency generator (May 2018)
  • El Cheapo Modules 16: 35-4400MHz frequency generator (May 2018)
  • El Cheapo Modules 17: 4GHz digital attenuator (June 2018)
  • El Cheapo Modules 17: 4GHz digital attenuator (June 2018)
  • El Cheapo: 500MHz frequency counter and preamp (July 2018)
  • El Cheapo: 500MHz frequency counter and preamp (July 2018)
  • El Cheapo modules Part 19 – Arduino NFC Shield (September 2018)
  • El Cheapo modules Part 19 – Arduino NFC Shield (September 2018)
  • El cheapo modules, part 20: two tiny compass modules (November 2018)
  • El cheapo modules, part 20: two tiny compass modules (November 2018)
  • El cheapo modules, part 21: stamp-sized audio player (December 2018)
  • El cheapo modules, part 21: stamp-sized audio player (December 2018)
  • El Cheapo Modules 22: Stepper Motor Drivers (February 2019)
  • El Cheapo Modules 22: Stepper Motor Drivers (February 2019)
  • El Cheapo Modules 23: Galvanic Skin Response (March 2019)
  • El Cheapo Modules 23: Galvanic Skin Response (March 2019)
  • El Cheapo Modules: Class D amplifier modules (May 2019)
  • El Cheapo Modules: Class D amplifier modules (May 2019)
  • El Cheapo Modules: Long Range (LoRa) Transceivers (June 2019)
  • El Cheapo Modules: Long Range (LoRa) Transceivers (June 2019)
  • El Cheapo Modules: AD584 Precision Voltage References (July 2019)
  • El Cheapo Modules: AD584 Precision Voltage References (July 2019)
  • Three I-O Expanders to give you more control! (November 2019)
  • Three I-O Expanders to give you more control! (November 2019)
  • El Cheapo modules: “Intelligent” 8x8 RGB LED Matrix (January 2020)
  • El Cheapo modules: “Intelligent” 8x8 RGB LED Matrix (January 2020)
  • El Cheapo modules: 8-channel USB Logic Analyser (February 2020)
  • El Cheapo modules: 8-channel USB Logic Analyser (February 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules (May 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules (May 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules, Part 2 (June 2020)
  • New w-i-d-e-b-a-n-d RTL-SDR modules, Part 2 (June 2020)
  • El Cheapo Modules: Mini Digital Volt/Amp Panel Meters (December 2020)
  • El Cheapo Modules: Mini Digital Volt/Amp Panel Meters (December 2020)
  • El Cheapo Modules: Mini Digital AC Panel Meters (January 2021)
  • El Cheapo Modules: Mini Digital AC Panel Meters (January 2021)
  • El Cheapo Modules: LCR-T4 Digital Multi-Tester (February 2021)
  • El Cheapo Modules: LCR-T4 Digital Multi-Tester (February 2021)
  • El Cheapo Modules: USB-PD chargers (July 2021)
  • El Cheapo Modules: USB-PD chargers (July 2021)
  • El Cheapo Modules: USB-PD Triggers (August 2021)
  • El Cheapo Modules: USB-PD Triggers (August 2021)
  • El Cheapo Modules: 3.8GHz Digital Attenuator (October 2021)
  • El Cheapo Modules: 3.8GHz Digital Attenuator (October 2021)
  • El Cheapo Modules: 6GHz Digital Attenuator (November 2021)
  • El Cheapo Modules: 6GHz Digital Attenuator (November 2021)
  • El Cheapo Modules: 35MHz-4.4GHz Signal Generator (December 2021)
  • El Cheapo Modules: 35MHz-4.4GHz Signal Generator (December 2021)
  • El Cheapo Modules: LTDZ Spectrum Analyser (January 2022)
  • El Cheapo Modules: LTDZ Spectrum Analyser (January 2022)
  • Low-noise HF-UHF Amplifiers (February 2022)
  • Low-noise HF-UHF Amplifiers (February 2022)
  • A Gesture Recognition Module (March 2022)
  • A Gesture Recognition Module (March 2022)
  • Air Quality Sensors (May 2022)
  • Air Quality Sensors (May 2022)
  • MOS Air Quality Sensors (June 2022)
  • MOS Air Quality Sensors (June 2022)
  • PAS CO2 Air Quality Sensor (July 2022)
  • PAS CO2 Air Quality Sensor (July 2022)
  • Particulate Matter (PM) Sensors (November 2022)
  • Particulate Matter (PM) Sensors (November 2022)
  • Heart Rate Sensor Module (February 2023)
  • Heart Rate Sensor Module (February 2023)
  • UVM-30A UV Light Sensor (May 2023)
  • UVM-30A UV Light Sensor (May 2023)
  • VL6180X Rangefinding Module (July 2023)
  • VL6180X Rangefinding Module (July 2023)
  • pH Meter Module (September 2023)
  • pH Meter Module (September 2023)
  • 1.3in Monochrome OLED Display (October 2023)
  • 1.3in Monochrome OLED Display (October 2023)
  • 16-bit precision 4-input ADC (November 2023)
  • 16-bit precision 4-input ADC (November 2023)
  • 1-24V USB Power Supply (October 2024)
  • 1-24V USB Power Supply (October 2024)
  • 14-segment, 4-digit LED Display Modules (November 2024)
  • 0.91-inch OLED Screen (November 2024)
  • 0.91-inch OLED Screen (November 2024)
  • 14-segment, 4-digit LED Display Modules (November 2024)
  • The Quason VL6180X laser rangefinder module (January 2025)
  • TCS230 Colour Sensor (January 2025)
  • The Quason VL6180X laser rangefinder module (January 2025)
  • TCS230 Colour Sensor (January 2025)
  • Using Electronic Modules: 1-24V Adjustable USB Power Supply (February 2025)
  • Using Electronic Modules: 1-24V Adjustable USB Power Supply (February 2025)

Purchase a printed copy of this issue for $11.50.

By Tim Blythman The Pico microcontroller board, described in the December 2021 issue, is a versatile and powerful ARM-based microcontroller on a small board for less than $10. There’s quite a lot you can do with it on its own, but it’s even more interesting when connected to an LCD touchscreen. Raspberry Pi Pico BackPack W e reviewed the Raspberry Pi Foundation’s Pico microcontroller board in the December 2021 issue (siliconchip.com.au/Article/15125). It’s based on their own RP2040 microcontroller and is quite different from their popular line of Raspberry Pi single-­board computers (SBCs). However, it shares a resemblance in its low price and ease of use. In that article, we compared it to other well-known microcontroller boards and showed how it can be programmed in several different ways. It can be programmed using a C language compiler and SDK (software development kit) or via the Arduino IDE (integrated development environment), with the option of using the Mbed OS for ARM microcontrollers. It’s also possible to program the Pico using MicroPython, a variant of the Python programming language optimised for use on embedded devices. In the January 2022 issue, we also described the PicoMite software that allows the Pico to be programmed in the BASIC language (siliconchip.com. au/Article/15177). This makes it a close relative to the Micromite, which also runs MMBasic. The Micromite pairs well with an LCD touchscreen, so we decided to create a matching BackPack for the Pi siliconchip.com.au Pico as well. The BackPack allows the Pico to interface to an LCD touchscreen and includes other useful hardware. While several other companies have designed boards around the RP2040 chip (including Arduino’s Nano Connect, with a WiFi module), our BackPack is designed to work with the original Pico board. We decided to concentrate on the Pico because it is low in cost, compact and versatile. Raspberry Pi Pico Here’s a quick recap of the Pico. It’s based around the Raspberry Pi Foundation’s RP2040 microcontroller and has 264kB of internal RAM. Program storage is on a separate 2MB flash chip. The processor is a dual-core ARM operating up to a nominal 133MHz but it can usually be overclocked above 200MHz. The processor has 30 input/ output pins, although not all are broken out. For example, some are used for flash memory access. It supports USB host and device operation. A ROM-based bootloader provides a convenient USB drive interface for uploading firmware images. Programming the Pico is as simple as copying a file. It has the usual peripherals, like UART, SPI, I2C and PWM. There are also two PIO peripheral modules. Australia's electronics magazine These are programmable I/O state machines that you can use to create more peripheral functions, or just more of those we’ve just mentioned. The Pico BackPack We’ve created something similar to the Micromite BackPack V3 (August 2019; siliconchip.com.au/ Article/11764), adding some extra features in the space that’s available. Like the BackPack V3, it is designed to work with both the 2.8in and 3.5in LCD touchscreens. Since we prefer to use the 3.5in display, as it has a much higher resolution and more area at a similar cost, we’ll also show you how the Pico and BackPack can be programmed to use this display. Using the 2.8in screen is possible (and is very easy to do in PicoMite BASIC), but we will leave that as an exercise for the reader. We’ll present comprehensive example code for the PicoMite BASIC language, the C SDK, Arduino IDE and MicroPython languages. However, not all features are available in all languages. Circuit Fig.1 is the circuit diagram for the Pico BackPack. MOD1 is the Pico itself and a 14-pin header is provided to March 2022  35 connect the LCD touchscreen (CON4). Since both the LCD and touch controllers on the panel use the SPI serial interface, we have wired the header to SPI-capable pins on the Pico. The Pico’s I/O pins have two different numbering systems. All have a physical number, which depends on their location on the package. This is the logical numbering that you would use if you think of the Pico module like an extra-wide 40-pin IC. This numbering system includes pins other than just those which can be used as I/Os. For example, pins 3, 8, 13, 18, 23, 28, 33 and 38 are all connected to ground. The RP2040 general-purpose I/O pins also have a consecutive numbering scheme from GP0 to GP29, although some are not connected to pins 1-40. Most programming languages use the GP numbering system (sometimes dropping the GP prefix), although PicoMite BASIC allows you to use either. For the system SPI bus used to Fig.1: the BackPack consists of a motley assortment of components added to the Pi Pico to interface it to the outside world. You can omit any or all of the IR receiver, micro SD card, audio amplifier and RTC sections if you just want a simple LCD touchscreen breakout. Note that the 1kW resistor for the IR receiver can typically be omitted; most IR receivers have a very weak internal pull-up and can be safely connected to the Pico’s 3.3V inputs. 36 Silicon Chip Australia's electronics magazine siliconchip.com.au interface with the LCD panel, GP18 (pin 24) is the SPI clock (SCK), GP19 (pin 25) is MOSI and GP16 (pin 21) is MISO. Note that the MISO signal travels via JP2 to the LCD’s pin 9. This jumper can usually be left off as data does not need to be sent from the LCD controller back to the Pico. Other control pins include the LCD controller’s CS (chip select), RST (reset) and D/C (data/command) lines, which map to GP12 (pin 16), GP13 (pin 17) and GP14 (pin 19) respectively. The touch controller uses the same main SPI lines as the LCD with its own CS and IRQ lines: GP15 (pin 20) and GP17 (pin 22), respectively. GP20 (pin 26) is used to control the LCD panel’s LED backlight if JP1 is in place. If JP1 is absent, the 10kW resistor pulls N-channel Mosfet Q2’s gate high, which in turn pulls P-channel Mosfet Q1’s gate low, continuously supplying 5V into the LED pin and keeping the backlight on full permanently. The same thing happens if GP20 is actively pulled high; the LED pin receives 5V. If GP20 is driven low and JP1 is in place, the LCD backlight is switched off, while a PWM signal from this pin can produce a range of backlight brightness levels. Pushbutton switch S1 is connected between the Pico’s 3V3_EN pin and ground. The 3V3_EN pin connects to the enable pin of the Pico’s onboard 3.3V regulator and is normally pulled high by a 100kW resistor on the Pico. When it is pulled low, the 3.3V supply to the microcontroller is shut down. Thus a brief press of S1 will reset the microcontroller. The RT6150 regulator fitted to the Pico is a buck-boost type and can operate from an input voltage between 1.8V and 5.5V. But be aware that the infrared receiver and LCD controller might not work over that entire range. We recommend supplying at least 3.3V to the BackPack if you plan to use those features. Optional infrared receiver IRRX1 is fed from the board’s USB supply (nominally 5V) via a 100W resistor and bypassed by a 10μF capacitor. The 5V output of IRRX1 is divided by a 470W/1kW divider to 3.3V, and this signal connects to GP22 (pin 29) of the Pico. Some IR receivers have an internal pull-down (open collector/drain) transistor complemented by a weak internal pull-up. In this case, the 1kW siliconchip.com.au The complete Pico BackPack can have the Raspberry Pi Pico soldered directly to the PCB, or mounted on headers. resistor can be left out as the weak pull-up, and the 470W series resistor will limit current from the 5V rail into the 3.3V microcontroller. CON1 is a micro SD card socket powered from the 3.3V rail and with its SPI pins (SCK, MOSI and MISO) connected to the same SPI pins as the LCD touchscreen. Its CS (chip select) pin connects to GP21 (pin 27) on the Pico. The supply to the micro SD card is bypassed by 100nF and 10μF capacitors for reliable operation. IC1 is an optional DS3231 or DS3231M real-time clock & calendar IC with its own 100nF bypass capacitor to the 3.3V supply rail. It communicates with the micro via an I2C serial bus, and the 4.7kW pull-up resistors to the 3.3V rail required for I2C communication are also provided. The I2C SDA and SCL (data and clock) signals connect to the Pico’s GP10 (pin 14) and GP11 (pin 15). A cell holder (BAT1) is also provided to allow the RTCC to keep time when the main power supply is off. 20-pin header CON2 breaks out some of the Pico’s spare pins. These include 17 GPIO pins that are otherwise unused or can be shared with devices on the BackPack. The GND, 3.3V and VSYS (VIN) pins on the Pico also connect to this header. The GND and VSYS pins can be used to power the BackPack or feed power from the BackPack to other parts, while the 3.3V pins should be considered an output only. The circuitry around IC2 is intended to convert a pair of PWM signals from Australia's electronics magazine GP8 (pin 11) and GP9 (pin 12) into stereo line-level signals at CON3. While we could have fitted an I2S DAC IC instead for higher audio quality, the PicoMite can play audio via PWM natively, and it’s pretty easy to implement this in other languages (as we have done in some of our sample code). The PWM implementation also costs much less. Each PWM signal is treated the same. A low-pass and biasing network formed from the 22kW, 47kW and 100kW resistors shifts the 0V to 3.3V signal to around 0.9-2.9V. The 1nF capacitor also removes high-­ frequency PWM artifacts, with a -3dB point around 13kHz. IC2 is a dual op amp fed from the 5V rail with both of its channels configured for unity gain, so it produces a 2V peak-to-peak signal (around 700mV RMS) with a DC offset of 1.9V. The 10μF capacitor and 100kW bias resistor remove the DC offset, with the 100W resistor protecting the op amp from short circuits on the output. The audio output is available at CON3, with the centre pin being ground. The signal here is suitable for driving headphones, a small speaker or an amplifier. PCB features The Pico BackPack PCB is sized to match the 3.5in LCD touchscreen. Header CON4 at one end connects to the LCD touchscreen while CON2, along one edge, provides connections to a breadboard or other hardware (eg, a ‘daughterboard’). March 2022  37 The Pico mounts opposite the LCD header, allowing its micro-USB socket to be accessible from the edge of the PCB (avoiding the need for us to fit a separate USB socket). To match the Pico itself, we’ve provided pads to mount it on headers or to solder it directly to the PCB, as though it were a surface-mounting component. The latter is preferred for permanent installations, as using headers would require extended headers on the LCD panel to provide clearance below. A third option is to fit the Pico with female headers above and male headers below the Pico BackPack, bypassing the clearance issue. Our parts list assumes the direct mounting method. If you wish to use headers, you will need two extra pairs of 20-pin, 2.54mm pitch male and female header strips. You can use the Pico’s onboard bootloader pushbutton (adjacent to its micro-USB socket) along with S1 to enter bootloader mode. The sequence is to hold down the bootloader button, press and release S1, then release the bootloader button. S1 removes the need to plug and unplug the Pico for programming, which would otherwise cause wear to its USB socket (or your PC’s). With the LCD header on the right, the micro SD socket and IR receiver sit at the top for ease of access. The body of the IR receiver can be bent backwards to allow the lens to face the same direction as the screen. Optional sections The photos and overlay diagram show that the PCB is divided by lines into sections corresponding to each hardware feature. This allows you to fit or not fit the various features as needed. The PCB silkscreen also has the pin information printed along its bottom half. The default SPI pins for the LCD, touch and micro SD card are described on the left-hand side, while each pin of CON2 is also marked with its corresponding Pico pin connection. With all the features fitted, you have eleven spare I/O pins: GP0 to GP7 and GP26 to GP28, although the I2C pins GP10 and GP11 can also be shared with other I2C devices. GP26 to GP28 are the only externally-available pins that can be used as analog inputs. Deleting the audio section frees up GP8 and GP9, while not using the LCD 38 Silicon Chip Fig.2: the lines on the PCB mark the regions and components that correspond to the optional features. From the left, the IR receiver, audio amplifier and micro SD card socket sit along the top of the PCB, providing external access. The RTCC is at the lower right. If fitting the RTC components, don’t forget the battery holder on the rear of the PCB. backlight control pin frees up GP20. With only the LCD touchscreen fitted, you can have up to 17 free I/O pins. With this in mind, you can plan what onboard and offboard circuitry will be needed for your Pico BackPack, allowing you to decide what parts you do and don’t need to fit. Our demo code is focused on the BackPack’s features and does not require any external parts beyond the LCD touchscreen and a speaker connected to CON3. Construction We’ll describe the construction as though all parts are fitted. You can skip any that you don’t want to install. As most of the onboard parts are SMDs to save space, you will need flux paste and a magnifier as well as a soldering iron. We also recommend that you have some solder wicking braid and a suitable cleaning solvent for your flux. Since flux can generate harmful smoke, fume extraction is a good idea. Australia's electronics magazine If you don’t have any fume extraction, work outside or near an open window. This may also help with providing good illumination. The Pico BackPack is built on a 99 x 55mm double-sided PCB coded 07101221. Refer to the overlay diagram, Fig.2, during construction. Start by fitting the micro SD card socket, CON1. Apply flux to the pins and rest the socket in place. It has locating posts, so it is easy to align. Add some more flux to the top of the pins too. Clean the tip of the iron, add a small amount of fresh solder and apply it to the socket’s pins, taking care not to contact the metal shell of the socket. If you are happy with the pin soldering, solder the mechanical tabs too. If there are any bridges, use solder braid to remove them by adding some more flux, cleaning the iron’s tip and pressing the braid against the bridge with the iron. Carefully slide both away together once the wick has soaked up the excess solder. siliconchip.com.au Parts List – Pico BackPack 1 double-sided PCB coded 07101221, 99 x 55mm 1 Raspberry Pi Pico Module (MOD1) [Altronics Z6421, Digi-Key, Mouser, Core Electronics] 1 3.5in LCD touchscreen [Silicon Chip Shop Cat SC5062] 1 14-pin, 2.54mm pitch socket header (for LCD panel) 1 20-pin, 2.54mm pitch pin header (CON2) 2 2-pin, 2.54mm pitch pin headers with jumper shunts (JP1, JP2) 1 6mm x 6mm tactile switch (S1) 8 M3 x 6mm panhead machine screws 4 M3 x 12mm tapped spacers Semiconductors 1 IRLML2244TRPBF/SSM3J372R P-channel Mosfet, SOT-23 (Q1) 1 2N7002 N-channel Mosfet, SOT-23 (Q2) Resistors (all M3216/1206, 1%, ⅛W) 1 10kW 1 1kW Optional Components Kit (SC6075) – $80 Includes all parts listed here, plus optional parts, except the DS3231 IC (available separately). SD card 1 SMD micro SD card socket (CON1) [Altronics P5717] 1 10μF 10V X7R SMD ceramic capacitor, M3216/1206 size 1 100nF 10V X7R SMD ceramic capacitor, M3216/1206 size Real time clock/calendar 1 surface-mounting CR2032 cell holder (BAT1) [BAT-HLD-001] 1 DS3231 or DS3231M in SOIC-16 (wide) or SOIC-8 package (IC1) 1 100nF 10V X7R SMD ceramic capacitor, M3216/1206 size 2 4.7kW 1% ⅛W M3216/1206 size IR receiver 1 3-pin infrared receiver (IRRX1) 1 10μF 10V X5R SMD ceramic capacitor, M3216/1206 size 1 1kW 1% ⅛W resistor M3216/1206 size 1 470W 1% ⅛W resistor M3216/1206 size 1 100W 1% ⅛W resistor M3216/1206 size Stereo audio 1 MCP6272(T)-E/SN, MCP6002(T)-I/SN or -E/SN dual op amp, SOIC-8 (IC2) 1 3-pin, 2.54mm pitch pin header (CON3; see text for other options) 2 1nF 25V X7R SMD ceramic capacitors, M3216/1206 size 2 100nF 10V X7R SMD ceramic capacitors, M3216/1206 size 2 10uF 10V X5R SMD ceramic capacitors, M3216/1206 size 4 100kW 1% ⅛W resistor M3216/1206 size 2 47kW 1% ⅛W resistor M3216/1206 size 2 22kW 1% ⅛W resistor M3216/1206 size 2 10kW 1% ⅛W resistor M3216/1206 size 2 100W 1% ⅛W resistor M3216/1206 size Next, fit the two ICs. There are variants of IC1 in both 16-pin and 8-pin packages. The SOIC-16 part uses all the pads, while the narrower SOIC-8 part will use the lower eight extended pads. Regardless, IC1’s pin 1 is at the lower right. If you can’t make out a pin 1 marking on IC1’s case, look for a bevel along one edge. This will be the edge with pin 1. IC2’s pin 1 goes to the upper left. For the ICs, apply flux, rest the part in place, aiming to align it squarely and symmetrically. siliconchip.com.au Add more flux to the tops of the pins and clean the iron tip. Add some solder and tack one pin in place. Confirm that the part is flat against the PCB and still positioned correctly; if not, reapply heat and nudge the part into alignment. Solder the remaining pins and only then remove any bridges if necessary. For transistors Q1 and Q2, use a similar process as the ICs. The SOT23 parts are small but easy enough to solder, as long as you don’t lose them. Move onto the capacitors next. We Australia's electronics magazine recommend working with one value at a time, as they will probably be unmarked. The procedure for passives is much the same as ICs: tack one lead and confirm that the parts are flat, square and centred, then solder the other lead. Refresh the first joint with some flux and a touch of the iron if it doesn’t look glossy. Fit the four 10μF capacitors in the positions shown in Fig.2, then follow with the four 100nF parts and the two 1nF capacitors in the audio section. Now move on to the resistors. Match up the part codes with those given in our parts list and the PCB silkscreen markings. You can use our SMD Test Tweezers (October 2021; siliconchip. com.au/Article/15057) to measure and place these parts. With most of the SMDs fitted, it is a good time to clean the board of flux. While the Pico and cell holder are surface mounting, they will not need much flux, if any. Remember to allow any solvent to evaporate fully before continuing. If you have 2mm machine screws, you can use these to align the Pico (MOD1) with the holes in the PCB. Remember that the USB socket hangs off the edge of the board. If you don’t have screws, tack one or two of the module’s pads in place instead. The pads are large enough that you can apply solder directly after heating the pad with the iron. Work around the edge of the part, applying the iron and solder to the point where the Pico’s outermost half-holes meet the PCB. If you prefer to use detachable headers, use the innermost row of holes on the Pico and PCB. Once the Pico is soldered, you can remove any screws; the 40 solder joints should keep it secure. Flip the PCB over to attach the cell holder BAT1. The opening should face the edge of the PCB. Rest the holder in place, tack one lead down, solder the other lead, then refresh the first. Now snap S1 in place, ensuring it is flat against the PCB, then solder all its pins. Consider how you plan to use the IR receiver and whether it needs to be bent up to receive a signal from the desired direction. If you are unsure, sit it up from the PCB slightly so that there is room to change this later. You could even mount it on the reverse of the PCB, as long as the pins go to the same pads. The only parts left are the headers March 2022  39 and jumpers. Depending on your plans, either of the jumper headers could be left off or replaced with wire loops as a permanent jumper. To run our example code, fit both jumper headers, but place the shunt for JP1 (LCD Backlight) on and leave the shunt for JP2 (LCD MISO) off. You can pre-fit the shunt to the header to help you hold it in position while soldering the first pin. Now add CON3 in the audio section. It’s designed for jumper wires to take these signals where they are needed. You could solder wires directly to these pins if desired. Depending on your application, you might find that fitting right-angled headers will work better, and there is also the option of fitting the headers to the underside of the PCB if required, which is what we did for our prototypes. To ensure that the headers between the LCD panel and main PCB are fitted squarely, you can assemble the stack using the machine screws and tapped spacers, as seen in our photos. Note that the four-pin header on the LCD (for its onboard SD card socket) should not be populated, as this will foul the USB socket on the Pico. Fit the female header to the male header on the LCD panel and assemble the stack. Then solder the female header in place and separate the stack. The last piece is the 20-pin I/O header, CON2. If you wish to use the Pico BackPack with a breadboard, fit this underneath the PCB. Alternatively, use right-angle headers to bring these connections out the side. Or you can even leave it off for now, as none of our examples need any external connections. You can always add it later. Reattach the LCD panel to the BackPack and secure it by screwing the machine screws into the tapped spacers. Testing Before diving in, you might like to quickly test that everything is working as expected with your BackPack. For this, you can simply upload our compiled “BackPackTest.UF2” file. Put the Pico into bootloader mode by holding the bootloader button (on the Pico) while resetting it (by pressing S1) or powering it up. Then copy the UF2 file onto the RPI-RP2 disk that appears. The demo should start as soon as the file finishes copying – see Screen 1. This example uses PicoMite BASIC, so you can also use this file as a starting point for your own BASIC program; simply use Ctrl-C on a serial terminal to stop the running program. The demonstration programs all provide buttons for interaction and let you use the touchscreen to draw on the LCD screen. PicoMite BASIC demo With PicoMite BASIC having native support for the ILI9488 driver on the 3.5in LCD touchscreen, only a few commands are needed to set everything up, if you prefer to do this manually. You’ll need a serial terminal program such as TeraTerm or MMEdit (on Windows) or minicom (on Linux). If you haven’t already done so, load PicoMite BASIC onto the Pico by Screen 1: feature-wise, the PicoMite is about on par with a Micromite Plus, although it has fewer pins, more flash memory and more RAM. The demo program allows drawing on the display and playing tones on button presses. It can also decode IR signals that are received. 40 Silicon Chip entering bootloader mode and copying the PicoMite UF2 file. Find the serial port of the Pico and open it with the terminal program. As it is a virtual serial port, no baud rate needs to be set. The following options will configure the PicoMite to use the BackPack hardware, including the LCD, touchscreen, micro SD card socket, I2C for the RTCC, audio and the GUI controls that are used in our demo: OPTION SYSTEM SPI GP18,GP19,GP16 OPTION SDCARD GP21 OPTION LCDPANEL ILI9488, LANDSCAPE,GP14,GP13,GP12 OPTION TOUCH GP15,GP17 GUI CALIBRATE OPTION SYSTEM I2C GP10, GP11 OPTION AUDIO GP8, GP9 OPTION GUI CONTROLS 20 Note that the PicoMite resets every time an option is set, dropping the serial connection; we like how Tera­ Term reconnects automatically after a reset as this makes issuing a string of such commands easier. After doing this, you can load our example code. To do this via the terminal, enter the “AUTOSAVE” command and paste the BASIC program into the terminal. The supplied file ends with an ASCII code 26 (0x1A) character, which BASIC interprets as a Ctrl-Z keypress signifying the end of the file. Then type “RUN” followed by Enter to start the demo. After this, the Pico is in much the same state as if loaded with our example UF2 file, although possibly with more accurate touchscreen calibration. Screen 2: even though we wrote the display driver in MicroPython, it is still very responsive. MicroPython also provides a file system for the flash storage and has numerous libraries for hardware interfacing. Australia's electronics magazine siliconchip.com.au We recommend having a read through the PicoMite manual to learn the minor differences from the Micromite. However, most of the differences that we came across are in the OPTIONs described above. MicroPython demo MicroPython has some parallels with BASIC in that it features an interactive prompt, allowing commands and programs to be easily tested. MicroPython has been ported to several other 32-bit microcontrollers such as the ESP32. If you’d like to find out more, see https://micropython.org/ It is open-source, and you can find the source code at https://github.com/ micropython/micropython but we’ve also included a copy of the version 1.17 UF2 file that we used to develop our examples. Typically, you will need an IDE to manage the code files, although it is possible to get by with a serial terminal program. We used “Thonny” as our Python IDE, as it appears in recent Raspberry Pi OS distributions and is also available on Windows. You can load the “BackPack MicroPython Example.UF2” file directly via bootloader mode. This is the easiest method if you don’t have a Python IDE installed. As with the PicoMite BASIC example, you can interrupt code loaded via the bootloader and interact with it through a serial terminal. Otherwise, follow the steps below to view and work with the source files separately. We are using MicroPython for Pico version 1.17. To load our example manually, first load the MicroPython UF2 file onto the Pico, then use your IDE to copy the “ILI9488LIB.py” and “LSNBFONT.py” files to a “lib” folder on the Pico’s internal storage. The way this is done will vary depending on the IDE you’re using. These two modules constitute the driver and font that are used in our software, and keep the main program file legible and to a manageable size. Now load the “main.py” file and run it. If all is well, you should see the screen initialise – see Screen 2. Unlike PicoMite BASIC, we had to implement the display driver in Python. While this makes it noticeably slower than BASIC’s integrated driver, it is certainly fast enough to be usable. We haven’t delved into creating libraries for the micro SD card, RTCC siliconchip.com.au The rear of the Pico BackPack has the coin cell holder and possibly also some of the headers. or IR receiver as there are numerous publicly available libraries for these features. Do not insert a micro SD card unless you have already installed a library to initialise it correctly. Otherwise, it will interfere with the SPI bus operation of the LCD and touch controllers. Arduino demo We used a board variant based on the C SDK for our Arduino software, which simplified developing software for the C SDK by itself. This is the board variant we mentioned in the Pi Pico Review (https://github.com/ earlephilhower/arduino-­pico). To add this variant to the Arduino IDE, add the text “https://github. com/earlephilhower/arduino-pico/ releases/download/global/package_ rp2040_index.json” to the list of Board Manager URLs under Arduino Preferences. Next, install the “Raspberry Pi Pico/RP2040” option from the Boards Manager by selecting it and clicking “Install” (as shown in Screen 3). Our example code just needs one example library; search for “rtclib” in the Library Manager and install the version provided by Adafruit. It can also be downloaded and installed manually from https://github.com/ adafruit/RTClib The SD card library included with the Arduino IDE is used by our code. We’ve also written simple drivers for the LCD touchscreen (including backlight PWM) and audio output. The files for these are included in our sample code. Unfortunately, it appears there are no readily-available IR receiver Screen 3: we’re using a custom board profile for the Pico under the Arduino IDE. It can be installed easily, and because it is based on the C SDK, it supports using C SDK functions in projects. It’s the bottom-most item in the screenshot seen here (highlighted in red). Australia's electronics magazine March 2022  41 libraries for the Pico under Arduino yet. We previously used the Arduino IRremote library (https://github. com/Arduino-IRremote/Arduino-IRremote) and expect that it won’t be long before someone ports this over to the Pico. The Arduino demo allows drawing on the LCD by use of the touchscreen – see Screen 4. It reads the SD card and displays the first file found; pressing the “Files” button on the screen will look for additional files and show their name. The backlight brightness can be adjusted by the slider at the bottom of the screen. The time found on the RTC chip is displayed. There is sample code in the RTClib library to set the time in the DS3231 chip if that has not been done already. Sounds are played every time a button is pressed or released; you will need a speaker or headphones connected to hear them. The sounds are sinewaves defined in the “sounds.c” file. C SDK demo We found it was a bit trickier to get the C SDK working on its own. While our previous article about programming the Pico discussed doing this under Windows, we found that many of the required tasks were easier in the Raspberry Pi OS. So if you have a Raspberry Pi, we recommend using it to compile projects for the Pico, especially if you want to work in C. The documentation is written with this in mind, so it makes sense. While a Raspberry Pi is a bit slower than a modern Windows PC, we saved time overall because things seemed to work more often the first time around. You can load our demo firmware file by putting the Pico into bootloader mode and copying the UF2 file to the RPI-RP2 drive. It should show the LCD and touchscreen working – see Screen 5. You can draw on the LCD by using the touchscreen. The backlight can be cycled between several brightness levels by the LIGHT button and a sound is produced every time a button is pressed or released. We haven’t found any libraries for SD cards, IR receivers or real-time clock modules to suit the C SDK, so we have not implemented these features. Still, we expect that the rapidly growing community around the Pico could see these developed sooner or later. One advantage of using C is that the LCD is updated very quickly using the native SPI interface. That could be handy for projects that need rapid screen updates. Using the C SDK files It is not easy to create a portable project, even with the Project Generator program. Still, the following method should allow you to build your own projects from our example code. Use the Project Generator to create a project, being sure to check at least the SPI peripheral option. The Pico review Screen 4: our Arduino demo is one of the more comprehensive tests of the Pico BackPack’s features, primarily due to the extensive open-source libraries that are available. You can test the LCD and touchscreen by drawing on the screen, and if you have a speaker connected, it will emit tones when a button is pressed. 42 Silicon Chip article from December shows the Windows version of the Project Generator. We also like to enable the USB console and disable the UART console if we aren’t using the USB peripheral for anything else. This makes it easier to send debugging information directly to a virtual USB serial port and frees up the I/O pins that would otherwise be used for the hardware console. After the project is generated, there will be a .c file in the project folder; it will have the same name as the project you just generated. Copy the contents of the main.c file (from our example) over the contents of this .c file, replacing the boilerplate code that the generator has created. Then copy the remaining .c and .h files from our example folder. There will also be a CmakeLists.txt file in the project folder. Open it and find a line like this: target_link_libraries(LCD_TEST pico_stdlib) The first item will be the project name. Add a reference to “hardware_ pwm”: target_link_libraries(LCD_TEST pico_stdlib hardware_pwm) Then save the file. Switch to the “build” subdirectory and run “nmake” on Windows or “make” on Linux (including Raspberry Pi OS). If all goes well, the compilation will proceed, and it will create the UF2 file in the build subdirectory. This is the firmware image you can transfer Screen 5: the C SDK is trickier to work with than the Arduino IDE or PicoMite BASIC, but it allows for highperformance operation of the Pico if needed. We found it was easily the fastest of the lot when updating the display. Our demo shows off the LCD, touchscreen, backlight control as well as sounding tones when the buttons are pressed. Australia's electronics magazine siliconchip.com.au Screen 6: the 2MB of flash memory on the Pico is generous, and flash file systems like LittleFS are a great way to make use of it. The Arduino IDE even provides a tool for uploading files to the file system via the serial port (“Pico LittleFS Data Upload”). The amount of flash memory set aside for the file system is configurable. to the Pico to run your new program. Using the C SDK is quite different to Arduino, BASIC or MicroPython, but it appears that many questions are being asked and answered on the Raspberry Pi forums. There is a Pico C SDK section of the forum at siliconchip.com.au/link/ abc1 and a list of community provided libraries at siliconchip.com.au/ link/abc2 With the Pico being so cheap and already having broad community support for several languages, as well as official (Raspberry Pi Foundation) support for the C SDK and MicroPython, we expect that what is possible will expand quite rapidly. More features There are a couple of extra features on the Pico that we should mention, mainly because they are reasonably novel or interesting. The USB peripheral is not easily usable from PicoMite BASIC or MicroPython. However, the Arduino IDE provides examples to allow the Pico to act as a CDC (serial) device, HID device like keyboard or mouse, mass storage and even a MIDI interface. Being small, the Pico is ideal for turning into a small USB widget with a dedicated function. Having a dualcore processor also opens up other possibilities, such as real-time monitoring and control. Dual cores The RP2040 on the Pico has two ARM processor cores and these can be used in a few different ways. The Arduino IDE & C SDK provide means of running programs on both cores. Sharing memory between two processors is not always trivial, but it is not too tricky with the Pico. Still, you need to ensure that one core isn’t trying to access flash memory that the other core is erasing, or you’ll crash it! The Arduino IDE provides simple setup1() and loop1() functions to allow a second parallel process to start up, while the C SDK provides some lowlevel interfaces to control this. MicroPython can use threads to run tasks concurrently using the dual cores, but the dual cores are not exposed at all in PicoMite BASIC. Storing data in flash memory The large, external flash chip on the Pico also means that there is ample siliconchip.com.au onboard storage for large amounts of data. This could be graphics, sounds or lookup tables. It can be accessed as constants from within your program, but some languages provide ways of treating the flash memory more like a file system. Another thing worth noting is that the 2MB of flash available on the Pico is pretty generous for a microcontroller. Like the ESP8266 and ESP32, there are options to use some of this flash for storage on the Pico in some of these programming environments. While the removable micro SD card makes it easier to update data by simply popping it out and connecting it to a computer, keep the internal storage in mind if you need a small amount of non-volatile storage. MicroPython makes native use of this to store files; it’s how our two library files and the main.py file are stored in our earlier example. The IDE you use should have a way to read and modify the internal storage. There are also methods available to read and write these files from within the MicroPython language. The Arduino board profile we used earlier supports the LittleFS file system. You can add a separate tool to the Tools menu to manage uploading files to the flash, and different program and storage profiles can be set to share the available space. The Pico LittleFS Data Upload is available (after being added) in the Tools menu along with several different memory partitions – see Screen 6. Files to be added are placed into a “data” folder in the sketch folder and uploaded from there. Australia's electronics magazine There are example sketches under the Examples → Examples for Raspberry Pi Pico → LittleFS menu; the “FSUpload” example has a link to the upload tool too. The C SDK provides low-level routines for writing directly to flash memory, which can be handy if you know what you are doing, but disastrous if you do not. You might overwrite your program! Or perhaps worse, perform too many writes and wear out the flash. Still, this can be handy if all you need is a large block of non-volatile storage to store data without needing file type access. PicoMite BASIC has ten flash memory slots for programs to be stored and the VAR SAVE feature sets aside 16kB for user data to be stored and accessed by a BASIC program. Conclusion With four different ways of being programmed, a generous amount of RAM and flash, the Pico microcontroller board is bound to be used in a variety of projects. And it’s inexpensive to boot. Combined with our Pico BackPack, we can see this combination being versatile enough to become the core of many different projects in much the same way that the Micromite Backpack did. It’s easy to work with the Pico and the Pico BackPack using either the Arduino IDE or PicoMite BASIC. We would not be surprised if a Pico BackPack programmed in one of these languages found a way into future Silicon Chip projects. In fact, we’re already planning more than one... SC March 2022  43