connect lcd module to raspberry pi made in china

Connecting an LCD to your Raspberry Pi will spice up almost any project, but what if your pins are tied up with connections to other modules? No problem, just connect your LCD with I2C, it only uses two pins (well, four if you count the ground and power).

In this tutorial, I’ll show you everything you need to set up an LCD using I2C, but if you want to learn more about I2C and the details of how it works, check out our article Basics of the I2C Communication Protocol.

BONUS: I made a quick start guide for this tutorial that you can download and go back to later if you can’t set this up right now. It covers all of the steps, diagrams, and code you need to get started.

There are a couple ways to use I2C to connect an LCD to the Raspberry Pi. The simplest is to get an LCD with an I2C backpack. But the hardcore DIY way is to use a standard HD44780 LCD and connect it to the Pi via a chip called the PCF8574.

The PCF8574 converts the I2C signal sent from the Pi into a parallel signal that can be used by the LCD. Most I2C LCDs use the PCF8574 anyway. I’ll explain how to connect it both ways in a minute.

I’ll also show you how to program the LCD using Python, and provide examples for how to print and position the text, clear the screen, scroll text, print data from a sensor, print the date and time, and print the IP address of your Pi.

I2C (inter-integrated circuit) is also known as the two-wire interface since it only uses two wires to send and receive data. Actually it takes four if you count the Vcc and ground wires, but the power could always come from another source.

Connecting an LCD with an I2C backpack is pretty self-explanatory. Connect the SDA pin on the Pi to the SDA pin on the LCD, and the SCL pin on the Pi to the SCL pin on the LCD. The ground and Vcc pins will also need to be connected. Most LCDs can operate with 3.3V, but they’re meant to be run on 5V, so connect it to the 5V pin of the Pi if possible.

If you have an LCD without I2C and have a PCF8574 chip lying around, you can use it to connect your LCD with a little extra wiring. The PCF8574 is an 8 bit I/O expander which converts a parallel signal into I2C and vice-versa. The Raspberry Pi sends data to the PCF8574 via I2C. The PCF8574 then converts the I2C signal into a 4 bit parallel signal, which is relayed to the LCD.

Before we get into the programming, we need to make sure the I2C module is enabled on the Pi and install a couple tools that will make it easier to use I2C.

Now we need to install a program called I2C-tools, which will tell us the I2C address of the LCD when it’s connected to the Pi. So at the command prompt, enter sudo apt-get install i2c-tools.

Next we need to install SMBUS, which gives the Python library we’re going to use access to the I2C bus on the Pi. At the command prompt, enter sudo apt-get install python-smbus.

Now reboot the Pi and log in again. With your LCD connected, enter i2cdetect -y 1 at the command prompt. This will show you a table of addresses for each I2C device connected to your Pi:

We’ll be using Python to program the LCD, so if this is your first time writing/running a Python program, you may want to check out How to Write and Run a Python Program on the Raspberry Pi before proceeding.

There are a couple things you may need to change in the code above, depending on your set up. On line 19 there is a function that defines the port for the I2C bus (I2CBUS = 0). Older Raspberry Pi’s used port 0, but newer models use port 1. So depending on which RPi model you have, you might need to change this from 0 to 1.

The function mylcd.lcd_display_string() prints text to the screen and also lets you chose where to position it. The function is used as mylcd.lcd_display_string("TEXT TO PRINT", ROW, COLUMN). For example, the following code prints “Hello World!” to row 2, column 3:

On a 16×2 LCD, the rows are numbered 1 – 2, while the columns are numbered 0 – 15. So to print “Hello World!” at the first column of the top row, you would use mylcd.lcd_display_string("Hello World!", 1, 0).

You can use the time.sleep() function on line 7 to change the time (in seconds) the text stays on. The time the text stays off can be changed in the time.sleep() function on line 9. To end the program, press Ctrl-C.

You can create any pattern you want and print it to the display as a custom character. Each character is an array of 5 x 8 pixels. Up to 8 custom characters can be defined and stored in the LCD’s memory. This custom character generator will help you create the bit array needed to define the characters in the LCD memory.

The code below will display data from a DHT11 temperature and humidity sensor. Follow this tutorial for instructions on how to set up the DHT11 on the Raspberry Pi. The DHT11 signal pin is connected to BCM pin 4 (physical pin 7 of the RPi).

By inserting the variable from your sensor into the mylcd.lcd_display_string() function (line 22 in the code above) you can print the sensor data just like any other text string.

These programs are just basic examples of ways you can control text on your LCD. Try changing things around and combining the code to get some interesting effects. For example, you can make some fun animations by scrolling with custom characters. Don’t have enough screen space to output all of your sensor data? Just print and clear each reading for a couple seconds in a loop.

Let us know in the comments if you have any questions or trouble setting this up. Also leave a comment if you have any other ideas on how to get some cool effects, or just to share your project!

connect lcd module to raspberry pi made in china

LCD screens are useful and found in many parts of our life. At the train station, parking meter, vending machines communicating brief messages on how we interact with the machine they are connected to. LCD screens are a fun way to communicate information in Raspberry Pi Pico projects and other Raspberry Pi Projects. They have a big bright screen which can display text, numbers and characters across a 16 x 2 screen. The 16 refers to 16 characters across the screen, and the 2 represents the number of rows we have. We can get LCD screens with 20x2, 20x4 and many other configurations, but 16x2 is the most common.

In this tutorial, we will learn how to connect an LCD screen, an HD44780, to a Raspberry Pi Pico via the I2C interface using the attached I2C backpack, then we will install a MicroPython library via the Thonny editor and learn how to use it to write text to the display, control the cursor and the backlight.

2. Import four librariesof pre-written code. The first two are from the Machine library and they enable us to use I2C and GPIO pins. Next we import the sleep function from Time enabling us to pause the code. Finally we import the I2C library to interact with the LCD screen.from machine import I2C, Pin

3. Create an objecti2c to communicate with the LCD screen over the I2C protocol. Here we are using I2C channel 0, which maps SDA to GP0 and SCL to GP1.i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)

4. Create a variableI2C_ADDR,which will store the first I2C address found when we scan the bus. As we only have one I2C device connected, we only need to see the first [0] address returned in the scan.I2C_ADDR = i2c.scan()[0]

5. Create an objectlcdto set up the I2C connection for the library. It tells the library what I2C pins we are using, set via the i2c object, the address of our screen, set via I2C_ADDRand finally it sets that we have a screen with two rows and 16 columns.lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)

6. Create a loopto continually run the code, the first line in the loop will print the I2C address of our display to Thonny’s Python Shell.while True:

8. Write two lines of textto the screen. The first will print “I2C Address:” followed by the address stored inside the I2C_ADDR object. Then insert a new line character “\n” and then write another line saying “Tom’s Hardware" (or whatever you want it to say). Pause for two seconds to allow time to read the text.lcd.putstr("I2C Address:"+str(I2C_ADDR)+"\n")

9. Clear the screenbefore repeating the previous section of code, but this time we display the I2C address of the LCD display using its hex value. The PCF8574T chip used in the I2C backpack has two address, 0x20 and 0x27 and it is useful to know which it is using, especially if we are using multiple I2C devices as they may cause a clash on the bus.lcd.clear()

11. To flash the LED backlight, use a for loopthat will iterate ten times. It will turn on the backlight for 0.2 seconds, then turn it off for the same time. The “Backlight Test” text will remain on the screen even with the backlight off.for i in range(10):

12. Turn the backlight back onand then hide the cursor. Sometimes, a flashing cursor can detract from the information we are trying to communicate.lcd.backlight_on()

13. Create a for loopthat will print the number 0 to 19 on the LCD screen. Note that there is a 0.4 second delay before we delete the value and replace it with the next. We have to delete the text as overwriting the text will make it look garbled.for i in range(20):

Save and runyour code. As with any Python script in Thonny, Click on File >> Saveand save the file to your Raspberry Pi Pico. We recommend calling it i2c_lcd_test.py. When ready, click on the Green play buttonto start the code and watch as the test runs on the screen.

connect lcd module to raspberry pi made in china

For the version of the Raspberry Pi system after May 2019 (the OS version earlier than this date doesn"t need to be executed), an upgrade may be required:

Framebuffer uses a video output device to drive a video display device from a memory buffer containing complete frame data. Simply put, a memory area is used to store the display content, and the display content can be changed by changing the data in the memory.

There is an open source project on github: fbcp-ili9341. Compared with other fbcp projects, this project uses partial refresh and DMA to achieve a speed of up to 60fps

We have carried out the low-level encapsulation, if you need to know the internal implementation can go to the corresponding directory to check, for the reason that the hardware platform and the internal implementation are different

2.We use Dev libraries by default. If you need to change to BCM2835 or WiringPi libraries ,please open RaspberryPi\c\Makefile and modify lines 13-15 as follows:

If you need to draw pictures, or display Chinese and English characters, we provide some basic functions here about some graphics processing in the directory RaspberryPi\c\lib\GUI\GUI_Paint.c(.h).

Mirror: indicates the image mirroring mode. MIRROR_NONE, MIRROR_HORIZONTAL, MIRROR_VERTICAL, MIRROR_ORIGIN correspond to no mirror, horizontal mirror, vertical mirror, and image center mirror respectively.

The fill color of a certain window in the image buffer: the image buffer part of the window filled with a certain color, usually used to fresh the screen into blank, often used for time display, fresh the last second of the screen.

Draw rectangle: In the image buffer, draw a rectangle from (Xstart, Ystart) to (Xend, Yend), you can choose the color, the width of the line, whether to fill the inside of the rectangle.

Draw circle: In the image buffer, draw a circle of Radius with (X_Center Y_Center) as the center. You can choose the color, the width of the line, and whether to fill the inside of the circle.

2. The module_init() function is automatically called in the INIT () initializer on the LCD, but the module_exit() function needs to be called by itself

Python has an image library PIL official library link, it do not need to write code from the logical layer like C, can directly call to the image library for image processing. The following will take 1.54inch LCD as an example, we provide a brief description for the demo.

The first parameter defines the color depth of the image, which is defined as "1" to indicate the bitmap of one-bit depth. The second parameter is a tuple that defines the width and height of the image. The third parameter defines the default color of the buffer, which is defined as "WHITE".

Note: Each character library contains different characters; If some characters cannot be displayed, it is recommended that you can refer to the encoding set ro used.

The first parameter is a tuple of 2 elements, with (40, 50) as the left vertex, the font is Font2, and the fill is the font color. You can directly make fill = "WHITE", because the regular color value is already defined Well, of course, you can also use fill = (128,255,128), the parentheses correspond to the values of the three RGB colors so that you can precisely control the color you want. The second sentence shows Micro Snow Electronics, using Font3, the font color is white.

connect lcd module to raspberry pi made in china

As a 2inch IPS display module with a resolution of 240 * 320, it uses an SPI interface for communication. The LCD has an internal controller with basic functions, which can be used to draw points, lines, circles, and rectangles, and display English, Chinese as well as pictures.

The 2inch LCD uses the PH2.0 8PIN interface, which can be connected to the Raspberry Pi according to the above table: (Please connect according to the pin definition table. The color of the wiring in the picture is for reference only, and the actual color shall prevail.)

The example we provide is based on STM32F103RBT6, and the connection method provided is also the corresponding pin of STM32F103RBT6. If you need to transplant the program, please connect according to the actual pin.

The LCD supports 12-bit, 16-bit, and 18-bit input color formats per pixel, namely RGB444, RGB565, and RGB666 three color formats, this demo uses RGB565 color format, which is also a commonly used RGB format.

For most LCD controllers, the communication mode of the controller can be configured, usually with an 8080 parallel interface, three-wire SPI, four-wire SPI, and other communication methods. This LCD uses a four-wire SPI communication interface, which can greatly save the GPIO port, and the communication speed will be faster.

Note: Different from the traditional SPI protocol, the data line from the slave to the master is hidden since the device only has display requirement.

CPOL determines the level of the serial synchronous clock at idle state. When CPOL = 0, the level is Low. However, CPOL has little effect to the transmission.

PS: If you are using the system of the Bullseye branch, you need to change "apt-get" to "apt", the system of the Bullseye branch only supports Python3.

Framebuffer uses a video output device to drive a video display device from a memory buffer containing complete frame data. Simply put, a memory area is used to store the display content, and the display content can be changed by changing the data in the memory.

There is an open source project on github: fbcp-ili9341. Compared with other fbcp projects, this project uses partial refresh and DMA to achieve a speed of up to 60fps

We have carried out the low-level encapsulation, if you need to know the internal implementation can go to the corresponding directory to check, for the reason that the hardware platform and the internal implementation are different

2.We use Dev libraries by default. If you need to change to BCM2835 or WiringPi libraries ,please open RaspberryPi\c\Makefile and modify lines 13-15 as follows:

If you need to draw pictures, or display Chinese and English characters, we provide some basic functions here about some graphics processing in the directory RaspberryPi\c\lib\GUI\GUI_Paint.c(.h).

Mirror: indicates the image mirroring mode. MIRROR_NONE, MIRROR_HORIZONTAL, MIRROR_VERTICAL, MIRROR_ORIGIN correspond to no mirror, horizontal mirror, vertical mirror, and image center mirror respectively.

The fill color of a certain window in the image buffer: the image buffer part of the window filled with a certain color, usually used to fresh the screen into blank, often used for time display, fresh the last second of the screen.

Draw rectangle: In the image buffer, draw a rectangle from (Xstart, Ystart) to (Xend, Yend), you can choose the color, the width of the line, whether to fill the inside of the rectangle.

Draw circle: In the image buffer, draw a circle of Radius with (X_Center Y_Center) as the center. You can choose the color, the width of the line, and whether to fill the inside of the circle.

2. The module_init() function is automatically called in the INIT () initializer on the LCD, but the module_exit() function needs to be called by itself

Python has an image library PIL official library link, it do not need to write code from the logical layer like C, can directly call to the image library for image processing. The following will take 1.54inch LCD as an example, we provide a brief description for the demo.

The first parameter defines the color depth of the image, which is defined as "1" to indicate the bitmap of one-bit depth. The second parameter is a tuple that defines the width and height of the image. The third parameter defines the default color of the buffer, which is defined as "WHITE".

Note: Each character library contains different characters; If some characters cannot be displayed, it is recommended that you can refer to the encoding set ro used.

The first parameter is a tuple of 2 elements, with (40, 50) as the left vertex, the font is Font2, and the fill is the font color. You can directly make fill = "WHITE", because the regular color value is already defined Well, of course, you can also use fill = (128,255,128), the parentheses correspond to the values of the three RGB colors so that you can precisely control the color you want. The second sentence shows Micro Snow Electronics, using Font3, the font color is white.

connect lcd module to raspberry pi made in china

In previous posts I’ve covered using HD44780 16×2 and 20×4 LCD screens with the Raspberry Pi using Python. These are relatively easy to use but require a number of connections to be made to the Pi’s GPIO header. This setup can be simplified with the use of an I2C enabled LCD screen.

This requires a high level voltage (5V) and a low level voltage (3.3V) which the device uses as a reference. The HV pins can be connected to the screen and two of the LV pins to the Pi’s I2C interface.Level ShifterPiI2C Backpack

While experimenting I found that it worked fine without the level shifting but I couldn’t be certain this wasn’t going to damage the Pi at some point. So it’s probably best to play it safe!

The example script will allow you to send text to the screen via I2C. It is very similar to my scripts for the normal 16×2 screen. To download the script directly to your Pi you can use :wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/lcd_i2c.py

In order to use I2C devices you must enable the interface on your Raspberry Pi. This can be done by following my “Enabling The I2C Interface On The Raspberry Pi” tutorial. By default the I2C backpack will show up on address 0x27.

connect lcd module to raspberry pi made in china

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

connect lcd module to raspberry pi made in china

The displays feature a sturdy metal enclosure and more capable electronics. The products are equipped with the Raspberry Pi Compute Module 4 –  the latest, smaller form factor version of the globally popular Raspberry Pi 4 Model B, designed to be used in industrial and custom projects.

connect lcd module to raspberry pi made in china

We have used Liquid Crystal Displays in the DroneBot Workshop many times before, but the one we are working with today has a bit of a twist – it’s a circle!  Perfect for creating electronic gauges and special effects.

LCD, or Liquid Crystal Displays, are great choices for many applications. They aren’t that power-hungry, they are available in monochrome or full-color models, and they are available in all shapes and sizes.

Today we will see how to use this display with both an Arduino and an ESP32. We will also use a pair of them to make some rather spooky animated eyeballs!

Waveshare actually has several round LCD modules, I chose the 1.28-inch model as it was readily available on Amazon. You could probably perform the same experiments using a different module, although you may require a different driver.

There are also some additional connections to the display. One of them, DC, sets the display into either Data or Command mode. Another, BL, is a control for the display’s backlight.

The above illustration shows the connections to the display.  The Waveshare display can be used with either 3.3 or 5-volt logic, the power supply voltage should match the logic level (although you CAN use a 5-volt supply with 3.3-volt logic).

Another difference is simply with the labeling on the display. There are two pins, one labeled SDA and the other labeled SCL. At a glance, you would assume that this is an I2C device, but it isn’t, it’s SPI just like the Waveshare device.

This display can be used for the experiments we will be doing with the ESP32, as that is a 3.3-volt logic microcontroller. You would need to use a voltage level converter if you wanted to use one of these with an Arduino Uno.

The Arduino Uno is arguably the most common microcontroller on the planet, certainly for experiments it is. However, it is also quite old and compared to more modern devices its 16-MHz clock is pretty slow.

The Waveshare device comes with a cable for use with the display. Unfortunately, it only has female ends, which would be excellent for a Raspberry Pi (which is also supported) but not too handy for an Arduino Uno. I used short breadboard jumper wires to convert the ends into male ones suitable for the Arduino.

Once you have everything hooked up, you can start coding for the display. There are a few ways to do this, one of them is to grab the sample code thatWaveshare provides on their Wiki.

The Waveshare Wiki does provide some information about the display and a bit of sample code for a few common controllers. It’s a reasonable support page, unfortunately, it is the only support that Waveshare provides(I would have liked to see more examples and a tutorial, but I guess I’m spoiled by Adafruit and Sparkfun LOL).

Open the Arduino folder. Inside you’ll find quite a few folders, one for each display size that Waveshare supports. As I’m using the 1.28-inch model, I selected theLCD_1inch28folder.

Once you do that, you can open your Arduino IDE and then navigate to that folder. Inside the folder, there is a sketch file namedLCD_1inch28.inowhich you will want to open.

When you open the sketch, you’ll be greeted by an error message in your Arduino IDE. The error is that two of the files included in the sketch contain unrecognized characters. The IDE offers the suggestion of fixing these with the “Fix Encoder & Reload” function (in the Tools menu), but that won’t work.

The error just seems to be with a couple of the Chinese characters used in the comments of the sketch. You can just ignore the error, the sketch will compile correctly in spite of it.

You can see from the code that after loading some libraries we initialize the display, set its backlight level (you can use PWM on the BL pin to set the level), and paint a new image. We then proceed to draw lines and strings onto the display.

Unfortunately, Waveshare doesn’t offer documentation for this, but you can gather quite a bit of information by reading theLCD_Driver.cppfile, where the functions are somewhat documented.

This library is an extension of the Adafruit GFX library, which itself is one of the most popular display libraries around. Because of this, there isextensive documentation for this libraryavailable from Adafruit.  This makes the library an excellent choice for those who want to write their own applications.

As with the Waveshare sample, this file just prints shapes and text to the display. It is quite an easy sketch to understand, especially with the Adafruit documentation.

The sketch finishes by printing some bizarre text on the display. The text is an excerpt from The Hitchhiker’s Guide to the Galaxy by Douglas Adams, and it’s a sample of Vogon poetry, which is considered to be the third-worst in the Galaxy!

Here is the hookup for the ESP32 and the GC9A01 display.  As with most ESP32 hookup diagrams, it is important to use the correct GPIO numbers instead of physical pins. The diagram shows the WROVER, so if you are using a different module you’ll need to consult its documentation to ensure that you hook it up properly.

The TFT_eSPI library is ideal for this, and several other, displays. You can install it through your Arduino IDE Library Manager, just search for “TFT_eSPI”.

To test out the display, you can use theColour_Test sketch, found inside the Test and Diagnostic menu item inside the library samples.  While this sketch was not made for this display, it is a good way to confirm that you have everything hooked up and configured properly.

A great demo code sample is theAnimated_dialsketch, which is found inside theSpritesmenu item.  This demonstration code will produce a “dial” indicator on the display, along with some simulated “data” (really just a random number generator).

In order to run this sketch, you’ll need to install another library. Install theTjpeg_DecoderLibrary from Library Manager. Once you do, the sketch will compile, and you can upload it to your ESP32.

The first thing we need to do is to hook up a second display. To do this, you connect every wire in parallel with the first display, except for the CS (chip select) line.

You can also hook up some optional components to manually control the two “eyeballs”.  You’ll need an analog joystick and a couple of momentary contact, normally open pushbutton switches.

The Animated Eyes sketch can be found within the sample files for the TFT_eSPI library, under the “generic” folder.  Assuming that you have wired up the second GC9A01 display, you’ll want to use theAnimated_Eyes_2sketch.

The GC9A01 LCD module is a 1.28-inch round display that is useful for instrumentation and other similar projects. Today we will learn how to use this display with an Arduino Uno and an ESP32.

connect lcd module to raspberry pi made in china

Hardware hobbyists wanting to get their hands on some juicy single-board Raspberry Pi kit to power low-cost electronics projects have been having a frustrating time for more than a year now, as pandemic-triggered global supply chain disruption continues squeezing reseller inventory.

Go try and buy Pi and you can’t miss how official reseller websites everywhere — such as Pimoroni and SB Components in Europe or AdaFruit in the U.S. — are peppered with ‘Out of Stock’ notifications.

Keep looking and you’ll probably stumble across social media stories of enthusiasts forking over multiples on the RRP of sought-after boards via non official reseller routes (like Amazon) — hardware that would usually carry an exceptionally reasonable price-tag.

Unlike Pi itself, these tales of Pi buyer woe are, sadly, all too easy to find online as scalpers have honed in on the supply shortage — firing up stock-buying bots and trying to swoop when a few units appear so they can sell the kit on at vastly inflated prices by exploiting people’s passion to get on with their projects…

Pi Zero W2 RRP is £14, but due to low stock scalpers are selling them for upwards of £90. What’s up with that? Are they out of production? @Raspberry_Pi #raspberrypi

The biggest roadblock currently is getting a hold of Raspberry Pi Zero 2 Ws (out of stock everywhere), which are used for the hubs (running software I developed) to provide educational resources to local devices even if offline.

One frustrated would-be-Pi buying tipster pinged us directly — wondering: “How is Raspberry Pi surviving in this climate? So many of their products have been (and continue to be) out of stock for years. It’s so bad that numerous products are backordered into late 2023.You also wouldn’t know it from the Buy buttons on their website… it links to vendors which are all out of stock so they are basically burying how bad it is. Anyways, hope they make it through this just be hurting them big time.”

To be fair to the Raspberry Pi Foundation, they have been blogging about the supply issue since last year (when they also had to announce some temporary price increases also linked to the “strange times” in global semiconductor supply) — so claiming they’re ‘burying’ the bad news risks sounding a tad conspiratorial.

The roots of the global semiconductor shortage itself are linked to supply chain disruption triggered by the pandemic impacting labor availability and by COVID-19 lockdowns simultaneously spiking demand for all sorts of consumer electronics (which of course need chips to power them). In short, the proverbial ‘perfect storm’.

Pi’s supply issues are really a neat package of both phenomena, if we can put it that way. (Or: “We have order backlogs from our distributors, and they have order backlogs from their customers,” as Raspberry Pi’s co-founder concisely sums the problem to us.)

The upshot is far from neat for individuals wanting to buy Pi, of course. But the company has stepped into the breach to support its business customers — specifically industrial and commercial OEMs — through these leaner supply times. This means it’s prioritizing available Pi stock for business customers so they can keep serving their customers, hence hobbyists are feeling the (inventory) pinch.

“These are companies (often small ones) who have put their faith in our platform: Livelihoods are at stake, and we feel an obligation to them,” co-founder Eben Upton told TechCrunch, adding: “New production goes to fill these backlogs, which is how we can be consistently building over 100,000 units a week but still see little free stock in channel.”

So while the Pi maker’s core ‘democratizing tech’ educational mission is intrinsically bound up with providing curious individuals with affordable  access to programmable computing hardware — so they can play around and learn STEM along the way — there’s no doubt it has had to take the tough choice to ask enthusiasts to join the queue behind Pi-reliant businesses.

“Obviously this translates into reduced availability for enthusiast customers,” he confirmed. “The advice there is buy from Approved Resellers, many of whom operate wait lists, and/or to use tools like rpilocator to keep track of stock as it appears in channel.”

“Go to Approved Resellers,” he reiterated. “We’re not supplying non-approved resellers. Go to an AR, get in the queue. Use rpilocator if you want but go to an AR… that operates a queuing system, get in the queue. We are getting units out. We are still managing to get some units out to that space.”

But Upton also signalled that the Pi inventory issues should start to ease next year — saying he was hopeful of a resolution “no later than Q2”. “We’re seeing positive signs that the supply chain situation is improving but it will be some months yet before we’re back in the sort of robust stock position we prefer,” he told TechCrunch.

“The current situation is as much a demand shock as a supply shock,” he explained. “Demand for Raspberry Pi products increased sharply from the start of 2021 onwards, and supply constraints have prevented us from flexing up to meet this demand, with the result that we now have significant order backlogs for almost all products. In turn, our many resellers have their own backlogs, which they fulfil when they receive stock from us.”

He also reiterated the aforementioned, official Pi advice for individuals trying to get hold of kit — advice that continues to apply: Namely, buy Pi from an approved reseller (i.e. to avoid being scalped); and try to find a reseller that takes pre-orders and can (hopefully) give you an idea of how long you’re doing to be waiting… And, well, the (obvious) follow-on is: Prepare to be patient while you wait to get your Pi.

Pimoroni co-founder, Jon Williamson, only had words of praise for Raspberry Pi (aka, the Pi-manufacturing arm of the charitable Pi Foundation) for having done “really well” keeping “SBC” (single-board computing) kit in-stock “until a long way into the shortages, especially given their popularity”, as he put it to us in an email.

“We get small drops of SBC stock at infrequent intervals, much like the other resellers,” Williamson said of Pimoroni’s own Pi supply situation, saying the strategy it’s using to weather inventory challenges attached to its core product is to focus on other Pi products that are in more plentiful supply. “We’ve got a good flow of RP2040/Pico stock and are focusing on our products that support that,” he noted.

Upton’s April update also urges buyers to consider the (2020 launched) Raspberry Pi 400; or the (2021) Pico — which is made using Pi’s own silicon and an in-house developed chip (RP2040) — as alternatives to other more supply-constrained boards, as he said those lines have been less affected by supply issues so you should have less of wait to get your Pi.

Given the ongoing chatter around shortages, we reached out to Upton for a chat about how it’s been managing such a sustained period of inventory constraints — a phone call, it should be said, that Upton offered despite being on holiday at the time (so he certainly can’t be accused of running from the issue).

He also readily agreed it’s a frustrating situation for Pi buyers — and indeed for everyone at Raspberry Pi which has always had a dual focus on homebrew (hobbyist) and industrial (business) users so individual buyers are absolutely a core component (pardon the pun) of its customer base.

“We’re really sorry — this isn’t a situation we’ve chosen,” he volunteered during a chat which took place to an evocative backdrop of medieval church bells and piazza buzz. “This isn’t a situation anyone wants to be in. And we’re working our knuckles to the bone trying to get out of it.”

He also had some good news: Telling us he’s hopeful that the sustained inventory squeeze will start to ease from early(ish) next year. So — fingerscrossed — those annoying ‘Out of Stock’ notifications should start to get less visible in 2023. (The usual ‘black swan event’ caveats do of course apply, especially as 2022 has had no shortage of fresh geopolitical shocks, such as Russia starting a land war in Europe.)

“The good news is we are hopeful that, independently of whether the macro environment changes, our specific supply challenges are going to get a lot better in, say — no later than — Q2 of next year,” he said. “I think that would be a good guess because there are some supply side factors that are going to help. There’s a lot more manufacturing capacity.”

“There’s a lot more production capacity for that… coming online in the next 12 months — and I think that will probably be the thing that brings our specific shortages to an end,” he predicted. “I’m probably pretty comfortable with Q2 [as a projected end-date for Pi’s supply crunch] so the challenge for us now is how do we bring that into Q1 — how do we eke a couple of months out… how do we just squeeze it a little, what levers can we pull to get that sort of ‘return to growth’?

“Because this isn’t about contraction — it’s about a lack of growth. It’s how do we get to a return to growth a couple of months earlier than we get it naturally from the system.”

Asked what’s been the biggest supply chain problem affecting Pi production to-date — or whether there have been a number of different issues since the pandemic disruption kicked off — Upton said it’s really been a shifting patchwork of supply constraints that they’re having to manage and respond to as each one occurs.

“It’s pretty broad-based, actually. On any given day there’s certain components that’s challenging but it’s been pretty broad-based. It’s one of those things where you can kind of feel there’s a natural production rate that’s hard to push beyond because you have some constraint on, you know, core logic and then you get through that and wireless is a problem or some power component is a problem,” he explained.

“We had a problem that we were recovering from a silicon front-end issue with a supplier — a wafer supplier — but then their packaging and test and ship-out was in Shanghai and no one could go to work in Shanghai,” he said, adding that these sorts of “geographical” issues are certainly an ongoing headache. “Probably rolling lockdowns in China are — I wouldn’t say the biggest source of strategic shortage — but they’re the biggest source of day-to-day [supply issues].”

Unlike governments in the West, the Chinese state has continued to pursue a ‘zero COVID-19’ policy — which has meant large scale lockdowns are still occurring there from time to time (when COVID-19 case clusters are identified), such as a Shanghai city-wide lockdown in March.

Such events have the potential to set off localized labor constraints which can throttle international hardware production if companies are relying on China-based sourcing (which is of course hard to avoid if, like Pi, your business is building electronics).

Though, in Pi’s case, Upton told us it has generally been able to rely on sourcing components elsewhere to get around localized disruptions. “Fortunately most of those components are multi-source components — and you tend to be able to work around those sorts of things,” he said in relation to the Shanghai incident.

He added that the Pi maker has done a lot more multi-sourcing since the global supply chain disruption kicked off. “We were pretty robust already — because I mean you just have to be, even in normal times — you can’t put all of your eggs in one basket. But we’ve done a lot more.”

Of course workarounds, by their nature, are unlikely to be entirely impact free when it comes to maintaining ‘normal’ production rates — especially in the middle of a global supply crisis. There’s always going to be some delay/contingency switching cost vswhen your primary suppliers are all running smoothly. So it’s about patching the supply chain to sustain production as best you can, rather than being in a position to ramp rates up.

Plus there’s another, harder to quantify impact attached to the global semiconductor shortage, per Upton: A cost to engineering time.And therefore — to some degree — to product innovation.Simply put, supply chain disruption doesn’t just slow down production; it applies the brakes to your ability to develop the next big thing. Which means there could be a longer wait for the next Pi too.

“We’re probably spending 40% of our engineering capacity on things which I would not traditionally consider to be desirable — in that they don’t move the ball. They keep the ball where it is; they don’t move the ball forward… I think that that is a challenge.”

The global semiconductor shortage lies at the root of the Pi supply problem since it’s prevented the company from scaling manufacturing to meet rising demand, as would normally be the case when a business finds itself in the (otherwise) happy situation of increased appetite for its products — exactly because electronics supply issues are so pervasive.

The company assembles almost all its products in U.K.-based factories in South Wales but, per Upton, it also relies on a surge facility for times of peak demand, such as around product launches — using a Sony a ‘pick and place’ facility in Japan to take care of a portion of the front-end assembly work before returning the panels to Wales where Pi’s own factories take care of the rest (also doing the testing, packing and shipping). Pico products are also made in Japan. And those boards are in less of a supply-constrained position than most other kit.

But, for now, inventory disruption remains the rule as demand for Pi’s products continues to outstrip the production rate it can deliver. (In its April update, Upton wrote that it had “consistently” been able to build “around half a million” boards and modules each month for the past six, despite its various supply challenges — so at a reported 100k+ units per week now Pi’s production rates appear to be roughly around, or maybe slightly below, that level.)

As we’ve reported before, demand for Pi products accelerated during the pandemic when lots of people were stuck indoors twiddling their thumbs for things to do — some with extra disposable income burning a hole in their pockets. So lockdown boredom seems to have encouraged a bunch of people to take the plunge and give hardware hacking a whirl.

Upton also points to the concern over kids’ education at a time when schools were shut being another big demand driver since Pi microprocessors can be turned into highly affordable computers for home study — just salvage a few old monitors and keyboards, say by tapping up a local businesses for donations, and off you go with cheap computers for kids. (Pro tip: He recommends asking law firms to chip in unused peripherals as he suggests they tend to hang onto their old IT kit.)

Interestingly, though, he said the rise in demand for Pi has been sustained even as most pandemic lockdowns have eased. So it has not experienced the sort of spike-to-crash that hit pandemic-accelerated videoconferencing platforms when in-person meetings started back up again.

“Demand is just wild at the moment,” he told us. “Everything is [up]. Demand in the industry is very, very strong. Ok, maybe there’ll be a downturn… but the shoe is taking a lot longer to drop than we might have expected.”

It’s not entirely clear what all the growth drivers are exactly but one element stoking demand for Pi’s products is the industrial side of its business — as Upton said the most recent refresh to its embedded computing line (aka Compute Module) has been in especially high demand ever since it launched (just prior to the pandemic).

“Probably the biggest single thing was we launched Compute Module 4 — at the tail end of 2019. And it had a really hard take-off. It’s still inexplicable to me really… It just took off like a rocket. And to this day I don’t really know why.

“It might be the reduced availability of other stuff. If you think about what competes with Compute Module — [it’s] doing a forecast and design yourself. So putting a chip down, going and buying chips, going and buying memory, designing a board, and putting it yourself down on the board. And what it could be with Compute Module is the unavailability of older silicon — so sort of the global shock — has coupled through into us because people have gone well I can’t go and buy an NXP chip… so I’ll use that Compute Module; I know those guys, we trust them.”

“It was just this very strange curve where Compute Module 4’s been blowing the roof off,” he added. “The business for us blew through to over 1M units a year, very, very quickly.”

High demand for the Compute Module has a direct knock-on impact on Pi’s ability to supply SBC inventory since he said both lines use the same components — describing the issue as “kind of a finite [resource]”. “The sum of Modules plus single-board computers is kind of the thing that is constrained, to a certain extent,” he added. “When modules go up single-board computers come down.”

The supply squeeze has meant a big change to how Pi interacts with its industrial and OEM customers — requiring it to establish a much closer working relationship than it had pre-pandemic when it was able to pump out ample extra stock.

“We do think we’re doing a great job with the OEMs,” he told us. “The value proposition for Raspberry Pi has always been that you can buy 100,000 of them tomorrow — and that’s incredible in our industry, right. Nobody does that… And so when you have that kind of world you don’t really need to relate to your OEMs very much; you know, the product’s available — you just go and buy it when you need it. [But] in this [supply] constrained environment what that’s caused us to do is have much closer relationships with our OEMs.”

Upton urged any OEMs that are still struggling to get the products they need to get in touch via a dedicated business@raspberrypi.com email — in order that it can try to support them.

“If people are having trouble they can mail business@raspberrypi.comand we’ll find out who they are,” he said. “We’ll do our very best to find out they’re not scalpers — that they’re real OEMs with real demand. We don’t want people who are going to resell them. We don’t want people who are building inventory, you know, building kind of a buffer so that they feel comfortable. We want to know what people’s exact requirements are — how many do you need on every given day to keep the line running so that we are not the one problem for your production.

“We find out what those are and then we do our best to fulfil them. And we’re making hundreds and hundreds of Raspberry Pis a month — and I think that’s enough to feed, if well managed, and if you get rid of the panic buying [tendency] that’s enough; that will feed the OEM customers. So we think we’re doing a good job keeping our OEMs up but the heartbreaking thing for us of course is we’re an enthusiast business — we’re equal parts an industrial business and an enthusiast’s, hobbyist’s business.”

“Those are both really important to us,” he added. “So when we talk about ‘getting back to growth’ that’s what we’re talking about — getting back to that kind of ‘stocked’, ‘100,000-200,000 inventory sloshing around in the channel’ kind of place where we were for a decade, for the eight or nine years before this kicked off.”

Upton reiterates the aforementioned advice for Pi hungry individuals, too — pointing makers back to products that are less supply constrained, such as the Pico.

“In January last year we rocked up with our own first party silicon. We control all the main silicon in the Pico products — because the RP2040 microcontroller we made ourselves. And, you know, what a time for that to appear! So Pico is one [product that’s less supply constrained]. And we’ve got some budget — we can built 10M-20M Picos if we need to. There’s no problem with that,” he said, adding the Pico line is selling “a few million” units a year currently.

“Obviously it’s not the Raspberry Pi platform — when people think Raspberry Pi they tend to mean the big model, what we call ‘big Raspberry Pi’ — the Linux Raspberry Pi. But actually what you can do with the new wireless one, the Pico W, there’s quite an overlap.”

He also observed that some hobbyists have been able to switch to alternative kit than they had planned on using — pointing out that the Pico can work as a stand-in for the Zero.

“It’s interesting how many people’s applications for Raspberry Pi actually consist of running a Python script and reporting the results and communicating the data over wi-fi and that’s it. So it’s interesting to watch people find ways to do what would have been Raspberry Pi Zero projects — or Raspberry Pi Zero W projects — and find ways to do those projects using the Pico and Pico W platforms because they’re in better supply… Because of course the Pico W has got wireless capability, it runs Python.”

“The number of high level programming languages on microcontrollers changes the game,” he added, giving a nod to Arduino for its work in making the space more accessible. “Microcontrollers always had… a bit of a sort of hairy-scary reputation. But you can just write a Python script — it’s just like a regular piece of coding.”

Also on the sunnier side, Upton brushes off any concerns linked to the U.K.’s current economic turmoils — where interests rates and inflation are soaring and the British pound is, er, not — saying he’s confident economic issues on home soil won’t cause Pi fresh supply (and/or cost) headaches in the near term.

“In the medium term, of course, our manufacturing salary expense is in sterling and therefore you would expect — it’s a slow effect — the change in the manufacturing price quotes based on salary costs but over time you would expect dollar denominated manufacturing costs to change… But, by and large, and certainly the direction in which exchange rates are moving at the moment isn’t a problem for us in that it’s making… sterling fixed costs cheaper at the moment.”

“But it’s not a big effect — at all — on us. And to the extent it is an effect it’s on the ‘positive’ [side],” he added. “I mean, you can’t devalue the oasis of debt and no one’s advocating for sterling’s devaluation to make British manufacturing look better but to the extent there is an effect it’s impossible to denominate.”