{"id":23906,"date":"2026-05-08T13:35:49","date_gmt":"2026-05-08T17:35:49","guid":{"rendered":"https:\/\/www.mcgurrin.info\/robots\/?page_id=23906"},"modified":"2026-05-08T15:39:49","modified_gmt":"2026-05-08T19:39:49","slug":"pycon2026","status":"publish","type":"page","link":"https:\/\/www.mcgurrin.info\/robots\/pycon2026\/","title":{"rendered":"Hauntomation: Automating Halloween with Python"},"content":{"rendered":"<p><em><a href=\"https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo.jpeg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignright wp-image-8198 size-thumbnail\" src=\"https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo-150x150.jpeg\" alt=\"An AI-generated image. bats fly overhead, with a full moon visible. On the left is a laptop showing some computer code. In the middle is a pumpkin with the Python logo carved in it. There is also a black cat with green glowing eyes.\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo-150x150.jpeg 150w, https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo-300x300.jpeg 300w, https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo-768x768.jpeg 768w, https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2025\/06\/A-spooky-Halloween-scene-featuring-a-glowing-jack-o-lantern-with-the-Python-programming-language-lo.jpeg 1024w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>PyCon US 2026 \u2014 Lightning Talk Companion Page<\/em><\/p>\n<p>If you scanned a QR code from a five-minute talk and ended up here: welcome. Everything I showed and links to additional information is here.<\/p>\n<p>If you didn\u2019t see the talk and just wandered in: I build automated Halloween props as a hobby, often using Python.<\/p>\n<h1>The talk<\/h1>\n<ul>\n<li><strong>Slides (PDF):<\/strong> <a href=\"https:\/\/www.mcgurrin.info\/robots\/wp-content\/uploads\/2026\/05\/Halloween-Lightning-Talk.pdf\">Halloween Lightning Talk<\/a><\/li>\n<li><strong>Recording:<\/strong> <em>[link to be added when PyCon publishes it]<\/em><\/li>\n<\/ul>\n<h1>My projects<\/h1>\n<h2>Pi-Based Multi-Prop Trigger \u2014 coordinated routines from one PIR<\/h2>\n<p>A small Pi-and-Darlington-array circuit that lets one motion sensor trigger and coordinate multiple props on a timed schedule. The version running this past Halloween had two skeletons holding a conversation. Just about two dozen lines of simple Python code.<\/p>\n<ul>\n<li>Write-up: <a href=\"https:\/\/www.mcgurrin.info\/robots\/8251\/\">https:\/\/www.mcgurrin.info\/robots\/8251\/<\/a><\/li>\n<\/ul>\n<h2>ChatterPi \u2014 talking skulls, in Python<\/h2>\n<p>A Raspberry Pi audio-servo controller for talking skulls and similar props. An audio servo controller takes audio input and outputs servo motion commands based on that input. ChatterPi does this with software on a Pi, even a Pi Zero 2, replacing the need for more expensive commercial electronics boards. PyAudio is used to stream either stored audio files or input from a live microphone. Scipy\u2019s bandpass filter is optionally used to apply a 500\u20132500 Hz bandpass filter while NumPy averages the volume per audio chunk to determine the servo motion for the jaw. GPIO Zero (with a PiGPIO backend for hardware PWM) drives the jaw servo.<\/p>\n<ul>\n<li>Writeup: <a href=\"https:\/\/www.mcgurrin.info\/robots\/tag\/chatterpi\/\">https:\/\/www.mcgurrin.info\/robots\/tag\/chatterpi\/<\/a><\/li>\n<li>Code: <a href=\"https:\/\/github.com\/ViennaMike\/ChatterPi\">https:\/\/github.com\/ViennaMike\/ChatterPi<\/a><\/li>\n<li>Pi image file with ChatterPi installed: <a href=\"https:\/\/drive.google.com\/drive\/folders\/1njfqegJImeXq-ZoW_yuY0TCJ0bTiwWCA\">https:\/\/drive.google.com\/drive\/folders\/1njfqegJImeXq-ZoW_yuY0TCJ0bTiwWCA<\/a><\/li>\n<\/ul>\n<h2>Yorick the Mimic \u2014 wireless 3-axis skull control via motion capture<\/h2>\n<p>This project captures head motion (nod, tilt, and turn) of a person and wirelessly transmits the position to control the movement of a 3-axis skull. The sensor unit is mounted on a ball cap and consists of a Raspberry Pi Zero W and an Adafruit BNO055 Inertial Measurement Unit (IMU) on the brim. The software used is written in CircuitPython. The controller takes the position data sent by the sensor unit and converts it into servo commands to position the skull. It consists of another Pi Zero W and a Pololu Maestro servo controller. The two Pis talk over WiFi via Python\u2019s standard-library xmlrpc.server \u2014 no framework, no broker. The IMU streams quaternions 50\u00d7 per second; the controller converts them to Euler angles and then to servo commands. Wear the cap, the skull mirrors your head.<\/p>\n<ul>\n<li>Writeup: <a href=\"https:\/\/www.mcgurrin.info\/robots\/736\/\">https:\/\/www.mcgurrin.info\/robots\/736\/<\/a><\/li>\n<li>Code: <a href=\"https:\/\/github.com\/ViennaMike\/mimic\">https:\/\/github.com\/ViennaMike\/mimic<\/a><\/li>\n<\/ul>\n<h1>Other Halloween-Python projects worth your time<\/h1>\n<p>The Halloween-Python ecosystem is bigger than my front yard. A few starting points:<\/p>\n<ul>\n<li><strong>Adafruit Prop-Maker family.<\/strong> Purpose-built CircuitPython hardware for animatronics and props. The <a href=\"https:\/\/learn.adafruit.com\/propmaker-jack-o-lantern\/circuitpython\">PropMaker Jack O\u2019Lantern<\/a> and <a href=\"https:\/\/learn.adafruit.com\/milk-jug-glow-skull\/code-with-circuitpython\">Milk Jug Glow Skull<\/a> tutorials are friendly entry points; the <a href=\"https:\/\/learn.adafruit.com\/hacking-holiday-animatronics\">Hacking Holiday Animatronics<\/a> guide goes deeper.<\/li>\n<li><strong>The \u201cfirst Halloween project\u201d tutorials.<\/strong> <a href=\"https:\/\/opensource.com\/article\/21\/10\/halloween-raspberry-pi\">com\u2019s PIR-triggered jack-o\u2019-lantern<\/a> and <a href=\"https:\/\/www.penguintutor.com\/electronics\/halloween\">PenguinTutor\u2019s Halloween pumpkin<\/a> are the easy builds to start with: a Raspberry Pi, a PIR, an LED, and twenty lines of Python.<\/li>\n<li><strong>Monster in a Box<\/strong> \u2014 <a href=\"https:\/\/github.com\/hevnsnt\/monster\">Hevnsnt\u2019s Monster<\/a>, a Pi-driven rattling crate, a variation of the classic \u201csomething is trying to get out\u201d prop.<\/li>\n<li><strong>Eye-following Halloween prop<\/strong> \u2014 a <a href=\"https:\/\/barenakedembedded.com\/eye-following-halloween-prop\/\">Bare Naked Embedded writeup<\/a> showing OpenCV face tracking on a servo-mounted Jack O\u2019Lantern.<\/li>\n<\/ul>\n<h1>The community resource list<\/h1>\n<p>I maintain a crowd-sourced Google Sheet of Python libraries, packages, and writeups related to Halloween. It\u2019s open for anyone to view, and there\u2019s a form for submissions of useful libraries, interesting projects, tutorials, and anything else that\u2019s at the intersection of Halloween and Python (lightly moderated, mostly to keep spam out).<\/p>\n<ul>\n<li><strong>View the list:<\/strong> <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/17wS0RSJGvh6HiEO_fPNP81Zgg-c8R-JK9iXHD4ZfSrs\/edit\">https:\/\/docs.google.com\/spreadsheets\/d\/17wS0RSJGvh6HiEO_fPNP81Zgg-c8R-JK9iXHD4ZfSrs\/<\/a><\/li>\n<li><strong>Submit a resource:<\/strong> <a href=\"https:\/\/docs.google.com\/forms\/d\/1ijGOla7xCNAEByTt_v9EQCJpDK7pSbiri1jD3ms9-vA\/\">https:\/\/docs.google.com\/forms\/d\/1ijGOla7xCNAEByTt_v9EQCJpDK7pSbiri1jD3ms9-vA\/<\/a><\/li>\n<\/ul>\n<p>If you build something with Python this October, please send it in. The more the list grows, the more useful it becomes for the next person who wants to bring Python to their porch.<\/p>\n<h1>About me<\/h1>\n<p>I\u2019m Mike McGurrin, aka ViennaMike, and among other things, I\u2019m a computer and electronics hobbyist. My blog is <a href=\"https:\/\/www.mcgurrin.info\/robots\/\">mcgurrin.info\/robots<\/a>. I\u2019m <a href=\"https:\/\/github.com\/ViennaMike\">ViennaMike on GitHub<\/a>. Comments and questions on any of the linked blog posts are welcome.<\/p>\n<p>Happy haunting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PyCon US 2026 \u2014 Lightning Talk Companion Page If you scanned a QR code from a five-minute talk and ended up here: welcome. Everything I showed and links to additional information is here. If you didn\u2019t see the talk and &hellip; <a href=\"https:\/\/www.mcgurrin.info\/robots\/pycon2026\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":26311,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/pages\/23906"}],"collection":[{"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/comments?post=23906"}],"version-history":[{"count":8,"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/pages\/23906\/revisions"}],"predecessor-version":[{"id":23914,"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/pages\/23906\/revisions\/23914"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/media\/26311"}],"wp:attachment":[{"href":"https:\/\/www.mcgurrin.info\/robots\/wp-json\/wp\/v2\/media?parent=23906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}