Google is discontinuing support for Google Cloud IoT Core on August 16, 2023. On this date, existing PyPortal IoT Planters will not work. If you are attempting this project for the first time or need to migrate your project to another IoT Platform, we suggest following a guide for the AWS IoT Planter (, Azure IoT Planter (, or the Adafruit IO IoT Planter (

Turn your black thumb into a green thumb by building an internet-enabled plant monitoring system by combining Google Cloud IoT Core with CircuitPython.

This smart-planter monitors your plant's vitals on the PyPortal's screen, logs this data to a Google Cloud registry for long-term storage and even correctly waters your plants remotely by controlling a peristaltic water pump.

Using Google Cloud IoT with your CircuitPython IoT projects allows you to quickly prototype (and even mass-prototype) advanced internet-of-things devices and connect them to the Google Cloud Platform. 

Google Cloud IoT

Google Cloud IoT provides a complete solution for collecting, processing, analyzing, and visualizing data from IoT devices in real time:

  • Device management, with per-device authentication and management.
  • Data aggregation with Cloud IoT Pub/Sub 
  • Scalable - Google Cloud IoT is serverless and scales instantly.

Connecting CircuitPython to Google Cloud IoT unlocks over 100 products and services available from Google Cloud Services. Some of these services are especially useful with IoT projects, such as:


CircuitPython is perfect for building Internet-of-Things projects. This project uses the ESP32SPI CircuitPython library, which can use the ESP32 as a WiFi-coprocessor.

We've built a CircuitPython Google Cloud IoT Core helper module to make interacting with Google's Cloud IoT MQTT Broker incredibly simple. Provisioning CircuitPython for Google Cloud IoT Core is as simple as adding your device's settings to a file. Our library even handles JSON Web Token (JWT) generation.

You can rapidly update your code without having to compile and store WiFi, device configuration, and secret keys on the device. This means that there's no editing code and re-uploading whenever you move the PyPortal to another network - just update a file and you're set. 

Prerequisite Guides

If you're new to CircuitPython, take a moment to walk through the following guides to get you started and up-to-speed:


Front view of a Adafruit PyPortal - CircuitPython Powered Internet Display with a pyportal logo image on the display.
PyPortal, our easy-to-use IoT device that allows you to create all the things for the “Internet of Things” in minutes. Make custom touch screen interface...
In Stock
Soil sensor in small potted plant, with wires connected to Adafruit Metro
Most low cost soil sensors are resistive style, where there's two prongs and the sensor measures the conductivity between the two. These work OK at first, but eventually...
In Stock
Peristaltic Liquid Pump with Silicone Tubing
Move fluid safely from here to there with this very nice little pump. Unlike most liquid pumps, this is a peristaltic type - the...
In Stock


You'll need some extra parts and supplies to finish this project. If you do not have them already, pick some up from Adafruit.

1 x PN2222 Transistor
NPN Bipolar Transistors (PN2222) - 10 pack
1 x 1N4148 Diode
1N4148 Signal Diode - 10 pack
1 x 220 ohm resistor
Through-Hole Resistors - 220 ohm 5% 1/4W - Pack of 25
1 x Breadboard
Half-size breadboard
1 x Breadboarding Wire
Breadboarding wire bundle
1 x Female DC Power adapter
Female DC Power adapter - 2.1mm jack to screw terminal block
1 x 12VDC 1000mA Switching Power Adapter
12V DC 1000mA (1A) regulated switching power adapter
1 x PyPortal Stand
Adafruit PyPortal Desktop Stand Enclosure Kit
1 x USB Cable
Pink and Purple Braided USB A to Micro B Cable - 2 meter long

This guide was first published on Aug 28, 2019. It was last updated on Jul 23, 2024.

This page (Overview) was last updated on Mar 08, 2024.

Text editor powered by tinymce.