Hartford Colour Display Board – Raspberry Pi Display 1.14inch LCD Module for Raspberry Pi Pico, 65K Colors, 240 x 135, SPI
This colour display is available from Pbtech.
Microtron has a PCB that takes this display and an RPi Pico MCU. The board also allows PiicoDev devices to plug in and there are two I2C buses provided. The board is also designed to support an SD reader. This board is new and untested as there is a wait for the colour display to arrive. A key point to confirm would be to show that the handling of two SPI devices works correctly: the display and the SD reader. Serial Tx/Rx connectivity is also provided.
The display has a joystick and 2 buttons. An example project might be to capture barometric pressure, temperature and humidity every 20 minutes and to graph these in different colours in real time. The joystick might be used to view and alter the graphical representation of data stored on the SD card. There could even be a menu provided with this user interface.
This would tend to be an advanced project for perhaps second year University, however the basic process of drawing a graph in real time, could be achieved at a lower level of educational development, especially if similar code and guidance are provided.
- MCU units with sensors and datalogging.
- Break out boards with user interface. Suitable for datalogging and interactive function including stepper motors.
- Break out board customizations. Sensors, stepper motors, WiFi, SD cards and Fram.
- Design of circuit boards, including design of circuit boards that are a customization of a break out board pilot project.
- WiFi and server collection of data.




Display and control testing
The display and controls function correctly when running the test program; see video. The display image is not well rendered by the phone camera, that recorded this video. Pin 21 is the reset pin, which has been moved. Pin 12 is needed to be MISO for the SD reader. Waveshare webpage, download of test program. RST = 12 can be changed to RST = 21 in the display driver. The name of the display driver file can be changed to the name of the class: LCD_1inch14, for convenience.
The SPI SD reader operates on the same bus as the display and they do not interfere with each other. The display renders correctly. A student project for multiple levels of education could be to draw a graph on the screen of the three outputs in different colours.
from machine import Pin, I2C, SPI, PWM
import LCD_1inch14
import time
from micropython import const
from PiicoDev_RV3028 import PiicoDev_RV3028
from PiicoDev_BME280 import PiicoDev_BME280
import sdcard
import uos
BL = const(13)
LCD = LCD_1inch14.LCD_1inch14()
p0 = Pin(0)
p1 = Pin(1)
rtc = PiicoDev_RV3028(0, None, p0, p1)
sensor = PiicoDev_BME280(0, None, p0, p1)
#DC = 8
MISO = 12
MOSI = 11
SCK = 10
CS = const(19)
# Intialize SPI peripheral (start with 1 MHz)
spi = machine.SPI(1,
baudrate=1000000,
polarity=0,
phase=0,
bits=8,
firstbit=machine.SPI.MSB,
sck=machine.Pin(SCK),
mosi=machine.Pin(MOSI),
miso=machine.Pin(MISO))
# Initialize SD card
sd = sdcard.SDCard(spi, Pin(CS))
# Mount filesystem
vfs = uos.VfsFat(sd)
uos.mount(vfs, "/sd")
settime = False
if settime:
rtc.day = 8
rtc.month = 1
rtc.year = 2025
rtc.hour = 2
rtc.minute = 45
rtc.second = 00
rtc.ampm = '24' # 'AM','PM' or '24'. Defaults to 24-hr time
rtc.weekday = 3 # Rolls over at midnight, works independently of the calendar date
rtc.setDateTime() # Sets the time with the above values
pwm = PWM(Pin(BL))
pwm.freq(1000)
pwm.duty_u16(32768)#max 65535
LCD.fill(LCD.white)
LCD.show()
LCD.text("Raspberry Pi Pico",90,40,LCD.red)
LCD.text("PicoGo",90,60,LCD.green)
LCD.text("Pico-LCD-1.14",90,80,LCD.blue)
LCD.hline(10,10,220,LCD.blue)
LCD.hline(10,125,220,LCD.blue)
LCD.vline(10,10,115,LCD.blue)
LCD.vline(230,10,115,LCD.blue)
LCD.show()
keyA = Pin(15,Pin.IN,Pin.PULL_UP)
keyB = Pin(17,Pin.IN,Pin.PULL_UP)
key2 = Pin(2 ,Pin.IN,Pin.PULL_UP)
key3 = Pin(3 ,Pin.IN,Pin.PULL_UP)
key4 = Pin(16 ,Pin.IN,Pin.PULL_UP)
key5 = Pin(18 ,Pin.IN,Pin.PULL_UP)
key6 = Pin(20 ,Pin.IN,Pin.PULL_UP)
utime = rtc.getUnixTime()
print(utime)
count = 0
seconds=utime
while(1):
# Get the current time
utime = rtc.getUnixTime()
if utime != seconds:
seconds = utime
print(count)
count += 1
tempC, pres_Pa, humRH = sensor.values() # read all data from the sensor
print("T:{0:.1f}C, P:{1:.1f}mbar, Hum: {2:.1f}%RH".format(tempC, pres_Pa/100, humRH))
LCD.fill(LCD.white)
LCD.text("T:{0:.1f}C".format(tempC),90,40,LCD.red)
LCD.text("P:{0:.1f}mbar".format(pres_Pa/100),90,60,LCD.green)
LCD.text("Hum: {0:.1f}%RH".format(humRH),90,80,LCD.blue)
LCD.show()
with open("/sd/test05.txt",'a') as f:
f.write(rtc.timestamp() + ", ")
f.write(str(tempC)+", °C, " + str(pres_Pa/100)+",
mbar, " + str(humRH)+", %RH \n")
time.sleep_ms(100)
===================================
Program output on SD card
===================================
2025-01-09 01:10:55, 24.41, °C, 1005.655, mbar, 50.73438, %RH
2025-01-09 01:10:56, 24.41, °C, 1005.676, mbar, 50.70117, %RH
2025-01-09 01:10:57, 24.41, °C, 1005.687, mbar, 50.72363, %RH
2025-01-09 01:10:58, 24.41, °C, 1005.678, mbar, 50.67969, %RH
2025-01-09 01:10:59, 24.41, °C, 1005.67, mbar, 50.69043, %RH
2025-01-09 01:11:23, 24.42, °C, 1005.679, mbar, 51.2666, %RH
2025-01-09 01:11:24, 24.42, °C, 1005.685, mbar, 51.24414, %RH
2025-01-09 01:11:25, 24.42, °C, 1005.68, mbar, 51.06738, %RH
2025-01-09 01:11:26, 24.42, °C, 1005.704, mbar, 50.92383, %RH
2025-01-09 01:11:27, 24.42, °C, 1005.716, mbar, 50.82422, %RH