During the back-to-school season, we noticed that many children face challenges in preparing simple, nutritious meals on their own. To help address this need, we designed an interactive cereal donation box that combines technology and community support.
This “Fill the Bowl” Cereal donation drive celebrates giving back to the community and supports children in accessing simple, healthy meals. The project encourages participation, creates awareness, and brings technology and compassion together in a tangible way.
Fun Fact: PHYTEC has been doing food drive boxes since 2020!
The food drive box sits idle most of the time, waiting for its moment of kindness—when a supporter places a donation inside.
The project is built on the phyCORE-AM62x development kit paired with a Lincoln Technologies Solutions 10" capacitive touch display. Using the PHYTEC base BSP image and a simple overlay, we developed a custom LVGL GUI that tracks the quantity of cereal boxes donated.
The demo is mounted on a custom MDF backplate and decorated to resemble a large cereal bowl, complete with a spoon and falling cereal graphics, creating a visually engaging experience for donors. While we included a scanner in the setup, automatic logging of cereal types is a feature planned for future development.
The software portion was developed in just two days, even as our engineer was preparing for Open Source Summit 2025, demonstrating how quickly impactful community-focused projects can come together with the right hardware and design tools.
phyCORE-AM62x ResourcesThe phyCORE-AM62x is the embedded device controlling the program. For working with the phyCORE-AM62x here are some resources to get the board booted and how to work with various peripherals. Don't worry, this tutorial will walk through everything you need to know to get this system working.
- Quickstart - Do not use a cell phone USB-C cable, use the provided power supply.
- Meet the phyCORE-AM62x Video
- Hardware Manual (Optional)
- System-On-Module (SOM) Product Page
That last link has lots of resources available (guide links, component placements, pin muxing, ect).
Start by connecting the 10" Lincoln Technologies capacitive touch display to the X23 connector on the phyCORE-AM62x development kit using the included 40-pin ribbon cable (blue side up on both ends). Then, plug in the 5V USB-C power cable to power the display.
This screen is the interaction point for donors. Using the touchscreen and the custom LVGL GUI, users can press “+” to add to the donation count or “-” to correct accidental entries. The display visually tracks contributions, bringing the “Fill the Bowl” donation box to life in real time.
Software SetupThere are two options for setting up the software on the phyCORE-AM62x development kit.
- Method #1: Custom BSP Build requires more setup but gives you the ability to customize nearly every part of the system, making it ideal if you want to adapt the demo for your own application.
- Method #2: Pre-Built SD Image is the quickest way to get started—simply download, flash, and run the demo—but it is less flexible. This method is best suited for those using the phyBOARD-AM62x who want to get the project running right away.
Tip: Watch the Cafe Yocto Video on "Build the BSP" to see how to run through this section of the guide.
This method is for users who want to adapt or extend the “Fill the Bowl” demo for their own donation drives. It requires a bit more setup, but it gives you full control over the software and GUI.
You’ll use a Linux VM or machine to set up a BSP build environment, grab the meta-layer, and build a custom image that can be flashed to an SD card to run on the phyCORE-AM62x development kit. PHYTEC’s Linux BSPs are built using The Yocto Project, which allows developers to create production-ready software images tailored to custom hardware.
Depending on your project needs, you may want to modify the Linux kernel, drivers, or root filesystem packages. This section guides you through setting up the Yocto BSP and building the default software image. Once complete, this image can serve as a starting point for customization, letting you fully control the LVGL GUI, donation tracking logic, and overall user experience.
Requirements
The following system requirements are necessary to successfully follow this BSP Development Guide. Deviations from these requirements may or may not have other workarounds:
- Ubuntu 22.04 LTS, 64-bit Host Machine with root permission.If using a virtual machine, VMWare Workstation, VMWare Player, and VirtualBox are all viable solutions.
- At least 100GB disk space free
- At least 8GB of RAM
- At least 4x processing cores available to the Host Machine
- Active Internet connection
The above minimum build resources (RAM/CPUs) should result in a build time of ~3.5 hours.
Host Setup
Yocto development requires certain packages to be installed on the host machine to satisfy various dependencies. Run the following commands to ensure these are installed:
Host (Ubuntu)
sudo apt-get update
sudo apt-get install build-essential autoconf automake bison flex libssl-dev bc u-boot-tools python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386 g++-multilib git python3-distutils
Git Setup
If you have not yet configured your git environment on the Host Machine, please execute the following commands to set your user name and email address:
Host (Ubuntu)
git config --global user.email "your@email.com"
git config --global user.name "Your Name"
git config --global http.sslcainfo /etc/ssl/certs/ca-certificates.crt
Yocto Build Steps
Firstly, dedicate a directory on your Host Machine for housing the BSP and navigate there:
Host (Ubuntu)
mkdir ~/BSP-Yocto-Ampliphy-AM62x-PD24.1.2
cd ~/BSP-Yocto-Ampliphy-AM62x-PD24.1.2
Yocto based Linux BSPs are comprised of many meta-layers, each containing recipes for fetching, building and packaging various components destined for the bootable software image you intend to build. Some meta-layers are provided by the Linux community, such as meta-python for example. Other meta-layers are more platform specific and are made available by PHYTEC or the silicon vendor (in the case of the phyCORE-AM62x, the silicon vendor is Texas Instruments). All the meta-layers required for this PHYTEC Linux BSP can be setup using the phyLinux tool:
Host (Ubuntu)
wget https://download.phytec.de/Software/Linux/Yocto/Tools/phyLinux
chmod +x phyLinux
./phyLinux init
The above will launch an interactive session that walks you through the BSP setup. Use the following guide to help you navigate through the interactive prompts:
phyLinux Interactive session:
# SoC Platform : am62x
# Release : BSP-Yocto-Ampliphy-AM64x-PD24.1.2
# MACHINE : phyboard-electra-am62xx-3
Initialize the BSP Environment
Source the build environment (a build directory and the $BUILDDIR environment variable will be automatically setup):
Host (Ubuntu)
source sources/poky/oe-init-build-env
Download the BSP Meta Layers
Navigate to your BSP's sources directory:
Host (Ubuntu)
cd $BUILDDIR/../sources
Clone this repo and branch:
Host (Ubuntu)
git clone https://github.com/tloanPhytec/meta-cereal.git -b BSP-Yocto-Ampliphy-AM62x-PD24.1.2
Enable the layer in your build:
Host (Ubuntu)
cd $BUILDDIR
bitbake-layers add-layer ../sources/meta-example
Tip: You'll want to edit the date set in the meta-cereal so that the "days lefts" reads something other than "0". Edit the patch recipes-graphics/lvgl/files/0001-Modify-default-example-for-PHYTEC-Food-Drive.patch
E
dit the date on the Countdown Timer
variable:
// Countdown Timer
+ add_day_countdown(scr, 2025, 8, 29, LV_ALIGN_TOP_MID, -450, 1000, true);
Build the image:
Host (Ubuntu)
bitbake phytec-lvgl-fooddrive-image
This command instructs bitbake to run all the tasks associated with the phytec-headless-image build target, which is an image used by PHYTEC to validate the BSP-Yocto-Ampliphy-AM62x-PD24.1.2 release.
See the section “Flashing SD Card” for more information.
Method #2 Pre-Built SD ImageWIP
This method is for users who want to quickly get the “Fill the Bowl” demo running on the phyCORE-AM62x. Simply download the pre-built SD card image, flash it to an SD card, and boot the kit. This is the fastest way to see the demo in action, but it is less customizable than building the software from source.
Download the SD card flasher app USBImager
- Extract it to
C:\Program Files
. - Download the prebuilt SD card image from attachments
- Once your system is set up, use USBImager to create a bootable SD card.
- Open USBImager.
- Click
...
at the top right and select thephytec-xxx.wic.xz
SD card image file from your Downloads folder. - Insert the microSD card into the SD card reader.
- Select the SD card.
- Click
Write
to begin flashing the SD card. - Once USBImager has finished flashing, eject the SD card from the host PC and insert into the development kit.
See the section “Booting from SD Card” for more information.
Flashing SD Card1. On your VM, run the following command without the SD card connected to the host machine.
Host (Ubuntu)
ls /dev/sd*
2. Connect the SD card to the Ubuntu host machine.
3. Run the following command again with the SD card connected to the host machine.
Host (Ubuntu)
ls /dev/sd*
4. Unmount the SD card from the host machine. Do not remove the card from the machine.
Host (Ubuntu)
umount /dev/sdX*
5. Navigate to the directory containing the SD card image we want to flash. This will be in the deployment directory of your local BSP build at $BUILDDIR/deploy/images/phyboard-lyra-am62xx-3/
Host (Ubuntu)
cd $BUILDDIR/deploy/images/phyboard-lyra-am62xx-3/
6. Flash the.wic.xz image to the SD card:
Host (Ubuntu)
sudo xz -dc phytec-headless-image-phyboard-lyra-am62xx-3.rootfs.wic.xz | sudo dd of=/dev/sdX bs=8192 conv=fsync
Note: Note that you have to flash the SD Card image to the entirety of the SD Card. This is done by specify the output location of the flashing command without a numbered partition specified. For example, if you try to flash the SD Card image to /dev/sda1 this will result in a improperly formatted SD Card.
7. Unmount the SD card from your Linux machine.
Host (Ubuntu)
umount /media/<user>/boot /media/<user>/root
Booting from SD Card1. Insert the micro-SD card into the powered off development kit.
2. The phyCORE-AM62x development kit is configured to boot from an SD card slot by default. But it doesn't hurt to verify this!
- S7 should be ON to override default boot settings.
- See the images below for boot switch placement and settings
The donation box is built around a custom CNC-cut MDF backplate that holds the display, development kit, and decorative elements. The backplate attaches to the shipping box with two 90° angle brackets that secure it to both the back and side panels, allowing the plate to slide into position. A large Cheerio-shaped frame is used to inset and secure the 10" capacitive touch display, while both the frame and the phyCORE-AM62x development kit are fastened with M3 x 6 mm screws. The development kit is further supported with M3 male/female standoffs for added stability.
The build also includes an adjustable scanner holder that can accommodate either a mounted or handheld scanner. While the scanning feature was not implemented in this version of the demo, the holder will be useful in future iterations, and design files are provided for anyone who wants to adapt or expand on the concept. The overall layout was also left open to support larger development kits in later projects.
For decoration, the spoon and smaller Cheerios were CNC-cut from thick cardboard rather than MDF, keeping them lightweight while maintaining a polished look. Finally, all holes in the MDF backplate require tapping after CNC machining to ensure proper mounting of components.
Fill the Box!Once your software image is prepared, the display is connected, and the housing is assembled, it’s time to power everything up. Connect the 5V USB-C wall adapter that came with the phyBOARD-AM62x to the development kit, and use a separate 5V USB-C power supply for the display. When powered on, the demo will automatically start and bring the donation box to life, showing your custom LVGL GUI ready to track contributions in real time.
If you try this demo out or have any suggestions please share in the comments!
Future Improvements1. Provide a prebuilt SD card image for true plug-and-play setup.
2. Implement scanner integration so cereal boxes can be scanned to track both quantity and type (great for generating stats and us engineers love our stats).
3. Add confetti animations to the LVGL GUI to celebrate when the box is full or a donation goal is reached.
Comments