The Ultimate Birdfeeder

There are now 4 devices involved with the birdfeeder.
Latest is a temperature controlled Frisbee/birdbath.

Similar projects worth following
The other three devices are an ESP32 Cam to watch the birds from anywhere, a second ESP32 Cam to email photos every 1/2 if bright enough when we are away and a 5,000 Volt anti-squirrel system. System is controlled and monitored from a web page hosted on the device.A NodeMCU controller with digital temp sensors monitors outside temp and controls Frisbee temperature. Both sensors are on the same input. Water attracts birds almost as much as food. Especially when it's below freezing. Watch the birds on your laptop from the couch. Close up views when they hop over for a drink. See video from the WiFi cam here:

Added another ESP32 Cam to remote monitor the birdfeeder when we are away. It sends an email with a 1600X1200 picture of the birdfeeder attached every 1/2 hr when it's bright enough to a dedicated email. A light sensor is used to stop sending pics when it's dark. Will add a temporary high capacity bin of seeds mounted to the wooden columns and a high capacity water bottle to the Frisbee that should last the few weeks we are away.

Code is based on

Program it using an Arduino Uno instead of a FTDI board. Correct wiring is at 1:00.

If outside temp < 0.5C Frisbee heater system turns ON. OFF if outside temp > 1.0C.

When system is ON the bottom of the Frisbee is maintained above freezing by turning on and off a short length of deicing cable under the Frisbee inside a plastic bowl with some insulation.

When ON it's 60 watts but at -5C outside temp it only needs to be ON 10% of the time or 6 watts continuous so very little power if controlled this way. Only 0.24 kWh per day at -11C.

Update Mar 4, 2023

Deicing cable shorted out so replaced with a 18 Watt 120V mug warmer. Covered with aluminum plate to spread the heat out more. We will see if this is enough power for most of the winter. Should be close.

Assuming significant thermal gradient required from the bottom of the Frisbee to the top of the water surface the setpoint is dependent on the outside temp, temp2. Code for this:

absoutside = fabs(temp2); //absolute value of outside temp. fabs is for floating point
if (enable == 1) setpoint = 20.0 + (absoutside/1.5);

We will see if this change keeps it ice free when it's really cold for minimal power. So far it stays liquid in the center at -34C uncovered.

Temperatures are compared to the average of 10 values every 6 seconds from the previous 60 secs. New values are only accepted if within 2 degrees of the average to eliminate the odd bad value.

I could let it freeze overnight when the birds don't use it as the controller has a clock but it I'm not sure that's a good idea. I may cover it overnight with a piece of foam if it's really cold. 

We sometimes see -35C so the NodeMCU controller also has a temperature controlled heater. The controller and components are inside a small plastic box with a 5 Watt Christmas light as a heater and another temperature sensor. All of this is wrapped in house insulation inside a big plastic box. It hardly needs any power to maintain between 5 and 7C. About 20% or 1 Watt at -7C outside. Warmer than ambient also stops condensation in the box.

The ESP32 Cam board runs warm so I only put some insulation behind it. You can read the temp with a handheld infrared temp sensor from the front. It's around 15C above ambient. A little warmth also keeps condensation off the front of the fake security cam.

NodeMCU components and program is based on this project:

$10 ESP32 Cam mounted inside a dollar store fake security cam:

5,000 Volt Birdfeeder:

See new and improved metal version with easily removable lexan roof to keep the snow and rain off of it. Bonus feature: When the squirrels get zapped they also get hit in the head when they leap up. Now they mostly avoid it.

All my control devices are monitored and controlled from web page HMIs hosted on the devices. HTML web page code is part of the control code in Arduino IDE.

Update: Added small quick-release toggle clamps to hold the roof posts instead of the large spring clamps. 

See pics in Files.

To see many NodeMCU projects go to:

JPEG Image - 1.15 MB - 10/06/2021 at 18:57


JPEG Image - 936.00 kB - 10/06/2021 at 18:57


nodemcu components.jpeg

NodeMCU components

JPEG Image - 1.93 MB - 11/21/2020 at 19:54


  • 1 × Same as this project.

  • Email ESP32 Cam code changes

    nodemcu12ecanada01/01/2022 at 16:12 0 comments

    The email ESP32 Cam was sending only a partial or no pic so also added a SPIFFS format statement in the setup to correct this. Sends photo every 1/2 hr if bright enough. Removes photo from SPIFFS after email sent.

    Code added to example from :

    bool formatted = SPIFFS.format(); //formats SPIFFS if corrupt and only partial picture

    void loop() {

        if (digitalRead(2) == LOW) digitalWrite(33, LOW); // TURN on LED if dark
       if (digitalRead(2) == HIGH) {
         digitalWrite(33, HIGH);
         SPIFFS.remove("FILE_PHOTO"); // remove photo after email sent
        delay (1800000);

  • Added Email ESP32 Cam

    nodemcu12ecanada12/30/2021 at 16:33 0 comments

    Added Email ESP32 Cam to send email with pic attached when we are away. Mounted to tripod with a coat hangar and hose clamp.

    Includes a photoresistor in a voltage divider circuit so it only sends pics when it's bright enough.

    I was thinking of sticking it on top of a servo to get various angles every few minutes for a security system.

    I could also send the exact time to it from another controller that has a RTC connected using ESP-NOW so the emails are sent on the hour and half hour if bright enough.

  • Added Toggle Clamps

    nodemcu12ecanada10/06/2021 at 19:09 0 comments

    Updated to include quick release toggle clamps to hold roof posts instead of large spring clamps. 

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates