Night Before Going to Maker Faire

Annnnnnnnnnnd…  my robot which has been working for a solid year is now completely unresponsive.

My wife’s robot is working, Dexter Starfighter’s robot is working, Kim’Dael LightingSlayer’s pendant is working.

And my robot not only doesn’t work, I have spent so much time trying to get it functional that I still don’t have a good way to mount it on my shoulder.

I could cry.

Prepping for Maker Faire Bay Area 2024

It’s always a whirlwind heading into Maker Faire.  This year is no exception.  This past weekend we got things mostly ready for the Rocklin Maker Faire.  All of our robots were functional, which was really great.  A quick update to document progress and also act like a to-do list of sorts:

  • MakerKnit’s companion robot
    • My wife has knit her octopus
    • I’ve installed the Adafruit QtPy, NeoPixels, and touch sensors connected via BrownDogGadgets conductive thread through the legs
    • It’s been programmed to “blink” the two LED eyes randomly plus a small number of light shows for the body
    • Designed/3D printed several eyes, settling on a nice design that should make the eye animations look good
  • Kim’dael LightningSlayer’s Pendant
    • The youngest’s project has morphed from an LED arm to a CircuitPlayground in a pendant that just plays some notes when she presses buttons.
    • A long extension for the battery pack, using thicker gauge wire wound through the back of stock CircuitPlayground enclosure, is now the “necklace” portion for this project.
  • Dexter Starfighter’s ED-E
  • MakerBlock
    • My robot wasn’t quite ready for Maker Faire last year, but “ready enough” to share.  Last year the little bot was just sitting in a jar I carried around and not really visible to anyone.
    • This year I’ve added feet (entirely cosmetic), changed the battery pack around so it is removeable, swapped out dome diffusers, and am working on new animations/behaviors.
    • I realized that my old LED goggles were… janky.  This was because I had soldered some buttons to one side and then wired them into the Trinket directly, without any resistors.  While it /worked/, it caused some problems whenever I pressed a button.  I pulled the Trinket out and swapped in my new favorite board, the QtPy.
      • I really prefer programming / updating via CircuitPython over Arduino since there’s no pre-compile time and fussy Arduino connections.
      • Besides the programming/uploading, I love the built in RGB, up to 6 capacitive touch sensor, and easy serial communication
      • As an added plus, I soldered on the 2MB flash chip so the project as a ton of space. 1
      • And at almost the same price as a Triket ($0.50 more than the original, $0.50 less than the M0 Trinkets), it’s just easier to swap them into any project I would have previously put a Trinket into
  •  Soldering
    • I’ve really upgraded my soldering experience and it’s made a world of difference.  We moved about a year ago and there’s a space in the house where I can keep a soldering station out and ready to use.  Just having it available is such an upgrade.  I’ve had several handheld / pen style soldering irons over the years and they’re usually pretty terrible.  In fairness, this is also because I’m kinda terrible at soldering.  I had a basic garbage soldering iron from the local hardware store, upgrade one that had a little temperature control from Adafruit, and then upon the recommendation of a friend upgraded a few weeks ago to an X-TRONIC soldering station.
    • I gave my old soldering iron to my neighbor so he could work on a project for his wife.  As I got to finishing up work on the above projects I realized I couldn’t find my pen soldering iron from Adafruit – and that I didn’t want to find it anyhow.  It was fine.  It worked.  But, my soldering iron holder was cheap and flimsy and easy to tip over and the helping hands I had from Adafruit were “okay” for very small projects, but the joints came loose easily and the helping hands kept falling off.  Rather than spend $20 on another soldering iron I would hate, I dropped $70 on the X-TRONIC station which has built in helping hands and soldering iron holder.  Setting aside that it heats up very quickly, has good temperature control, melts solder quickly, and has great helping hands… it has a way to hold the soldering iron in a way that isn’t constantly anxiety inducing. 2
    • Having the soldering station handy has meant I don’t really mind whipping out a quick battery pack extension cable for our projects.  I just need to strip some wires, fire it up, drop some solder, and turn it off again.
    • I may have ruined the first soldering iron tip kinda quickly.  Again, I have no idea what I’m doing.  I would add solder, dip the tip in flux, wipe on sponge, and then do it all again.  This is a terrible process since all it does it add extra contaminants and gunk to the tip, reducing the ability of it to transfer heat effectively.  Instead, after watching a video, I learned I should run it at the lowest temperature appropriate for the solder/joint, just dab the tip in the brass wool to clean it up a little, then maybe wipe on the slightly damp sponge, and absolutely coat the tip in solder before putting it down.

Things left to do!

  • Things to finish
    • I’d really like to finish up the Fallout themed shirt/vest to go with my project
    • A way to attach my wife’s octopus to a purse strap
    • A better way to wear my robot on my shoulder – may use a similar foam paldron
    • A big chunky seat belt looking thing for the strap wearing my robot
    • I’ve got designs for a new bag to wear/carry around Maker Faire, but haven’t sewn them up yet – maybe this week!?!!?
  • Make sure we have
    • Enough batteries, battery packs, etc for our projects
    • USB chargers for our LiPo batteries in goggles
    • Finish my goggles (install battery, update code, possibly change out diffusers
    • Bring a few Maker Coins to give out (I bought 100 of the 5,000 minted, probably never to be minted again…)
    • Ways to show people links to learn more about our projects – probably via QR codes – though I might also use an RFID tag :)

Okay, back to work on… work… so I can get back to making!

  1. Note to self:  It requires a different version of CircuitPython, Haxpress, to make use of the chip storage []
  2. I used to tape the cord of my soldering iron to the table and then place it on the flimsy stand []

Review of DriveThruCards.com

TLDR:  The cards from DriveThruCards.com (DTC) arrived yesterday and I couldn’t be happier with the result.  Great customer service, product, and value.

This slideshow requires JavaScript.

  1. Shipping:  Great
    1. 3/19/2024:  I ordered 120 cards around 2 AM PST in California.
    2. 3/19/2024:  The DTC website was updated with the following statuses:  Pending Payment Approval, Paid For, Sent to printer, Confirmed.
    3. 3/24/2024:  I received a shipping confirmation email from DTC in Overland Park, Kansas with a USPS tracking number at about 4:32 PM PST.
    4. 03/25/2024:  The date on the “External Packing Slip” included with the box.
    5. 3/28/2024:  USPS sent me a notification the package arrived around 8:29 AM PST.
    6. This was basically exactly as long as my Reddit lurking had suggested (about 10 days) it would take.

      Order confirmation and status screen

      Order confirmation and status screen

  2. Packaging:  Great
    1. The cards arrived wrapped in a cellophane band, within packing paper, inside a small box (about 5″x5″x3.5″ cube).  This was perfectly fine for these cards.  They have options for tuck boxes and other containers, but I didn’t need or want these for this project.
  3. Card Quality:  Great
    1. Text and images were sharp, legible, and colors rich but slightly darker than what I saw on my computer screen.  By tinkering with Inkscape, I would guesstimate the final card was about 5-10% less bright than what I saw on my screen.  Without comparing the cards directly against a large bright monitor, I don’t think I would have noticed this difference.
    2. When I set the deck down on a flat surface and run my finger over the side of the stack of cards, there’s a very slight variation over a few cards.  It’s barely perceptible and probably totally fine for any kind of card usage or card game except a super precise cut for casino playing cards.
    3. When the cards are viewed edge-on in a stack, you can tell see a faint bit of the card’s edge color.  I grabbed some “Magic: the Gathering” cards and looked at a mix of black and white bordered cards and noticed that even the black border cards seem to look white-ish when viewed edge on.  The slight bit of color here doesn’t bother me at all and for most purposes would be totally irrelevant.
    4. The cards were 2.503″ or 63.57 mm wide and 3.506″ or 89.05 mm tall, or about 0.2% large.  Some variation is to be expected in any order and this miniscule variation would be completely unnoticeable except I used digital calipers to measure them.
    5. The cards, printed on DTC’s “premium stock,” advertised as 11.4 pt (0.0114″) were 0.0115″ or 0.29 mm thick.  Flicking the cards against a table, right next to an actual casino poker card, they felt identical.  (The casino card has a slightly raised texture, but the flex, bounce, and flick of the card stock felt identical).
    6. Card Cut.  This is the one aspect that didn’t come out exactly as I had planned.  Ten of the cards I printed had borders, but they were visibly different widths at each end.  These cards were Premium U.S. Poker sized (2.5″ x 3.5″), the PDF itself was 2.75″ x 3.75″ (to account for the 1/8″ bleed area at each edge).  Unfortunately, I didn’t notice this until after I had used the cards a bit, so I don’t know whether top or the bottom was slightly thinner.  Since these cards are basically dividers, this isn’t a huge deal for me.  However, I’d prefer being able to get them back with an even border all the way around.

      This slideshow requires JavaScript.

  4. Customer Service:  I discussed the responsiveness of the DTC customer service team in the prior post.  They went out of their way to help me with my project – and it really smoothed things for me.

I simply could not be happier with these cards.  I will absolutely be trying them again.

Print On Demand Custom Cards
  1. Custom Cards with DriveThruCards.com
  2. Review of DriveThruCards.com

Custom Cards with DriveThruCards.com

I’ve been looking to get some playing sized cards for various purposes recently.  I’ve enjoyed making my own cards from blanks ordered off of Amazon, but for things that might get used a little more regularly, it would actually help to have these things pre-typed/printed.  And, as a long-time / returning enthusiast of a particular card card game, I was also looking to print up some proxy cards for casual play.  I don’t want counterfeit cards – just make some obviously unofficial stand-ins for real cards in casual play.

  1. Cost Breakdown
    1. If you do any kind of Googling about searching for a company to print up cards of various sizes, you’ll quickly end up at MakePlayingCards.com – or a company that has a website that looks nearly identical to MPC.  Getting a single deck of custom cards printed up through MPC is $26.15 for up to 108 cards (they offer incremental price breaks) plus $11.99 shipping (with tracking taking about 20 days) as the cheapest option, coming to $40.17 (including some tax).  This is roughly $0.37/card.
    2. Lurking in some Reddit forums, I found a few suggestions on different ways to create proxy Magic: the Gathering cards.  These forums renewed my interest in getting some cards printed up – and lead me to DriveThruCards.com.  I just placed an order for 120 cards,1 but I’ll describe the cost for 108 cards for an apples-to-apples comparison.  A single deck of custom cards printed through DTC is $12.42, plus $5.99 shipping (USPS Ground Advantage and anecdotal evidence from Reddit suggests ~10 days), plus  $1.00 in tax, comes to $19.41.  This is roughly $0.18/card.
  2. Benefits / Costs
    1. There’s no question the MPC website is cleaner and slicker, featuring drag and drop options, without a lot of technical jargon about printing, colors, etc.  They also seem to have many more options for card sizes, materials, and finishes.  They also have lots of templates in various formats to download and populate.  The obvious downsides are the length of shipping required and the cost, both estimated to be roughly twice that of DTC which is apparently in Overland, Kansas.
    2. The DTC website is… by their own admission, “challenging to learn.”  While I’m sure the interface permits a ton of customization, the dizzying array of options is daunting.  They have lots of guides on their website and knowledge base, as well as elsewhere, but it’s probably too much information.  I went with DTC for my first custom card order because I wanted to inexpensively try out some ideas and I figured that after the first order, I’d probably get the hang of their system.  However, one thing that really sets DTC apart is the responsiveness of their customer service.  I’d emailed them in the middle the day and middle of the night (aka goblin hours) and someone always back to me super fast.  Although DTC doesn’t have official PDF templates, Brian with DTC kindly whipped one up and emailed it to me which answered tons of my questions.
  3. Anatomy of a Printed Card
    1. Both MPC, DTC, and other print-on-demand (POD) websites have numerous descriptions, graphics, tutorials, and samples all using slightly different words, relating to the various sizes, printing zones, etc.  I found it incredibly confusing.  Now, I’m not certain I’ve gotten everything right, but here’s my best understanding…
      Annotated sample poker card

      Annotated sample poker card

      1. Cut Line / Trim Line / Bleed Line.
        1. The area described by the solid black line will be where the card is trimmed to the exact dimensions of the card.  The good thing about knowing what this line means is that if you know the final dimensions of your type of card, this is easy to look up and then design everything else around it.
        2. Importantly, you don’t want to include this line in your designs.  The purpose of the “safe” zone area is so the critical components of your design are certain to appear on the final product – even if it is perhaps slightly offcut.  The purpose of the “bleed” zone is to make sure a “full art” card doesn’t have bits of white or black at the edge if it is very slightly miscut.
      2. Safe Area Line / Border.  The important part to know here is that the distance from the “cut line” to the safe area is 1/8″ or 3.175 mm on all sides.  Thus, if you know the dimensions of the card you want, you just make sure your critical art and text don’t exceed this area.  All the area inside the safe area line is the “safe zone.”
      3. Bleed Box / Bleed Area / “Full Bleed” / Page Size.  As with the Safe Area Line, this is easy to figure out – it’s just 1/8″ or 3.175 mm outside the edges of the cut line.  This should be a rectangle.
  4. Software / Design Process
    1. I don’t have Adobe InDesign, Photoshop, Illustrator, or Affinity Publisher – and I wasn’t going to buy / subscribe to any of these just for this one project.  What I do have, however, is OpenSCAD and Inkscape.  Using OpenSCAD I started with a rectangle of the precise dimensions to match the exterior of the “US poker” card I wanted printed, then exported this to an SVG file.  I then did this for a rectangle of the “bleed box” size, safe line, and also the trim line.  I then imported all of these into Inkscape, layered them, and used them as guides while I designed my cards.  I made sure the critical areas were within the safe line, but made the safe line, trim line, etc all invisible.  Inkscape will allow you to export a file into a PDF file format which DTC accepts.  I created fronts and backs for cards, each exported as a separate PDF, then combined all of them using one of my favorite pieces of freeware, PDFTK.
  5. Potential Issues, Fixes
    1. Unembedded Fonts.  Apparently Inkscape did not embed all of the fonts used in the creation of the PDF.  When I tried to upload the PDF originally, DTC’s uploader balked at this and said I’d need to embed the fonts.  While I used a different PDF program (Foxit PDF is reasonably full featured and way less expensive than Adobe) to embed the fonts, I think I could have simply re-exported all the card faces as images instead of PDFs, then combined those into a new PDF which just had pictures (including pictures of the desired text).  It might have been possible to change the fonts as well to be more uniform, but given the number of cards I was creating, I didn’t want to do that.
    2. Currency.  I’m putting this here more for me than anyone else who might stop by.  At some point while using their website I accidentally did something which made all the prices and calculations appear in the Japanese Yen.  :/  I’d been through the account settings numerous times and even cleared my cookies and website cache trying to fix this problem.  After an embarrassingly long time, I gave up and emailed Brian to ask for help.  As so often happens to me… moments after hitting send I saw website footer had a drop down box to choose the currency and language.  Sorry Brian!

So, what’s next?  Well, after placing the order at roughly 2am PST on 3/19/2024, now it’s time to just wait and find out if the cards are going to get produced and arrive!  It’s now almost 6 pm PST, and their Order History page says “Sent to printer.”  Some Reddit posts suggest that it takes another 1-2 weeks to actually ship.

Print On Demand Custom Cards
  1. Custom Cards with DriveThruCards.com
  2. Review of DriveThruCards.com
  1. $20.86, if you’re being nosy []

Gluing Polypropylene Corrugated Plastic (Coroplast)

Late at night, when I should be doing work or, better yet, sleeping, ideas spring to mind.  I’ve created a few small projects from big sheets of coroplast or polypropylene corrugated plastic.  This is the kind of material you see in use for yard signs.  They are big, cheap, sturdy (as long as you’re not bending it with the grain), and lightweight.  They can be bent or cut easily.  However, since it is polypropylene, it is fairly resistant to most glues, adhesives, and paints.

Duct tape and hot glue work well, but have their downsides.  The duct tape can be unsightly and not very good for “laminating” several layers together.  Hot glue works well for laminating layers, but it cools so fast that it’s hard to glue big sheets together.

Anyhow, all of this is to say I found a great website by Christine DeMerchant which provides a lot of information and insight on how to glue these materials together.

How to “Unthread” Emails in Thunderbird v115

If you’re just here for the solution (or, you’re actually me, returning some time in the future to fix the problem after perhaps a Thunderbird update), here’s all you need to know:

  1. Click on the icon in the top right that looks like a film strip which displays the “Message list display options” when the mouse hovers over it.
  2. Sort by -> Unthreaded
Just follow these steps, starting with the menu at the top right

Just follow these steps, starting with the menu at the top right

I suppose there are times when threaded email view is useful.  However, when reviewing emails at a glance, it’s incredibly frustrating because your inbox will show you have a new unread email, but you won’t know which thread it’s nested under.

I found numerous “solutions” online for how to unthread Thunderbird emails, but none of them worked for me since the answer wasn’t buried in any of the settings, the hamburger menu didn’t help, and nothing relevant showed up in the help sections or even in searching the settings section.

Of course, right clicking on the columns allowed me to hide the “thread” column, but that didn’t stop emails from actually being threaded.

I spent some time searching for the answer, watching snippets of videos, and finally stumbled across the solution here after seeing multiple people voice the very same frustrations I did, discussing.  Hopefully the above screenshot helps you (or me!) solve this problem in the future.

Heat Transfer Vinyl T-Shirts Without a Craft Cutter (2023)

Saturday, October 21
Zone 2 – Make: Demo Stage
2:30 pm – 3:00 pm
Let’s goooooooooooooooooooo!

Heat Transfer Vinyl T-Shirts (Without a Craft Cutter)
  1. Heat Transfer Vinyl T-Shirts – Without A Vinyl Cutter
  2. Heat Transfer Vinyl T-Shirts – Without A Vinyl Cutter, Part II
  3. Heat Transfer Vinyl T-Shirts Without a Craft Cutter (2023)

Companion Robots and Maker Faire Season!

I’m super excited for Maker Faire Bay Area / Mare Island and Mini Maker Faire Rocklin.1  I’m not just excited to see everything, but to show all the things I’ve been working on for a while now.  It’s also time to pick up all the little dev boards I’ve somehow accumulated and see if I can make anything with them to show off.

  1. Project Boards
    1. Wemos D1 Mini.  A small insanely cheap (~$3?!) WiFi enabled dev board2 , which has 4MB onboard and can run Arduino.  I think it can also run MicroPython, but I haven’t tested this yet.
    2. Wemos 600 Pico.  An even smaller, even cheaper (~$2 when ordered from China) WiFi enabled dev board that runs… MicroPython?  I think??  I’m saying “I think” because I haven’t been able to get it to do anything yet.
      1. Since starting this blog post, I found a guide on installing MicroPython on Wemos boards that seems promising.
        1. Flashing MicroPython on an ESP8266
        2. https://github.com/espressif/esptool/tree/master
        3. Arguing with Python to let me use “esptool.py”
          1. esptool -p COM13 -c esp8266 flash_id
      2. As promising as that series of blog posts looked, I eventually scrapped the Wemos because it was just too much of a pain to get going with MicroPython.  I think I could have made it work, but for $7 I could also just use the Adafruit QtPy I already have.  The advantages of simply uploading code over a USB cable into a virtual drive just can’t be overstated.
    3. Other Boards
      1. I have a bad habit of picking up dev boards.  I’ve got several Adafruit QtPy’s, several Adafruit Trinkets, an Adafruit FX Sound Board, Raspberry Pi Pico (non-WiFi), various Digispark boards, a small handful of ATTiny85’s, and an even weirder assortment of VERY small programmable circuit boards (ISD1806B-COB) designed to go in greeting cards (just 6 seconds), etc.
  2. Companion Robot
    1. Background.
      1. I started this post at least a month ago when I only had a vague idea of what I wanted to make and even fewer skills.  After seeing my kid’s companion robot take shape, I wanted to get in on the action and make my own.  I decided to make a really small companion robot with just some LED’s, piezo, and small microcontroller unit.  I’d taken a stab at making a companion robot a few years ago, but set it aside for a variety of reasons and never went back.
      2. The idea for this new robot would be something a little less ambitious, make more use of NeoPixels than in prior projects3, with a little more interactivity, trying out some CircuitPython, and… let’s be real… more pizzazz!
    2. Idea:  Friendly Cloud/Vapor/Flame
      1. I still really like the copper-toned PLA I’ve been using since it has something of a steampunk flair to it.  I settled on repurposing a small plastic enclosure with a clear dome as the “body” for the robot.  I wanted it to look something like a small entrapped / captive / domesticated4 sentient cloud of vapor or perhaps flame held within a steampunk enclosure.
      2. As a very small, inexpensive board that could run either Arduino or CircuitPython, I decided on the Adafruit QtPy M0.  It could run NeoPixels, there were lots of cool guides on it, plenty of pinouts, and could definitely fit within the confines of my enclosure.
    3. Enclosure:
      1. I started the enclosure by trying to design and 3D print a part to mate with the clear plastic dome.  It took a few tries.

        This slideshow requires JavaScript.

      2. Once I had that, I extended the base so it could hold more electronics.  I could definitely have shoehorned everything into the dome, especially if I took up some of the space inside the dome, but even with an “elevated base” it was still plenty small and could use a battery pack rather than a rechargeable lipo.
      3. Once I had a good design for the enclosure, I tried to make it work with an existing 3xAAA battery pack.  In the process I yanked off the connector and ended up soldering the battery pack leads directly into the circuits.
    4. Internal Electronics
      1. I’m just not a great electrical engineer and am still copy/pasting from various guides, tinkering, changing bits of code, swapping out parts, and using “close enough” resistors.  Wiring up some LEDs or a piezo to a project isn’t very difficult – it’s some of the more fiddly bits.
      2. Piezo Element Speaker
        1. I wanted to use a piezo buzzer/speaker because they’re large and incredibly thin.  They’re not without their downsides.  The crystal wafer is also thin and a little fragile.  The piezo buzzer without additional electronics has the potential to act as a knock sensor and can generate a high voltage spike which can fry a board.  And, without additional electronics, the piezo just isn’t very loud.  There are some libraries for the Arduino that basically double the volume of a piezo by connecting it to two pins and then running each opposite of the other, doubling the voltage difference, but they only work for Arduino chips.5
        2. After searching for various ways to increase the sound of the piezo elements, I settled on trying to use the Adafruit piezo amp.  I bought two – and tried desoldering the terminal blocks.  This completely ruined one.  The other one worked great, but for the modest volume gain it was just too big in an already cramped enclosure.
        3. After searching around, I found some amplifier circuits using a small number of common parts.6
        4. Then I tried building an amplifier circuit using an NPN transistor.  After reviewing the datasheets for my NPN transistors (and PNP transistors), and breadboarding the circuit with resistors, I sketched it a few times, laid it down with copper tape, soldered it in place with SMD resistors, then pulled it off and placed it onto a piece of Kapton tape and put another piece on top – “laminating” it in place.
      3. Capacitive Touch
        1. Buttons are great and all, but with a capacitive touch pad, I could add metallic elements to my robot rather than a much bulkier button.  I bought a few brass upholstery tacks because they looked great – but they just would not accept molten solder.  I ended up cutting the prongs short with wire cutters, wrapping the stub with copper tape, then soldering the wires to the tape.  I’d also added a little piece of heat shrink tubing over the connection to help keep it together.  It’s been working well so far.
      4. LED Animations
        1. As we know from Phillip Burgess‘ incredible “power sipping NeoPixel” guide, we can conserve power and increase the impact of the LED’s by reducing the number of LED’s, keeping max brightness ~20% for a disproportionately large impact, running fewer LED’s at a time, and even running fewer colors at a time.  Between Phillip’s work, Todbot’s guide, and the specialized QtPy NeoPixel guide by Kattni Rembor, I was able to put together a few neat animations.
      5. Piezo Sounds
        1. I had a heck of time getting the piezo buzzer to do anything interesting.  Fortunately, with my kid helped convert the piano music for “Paint It Black” into tones for me.  I haven’t gotten all the note timings right, but I’m working on it!
  3. Future Modifications
    1. More Accessible Enclosure.  Right now the “lid” with a hole for the LED ring just sits on the enclosure with a light friction fit.  One idea is a hinged lid, either with a conventional hinge or perhaps a hidden swivel hinge.  The problem with that, of course, is it requires even more internal space.  Other ideas include a ring on top that screws down, holding the top down and in place.  I’m crap at designing screw threads, so I’ve avoided this.

      Hinged lid for enclosure

      Hinged lid for enclosure

    2. Piezo Knocks.  Perhaps the next version will include some kind of tap / double tap / knock sensors using one or more piezo elements.
    3. Knobs.  There’s not a ton of room inside the enclosure, but by including a gear within a gear, I might be able to rotate part of the case and have it manipulate a potentiometer.

      Offset gear within gear, manipulating an off-center internal potentiometer

      Offset gear within gear, manipulating an off-center internal potentiometer

    4. Motors.  A robot that just flashes lights and makes a few beeps can still be pretty interesting.  However, I have some neat potential features that could be added with just one or two motors.  There are some interesting limitations with the current incarnation of this robot and using a QtPy.  I’ve only got 10 pinouts7 , 1 for NeoPixels, 1 for the piezo, 6 in use for the capacitive touch sensors, leaving 2 for other potential tasks.8  However, space is already tight so one or two micro servos would be a big space commitment.  I’ve seen some really tiny micro servos that might work, but I have no idea where to source them.  One silly idea is a “weapons system” using a spring loaded projectile activated by a very small servo.

      A small spring loaded projectile launcher, actuated by a small servo

      A small spring loaded projectile launcher, actuated by a small servo

    5. Creating Tone Library.  The basic piezo tones are easy enough to play, but including the entire list of tones and the frequencies associated with them seems eat up the poor little QtPy’s memory.  I think compressing them into a library might be the way around this issue.
    6. Playing WAV files.  WAV files are bulky, but that’s the only sound file format a QtPy M0 can play.  However, with the extra 2MB from the SPI chip installed, this shouldn’t be a huge problem.  I used Audacity to mix the sound clip down to mono then to 22 KHz sample rate.  My preliminary tests worked – but it was incredibly quiet.  I haven’t run it through the audio amplifier yet, but I’m planning to.
    7. Sleep / Deep Sleep.  Ever since I swapped out the tiny LiPo for a 3xAAA battery pack, I’ve had a lot more battery life, so adding sleep / deep sleep functions haven’t been a priority.  However, this inclusion just couldn’t hurt.
  4. Other QtPy and CircuitPython Resources
    1. Adafruit’s QtPy CircuitPython PWM resource
    2. TodBot’s CircuitPython tricks
Companion Robots: Building Robot Friends
  1. Cephalopod Robot Friend, the story so far
  2. Cephalopod Robot Friend Progress
  3. CuttleBot Body and OpenSCAD Design Tips
  4. An Assembled CuttleBot Body
  5. Building the Monocle Top Hat Cat for #MicrobitVirtualConcert
  6. Companion Robots and Maker Faire Season!
  1. I just got a notice they’re no longer a “Mini”! []
  2. pinouts for my future reference []
  3. LED goggles and a Marvel Universe inspired set of “Infinity Knuckles” []
  4. OMG dome-sticated?! []
  5. This is just my very basic understanding of how it works.  I’m entirely positive this is far too simplified. []
  6. And one very long article about using a lot of parts []
  7. 12 if you want to count the onboard NeoPixel []
  8. Or 4… []

Beep Boop: Emotions for ED-E

So I’m trying to program emotions for ED-E.

Better ed-e dialogue at Fallout New Vegas - mods and community

In Fallout New Vegas, ED-E doesn’t use regular dialogue, but communicates through beeps. Basically, he gets <(Emotion) + beeping> as his dialogue. Obviously the only way to research his beeping for this project is to replay Fallout New Vegas and talk to everyone’s favorite eyebot. I came up with a list of some of the emotional beeps he has in the game (and some that I just want) to start programming into him. I have ideas for what I want him to sound like, but I just need to find the right pitches and durations.

By this I mean I am sitting in my room and saying “beep beep” to myself at different pitches in sync with a program I wrote.

Yesterday my dad was checking in on me and how my programming was going and asked how I was doing. I replied, approximately, “bleurrrrghhhhh.”
I was having trouble programming the emotional beeps because I have very specific ideas for what ED-E should sound like and no way to get that into a computer. I’m a huge music nerd, but I unfortunately don’t have perfect pitch or some superhuman ability like that to use to get ED-E to sound exactly like I want him to.1 Dad suggested using a loop with an array going up every time, which made everything so. Much. Easier.
This plays frequencies starting at 100hz and going up by 10hz every time. I started with 100hz but going up by 50hz every time, but I liked the specificity of 10hz. Once I get in the ballpark of where I want to be, I can then just run the program and correct the pitches if need be.
If you read my last post, specifically the spoiler section, you will know why I started with a shy beep. If you didn’t read my last post, go do that! If you didn’t read the spoiler section, that’s fine. What you really need to know is that I want ED-E to make noises.
I’ll admit, this took a while to get right. Not playing the tones or even figuring out what pitches they were or how long they should play for. No, getting the tones to play was easy. Getting them to stop… was much harder.
ED-E was shyly screaming at me on repeat for at least 10 minutes while I was slowly losing my mind and trying to make him shut up.
I turned to ChatGPT to help me fix this, but it was utterly unhelpful and I ended up fixing the problem myself by deleting a bunch of the garbage it generated. Now the problem was that I had to continually upload the code to make the ShyBeep function run again. I was happy that it wasn’t looping anymore, but I wanted to fine tune the beeps and making it upload again and again was a pain. That’s why I decided to make it run when a button is pressed.2
It took a little while to make it run when a button was pressed, but then it would only run once and never again, even if the button was pressed. I finally realized that this was happening because runOnce was set to false, and fixed that.
Now that I have this framework, it has been much easier to program more beeps. Now I have a sad beep, and I’m going to start working on a happy beep because I have had just about enough of ED-E’s negativity.3
  1. I almost decided to use the definitions of pitch from my Rickroll code so I could just ask the computer to start at middle C and go down or say I want the pitch to be a half note in 3/4 time. I then realized I was making this WAY more complicated than it needed to be and just used seconds and hz like a normal-ish person []
  2. I seriously love Circuit Playgrounds. They have everything. []
  3. Just kidding ED-E, I love you []